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 5d55315ce65..a6251ebe7cb 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 @@ -413,7 +413,7 @@ public class LandscapeManagementPanel extends SimplePanel { new AmazonMachineImagesImagesBarCell(stringMessages), /* permission checker */ (machineImage, action)->true); machineImagesActionColumn.addAction(AmazonMachineImagesImagesBarCell.ACTION_REMOVE, DefaultActions.DELETE, machineImageToRemove->removeMachineImage(stringMessages, machineImageToRemove)); machineImagesActionColumn.addAction(AmazonMachineImagesImagesBarCell.ACTION_UPGRADE, - machineImageToUpgrade->upgradeMachineImage(stringMessages, machineImageToUpgrade, applicationReplicaSetsTable.getSelectionModel().getSelectedSet())); + machineImageToUpgrade->upgradeMachineImage(stringMessages, machineImageToUpgrade, getApplicationReplicaSetsToUpgradeAutoScalingReplicaAmisFor(machineImageToUpgrade))); machineImagesTable.addColumn(machineImagesActionColumn, stringMessages.actions()); final CaptionPanel machineImagesCaptionPanel = new CaptionPanel(stringMessages.machineImages()); final VerticalPanel machineImagesVerticalPanel = new VerticalPanel(); @@ -432,6 +432,17 @@ public class LandscapeManagementPanel extends SimplePanel { // TODO support archive server upgrade // TODO upon region selection show RabbitMQ, and Central Reverse Proxy clusters in region } + + private Iterable> getApplicationReplicaSetsToUpgradeAutoScalingReplicaAmisFor(AmazonMachineImageDTO amiBeingUpdated) { + final Iterable> result; + final Set> selection = applicationReplicaSetsTable.getSelectionModel().getSelectedSet(); + if (selection == null || selection.isEmpty()) { + result = Util.filter(applicationReplicaSetsTable.getFilterPanel().getAll(), rs->rs.getAutoScalingGroupAmiId().equals(amiBeingUpdated.getId())); + } else { + result = selection; + } + return result; + } private void updateAutoScalingReplicaAmi(StringMessages stringMessages, String regionId, Iterable> applicationReplicaSetsToUpdateAutoScalingReplicaAmiFor, @@ -448,25 +459,25 @@ public class LandscapeManagementPanel extends SimplePanel { landscapeManagementService.updateImageForReplicaSets(regionId, applicationReplicaSetsToUpdate, amiOrNullForLatest, sshKeyManagementPanel.getSelectedKeyPair().getName(), sshKeyManagementPanel.getPassphraseForPrivateKeyDecryption() != null ? sshKeyManagementPanel.getPassphraseForPrivateKeyDecryption().getBytes() : null, - new AsyncCallback>>() { - @Override - public void onFailure(Throwable caught) { - applicationReplicaSetsBusy.setBusy(false); - errorReporter.reportError(caught.getMessage()); - } + new AsyncCallback>>() { + @Override + public void onFailure(Throwable caught) { + applicationReplicaSetsBusy.setBusy(false); + errorReporter.reportError(caught.getMessage()); + } - @Override - public void onSuccess(ArrayList> result) { - applicationReplicaSetsBusy.setBusy(false); - for (final SailingApplicationReplicaSetDTO updatedReplicaSet : result) { - applicationReplicaSetsTable.replaceBasedOnEntityIdentityComparator(updatedReplicaSet); - Notification.notify(stringMessages.successfullyUpdatedMachineImageForAutoScalingReplicas( - updatedReplicaSet.getName(), updatedReplicaSet.getAutoScalingGroupAmiId()), - NotificationType.SUCCESS); - } - applicationReplicaSetsTable.refresh(); - } - }); + @Override + public void onSuccess(ArrayList> result) { + applicationReplicaSetsBusy.setBusy(false); + for (final SailingApplicationReplicaSetDTO updatedReplicaSet : result) { + applicationReplicaSetsTable.replaceBasedOnEntityIdentityComparator(updatedReplicaSet); + Notification.notify(stringMessages.successfullyUpdatedMachineImageForAutoScalingReplicas( + updatedReplicaSet.getName(), updatedReplicaSet.getAutoScalingGroupAmiId()), + NotificationType.SUCCESS); + } + applicationReplicaSetsTable.refresh(); + } + }); } private String getGwtStatusLink(final String host, int port) { @@ -1180,7 +1191,7 @@ public class LandscapeManagementPanel extends SimplePanel { stringMessages.successfullyUpgradedMachineImage(machineImageToUpgrade.getName(), machineImageToUpgrade.getId(), machineImageToUpgrade.getRegionId(), result.getName()), NotificationType.SUCCESS); - if (result.getType().equals(SharedLandscapeConstants.IMAGE_TYPE_TAG_VALUE_SAILING) + if (Util.equalsWithNull(result.getType(), SharedLandscapeConstants.IMAGE_TYPE_TAG_VALUE_SAILING) && selectedApplicationReplicaSetsToUpdate != null && !Util.isEmpty(selectedApplicationReplicaSetsToUpdate)) { if (Window.confirm(stringMessages.updateSelectedReplicaSetAmisToo(Util.join(", ", selectedApplicationReplicaSetsToUpdate)))) { 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 baad1a75190..d698d7d75a2 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 @@ -412,9 +412,9 @@ public class LandscapeManagementWriteServiceImpl extends ResultCachingProxiedRem .setOptionalTimeout(IMAGE_UPGRADE_TIMEOUT); final UpgradeAmi upgradeAmi = upgradeAmiBuilder.build(); upgradeAmi.run(); - // TODO bug5502: here or in the procedure we should offer the user to also upgrade the launch configurations using this AMI final AmazonMachineImage resultingAmi = upgradeAmi.getUpgradedAmi(); - return new AmazonMachineImageDTO(resultingAmi.getId(), resultingAmi.getRegion().getId(), resultingAmi.getName(), /* TODO type */ null, resultingAmi.getState().name(), resultingAmi.getCreatedAt()); + return new AmazonMachineImageDTO(resultingAmi.getId(), resultingAmi.getRegion().getId(), resultingAmi.getName(), + resultingAmi.getType(), resultingAmi.getState().name(), resultingAmi.getCreatedAt()); } @Override diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Axel).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Axel).launch index 6ef84ce4c41..ebed56a7433 100644 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Axel).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Axel).launch @@ -29,254 +29,246 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sse.landscape.aws/src/com/sap/sse/landscape/aws/AmazonMachineImage.java b/java/com.sap.sse.landscape.aws/src/com/sap/sse/landscape/aws/AmazonMachineImage.java index 9c35e581271..dad69f93208 100755 --- a/java/com.sap.sse.landscape.aws/src/com/sap/sse/landscape/aws/AmazonMachineImage.java +++ b/java/com.sap.sse.landscape.aws/src/com/sap/sse/landscape/aws/AmazonMachineImage.java @@ -1,5 +1,7 @@ package com.sap.sse.landscape.aws; +import com.sap.sse.common.Util; +import com.sap.sse.landscape.Landscape; import com.sap.sse.landscape.MachineImage; import software.amazon.awssdk.services.ec2.model.BlockDeviceMapping; @@ -13,6 +15,10 @@ public interface AmazonMachineImage extends MachineImage { String getId(); ImageState getState(); + + default String getType() { + return Util.first(Util.map(Util.filter(getTags(), t->t.key().equals(Landscape.IMAGE_TYPE_TAG_NAME)), Tag::value)); + } Iterable getTags(); }