java/com.sap.sailing.landscape.ui/src/com/sap/sailing/landscape/ui/client/LandscapeManagementPanel.java
... ...
@@ -1475,7 +1475,7 @@ public class LandscapeManagementPanel extends SimplePanel {
1475 1475
upgradeInstructions.getReleaseNameOrNullForLatestMaster(), sshKeyManagementPanel.getSelectedKeyPair()==null?null:sshKeyManagementPanel.getSelectedKeyPair().getName(),
1476 1476
sshKeyManagementPanel.getPassphraseForPrivateKeyDecryption() != null
1477 1477
? sshKeyManagementPanel.getPassphraseForPrivateKeyDecryption().getBytes() : null,
1478
- upgradeInstructions.getReplicaReplicationBearerToken(),
1478
+ upgradeInstructions.getMasterReplicationBearerToken(), upgradeInstructions.getReplicaReplicationBearerToken(),
1479 1479
new AsyncCallback<SailingApplicationReplicaSetDTO<String>>() {
1480 1480
@Override
1481 1481
public void onFailure(Throwable caught) {
java/com.sap.sailing.landscape.ui/src/com/sap/sailing/landscape/ui/client/LandscapeManagementWriteService.java
... ...
@@ -168,7 +168,7 @@ public interface LandscapeManagementWriteService extends RemoteService {
168 168
169 169
SailingApplicationReplicaSetDTO<String> createArchiveReplicaSet(
170 170
String regionId, SailingApplicationReplicaSetDTO<String> applicationReplicaSetToUpgrade, String optionalSharedInstanceType, String releaseOrNullForLatestMaster,
171
- String optionalKeyName, byte[] privateKeyEncryptionPassphrase, String replicationBearerToken) throws Exception;
171
+ String optionalKeyName, byte[] privateKeyEncryptionPassphrase, String securityReplicationBearerToken, String replicaReplicationBearerToken) throws Exception;
172 172
173 173
ArrayList<LeaderboardNameDTO> getLeaderboardNames(SailingApplicationReplicaSetDTO<String> replicaSet, String bearerToken) throws Exception;
174 174
java/com.sap.sailing.landscape.ui/src/com/sap/sailing/landscape/ui/client/LandscapeManagementWriteServiceAsync.java
... ...
@@ -192,7 +192,7 @@ public interface LandscapeManagementWriteServiceAsync {
192 192
193 193
void createArchiveReplicaSet(String regionId, SailingApplicationReplicaSetDTO<String> applicationReplicaSetToUpgrade,
194 194
String optionalSharedInstanceType, String releaseOrNullForLatestMaster, String optionalKeyName,
195
- byte[] privateKeyEncryptionPassphrase, String replicationBearerToken, AsyncCallback<SailingApplicationReplicaSetDTO<String>> callback);
195
+ byte[] privateKeyEncryptionPassphrase, String securityReplicationBearerToken, String replicaReplicationBearerToken, AsyncCallback<SailingApplicationReplicaSetDTO<String>> callback);
196 196
197 197
/**
198 198
* For the given replica set ensures there is at least one healthy replica, then stops replicating on all replicas and
java/com.sap.sailing.landscape.ui/src/com/sap/sailing/landscape/ui/client/UpgradeArchiveServerDialog.java
... ...
@@ -40,13 +40,15 @@ public class UpgradeArchiveServerDialog extends AbstractApplicationReplicaSetDia
40 40
41 41
@Override
42 42
protected Widget getAdditionalWidget() {
43
- final Grid result = new Grid(3, 2);
43
+ final Grid result = new Grid(4, 2);
44 44
int row=0;
45 45
result.setWidget(row, 0, new Label(stringMessages.release()));
46 46
result.setWidget(row++, 1, getReleaseNameBox());
47 47
result.setWidget(row, 0, new Label(stringMessages.instanceType()));
48 48
result.setWidget(row++, 1, getSharedInstanceTypeListBox());
49 49
result.setWidget(row, 0, new Label(stringMessages.bearerTokenForSecurityReplication()));
50
+ result.setWidget(row++, 1, getMasterReplicationBearerTokenBox());
51
+ result.setWidget(row, 0, new Label(stringMessages.bearerTokenOrNullForArchive()));
50 52
result.setWidget(row++, 1, getReplicaReplicationBearerTokenBox());
51 53
return result;
52 54
}
java/com.sap.sailing.landscape.ui/src/com/sap/sailing/landscape/ui/server/LandscapeManagementWriteServiceImpl.java
... ...
@@ -681,17 +681,18 @@ public class LandscapeManagementWriteServiceImpl extends ResultCachingProxiedRem
681 681
@Override
682 682
public SailingApplicationReplicaSetDTO<String> createArchiveReplicaSet(String regionId, SailingApplicationReplicaSetDTO<String> archiveReplicaSetToUpgrade,
683 683
String instanceType, String releaseNameOrNullForLatestMaster, String optionalKeyName,
684
- byte[] privateKeyEncryptionPassphrase, String optionalReplicationBearerToken) throws Exception {
684
+ byte[] privateKeyEncryptionPassphrase, String securityReplicationBearerToken,
685
+ String replicaReplicationBearerToken) throws Exception {
685 686
checkLandscapeManageAwsPermission();
686
- final String bearerToken;
687
+ final String userSetOrArchiveServerSecurityReplicationBearerToken;
687 688
final AwsRegion region = new AwsRegion(regionId, getLandscape());
688 689
final AwsApplicationReplicaSet<String, SailingAnalyticsMetrics, SailingAnalyticsProcess<String>> awsReplicaSet =
689 690
convertFromApplicationReplicaSetDTO(region, archiveReplicaSetToUpgrade, optionalKeyName, privateKeyEncryptionPassphrase);
690 691
final SailingAnalyticsProcess<String> master = awsReplicaSet.getMaster();
691
- if(Util.hasLength(optionalReplicationBearerToken)) {
692
- bearerToken = optionalReplicationBearerToken;
692
+ if(Util.hasLength(securityReplicationBearerToken)) {
693
+ userSetOrArchiveServerSecurityReplicationBearerToken = securityReplicationBearerToken;
693 694
} else {
694
- bearerToken = master.getEnvShValueFor(DefaultProcessConfigurationVariables.REPLICATE_MASTER_BEARER_TOKEN, Landscape.WAIT_FOR_PROCESS_TIMEOUT, Optional.of(optionalKeyName), privateKeyEncryptionPassphrase);
695
+ userSetOrArchiveServerSecurityReplicationBearerToken = master.getEnvShValueFor(DefaultProcessConfigurationVariables.REPLICATE_MASTER_BEARER_TOKEN, Landscape.WAIT_FOR_PROCESS_TIMEOUT, Optional.of(optionalKeyName), privateKeyEncryptionPassphrase);
695 696
}
696 697
final String replicaSetName = SharedLandscapeConstants.ARCHIVE_SERVER_APPLICATION_REPLICA_SET_NAME;
697 698
final String archiveCandidateSubDomain = SharedLandscapeConstants.ARCHIVE_CANDIDATE_SUBDOMAIN;
... ...
@@ -701,7 +702,7 @@ public class LandscapeManagementWriteServiceImpl extends ResultCachingProxiedRem
701 702
Landscape.WAIT_FOR_PROCESS_TIMEOUT, Optional.ofNullable(optionalKeyName),
702 703
privateKeyEncryptionPassphrase);
703 704
final AwsApplicationReplicaSet<String, SailingAnalyticsMetrics, SailingAnalyticsProcess<String>> result = getLandscapeService().createArchiveReplicaSet(regionId, replicaSetName,
704
- instanceType, releaseNameOrNullForLatestMaster, databaseConfiguration, optionalKeyName, privateKeyEncryptionPassphrase, bearerToken, domainName,
705
+ instanceType, releaseNameOrNullForLatestMaster, databaseConfiguration, optionalKeyName, privateKeyEncryptionPassphrase, userSetOrArchiveServerSecurityReplicationBearerToken, replicaReplicationBearerToken, domainName,
705 706
/* optionalMemoryInMegabytesOrNull */ null, /* optionalMemoryTotalSizeFactorOrNull */ null, /* optionalIgtimiRiotPort */ null);
706 707
return new SailingApplicationReplicaSetDTO<String>(result.getName(), convertToSailingAnalyticsProcessDTO(result
707 708
.getMaster(), Optional.ofNullable(optionalKeyName), privateKeyEncryptionPassphrase), /* replicas */ Collections.emptySet(),
java/com.sap.sailing.landscape/src/com/sap/sailing/landscape/LandscapeService.java
... ...
@@ -156,7 +156,7 @@ public interface LandscapeService {
156 156
AwsApplicationReplicaSet<String, SailingAnalyticsMetrics, SailingAnalyticsProcess<String>> createArchiveReplicaSet(
157 157
String regionId, String name, String instanceType, String releaseNameOrNullForLatestMaster, Database databaseConfiguration,
158 158
String optionalKeyName, byte[] privateKeyEncryptionPassphrase, String securityServiceReplicationBearerToken,
159
- String optionalDomainName, Integer optionalMemoryInMegabytesOrNull,
159
+ String replicaReplicationBearerToken, String optionalDomainName, Integer optionalMemoryInMegabytesOrNull,
160 160
Integer optionalMemoryTotalSizeFactorOrNull, Integer optionalIgtimiRiotPort) throws Exception;
161 161
162 162
/**
java/com.sap.sailing.landscape/src/com/sap/sailing/landscape/impl/LandscapeServiceImpl.java
... ...
@@ -238,7 +238,7 @@ public class LandscapeServiceImpl implements LandscapeService {
238 238
@Override
239 239
public AwsApplicationReplicaSet<String, SailingAnalyticsMetrics, SailingAnalyticsProcess<String>> createArchiveReplicaSet(
240 240
String regionId, String replicaSetName, String instanceType, String releaseNameOrNullForLatestMaster, Database databaseConfiguration,
241
- String optionalKeyName, byte[] privateKeyEncryptionPassphrase, String securityServiceReplicationBearerToken,
241
+ String optionalKeyName, byte[] privateKeyEncryptionPassphrase, String securityServiceReplicationBearerToken, String replicaReplicationBearerToken,
242 242
String optionalDomainName, Integer optionalMemoryInMegabytesOrNull,
243 243
Integer optionalMemoryTotalSizeFactorOrNull, Integer optionalIgtimiRiotPort) throws Exception {
244 244
final AwsLandscape<String> landscape = getLandscape();
... ...
@@ -253,6 +253,10 @@ public class LandscapeServiceImpl implements LandscapeService {
253 253
final com.sap.sailing.landscape.procedures.SailingAnalyticsMasterConfiguration.Builder<?, String> masterConfigurationBuilder =
254 254
createArchiveConfigurationBuilder(replicaSetName, databaseConfiguration, securityServiceReplicationBearerToken, optionalMemoryInMegabytesOrNull,
255 255
null, optionalIgtimiRiotPort, region, release);
256
+ final String bearerTokenUsedByReplicas = getEffectiveBearerToken(replicaReplicationBearerToken);
257
+ final InboundReplicationConfiguration inboundMasterReplicationConfiguration = masterConfigurationBuilder.getInboundReplicationConfiguration().get();
258
+ establishServerGroupAndTryToMakeCurrentUserItsOwnerAndMember(replicaSetName, bearerTokenUsedByReplicas,
259
+ inboundMasterReplicationConfiguration.getMasterHostname(), inboundMasterReplicationConfiguration.getMasterHttpPort());
256 260
final com.sap.sailing.landscape.procedures.StartSailingAnalyticsMasterHost.Builder<?, String> masterHostBuilder = StartSailingAnalyticsMasterHost.masterHostBuilder(masterConfigurationBuilder);
257 261
masterHostBuilder
258 262
.setInstanceName(SharedLandscapeConstants.ARCHIVE_SERVER_NEW_CANDIDATE_INSTANCE_NAME)
... ...
@@ -276,7 +280,8 @@ public class LandscapeServiceImpl implements LandscapeService {
276 280
getLandscape().getCentralReverseProxy(region);
277 281
// TODO bug5311: when refactoring this for general scope migration, moving to a dedicated replica set will not require this
278 282
// TODO bug5311: when refactoring this for general scope migration, moving into a cold storage server other than ARCHIVE will require ALBToReverseProxyRedirectMapper instead
279
- logger.info("Adding reverse proxy rule for archive candidate with hostname "+ hostname + " and private ip address");
283
+ final String privateIpAdress = master.getHost().getPrivateAddress().getHostAddress();
284
+ logger.info("Adding reverse proxy rule for archive candidate with hostname "+ hostname + " and private ip address " + privateIpAdress);
280 285
reverseProxyCluster.setPlainRedirect(hostname, master, Optional.of(optionalKeyName), privateKeyEncryptionPassphrase);
281 286
sendMailAboutNewArchiveCandidate(replicaSet);
282 287
return replicaSet;
... ...
@@ -1722,7 +1727,7 @@ public class LandscapeServiceImpl implements LandscapeService {
1722 1727
1723 1728
private void sendMailAboutNewArchiveCandidate(
1724 1729
AwsApplicationReplicaSet<String, SailingAnalyticsMetrics, SailingAnalyticsProcess<String>> replicaSet) throws MailException {
1725
- sendMailToReplicaSetOwner(replicaSet, "StartingNewArchiveCandidateSubject", "StartingNewArchiveCandidateBody", Optional.of(ServerActions.CONFIGURE_REMOTE_INSTANCES));
1730
+ sendMailToReplicaSetOwner(replicaSet, "StartingNewArchiveCandidateSubject", "StartingNewArchiveCandidateBody", Optional.empty());
1726 1731
}
1727 1732
1728 1733
private void sendMailAboutMasterUnavailable(