From fcc5f71695c08e8edc2f2bf303e0c15a96bf41bf Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sat, 31 Dec 2022 01:14:50 +0100 Subject: [PATCH] bug5627: copying tags to new target groups; various smaller fixes --- .../ui/client/LandscapeManagementPanel.java | 6 +-- .../LandscapeManagementWriteService.java | 4 +- .../LandscapeManagementWriteServiceAsync.java | 6 +-- .../ui/client/ShardManagementPanel.java | 40 +++++++++---------- .../LandscapeManagementWriteServiceImpl.java | 38 +++++++++--------- .../landscape/impl/LandscapeServiceImpl.java | 20 +++++----- .../gateway/impl/SailingServerImpl.java | 6 ++- .../landscape/aws/impl/AwsLandscapeImpl.java | 6 ++- .../aws/orchestration/CreateShard.java | 35 ++++++++-------- .../security/util/impl/SecuredServerImpl.java | 4 +- 10 files changed, 84 insertions(+), 81 deletions(-) diff --git a/java/com.sap.sailing.landscape.ui/src/com/sap/sailing/landscape/ui/client/LandscapeManagementPanel.java b/java/com.sap.sailing.landscape.ui/src/com/sap/sailing/landscape/ui/client/LandscapeManagementPanel.java index e4e19113c1c..01457ece31d 100755 --- a/java/com.sap.sailing.landscape.ui/src/com/sap/sailing/landscape/ui/client/LandscapeManagementPanel.java +++ b/java/com.sap.sailing.landscape.ui/src/com/sap/sailing/landscape/ui/client/LandscapeManagementPanel.java @@ -312,7 +312,6 @@ public class LandscapeManagementPanel extends SimplePanel { return new LinkBuilder().setReplicaSet(replicaSet).setRegion(regionsTable.getSelectionModel().getSelectedObject()).setPathMode(LinkBuilder.pathModes.AmiSearch).build(); } }; - applicationReplicaSetsTable.addColumn(autoScalingGroupAmiIdColumn, stringMessages.machineImageId(), (rs1, rs2)->new NaturalComparator().compare(rs1.getAutoScalingGroupAmiId(), rs2.getAutoScalingGroupAmiId())); final ActionsColumn, ApplicationReplicaSetsImagesBarCell> applicationReplicaSetsActionColumn = new ActionsColumn, ApplicationReplicaSetsImagesBarCell>( new ApplicationReplicaSetsImagesBarCell(userService, stringMessages), /* permission checker */ (applicationReplicaSet, action)->true); @@ -350,10 +349,7 @@ public class LandscapeManagementPanel extends SimplePanel { regionsTable.getSelectionModel().getSelectedObject(), Collections.singleton(applicationReplicaSetToUpgrade))); applicationReplicaSetsActionColumn.addAction(ApplicationReplicaSetsImagesBarCell.ACTION_OPEN_SHARD_MANAGEMENT, - selected -> { - openShardManagementPanel(stringMessages, regionsTable.getSelectionModel().getSelectedObject(), - selected); - }); + selectedReplicaSet -> openShardManagementPanel(stringMessages, regionsTable.getSelectionModel().getSelectedObject(), selectedReplicaSet)); // see below for the finalization o the applicationRelicaSetsActionColumn; we need to have the machineImagesTable ready for the last action... final CaptionPanel applicationReplicaSetsCaptionPanel = new CaptionPanel(stringMessages.applicationReplicaSets()); final VerticalPanel applicationReplicaSetsVerticalPanel = new VerticalPanel(); diff --git a/java/com.sap.sailing.landscape.ui/src/com/sap/sailing/landscape/ui/client/LandscapeManagementWriteService.java b/java/com.sap.sailing.landscape.ui/src/com/sap/sailing/landscape/ui/client/LandscapeManagementWriteService.java index 87117b69cb0..8dd187c8618 100755 --- a/java/com.sap.sailing.landscape.ui/src/com/sap/sailing/landscape/ui/client/LandscapeManagementWriteService.java +++ b/java/com.sap.sailing.landscape.ui/src/com/sap/sailing/landscape/ui/client/LandscapeManagementWriteService.java @@ -154,7 +154,7 @@ public interface LandscapeManagementWriteService extends RemoteService { public void removeShard(AwsShardDTO shard, SailingApplicationReplicaSetDTO replicaset, String region, byte[] passphrase) throws Exception; - void appendShardingKeysToShard(Iterable selectedLeaderBoardNames, String region, String shardName, SailingApplicationReplicaSetDTO replicaset, String bearertoken, byte[] passphraseForPrivateKeyDecryption) throws Exception; + void appendShardingKeysToShard(Iterable shardingKeysToAppend, String region, String shardName, SailingApplicationReplicaSetDTO replicaSet, String bearerToken, byte[] passphraseForPrivateKeyDecryption) throws Exception; - void removeShardingKeysToShard(Iterable selectedShardingKeys, String region, String shardName, SailingApplicationReplicaSetDTO replicaset, String bearertoken, byte[] passphraseForPrivateKeyDecryption) throws Exception; + void removeShardingKeysFromShard(Iterable shardingKeysToRemove, String region, String shardName, SailingApplicationReplicaSetDTO replicaSet, String bearerToken, byte[] passphraseForPrivateKeyDecryption) throws Exception; } diff --git a/java/com.sap.sailing.landscape.ui/src/com/sap/sailing/landscape/ui/client/LandscapeManagementWriteServiceAsync.java b/java/com.sap.sailing.landscape.ui/src/com/sap/sailing/landscape/ui/client/LandscapeManagementWriteServiceAsync.java index 6416c38237f..e9623540b97 100755 --- a/java/com.sap.sailing.landscape.ui/src/com/sap/sailing/landscape/ui/client/LandscapeManagementWriteServiceAsync.java +++ b/java/com.sap.sailing.landscape.ui/src/com/sap/sailing/landscape/ui/client/LandscapeManagementWriteServiceAsync.java @@ -197,11 +197,11 @@ public interface LandscapeManagementWriteServiceAsync { String instanceTypeName, String optionalKeyName, byte[] privateKeyEncryptionPassphrase, AsyncCallback> callback); - void getLeaderboardNames(SailingApplicationReplicaSetDTO replicaset, String bearertoken, + void getLeaderboardNames(SailingApplicationReplicaSetDTO replicaSet, String bearerToken, AsyncCallback> names); void addShard(String shardName, ArrayList selectedLeaderBoards, - SailingApplicationReplicaSetDTO replicaset, String bearertoken, String region, + SailingApplicationReplicaSetDTO replicaSet, String bearerToken, String region, byte[] passphraseForPrivateKeyDecryption, AsyncCallback callback); void getShards(SailingApplicationReplicaSetDTO replicaset, String region, String bearertoken, @@ -267,7 +267,7 @@ public interface LandscapeManagementWriteServiceAsync { * @param passphraseForPrivateKeyDecryption * @param callback */ - void removeShardingKeysToShard(Iterable selectedLeaderBoards, String region, String shardName, + void removeShardingKeysFromShard(Iterable selectedLeaderBoards, String region, String shardName, SailingApplicationReplicaSetDTO replicaset, String bearertoken, byte[] passphraseForPrivateKeyDecryption, AsyncCallback callback); } diff --git a/java/com.sap.sailing.landscape.ui/src/com/sap/sailing/landscape/ui/client/ShardManagementPanel.java b/java/com.sap.sailing.landscape.ui/src/com/sap/sailing/landscape/ui/client/ShardManagementPanel.java index 948da7be04b..586ed1a1fbc 100644 --- a/java/com.sap.sailing.landscape.ui/src/com/sap/sailing/landscape/ui/client/ShardManagementPanel.java +++ b/java/com.sap.sailing.landscape.ui/src/com/sap/sailing/landscape/ui/client/ShardManagementPanel.java @@ -41,7 +41,7 @@ public class ShardManagementPanel extends SimplePanel { private final TableWrapperWithMultiSelectionAndFilter regattasTable; private final TableWrapperWithMultiSelectionAndFilter shardTable; private final TableWrapperWithMultiSelectionAndFilter selectedKeysTable; - private final TextBox baerertokenText; + private final TextBox bearertokenText; private SailingApplicationReplicaSetDTO replicaSet; private final BusyIndicator shardBusy; private final BusyIndicator leaderboardsBusy; @@ -106,11 +106,11 @@ public class ShardManagementPanel extends SimplePanel { actionPanel.add(removeShardButton); mainPanel.add(actionPanel); final HorizontalPanel usercredentials = new HorizontalPanel(); - baerertokenText = new TextBox(); + bearertokenText = new TextBox(); final Label brearerhinttext = new Label(stringMessages.bearerTokenOrNullForApplicationReplicaSetToArchive("")); brearerhinttext.getElement().getStyle().setFontSize(15, Unit.PX); usercredentials.add(brearerhinttext); - usercredentials.add(baerertokenText); + usercredentials.add(bearertokenText); mainPanel.add(usercredentials); shardsCaption = new CaptionPanel(StringMessages.INSTANCE.shard()); shardTable.addColumn(t -> t.getName(), StringMessages.INSTANCE.shardname()); @@ -269,9 +269,8 @@ public class ShardManagementPanel extends SimplePanel { private void getLeaderboards() { setLeaderboardBusy(true); - landscapeManagementService.getLeaderboardNames(replicaSet, baerertokenText.getValue(), + landscapeManagementService.getLeaderboardNames(replicaSet, getBearerToken(), new AsyncCallback>() { - @Override public void onSuccess(ArrayList result) { leaderboards = result; @@ -282,15 +281,19 @@ public class ShardManagementPanel extends SimplePanel { @Override public void onFailure(Throwable caught) { errorReporter.reportError("Error while retriving regattas."); - + setLeaderboardBusy(false); + setShardTableBusy(false); } }); } - private void getShards() { - landscapeManagementService.getShards(replicaSet, region, baerertokenText.getValue(), - new AsyncCallback>>() { + private String getBearerToken() { + return Util.hasLength(bearertokenText.getValue()) ? bearertokenText.getValue(): null; + } + private void getShards() { + landscapeManagementService.getShards(replicaSet, region, getBearerToken(), + new AsyncCallback>>() { @Override public void onFailure(Throwable caught) { errorReporter.reportError(caught.getMessage()); @@ -302,16 +305,11 @@ public class ShardManagementPanel extends SimplePanel { shards = result; setShardTableBusy(false); display(); - } }); } private void addShardButtonPress() { - if (baerertokenText.getValue() == null || baerertokenText.getValue() == "") { - errorReporter.reportError("Please enter a bearertoken"); - return; - } Set selectedLeaderboards = regattasTable.getSelectionModel().getSelectedSet(); if (!selectedLeaderboards.isEmpty() && replicaSet != null) { DialogBox nameRequest = new DialogBox(false); @@ -336,8 +334,7 @@ public class ShardManagementPanel extends SimplePanel { ArrayList l = new ArrayList<>(); l.addAll(selectedLeaderboards); landscapeManagementService.addShard(nameText.getValue(), l, replicaSet, - baerertokenText.getValue(), region, passphrase.getBytes(), new AsyncCallback() { - + getBearerToken(), region, passphrase.getBytes(), new AsyncCallback() { @Override public void onSuccess(Void result) { Notification.notify("Created succesfully", NotificationType.SUCCESS); @@ -362,7 +359,6 @@ public class ShardManagementPanel extends SimplePanel { for (AwsShardDTO selection : shardTable.getSelectionModel().getSelectedSet()) { landscapeManagementService.removeShard(selection, replicaSet, region, passphrase.getBytes(), new AsyncCallback() { - @Override public void onFailure(Throwable caught) { errorReporter.reportError(caught.getMessage()); @@ -386,14 +382,16 @@ public class ShardManagementPanel extends SimplePanel { final Iterable selectedLeaderboards = regattasTable.getSelectionModel().getSelectedSet(); final AwsShardDTO shard = shardTable.getSelectionModel().getSelectedSet().iterator().next(); landscapeManagementService.appendShardingKeysToShard(selectedLeaderboards, region, shard.getName(), - replicaSet, baerertokenText.getValue(), passphrase.getBytes(), new AsyncCallback() { + replicaSet, getBearerToken(), passphrase.getBytes(), new AsyncCallback() { @Override public void onFailure(Throwable caught) { + setLeaderboardBusy(false); errorReporter.reportError(caught.getMessage()); } @Override public void onSuccess(Void result) { + setLeaderboardBusy(false); appendMessage(stringMessages.successfullyAppendedShardingKeysToShard(Util.join(", ", selectedLeaderboards), shard.getName())); refresh(); } @@ -408,15 +406,17 @@ public class ShardManagementPanel extends SimplePanel { && shardTable.getSelectionModel().getSelectedSet().size() == 1) { final Iterable selectedLeaderboards = selectedKeysTable.getSelectionModel().getSelectedSet(); final AwsShardDTO shard = shardTable.getSelectionModel().getSelectedSet().iterator().next(); - landscapeManagementService.removeShardingKeysToShard(selectedLeaderboards, region, shard.getName(), - replicaSet, baerertokenText.getValue(), passphrase.getBytes(), new AsyncCallback() { + landscapeManagementService.removeShardingKeysFromShard(selectedLeaderboards, region, shard.getName(), + replicaSet, getBearerToken(), passphrase.getBytes(), new AsyncCallback() { @Override public void onFailure(Throwable caught) { + setLeaderboardBusy(false); errorReporter.reportError(caught.getMessage()); } @Override public void onSuccess(Void result) { + setLeaderboardBusy(false); appendMessage(stringMessages.successfullyRemovedLeaderboardsFromShard(Util.join(", ", selectedLeaderboards), shard.getName())); refresh(); } diff --git a/java/com.sap.sailing.landscape.ui/src/com/sap/sailing/landscape/ui/server/LandscapeManagementWriteServiceImpl.java b/java/com.sap.sailing.landscape.ui/src/com/sap/sailing/landscape/ui/server/LandscapeManagementWriteServiceImpl.java index 4a27538ccb0..f635f39e10c 100755 --- a/java/com.sap.sailing.landscape.ui/src/com/sap/sailing/landscape/ui/server/LandscapeManagementWriteServiceImpl.java +++ b/java/com.sap.sailing.landscape.ui/src/com/sap/sailing/landscape/ui/server/LandscapeManagementWriteServiceImpl.java @@ -876,16 +876,15 @@ public class LandscapeManagementWriteServiceImpl extends ResultCachingProxiedRem @Override public Map> getShards(SailingApplicationReplicaSetDTO replicaSetDTO, - String region, String bearertoken) throws Exception { + String region, String bearerToken) throws Exception { checkLandscapeManageAwsPermission(); final AwsRegion awsRegion = new AwsRegion(replicaSetDTO.getMaster().getHost().getRegion(), getLandscape()); final Map> shardsDTO = new HashMap<>(); - SailingServer server = getLandscapeService().getSailingServer(replicaSetDTO.getHostname(), bearertoken, + final SailingServer server = getLandscapeService().getSailingServer(replicaSetDTO.getHostname(), bearerToken, Optional.empty()); final AwsApplicationReplicaSet> applicationServerReplicaSet = convertFromApplicationReplicaSetDTO( awsRegion, replicaSetDTO); - - Map mapping = new HashMap<>(); + final Map mapping = new HashMap<>(); for (String leaderboard : server.getLeaderboardNames()) { mapping.put(server.getLeaderboardShardingKey(leaderboard), leaderboard); } @@ -893,7 +892,7 @@ public class LandscapeManagementWriteServiceImpl extends ResultCachingProxiedRem shardsDTO.put(createAwsShardDTO(entry.getKey(), applicationServerReplicaSet.getName(), server, mapping), entry.getValue()); } - Map> res = new HashMap<>(); + final Map> res = new HashMap<>(); for (Entry> entry : shardsDTO.entrySet()) { res.put(entry.getKey(), Util.asList(Util.map(entry.getValue(), LeaderboardNameDTO::new))); } @@ -911,33 +910,32 @@ public class LandscapeManagementWriteServiceImpl extends ResultCachingProxiedRem } @Override - public void appendShardingKeysToShard(Iterable selectedLeaderBoardnames, String region, - String shardName, SailingApplicationReplicaSetDTO replicaSetDTO, String bearertoken, + public void appendShardingKeysToShard(Iterable sharindKeysToAppend, String region, + String shardName, SailingApplicationReplicaSetDTO replicaSet, String bearerToken, byte[] passphraseForPrivateKeyDecryption) throws Exception { checkLandscapeManageAwsPermission(); - final AwsRegion awsRegion = new AwsRegion(replicaSetDTO.getMaster().getHost().getRegion(), getLandscape()); - final AwsApplicationReplicaSet> replicaSet = convertFromApplicationReplicaSetDTO( - awsRegion, replicaSetDTO); + final AwsRegion awsRegion = new AwsRegion(replicaSet.getMaster().getHost().getRegion(), getLandscape()); + final AwsApplicationReplicaSet> rs = convertFromApplicationReplicaSetDTO( + awsRegion, replicaSet); final AwsApplicationReplicaSet> applicationReplicaSet = getLandscape() - .getApplicationReplicaSet(awsRegion, replicaSet.getServerName(), replicaSet.getMaster(), - replicaSet.getReplicas()); - getLandscapeService().appendShardingKeysToShard(Util.map(selectedLeaderBoardnames, t -> t.getName()), - applicationReplicaSet, passphraseForPrivateKeyDecryption, awsRegion, shardName, bearertoken); + .getApplicationReplicaSet(awsRegion, rs.getServerName(), rs.getMaster(), rs.getReplicas()); + getLandscapeService().appendShardingKeysToShard(Util.map(sharindKeysToAppend, t -> t.getName()), + applicationReplicaSet, passphraseForPrivateKeyDecryption, awsRegion, shardName, bearerToken); } - public void removeShardingKeysToShard(Iterable selectedShardingKeys, String region, - String shardName, SailingApplicationReplicaSetDTO replicaset, String bearertoken, + public void removeShardingKeysFromShard(Iterable selectedShardingKeys, String region, + String shardName, SailingApplicationReplicaSetDTO replicaSet, String bearerToken, byte[] passphraseForPrivateKeyDecryption) throws Exception { checkLandscapeManageAwsPermission(); final AwsRegion awsRegion = new AwsRegion(region, getLandscape()); - final AwsApplicationReplicaSet> replicaSet = convertFromApplicationReplicaSetDTO( - awsRegion, replicaset); + final AwsApplicationReplicaSet> rs = convertFromApplicationReplicaSetDTO( + awsRegion, replicaSet); getLandscapeService().removeShardingKeysFromShard(Util.asList(Util.map(selectedShardingKeys, t -> t.getName())), - replicaSet, passphraseForPrivateKeyDecryption, awsRegion, shardName, bearertoken); + rs, passphraseForPrivateKeyDecryption, awsRegion, shardName, bearerToken); } public AwsShardDTO createAwsShardDTO(AwsShard shard, String replicaSetName, SailingServer server, Map leaderboardMapping) throws Exception { - return new AwsShardDTO(Util.map(shard.getKeys(), t -> leaderboardMapping.get(t)), + return new AwsShardDTO(Util.filter(Util.map(shard.getKeys(), t -> leaderboardMapping.get(t)), leaderboardName->leaderboardName!=null), shard.getTargetGroup().getTargetGroupArn(), shard.getTargetGroup().getName(), shard.getAutoScalingGroup().getAutoScalingGroup().autoScalingGroupARN(), shard.getTargetGroup().getLoadBalancerArn(), shard.getAutoScalingGroup().getName(), diff --git a/java/com.sap.sailing.landscape/src/com/sap/sailing/landscape/impl/LandscapeServiceImpl.java b/java/com.sap.sailing.landscape/src/com/sap/sailing/landscape/impl/LandscapeServiceImpl.java index b52a9551b67..6abc4b8b171 100644 --- a/java/com.sap.sailing.landscape/src/com/sap/sailing/landscape/impl/LandscapeServiceImpl.java +++ b/java/com.sap.sailing.landscape/src/com/sap/sailing/landscape/impl/LandscapeServiceImpl.java @@ -1593,11 +1593,11 @@ public class LandscapeServiceImpl implements LandscapeService { } @Override - public SailingServer getSailingServer(String hostname, String bearertoken, Optional port) + public SailingServer getSailingServer(String hostname, String bearerToken, Optional port) throws MalformedURLException { final SailingServerFactory fac = sailingServerFactoryTracker.getService(); return fac.getSailingServer(RemoteServerUtil.getBaseServerUrl(hostname, - port.isPresent() ? port.get() : /* defaults to HTTPS */ 443), bearertoken); + port.orElse(443 /* defaults to HTTPS */)), bearerToken); } private >, String, SailingAnalyticsMetrics, SailingAnalyticsProcess>> com.sap.sse.landscape.aws.orchestration.ShardProcedure.Builder>, String, SailingAnalyticsMetrics, SailingAnalyticsProcess> createShardBuilder() { @@ -1617,11 +1617,10 @@ public class LandscapeServiceImpl implements LandscapeService { @Override public void removeShardingKeysFromShard(Iterable selectedleaderboards, AwsApplicationReplicaSet> applicationReplicaSet, - byte[] passphraseForPrivateKeyDecription, AwsRegion region, String shardName, String bearertoken) + byte[] passphraseForPrivateKeyDecription, AwsRegion region, String shardName, String bearerToken) throws Exception { - final SailingServer server = getSailingServer(applicationReplicaSet.getHostname(), bearertoken, + final SailingServer server = getSailingServer(applicationReplicaSet.getHostname(), bearerToken, /* HTTPS port */ Optional.of(443)); - Set shardingKeys = new HashSet<>(); for (String leaderboardName : selectedleaderboards) { shardingKeys.add(server.getLeaderboardShardingKey(leaderboardName)); @@ -1631,11 +1630,12 @@ public class LandscapeServiceImpl implements LandscapeService { .setPassphrase(passphraseForPrivateKeyDecription).build().run(); } + @Override public void appendShardingKeysToShard(Iterable selectedLeaderboards, AwsApplicationReplicaSet> applicationReplicaSet, - byte[] passphraseForPrivateKeyDecription, AwsRegion region, String shardName, String bearertoken) + byte[] passphraseForPrivateKeyDecription, AwsRegion region, String shardName, String bearerToken) throws Exception { - final SailingServer server = getSailingServer(applicationReplicaSet.getHostname(), bearertoken, + final SailingServer server = getSailingServer(applicationReplicaSet.getHostname(), bearerToken, /* HTTPS port */ Optional.of(443)); final Set shardingkeys = new HashSet(); for (String s : selectedLeaderboards) { @@ -1646,6 +1646,7 @@ public class LandscapeServiceImpl implements LandscapeService { .setPassphrase(passphraseForPrivateKeyDecription).build().run(); } + @Override public void removeShard( AwsApplicationReplicaSet> applicationReplicaSet, String shardTargetGroupArn) throws Exception { @@ -1657,11 +1658,12 @@ public class LandscapeServiceImpl implements LandscapeService { } } + @Override public void addShard(Iterable selectedLeaderboardNames, AwsApplicationReplicaSet> applicationReplicaSet, - AwsRegion region, String bearertoken, byte[] passphraseForPrivateKeyDecription, String shardName) + AwsRegion region, String bearerToken, byte[] passphraseForPrivateKeyDecription, String shardName) throws Exception { - final SailingServer server = getSailingServer(applicationReplicaSet.getHostname(), bearertoken, + final SailingServer server = getSailingServer(applicationReplicaSet.getHostname(), bearerToken, Optional.of(443)); final Set shardingkeys = new HashSet(); for (final String s : selectedLeaderboardNames) { diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/SailingServerImpl.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/SailingServerImpl.java index 644139f8213..592ff5e734a 100755 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/SailingServerImpl.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/SailingServerImpl.java @@ -69,7 +69,11 @@ public class SailingServerImpl extends SecuredServerImpl implements SailingServe public Iterable getLeaderboardNames() throws Exception { final URL leaderboardsUrl = new URL(getBaseUrl(), GATEWAY_URL_PREFIX+LeaderboardsResource.V1_LEADERBOARDS); final HttpGet getLeaderboards = new HttpGet(leaderboardsUrl.toString()); - final JSONArray jsonResponse = (JSONArray) getJsonParsedResponse(getLeaderboards).getA(); + final Pair jsonParsedResponse = getJsonParsedResponse(getLeaderboards); + final JSONArray jsonResponse = (JSONArray) jsonParsedResponse.getA(); + if (jsonResponse == null) { + throw new IllegalAccessError("Error accessing leaderboard names; response status "+jsonParsedResponse.getB()); + } return Util.map(jsonResponse, o->o.toString()); } diff --git a/java/com.sap.sse.landscape.aws/src/com/sap/sse/landscape/aws/impl/AwsLandscapeImpl.java b/java/com.sap.sse.landscape.aws/src/com/sap/sse/landscape/aws/impl/AwsLandscapeImpl.java index 97f5fc4301b..0723259f315 100644 --- a/java/com.sap.sse.landscape.aws/src/com/sap/sse/landscape/aws/impl/AwsLandscapeImpl.java +++ b/java/com.sap.sse.landscape.aws/src/com/sap/sse/landscape/aws/impl/AwsLandscapeImpl.java @@ -2036,8 +2036,12 @@ public class AwsLandscapeImpl implements AwsLandscape .availabilityZones(availabilityZones) .targetGroupARNs(targetgroup.getTargetGroupArn()) .launchConfigurationName(launchConfigurationName); + final List awsTags = new ArrayList<>(); + final List parentTags = autoscalingParent.getAutoScalingGroup().tags(); + for (final software.amazon.awssdk.services.autoscaling.model.TagDescription parentTag : parentTags) { + awsTags.add(software.amazon.awssdk.services.autoscaling.model.Tag.builder().key(parentTag.key()).value(parentTag.value()).build()); + } tags.ifPresent(t->{ - final List awsTags = new ArrayList<>(); for (final Entry tag : t) { awsTags.add(software.amazon.awssdk.services.autoscaling.model.Tag.builder().key(tag.getKey()).value(tag.getValue()).build()); } diff --git a/java/com.sap.sse.landscape.aws/src/com/sap/sse/landscape/aws/orchestration/CreateShard.java b/java/com.sap.sse.landscape.aws/src/com/sap/sse/landscape/aws/orchestration/CreateShard.java index 7674966f073..e551e5e65ad 100644 --- a/java/com.sap.sse.landscape.aws/src/com/sap/sse/landscape/aws/orchestration/CreateShard.java +++ b/java/com.sap.sse.landscape.aws/src/com/sap/sse/landscape/aws/orchestration/CreateShard.java @@ -2,13 +2,13 @@ package com.sap.sse.landscape.aws.orchestration; import java.util.Map; import java.util.Optional; -import java.util.concurrent.Callable; import java.util.logging.Level; import java.util.logging.Logger; import com.sap.sse.common.Duration; import com.sap.sse.common.HttpRequestHeaderConstants; import com.sap.sse.common.Util; +import com.sap.sse.landscape.Landscape; import com.sap.sse.landscape.application.ApplicationProcess; import com.sap.sse.landscape.application.ApplicationProcessMetrics; import com.sap.sse.landscape.aws.ApplicationLoadBalancer; @@ -43,6 +43,7 @@ public class CreateShard builder) throws Exception { super(builder); @@ -51,7 +52,6 @@ public class CreateShard, ShardingKey, MetricsT, ProcessT>, ShardingKey, MetricsT extends ApplicationProcessMetrics, ProcessT extends ApplicationProcess> extends ShardProcedure.BuilderImpl, ShardingKey, MetricsT, ProcessT> { - @Override public CreateShard build() throws Exception { assert shardingKeys != null; @@ -100,7 +100,7 @@ public class CreateShard ppc.values(/* just any path */"/temp/")).build()) + .pathPatternConfig(ppc -> ppc.values(PATH_UNUSED_BY_ANY_APPLICATION)).build()) .actions(Action.builder() .forwardConfig(ForwardActionConfig.builder() .targetGroups(TargetGroupTuple.builder() @@ -112,25 +112,22 @@ public class CreateShard() { - public Boolean call() { - boolean ret = true; - final Map, TargetHealth> healths = getLandscape() - .getTargetHealthDescriptions(targetgroup); - if (healths.isEmpty()) { - ret = false; // if there is no Aws in target - } else { - for (Map.Entry, TargetHealth> instance : healths.entrySet()) { - if (instance.getValue().state() != TargetHealthStateEnum.HEALTHY) { - ret = false; // if this instance is unhealthy - break; - } + Wait.wait(()->{ + boolean ret = true; + final Map, TargetHealth> healths = getLandscape() + .getTargetHealthDescriptions(targetgroup); + if (healths.isEmpty()) { + ret = false; // if there is no Aws in target + } else { + for (Map.Entry, TargetHealth> instance : healths.entrySet()) { + if (instance.getValue().state() != TargetHealthStateEnum.HEALTHY) { + ret = false; // if this instance is unhealthy + break; } } - return ret; } - }, Optional.of(Duration.ONE_MINUTE.times(10)), Duration.ONE_SECOND.times(5), Level.INFO, - "Instances not yet healty"); + return ret; + }, Landscape.WAIT_FOR_HOST_TIMEOUT, Duration.ONE_SECOND.times(30), Level.INFO, "Instances not yet healty"); // remove dummy-rule for (Rule r : newRuleSet) { loadBalancer.deleteRules(r); diff --git a/java/com.sap.sse.security/src/com/sap/sse/security/util/impl/SecuredServerImpl.java b/java/com.sap.sse.security/src/com/sap/sse/security/util/impl/SecuredServerImpl.java index fec33c56fc1..f080d9765a2 100644 --- a/java/com.sap.sse.security/src/com/sap/sse/security/util/impl/SecuredServerImpl.java +++ b/java/com.sap.sse.security/src/com/sap/sse/security/util/impl/SecuredServerImpl.java @@ -12,6 +12,7 @@ import java.util.UUID; import java.util.logging.Logger; import javax.ws.rs.core.Response; +import javax.ws.rs.core.Response.Status.Family; import org.apache.http.HttpRequest; import org.apache.http.HttpResponse; @@ -75,7 +76,8 @@ public class SecuredServerImpl implements SecuredServer { final HttpResponse response = client.execute(request); final int statusCode = response.getStatusLine().getStatusCode(); Object jsonParseResult; - if (statusCode == Response.Status.NO_CONTENT.getStatusCode()) { + if (statusCode == Response.Status.NO_CONTENT.getStatusCode() + || Response.Status.fromStatusCode(statusCode).getFamily() != Family.SUCCESSFUL) { jsonParseResult = null; } else { response.getEntity().writeTo(bos);