|
|
@@ -61,19 +61,10 @@ public class StartBasicClusterTask extends ClusterStateUpdateTask {
|
|
|
@Override
|
|
|
public ClusterState execute(ClusterState currentState) throws Exception {
|
|
|
XPackPlugin.checkReadyForXPackCustomMetadata(currentState);
|
|
|
- LicensesMetaData licensesMetaData = currentState.metaData().custom(LicensesMetaData.TYPE);
|
|
|
- License currentLicense = LicensesMetaData.extractLicense(licensesMetaData);
|
|
|
- if (currentLicense == null || License.LicenseType.isBasic(currentLicense.type()) == false) {
|
|
|
- long issueDate = clock.millis();
|
|
|
- MetaData.Builder mdBuilder = MetaData.builder(currentState.metaData());
|
|
|
- License.Builder specBuilder = License.builder()
|
|
|
- .uid(UUID.randomUUID().toString())
|
|
|
- .issuedTo(clusterName)
|
|
|
- .maxNodes(LicenseService.SELF_GENERATED_LICENSE_MAX_NODES)
|
|
|
- .issueDate(issueDate)
|
|
|
- .type(License.LicenseType.BASIC)
|
|
|
- .expiryDate(LicenseService.BASIC_SELF_GENERATED_LICENSE_EXPIRATION_MILLIS);
|
|
|
- License selfGeneratedLicense = SelfGeneratedLicense.create(specBuilder, currentState.nodes());
|
|
|
+ LicensesMetaData currentLicensesMetaData = currentState.metaData().custom(LicensesMetaData.TYPE);
|
|
|
+ License currentLicense = LicensesMetaData.extractLicense(currentLicensesMetaData);
|
|
|
+ if (shouldGenerateNewBasicLicense(currentLicense)) {
|
|
|
+ License selfGeneratedLicense = generateBasicLicense(currentState);
|
|
|
if (request.isAcknowledged() == false && currentLicense != null) {
|
|
|
Map<String, String[]> ackMessages = LicenseService.getAckMessages(selfGeneratedLicense, currentLicense);
|
|
|
if (ackMessages.isEmpty() == false) {
|
|
|
@@ -81,11 +72,9 @@ public class StartBasicClusterTask extends ClusterStateUpdateTask {
|
|
|
return currentState;
|
|
|
}
|
|
|
}
|
|
|
- Version trialVersion = null;
|
|
|
- if (licensesMetaData != null) {
|
|
|
- trialVersion = licensesMetaData.getMostRecentTrialVersion();
|
|
|
- }
|
|
|
+ Version trialVersion = currentLicensesMetaData != null ? currentLicensesMetaData.getMostRecentTrialVersion() : null;
|
|
|
LicensesMetaData newLicensesMetaData = new LicensesMetaData(selfGeneratedLicense, trialVersion);
|
|
|
+ MetaData.Builder mdBuilder = MetaData.builder(currentState.metaData());
|
|
|
mdBuilder.putCustom(LicensesMetaData.TYPE, newLicensesMetaData);
|
|
|
return ClusterState.builder(currentState).metaData(mdBuilder).build();
|
|
|
} else {
|
|
|
@@ -98,4 +87,23 @@ public class StartBasicClusterTask extends ClusterStateUpdateTask {
|
|
|
logger.error(new ParameterizedMessage("unexpected failure during [{}]", source), e);
|
|
|
listener.onFailure(e);
|
|
|
}
|
|
|
+
|
|
|
+ private boolean shouldGenerateNewBasicLicense(License currentLicense) {
|
|
|
+ return currentLicense == null
|
|
|
+ || License.LicenseType.isBasic(currentLicense.type()) == false
|
|
|
+ || LicenseService.SELF_GENERATED_LICENSE_MAX_NODES != currentLicense.maxNodes()
|
|
|
+ || LicenseService.BASIC_SELF_GENERATED_LICENSE_EXPIRATION_MILLIS != currentLicense.expiryDate();
|
|
|
+ }
|
|
|
+
|
|
|
+ private License generateBasicLicense(ClusterState currentState) {
|
|
|
+ final License.Builder specBuilder = License.builder()
|
|
|
+ .uid(UUID.randomUUID().toString())
|
|
|
+ .issuedTo(clusterName)
|
|
|
+ .maxNodes(LicenseService.SELF_GENERATED_LICENSE_MAX_NODES)
|
|
|
+ .issueDate(clock.millis())
|
|
|
+ .type(License.LicenseType.BASIC)
|
|
|
+ .expiryDate(LicenseService.BASIC_SELF_GENERATED_LICENSE_EXPIRATION_MILLIS);
|
|
|
+
|
|
|
+ return SelfGeneratedLicense.create(specBuilder, currentState.nodes());
|
|
|
+ }
|
|
|
}
|