Merge remote-tracking branch 'origin/master'

This commit is contained in:
Axel Uhl
2024-03-13 09:48:16 +01:00
16 changed files with 53 additions and 23 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
FROM docker.sapsailing.com/sapjvm8:8.1.096
FROM docker.sapsailing.com/sapjvm8:8.1.097
ARG RELEASE
LABEL maintainer=axel.uhl@sap.com
# Download and extract the release
+1 -1
View File
@@ -1,5 +1,5 @@
FROM buildpack-deps:bullseye
ARG SAPJVM_VERSION=8.1.096
ARG SAPJVM_VERSION=8.1.097
LABEL maintainer=axel.uhl@sap.com
# Download and extract the SAP JVM 8
ENV PATH=${PATH}:/opt/sapjvm_8/bin
+1 -1
View File
@@ -1,4 +1,4 @@
ARG SAPJVM_VERSION=8.1.096
ARG SAPJVM_VERSION=8.1.097
FROM docker.sapsailing.com/sapjvm8:${SAPJVM_VERSION}
LABEL maintainer=axel.uhl@sap.com
# Download and extract the release
@@ -24,7 +24,7 @@ public class ChangeAutoScalingReplicaInstanceTypeDialog extends DataEntryDialog<
super(stringMessages.moveMasterToOtherInstance(), /* message */ null, stringMessages.ok(), stringMessages.cancel(), /* validator */ null, callback);
this.stringMessages = stringMessages;
instanceTypeListBox = LandscapeDialogUtil.createInstanceTypeListBox(this, landscapeManagementService,
stringMessages, SharedLandscapeConstants.DEFAULT_DEDICATED_INSTANCE_TYPE_NAME, errorReporter);
stringMessages, SharedLandscapeConstants.DEFAULT_DEDICATED_INSTANCE_TYPE_NAME, errorReporter, /* canBeDeployedInNlbInstanceBasedTargetGroup */ false);
}
@Override
@@ -193,10 +193,10 @@ public class CreateApplicationReplicaSetDialog extends AbstractApplicationReplic
dynamicLoadBalancerCheckBox = mayUseDynamicLoadBalancer ? createCheckbox(stringMessages.useDynamicLoadBalancer()) : null;
domainNameBox = createTextBox(SharedLandscapeConstants.DEFAULT_DOMAIN_NAME, 40);
dedicatedInstanceTypeListBox = LandscapeDialogUtil.createInstanceTypeListBox(this, landscapeManagementService,
stringMessages, SharedLandscapeConstants.DEFAULT_DEDICATED_INSTANCE_TYPE_NAME, errorReporter);
stringMessages, SharedLandscapeConstants.DEFAULT_DEDICATED_INSTANCE_TYPE_NAME, errorReporter, /* canBeDeployedInNlbInstanceBasedTargetGroup */ false);
dedicatedInstanceTypeLabel = new Label();
sharedInstanceTypeListBox = LandscapeDialogUtil.createInstanceTypeListBox(this, landscapeManagementService,
stringMessages, SharedLandscapeConstants.DEFAULT_SHARED_INSTANCE_TYPE_NAME, errorReporter);
stringMessages, SharedLandscapeConstants.DEFAULT_SHARED_INSTANCE_TYPE_NAME, errorReporter, /* canBeDeployedInNlbInstanceBasedTargetGroup */ false);
sharedInstanceTypeLabel = new Label();
memoryInMegabytesBox = createIntegerBox(null, 7);
memoryTotalSizeFactorBox = createIntegerBox(null, 2);
@@ -128,7 +128,7 @@ public class CreateReverseProxyInClusterDialog
existingReverseProxies);
proxyName = createTextBox("", 20);
dedicatedInstanceTypeListBox = LandscapeDialogUtil.createInstanceTypeListBox(this, landscapeManagementService,
stringMessages, SharedLandscapeConstants.DEFAULT_REVERSE_PROXY_INSTANCE_TYPE, errorReporter);
stringMessages, SharedLandscapeConstants.DEFAULT_REVERSE_PROXY_INSTANCE_TYPE, errorReporter, /* canBeDeployedInNlbInstanceBasedTargetGroup */ true);
// setup labels
nameLabel = new Label(stringMessages.instanceName());
instanceTypeLabel = new Label(stringMessages.instanceType());
@@ -13,10 +13,10 @@ import com.sap.sse.gwt.client.dialog.DataEntryDialog;
public class LandscapeDialogUtil {
public static ListBox createInstanceTypeListBox(DataEntryDialog<?> dialog,
LandscapeManagementWriteServiceAsync landscapeManagementService, StringMessages stringMessages,
String defaultInstanceTypeName, ErrorReporter errorReporter) {
String defaultInstanceTypeName, ErrorReporter errorReporter, boolean canBeDeployedInNlbInstanceBasedTargetGroup) {
return createInstanceTypeListBoxWithAdditionalDefaultEntry(dialog, /* additionalItem */ null,
/* additionalValue */ null, landscapeManagementService, stringMessages, defaultInstanceTypeName,
errorReporter);
errorReporter, canBeDeployedInNlbInstanceBasedTargetGroup);
}
/**
@@ -24,17 +24,20 @@ public class LandscapeDialogUtil {
* if not {@code null}, an item with this name is created, and then {@code additionalValue} must not be
* {@code null} because it is then used as that item's value. The item will then be set as the one
* selected.
* @param canBeDeployedInNlbInstanceBasedTargetGroup A boolean indicating whether the instance list should filter out those
* which cannot be added to NLB, instance-based target groups. True indicates that it needs to be deployable
* to this type of target group, so the resulting listbox should not contain the banned instance types.
*/
public static ListBox createInstanceTypeListBoxWithAdditionalDefaultEntry(DataEntryDialog<?> dialog,
String additionalItem, String additionalValue,
LandscapeManagementWriteServiceAsync landscapeManagementService, StringMessages stringMessages,
String defaultInstanceTypeName, ErrorReporter errorReporter) {
String defaultInstanceTypeName, ErrorReporter errorReporter, boolean canBeDeployedInNlbInstanceBasedTargetGroup) {
final ListBox instanceTypeBox = dialog.createListBox(/* isMultipleSelect */false);
if (additionalItem != null) {
instanceTypeBox.addItem(additionalItem, additionalValue);
instanceTypeBox.setSelectedIndex(0);
}
landscapeManagementService.getInstanceTypeNames(new AsyncCallback<ArrayList<String>>() {
landscapeManagementService.getInstanceTypeNames(canBeDeployedInNlbInstanceBasedTargetGroup, new AsyncCallback<ArrayList<String>>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError(caught.getMessage());
@@ -26,7 +26,7 @@ import com.sap.sse.landscape.aws.common.shared.RedirectDTO;
public interface LandscapeManagementWriteService extends RemoteService {
ArrayList<String> getRegions();
ArrayList<String> getInstanceTypeNames();
ArrayList<String> getInstanceTypeNames(boolean canBeDeployedInNlbInstanceBasedTargetGroup);
ArrayList<MongoEndpointDTO> getMongoEndpoints(String region) throws Exception;
@@ -28,7 +28,12 @@ import com.sap.sse.landscape.aws.common.shared.RedirectDTO;
public interface LandscapeManagementWriteServiceAsync {
void getRegions(AsyncCallback<ArrayList<String>> callback);
void getInstanceTypeNames(AsyncCallback<ArrayList<String>> callback);
/**
* @param canBeDeployedInNlbInstanceBasedTargetGroup
* A boolean indicating, if true, that the list of available instance types should not contain those,
* which cannot be added to an instance-based Network Load Balancer.
*/
void getInstanceTypeNames(boolean canBeDeployedInNlbInstanceBasedTargetGroup, AsyncCallback<ArrayList<String>> callback);
void getMongoEndpoints(String regionId, AsyncCallback<ArrayList<MongoEndpointDTO>> callback);
@@ -106,7 +106,7 @@ public class MongoScalingDialog extends DataEntryDialog<MongoScalingInstructions
voteBox = createIntegerBox(0, /* visibleLength */ 2);
grid.setWidget(row++, 1, voteBox);
grid.setWidget(row, 0, new Label(stringMessages.instanceType()));
instanceTypeBox = LandscapeDialogUtil.createInstanceTypeListBox(this, landscapeManagementService, stringMessages, DEFAULT_INSTANCE_TYPE, errorReporter);
instanceTypeBox = LandscapeDialogUtil.createInstanceTypeListBox(this, landscapeManagementService, stringMessages, DEFAULT_INSTANCE_TYPE, errorReporter, /* canBeDeployedInNlbInstanceBasedTargetGroup */ false);
grid.setWidget(row++, 1, instanceTypeBox);
launchPanel.add(grid);
panel.add(launchPanel);
@@ -38,7 +38,7 @@ public class MoveAllAwayFromHostDialog extends DataEntryDialog<String> {
stringMessages.ok(), stringMessages.cancel(), /* validator */ null, callback);
instanceTypeListBox = LandscapeDialogUtil.createInstanceTypeListBoxWithAdditionalDefaultEntry(this,
stringMessages.sameAsExistingHost(), SAME_AS_MASTER, landscapeManagementService, stringMessages, /* default */ stringMessages.sameAsExistingHost(),
errorReporter);
errorReporter, /* canBeDeployedInNlbInstanceBasedTargetGroup */ false);
instanceTypeLabel = new Label();
}
@@ -79,7 +79,7 @@ public class MoveMasterProcessDialog extends DataEntryDialog<MoveMasterProcessDi
super(stringMessages.moveMasterToOtherInstance(), /* message */ null, stringMessages.ok(), stringMessages.cancel(), /* validator */ null, callback);
this.stringMessages = stringMessages;
instanceTypeListBox = LandscapeDialogUtil.createInstanceTypeListBox(this, landscapeManagementService,
stringMessages, SharedLandscapeConstants.DEFAULT_DEDICATED_INSTANCE_TYPE_NAME, errorReporter);
stringMessages, SharedLandscapeConstants.DEFAULT_DEDICATED_INSTANCE_TYPE_NAME, errorReporter, /* canBeDeployedInNlbInstanceBasedTargetGroup */ false);
instanceTypeLabel = new Label();
masterReplicationBearerTokenBox = createTextBox("", 40);
replicaReplicationBearerTokenBox = createTextBox("", 40);
@@ -57,7 +57,7 @@ public class SwitchToReplicaOnSharedInstanceDialog extends DataEntryDialog<Switc
sharedInstanceTypeListBox = LandscapeDialogUtil.createInstanceTypeListBoxWithAdditionalDefaultEntry(this,
stringMessages.sameAsMaster(), DEFAULT_INSTANCE_TYPE,
landscapeManagementService,
stringMessages, SharedLandscapeConstants.DEFAULT_SHARED_INSTANCE_TYPE_NAME, errorReporter);
stringMessages, SharedLandscapeConstants.DEFAULT_SHARED_INSTANCE_TYPE_NAME, errorReporter, /* canBeDeployedInNlbInstanceBasedTargetGroup */ false);
replicaReplicationBearerTokenBox = createTextBox("", 40);
memoryInMegabytesBox = createIntegerBox(null, 7);
memoryTotalSizeFactorBox = createIntegerBox(SharedLandscapeConstants.DEFAULT_NUMBER_OF_PROCESSES_IN_MEMORY, 2);
@@ -208,11 +208,21 @@ public class LandscapeManagementWriteServiceImpl extends ResultCachingProxiedRem
Util.addAll(Util.map(AwsLandscape.obtain(RemoteServiceMappingConstants.pathPrefixForShardingKey).getRegions(), r->r.getId()), result);
return result;
}
private static final Set<InstanceType> INSTANCE_TYPES_BANNED_FROM_INSTANCE_BASE_NLB_TARGET_GROUPS_AS_SET =
new HashSet<>(Arrays.asList(LandscapeConstants.INSTANCE_TYPES_BANNED_FROM_INSTANCE_BASED_NLB_TARGET_GROUPS));
@Override
public ArrayList<String> getInstanceTypeNames() {
public ArrayList<String> getInstanceTypeNames(boolean canBeDeployedInNlbInstanceBasedTargetGroup) {
final ArrayList<String> result = new ArrayList<>();
Util.addAll(Util.map(Arrays.asList(InstanceType.values()), instanceType->instanceType.name()), result);
Util.addAll(
Util.map(
// if deployment to NLB instance-based target group is to be possible, remove those
// instance types that are banned from those sorts of target groups
Util.filter(Arrays.asList(InstanceType.values()), instanceType->
!canBeDeployedInNlbInstanceBasedTargetGroup ||
!INSTANCE_TYPES_BANNED_FROM_INSTANCE_BASE_NLB_TARGET_GROUPS_AS_SET.contains(instanceType)),
instanceType->instanceType.name()), result);
return result;
}
@@ -241,8 +251,11 @@ public class LandscapeManagementWriteServiceImpl extends ResultCachingProxiedRem
@Override
public ArrayList<AvailabilityZoneDTO> describeAvailabilityZones(String region) {
final ArrayList<AvailabilityZoneDTO> availabilityZones = new ArrayList<>();
getLandscape().getAvailabilityZones(new AwsRegion(region, getLandscape()))
.forEach(az -> availabilityZones.add(new AvailabilityZoneDTO(az.getName(), region, az.getId())));
getLandscape()
.getAvailabilityZones(new AwsRegion(region, getLandscape()),
Optional.of(getLandscape().getDefaultSecurityGroupForApplicationLoadBalancer(
new AwsRegion(region, getLandscape())).getVpcId()))
.forEach(az -> availabilityZones.add(new AvailabilityZoneDTO(az.getName(), region, az.getId())));
return availabilityZones;
}
@@ -1,5 +1,7 @@
package com.sap.sse.landscape.aws;
import software.amazon.awssdk.services.ec2.model.InstanceType;
public interface LandscapeConstants {
/**
* The key <strong>tag</strong>, indicating that an instance only acts as a reverse proxy
@@ -63,4 +65,11 @@ public interface LandscapeConstants {
* A tag key indicating that a subnet is not to be used for deploying instances, by autoscaling groups or by load balancers.
*/
String NO_INSTANCE_DEPLOYMENT = "noInstanceDeployment";
InstanceType[] INSTANCE_TYPES_BANNED_FROM_INSTANCE_BASED_NLB_TARGET_GROUPS = new InstanceType[] { InstanceType.CC1_4_XLARGE, InstanceType.C1_MEDIUM, InstanceType.C1_XLARGE,
InstanceType.CC2_8_XLARGE, InstanceType.CG1_4_XLARGE, InstanceType.CR1_8_XLARGE, InstanceType.G2_2_XLARGE,
InstanceType.G2_8_XLARGE, InstanceType.HI1_4_XLARGE, InstanceType.HS1_8_XLARGE, InstanceType.M1_LARGE,
InstanceType.M1_MEDIUM, InstanceType.M1_SMALL, InstanceType.M1_XLARGE, InstanceType.M2_2_XLARGE,
InstanceType.M2_4_XLARGE, InstanceType.M2_XLARGE, InstanceType.M3_2_XLARGE, InstanceType.M3_LARGE,
InstanceType.M3_MEDIUM, InstanceType.M3_XLARGE, InstanceType.T1_MICRO};
}
@@ -16,7 +16,7 @@ public interface Landscape<ShardingKey> {
/**
* The timeout for a host to come up
*/
Optional<Duration> WAIT_FOR_HOST_TIMEOUT = Optional.of(Duration.ONE_MINUTE.times(30));
Optional<Duration> WAIT_FOR_HOST_TIMEOUT = Optional.of(Duration.ONE_HOUR.times(2));
/**
* The timeout for a running process to respond
*/