8efe6b5cd842308f998cd468fededb365605093a
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( |