minor helpers for trial licenses

Original commit: elastic/x-pack-elasticsearch@7bd3fdded7
This commit is contained in:
Areek Zillur 2014-10-10 20:17:55 -04:00
parent 6b208bce8f
commit 07ec8ef93f
1 changed files with 18 additions and 31 deletions

View File

@ -32,6 +32,8 @@ import java.io.IOException;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
import static org.elasticsearch.license.core.ESLicenses.FeatureType;
import static org.elasticsearch.license.plugin.core.TrialLicenses.TrialLicense;
import static org.elasticsearch.license.plugin.core.TrialLicensesBuilder.EMPTY; import static org.elasticsearch.license.plugin.core.TrialLicensesBuilder.EMPTY;
/** /**
@ -100,7 +102,7 @@ public class LicensesService extends AbstractLifecycleComponent<LicensesService>
@Override @Override
public void unregisterLicenses(final DeleteLicenseRequestHolder requestHolder, final ActionListener<ClusterStateUpdateResponse> listener) { public void unregisterLicenses(final DeleteLicenseRequestHolder requestHolder, final ActionListener<ClusterStateUpdateResponse> listener) {
final DeleteLicenseRequest request = requestHolder.request; final DeleteLicenseRequest request = requestHolder.request;
final Set<ESLicenses.FeatureType> featuresToDelete = asFeatureTypes(request.features()); final Set<FeatureType> featuresToDelete = asFeatureTypes(request.features());
clusterService.submitStateUpdateTask(requestHolder.source, new AckedClusterStateUpdateTask<ClusterStateUpdateResponse>(request, listener) { clusterService.submitStateUpdateTask(requestHolder.source, new AckedClusterStateUpdateTask<ClusterStateUpdateResponse>(request, listener) {
@Override @Override
protected ClusterStateUpdateResponse newResponse(boolean acknowledged) { protected ClusterStateUpdateResponse newResponse(boolean acknowledged) {
@ -125,7 +127,7 @@ public class LicensesService extends AbstractLifecycleComponent<LicensesService>
} }
//TODO: hook this up //TODO: hook this up
private void registerTrialLicense(final TrialLicenses.TrialLicense trialLicense) { private void registerTrialLicense(final TrialLicense trialLicense) {
clusterService.submitStateUpdateTask("register trial license []", new ProcessedClusterStateUpdateTask() { clusterService.submitStateUpdateTask("register trial license []", new ProcessedClusterStateUpdateTask() {
@Override @Override
public void clusterStateProcessed(String source, ClusterState oldState, ClusterState newState) { public void clusterStateProcessed(String source, ClusterState oldState, ClusterState newState) {
@ -151,6 +153,7 @@ public class LicensesService extends AbstractLifecycleComponent<LicensesService>
// had no license meta data // had no license meta data
currentLicenses = new LicensesMetaData(null, newTrialLicenses.build()); currentLicenses = new LicensesMetaData(null, newTrialLicenses.build());
} }
trialLicenses = currentLicenses.getTrialLicenses();
mdBuilder.putCustom(LicensesMetaData.TYPE, currentLicenses); mdBuilder.putCustom(LicensesMetaData.TYPE, currentLicenses);
return ClusterState.builder(currentState).metaData(mdBuilder).build(); return ClusterState.builder(currentState).metaData(mdBuilder).build();
} }
@ -187,6 +190,9 @@ public class LicensesService extends AbstractLifecycleComponent<LicensesService>
// check for registered plugin // check for registered plugin
// if appropriate registered plugin is found; push one-time trial license // if appropriate registered plugin is found; push one-time trial license
// generate one-time trial license
// registerTrialLicense(generateTrialLicense(feature, 30, 1000));
// check for cluster status (recovery) // check for cluster status (recovery)
// switch validation enforcement // switch validation enforcement
} }
@ -197,7 +203,11 @@ public class LicensesService extends AbstractLifecycleComponent<LicensesService>
//check trial license existence //check trial license existence
// if found; use it to do the check // if found; use it to do the check
return esLicenseManager.hasLicenseForFeature(ESLicenses.FeatureType.fromString(feature)); final TrialLicense trialLicense = trialLicenses.getTrialLicense(FeatureType.fromString(feature));
if (trialLicense != null) {
return trialLicense.expiryDate() > System.currentTimeMillis();
}
return esLicenseManager.hasLicenseForFeature(FeatureType.fromString(feature));
} }
@Override @Override
@ -206,10 +216,10 @@ public class LicensesService extends AbstractLifecycleComponent<LicensesService>
return false; return false;
} }
private static Set<ESLicenses.FeatureType> asFeatureTypes(Set<String> featureTypeStrings) { private static Set<FeatureType> asFeatureTypes(Set<String> featureTypeStrings) {
Set<ESLicenses.FeatureType> featureTypes = new HashSet<>(featureTypeStrings.size()); Set<FeatureType> featureTypes = new HashSet<>(featureTypeStrings.size());
for (String featureString : featureTypeStrings) { for (String featureString : featureTypeStrings) {
featureTypes.add(ESLicenses.FeatureType.fromString(featureString)); featureTypes.add(FeatureType.fromString(featureString));
} }
return featureTypes; return featureTypes;
} }
@ -234,35 +244,12 @@ public class LicensesService extends AbstractLifecycleComponent<LicensesService>
} }
} }
private TrialLicenses.TrialLicense generateTrialLicense(String feature, int durationInDays, int maxNodes) { private TrialLicense generateTrialLicense(String feature, int durationInDays, int maxNodes) {
return TrialLicensesBuilder.trialLicenseBuilder() return TrialLicensesBuilder.trialLicenseBuilder()
.issueDate(System.currentTimeMillis()) .issueDate(System.currentTimeMillis())
.durationInDays(durationInDays) .durationInDays(durationInDays)
.feature(ESLicenses.FeatureType.fromString(feature)) .feature(FeatureType.fromString(feature))
.maxNodes(maxNodes) .maxNodes(maxNodes)
.build(); .build();
} }
private class PutTrialLicenseRequest extends AcknowledgedRequest<PutTrialLicenseRequest> {
private PutTrialLicenseRequest() {
}
@Override
public ActionRequestValidationException validate() {
return null;
}
@Override
public void readFrom(StreamInput in) throws IOException {
super.readFrom(in);
readTimeout(in);
}
@Override
public void writeTo(StreamOutput out) throws IOException {
super.writeTo(out);
writeTimeout(out);
}
}
} }