Skip to content

Commit

Permalink
Add messages for CCR on license state changes (#52470)
Browse files Browse the repository at this point in the history
When a license expires, or license state changes, functionality might be
disabled. This commit adds messages for CCR to inform users that CCR
functionality will be disabled when a license expires, or when license
state changes to a license level lower than trial/platinum/enterprise.
  • Loading branch information
jasontedor committed Feb 22, 2020
1 parent 3d64edc commit f3cbeea
Show file tree
Hide file tree
Showing 2 changed files with 97 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,13 @@ public class XPackLicenseState {
"Creating and Starting rollup jobs will no longer be allowed.",
"Stopping/Deleting existing jobs, RollupCaps API and RollupSearch continue to function."
});
messages.put(XPackField.CCR, new String[]{
"Creating new follower indices will be blocked",
"Configuring auto-follow patterns will be blocked",
"Auto-follow patterns will no longer discover new leader indices",
"The CCR monitoring endpoint will be blocked",
"Existing follower indices will continue to replicate data"
});
EXPIRATION_MESSAGES = Collections.unmodifiableMap(messages);
}

Expand All @@ -91,6 +98,7 @@ public class XPackLicenseState {
messages.put(XPackField.LOGSTASH, XPackLicenseState::logstashAcknowledgementMessages);
messages.put(XPackField.BEATS, XPackLicenseState::beatsAcknowledgementMessages);
messages.put(XPackField.SQL, XPackLicenseState::sqlAcknowledgementMessages);
messages.put(XPackField.CCR, XPackLicenseState::ccrAcknowledgementMessages);
ACKNOWLEDGMENT_MESSAGES = Collections.unmodifiableMap(messages);
}

Expand Down Expand Up @@ -257,6 +265,26 @@ private static String[] sqlAcknowledgementMessages(OperationMode currentMode, Op
return Strings.EMPTY_ARRAY;
}

private static String[] ccrAcknowledgementMessages(final OperationMode current, final OperationMode next) {
switch (current) {
// the current license level permits CCR
case TRIAL:
case PLATINUM:
switch (next) {
// the next license level does not permit CCR
case MISSING:
case BASIC:
case STANDARD:
case GOLD:
// so CCR will be disabled
return new String[]{
"Cross-Cluster Replication will be disabled"
};
}
}
return Strings.EMPTY_ARRAY;
}

private static boolean isBasic(OperationMode mode) {
return mode == OperationMode.BASIC;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -504,4 +504,73 @@ public void testSqlAckTrialOrPlatinumToNotTrialOrPlatinum() {
assertAckMesssages(XPackField.SQL, randomTrialOrPlatinumMode(), randomBasicStandardOrGold(), 1);
}

public void testCcrDefaults() {
final XPackLicenseState state = new XPackLicenseState(Settings.EMPTY);
assertTrue(state.isCcrAllowed());
}

public void testCcrBasic() {
final XPackLicenseState state = new XPackLicenseState(Settings.EMPTY);
state.update(BASIC, true, null);

assertThat(state.isCcrAllowed(), is(false));
}

public void testCcrBasicExpired() {
final XPackLicenseState state = new XPackLicenseState(Settings.EMPTY);
state.update(BASIC, false, null);

assertThat(state.isCcrAllowed(), is(false));
}

public void testCcrStandard() {
final XPackLicenseState state = new XPackLicenseState(Settings.EMPTY);
state.update(STANDARD, true, null);

assertThat(state.isCcrAllowed(), is(false));
}

public void testCcrStandardExpired() {
final XPackLicenseState state = new XPackLicenseState(Settings.EMPTY);
state.update(STANDARD, false, null);

assertThat(state.isCcrAllowed(), is(false));
}

public void testCcrGold() {
final XPackLicenseState state = new XPackLicenseState(Settings.EMPTY);
state.update(GOLD, true, null);

assertThat(state.isCcrAllowed(), is(false));
}

public void testCcrGoldExpired() {
final XPackLicenseState state = new XPackLicenseState(Settings.EMPTY);
state.update(GOLD, false, null);

assertThat(state.isCcrAllowed(), is(false));
}

public void testCcrPlatinum() {
final XPackLicenseState state = new XPackLicenseState(Settings.EMPTY);
state.update(PLATINUM, true, null);

assertTrue(state.isCcrAllowed());
}

public void testCcrPlatinumExpired() {
final XPackLicenseState state = new XPackLicenseState(Settings.EMPTY);
state.update(PLATINUM, false, null);

assertFalse(state.isCcrAllowed());
}

public void testCcrAckAnyToTrialOrPlatinum() {
assertAckMesssages(XPackField.CCR, randomMode(), randomTrialOrPlatinumMode(), 0);
}

public void testCcrAckTrialOrPlatinumToNotTrialOrPlatinum() {
assertAckMesssages(XPackField.CCR, randomTrialOrPlatinumMode(), randomBasicStandardOrGold(), 1);
}

}

0 comments on commit f3cbeea

Please sign in to comment.