From 075ac012828df33e64f6eecd425ad22cdc688688 Mon Sep 17 00:00:00 2001 From: Marc Talbott Date: Fri, 12 Jan 2024 16:40:51 -0500 Subject: [PATCH] [WOR-1410] add regional default parameters for landing zones (#378) --- .../utils/LandingZoneFlightBeanBag.java | 8 ++ .../LandingZoneAzureRegionConfiguration.java | 22 ++++ .../CromwellStepsDefinitionProvider.java | 69 +++++------- .../factories/ParametersResolver.java | 22 +--- .../ProtectedDataStepsDefinitionProvider.java | 21 ++-- .../factories/StepsDefinitionProvider.java | 5 +- .../flight/LandingZoneFlightMapKeys.java | 1 + .../flight/ParametersResolverProvider.java | 44 ++++++++ .../CreateLandingZoneResourcesFlight.java | 10 +- .../resource/step/BaseResourceCreateStep.java | 13 ++- .../step/ConnectLongTermLogStorageStep.java | 4 +- ...stOptimizationDataCollectionRulesStep.java | 7 +- .../step/CreateAksLogSettingsStep.java | 4 +- .../create/resource/step/CreateAksStep.java | 63 ++++++----- .../resource/step/CreateAppInsightsStep.java | 8 +- .../resource/step/CreateBatchAccountStep.java | 7 +- .../step/CreateBatchLogSettingsStep.java | 7 +- .../step/CreateLandingZoneIdentityStep.java | 7 +- ...teLogAnalyticsDataCollectionRulesStep.java | 7 +- .../step/CreateLogAnalyticsWorkspaceStep.java | 7 +- .../step/CreateNetworkSecurityGroupStep.java | 7 +- .../step/CreatePostgresLogSettingsStep.java | 4 +- .../step/CreatePostgresqlDNSStep.java | 7 +- .../resource/step/CreatePostgresqlDbStep.java | 54 ++++++---- .../step/CreateRelayNamespaceStep.java | 7 +- .../step/CreateSentinelAlertRulesStep.java | 4 +- ...eateSentinelRunPlaybookAutomationRule.java | 4 +- .../resource/step/CreateSentinelStep.java | 8 +- .../step/CreateStorageAccountCorsRules.java | 8 +- .../step/CreateStorageAccountStep.java | 15 ++- .../CreateStorageAuditLogSettingsStep.java | 7 +- .../step/CreateVirtualNetworkLinkStep.java | 7 +- .../create/resource/step/CreateVnetStep.java | 26 +++-- .../resource/step/GetParametersResolver.java | 47 ++++++++ .../ValidateLandingZoneParametersStep.java | 13 ++- .../ParametersResolverProviderTest.java | 100 ++++++++++++++++++ .../factories/ParametersResolverTest.java | 64 ----------- .../factories/TestLandingZoneFactory.java | 3 +- .../BlobCorsParametersValidatorTest.java | 43 ++++---- .../flight/ResourceNameProviderTest.java | 4 +- .../step/BaseResourceCreateStepTest.java | 3 +- .../create/resource/step/BaseStepTest.java | 2 +- .../ConnectLongTermLogStorageStepTest.java | 3 - ...timizationDataCollectionRulesStepTest.java | 2 +- .../step/CreateAksLogSettingsStepTest.java | 5 +- .../resource/step/CreateAksStepTest.java | 64 ++++++----- .../step/CreateAppInsightsStepTest.java | 4 +- .../step/CreateBatchAccountStepTest.java | 4 +- .../step/CreateBatchLogSettingsStepTest.java | 3 +- .../CreateLandingZoneIdentityStepTest.java | 4 +- ...gAnalyticsDataCollectionRulesStepTest.java | 3 +- .../CreateLogAnalyticsWorkspaceStepTest.java | 3 +- .../CreateNetworkSecurityGroupStepTest.java | 3 +- .../step/CreatePostgresDNSStepTest.java | 4 +- .../CreatePostgresLogSettingsStepTest.java | 3 +- .../step/CreatePostgresqlDbStepTest.java | 56 +++++----- .../step/CreateRelayNamespaceStepTest.java | 3 +- .../CreateSentinelAlertRulesStepTest.java | 3 - ...SentinelRunPlaybookAutomationRuleTest.java | 5 +- .../resource/step/CreateSentinelStepTest.java | 3 +- .../step/CreateStorageAccountStepTest.java | 19 ++-- ...CreateStorageAuditLogSettingsStepTest.java | 3 +- .../CreateVirtualNetworkLinkStepTest.java | 4 +- .../resource/step/CreateVnetStepTest.java | 35 +++--- ...ValidateLandingZoneParametersStepTest.java | 44 +++----- 65 files changed, 556 insertions(+), 497 deletions(-) create mode 100644 library/src/main/java/bio/terra/landingzone/library/configuration/LandingZoneAzureRegionConfiguration.java create mode 100644 library/src/main/java/bio/terra/landingzone/stairway/flight/ParametersResolverProvider.java create mode 100644 library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/GetParametersResolver.java create mode 100644 library/src/test/java/bio/terra/landingzone/library/landingzones/definition/factories/ParametersResolverProviderTest.java delete mode 100644 library/src/test/java/bio/terra/landingzone/library/landingzones/definition/factories/ParametersResolverTest.java diff --git a/library/src/main/java/bio/terra/landingzone/common/utils/LandingZoneFlightBeanBag.java b/library/src/main/java/bio/terra/landingzone/common/utils/LandingZoneFlightBeanBag.java index 7ea77042b..90ec49a98 100644 --- a/library/src/main/java/bio/terra/landingzone/common/utils/LandingZoneFlightBeanBag.java +++ b/library/src/main/java/bio/terra/landingzone/common/utils/LandingZoneFlightBeanBag.java @@ -9,6 +9,7 @@ import bio.terra.landingzone.service.bpm.LandingZoneBillingProfileManagerService; import bio.terra.landingzone.service.iam.LandingZoneSamService; import bio.terra.landingzone.service.landingzone.azure.LandingZoneService; +import bio.terra.landingzone.stairway.flight.ParametersResolverProvider; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; @@ -24,6 +25,7 @@ public class LandingZoneFlightBeanBag { private final LandingZoneBillingProfileManagerService bpmService; private final ObjectMapper objectMapper; private final LandingZoneProtectedDataConfiguration landingZoneProtectedDataConfiguration; + private final ParametersResolverProvider parametersResolverProvider; private final AzureCustomerUsageConfiguration azureCustomerUsageConfiguration; private final AzureCredentialsProvider azureCredentialsProvider; @@ -37,6 +39,7 @@ public LandingZoneFlightBeanBag( LandingZoneSamService samService, LandingZoneBillingProfileManagerService bpmService, LandingZoneProtectedDataConfiguration landingZoneProtectedDataConfiguration, + ParametersResolverProvider parametersResolverProvider, AzureCustomerUsageConfiguration azureCustomerUsageConfiguration, AzureCredentialsProvider azureCredentialsProvider, ObjectMapper objectMapper) { @@ -47,6 +50,7 @@ public LandingZoneFlightBeanBag( this.samService = samService; this.bpmService = bpmService; this.landingZoneProtectedDataConfiguration = landingZoneProtectedDataConfiguration; + this.parametersResolverProvider = parametersResolverProvider; this.azureCustomerUsageConfiguration = azureCustomerUsageConfiguration; this.azureCredentialsProvider = azureCredentialsProvider; this.objectMapper = objectMapper; @@ -88,6 +92,10 @@ public LandingZoneProtectedDataConfiguration getLandingZoneProtectedDataConfigur return landingZoneProtectedDataConfiguration; } + public ParametersResolverProvider getParametersResolverProvider() { + return parametersResolverProvider; + } + public AzureCustomerUsageConfiguration getAzureCustomerUsageConfiguration() { return azureCustomerUsageConfiguration; } diff --git a/library/src/main/java/bio/terra/landingzone/library/configuration/LandingZoneAzureRegionConfiguration.java b/library/src/main/java/bio/terra/landingzone/library/configuration/LandingZoneAzureRegionConfiguration.java new file mode 100644 index 000000000..50564d56d --- /dev/null +++ b/library/src/main/java/bio/terra/landingzone/library/configuration/LandingZoneAzureRegionConfiguration.java @@ -0,0 +1,22 @@ +package bio.terra.landingzone.library.configuration; + +import java.util.Map; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +@Configuration +@EnableConfigurationProperties +@ConfigurationProperties(prefix = "landingzone.regions") +public class LandingZoneAzureRegionConfiguration { + + private Map> defaultParameters; + + public Map> getDefaultParameters() { + return defaultParameters; + } + + public void setDefaultParameters(Map> defaultParameters) { + this.defaultParameters = defaultParameters; + } +} diff --git a/library/src/main/java/bio/terra/landingzone/library/landingzones/definition/factories/CromwellStepsDefinitionProvider.java b/library/src/main/java/bio/terra/landingzone/library/landingzones/definition/factories/CromwellStepsDefinitionProvider.java index 304b3364c..c760b97c5 100644 --- a/library/src/main/java/bio/terra/landingzone/library/landingzones/definition/factories/CromwellStepsDefinitionProvider.java +++ b/library/src/main/java/bio/terra/landingzone/library/landingzones/definition/factories/CromwellStepsDefinitionProvider.java @@ -7,6 +7,7 @@ import bio.terra.landingzone.library.landingzones.definition.DefinitionHeader; import bio.terra.landingzone.library.landingzones.definition.DefinitionVersion; import bio.terra.landingzone.library.landingzones.definition.factories.validation.InputParametersValidationFactory; +import bio.terra.landingzone.stairway.flight.ParametersResolverProvider; import bio.terra.landingzone.stairway.flight.ResourceNameProvider; import bio.terra.landingzone.stairway.flight.create.resource.step.CreateAksCostOptimizationDataCollectionRulesStep; import bio.terra.landingzone.stairway.flight.create.resource.step.CreateAksStep; @@ -30,6 +31,7 @@ import bio.terra.landingzone.stairway.flight.create.resource.step.EnableAksContainerInsightsStep; import bio.terra.landingzone.stairway.flight.create.resource.step.EnableAksContainerLogV2Step; import bio.terra.landingzone.stairway.flight.create.resource.step.GetManagedResourceGroupInfo; +import bio.terra.landingzone.stairway.flight.create.resource.step.GetParametersResolver; import bio.terra.landingzone.stairway.flight.create.resource.step.KubernetesClientProviderImpl; import bio.terra.landingzone.stairway.flight.create.resource.step.ValidateLandingZoneParametersStep; import bio.terra.stairway.RetryRule; @@ -61,82 +63,59 @@ public List availableVersions() { @Override public List> get( ArmManagers armManagers, - ParametersResolver parametersResolver, + ParametersResolverProvider parametersResolverProvider, ResourceNameProvider resourceNameProvider, LandingZoneProtectedDataConfiguration landingZoneProtectedDataConfiguration) { return List.of( + Pair.of(new GetManagedResourceGroupInfo(armManagers), RetryRules.cloud()), + Pair.of(new GetParametersResolver(parametersResolverProvider), RetryRules.shortDatabase()), Pair.of( new ValidateLandingZoneParametersStep( InputParametersValidationFactory.buildValidators( - StepsDefinitionFactoryType.CROMWELL_BASE_DEFINITION_STEPS_PROVIDER_TYPE), - parametersResolver), + StepsDefinitionFactoryType.CROMWELL_BASE_DEFINITION_STEPS_PROVIDER_TYPE)), RetryRules.shortExponential()), - Pair.of(new GetManagedResourceGroupInfo(armManagers), RetryRules.cloud()), Pair.of( - new CreateNetworkSecurityGroupStep( - armManagers, parametersResolver, resourceNameProvider), + new CreateNetworkSecurityGroupStep(armManagers, resourceNameProvider), RetryRules.cloud()), + Pair.of(new CreateVnetStep(armManagers, resourceNameProvider), RetryRules.cloud()), Pair.of( - new CreateVnetStep(armManagers, parametersResolver, resourceNameProvider), + new CreateLogAnalyticsWorkspaceStep(armManagers, resourceNameProvider), RetryRules.cloud()), + Pair.of(new CreatePostgresqlDNSStep(armManagers, resourceNameProvider), RetryRules.cloud()), Pair.of( - new CreateLogAnalyticsWorkspaceStep( - armManagers, parametersResolver, resourceNameProvider), + new CreateVirtualNetworkLinkStep(armManagers, resourceNameProvider), RetryRules.cloud()), Pair.of( - new CreatePostgresqlDNSStep(armManagers, parametersResolver, resourceNameProvider), + new CreateLandingZoneIdentityStep(armManagers, resourceNameProvider), RetryRules.cloud()), + Pair.of(new CreatePostgresqlDbStep(armManagers, resourceNameProvider), RetryRules.cloud()), Pair.of( - new CreateVirtualNetworkLinkStep(armManagers, parametersResolver, resourceNameProvider), - RetryRules.cloud()), - Pair.of( - new CreateLandingZoneIdentityStep( - armManagers, parametersResolver, resourceNameProvider), - RetryRules.cloud()), - Pair.of( - new CreatePostgresqlDbStep(armManagers, parametersResolver, resourceNameProvider), - RetryRules.cloud()), - Pair.of( - new CreateStorageAccountStep(armManagers, parametersResolver, resourceNameProvider), - RetryRules.cloud()), + new CreateStorageAccountStep(armManagers, resourceNameProvider), RetryRules.cloud()), + Pair.of(new CreateBatchAccountStep(armManagers, resourceNameProvider), RetryRules.cloud()), Pair.of( - new CreateBatchAccountStep(armManagers, parametersResolver, resourceNameProvider), + new CreateStorageAccountCorsRules(armManagers, resourceNameProvider), RetryRules.cloud()), Pair.of( - new CreateStorageAccountCorsRules( - armManagers, parametersResolver, resourceNameProvider), - RetryRules.cloud()), - Pair.of( - new CreateLogAnalyticsDataCollectionRulesStep( - armManagers, parametersResolver, resourceNameProvider), - RetryRules.cloud()), - Pair.of( - new CreateAksStep(armManagers, parametersResolver, resourceNameProvider), + new CreateLogAnalyticsDataCollectionRulesStep(armManagers, resourceNameProvider), RetryRules.cloud()), + Pair.of(new CreateAksStep(armManagers, resourceNameProvider), RetryRules.cloud()), Pair.of( new CreateLandingZoneFederatedIdentityStep( armManagers, new KubernetesClientProviderImpl()), RetryRules.cloud()), Pair.of( - new CreateRelayNamespaceStep(armManagers, parametersResolver, resourceNameProvider), - RetryRules.cloud()), - Pair.of( - new CreateStorageAuditLogSettingsStep( - armManagers, parametersResolver, resourceNameProvider), - RetryRules.cloud()), + new CreateRelayNamespaceStep(armManagers, resourceNameProvider), RetryRules.cloud()), Pair.of( - new CreateBatchLogSettingsStep(armManagers, parametersResolver, resourceNameProvider), + new CreateStorageAuditLogSettingsStep(armManagers, resourceNameProvider), RetryRules.cloud()), Pair.of( - new CreatePostgresLogSettingsStep( - armManagers, parametersResolver, resourceNameProvider), - RetryRules.cloud()), + new CreateBatchLogSettingsStep(armManagers, resourceNameProvider), RetryRules.cloud()), Pair.of( - new CreateAppInsightsStep(armManagers, parametersResolver, resourceNameProvider), + new CreatePostgresLogSettingsStep(armManagers, resourceNameProvider), RetryRules.cloud()), + Pair.of(new CreateAppInsightsStep(armManagers, resourceNameProvider), RetryRules.cloud()), Pair.of( - new CreateAksCostOptimizationDataCollectionRulesStep( - armManagers, parametersResolver, resourceNameProvider), + new CreateAksCostOptimizationDataCollectionRulesStep(armManagers, resourceNameProvider), RetryRules.cloud()), Pair.of( new EnableAksContainerLogV2Step( diff --git a/library/src/main/java/bio/terra/landingzone/library/landingzones/definition/factories/ParametersResolver.java b/library/src/main/java/bio/terra/landingzone/library/landingzones/definition/factories/ParametersResolver.java index 7fb1245f8..57b86e7d7 100644 --- a/library/src/main/java/bio/terra/landingzone/library/landingzones/definition/factories/ParametersResolver.java +++ b/library/src/main/java/bio/terra/landingzone/library/landingzones/definition/factories/ParametersResolver.java @@ -1,28 +1,10 @@ package bio.terra.landingzone.library.landingzones.definition.factories; -import java.util.HashMap; import java.util.Map; -public class ParametersResolver { - private final Map defaultParameters; - private final Map parameters; - - public ParametersResolver(Map parameters, Map defaultParameters) { - if (defaultParameters == null) { - this.defaultParameters = new HashMap<>(); - } else { - this.defaultParameters = defaultParameters; - } - - this.parameters = parameters; - } +public record ParametersResolver(Map parameters) { public String getValue(String parameterName) { - if (parameters == null) { - return defaultParameters.getOrDefault(parameterName, ""); - } - - return parameters.getOrDefault( - parameterName, defaultParameters.getOrDefault(parameterName, "")); + return parameters.getOrDefault(parameterName, ""); } } diff --git a/library/src/main/java/bio/terra/landingzone/library/landingzones/definition/factories/ProtectedDataStepsDefinitionProvider.java b/library/src/main/java/bio/terra/landingzone/library/landingzones/definition/factories/ProtectedDataStepsDefinitionProvider.java index 0978f4e82..1462903e9 100644 --- a/library/src/main/java/bio/terra/landingzone/library/landingzones/definition/factories/ProtectedDataStepsDefinitionProvider.java +++ b/library/src/main/java/bio/terra/landingzone/library/landingzones/definition/factories/ProtectedDataStepsDefinitionProvider.java @@ -5,6 +5,7 @@ import bio.terra.landingzone.library.landingzones.definition.ArmManagers; import bio.terra.landingzone.library.landingzones.definition.DefinitionHeader; import bio.terra.landingzone.library.landingzones.definition.DefinitionVersion; +import bio.terra.landingzone.stairway.flight.ParametersResolverProvider; import bio.terra.landingzone.stairway.flight.ResourceNameProvider; import bio.terra.landingzone.stairway.flight.create.resource.step.ConnectLongTermLogStorageStep; import bio.terra.landingzone.stairway.flight.create.resource.step.CreateAksLogSettingsStep; @@ -44,7 +45,7 @@ public List availableVersions() { @Override public List> get( ArmManagers armManagers, - ParametersResolver parametersResolver, + ParametersResolverProvider parametersResolverProvider, ResourceNameProvider resourceNameProvider, LandingZoneProtectedDataConfiguration landingZoneProtectedDataConfiguration) { // inherit all cromwell steps and define specific below @@ -52,7 +53,7 @@ public List> get( new ArrayList<>( super.get( armManagers, - parametersResolver, + parametersResolverProvider, resourceNameProvider, landingZoneProtectedDataConfiguration)); @@ -60,7 +61,6 @@ public List> get( Pair.of( new ConnectLongTermLogStorageStep( armManagers, - parametersResolver, resourceNameProvider, new ProtectedDataAzureStorageHelper(armManagers), landingZoneProtectedDataConfiguration.getLongTermStorageTableNames(), @@ -68,24 +68,18 @@ public List> get( RetryRules.cloud())); protectedDataSteps.add( - Pair.of( - new CreateSentinelStep(armManagers, parametersResolver, resourceNameProvider), - RetryRules.cloud())); + Pair.of(new CreateSentinelStep(armManagers, resourceNameProvider), RetryRules.cloud())); protectedDataSteps.add( Pair.of( new CreateSentinelRunPlaybookAutomationRule( - armManagers, - parametersResolver, - resourceNameProvider, - landingZoneProtectedDataConfiguration), + armManagers, resourceNameProvider, landingZoneProtectedDataConfiguration), RetryRules.cloud())); protectedDataSteps.add( Pair.of( new CreateSentinelAlertRulesStep( armManagers, - parametersResolver, resourceNameProvider, new AlertRulesHelper(armManagers.securityInsightsManager()), landingZoneProtectedDataConfiguration), @@ -93,10 +87,7 @@ public List> get( protectedDataSteps.add( Pair.of( new CreateAksLogSettingsStep( - armManagers, - parametersResolver, - resourceNameProvider, - landingZoneProtectedDataConfiguration), + armManagers, resourceNameProvider, landingZoneProtectedDataConfiguration), RetryRules.cloud())); return protectedDataSteps; diff --git a/library/src/main/java/bio/terra/landingzone/library/landingzones/definition/factories/StepsDefinitionProvider.java b/library/src/main/java/bio/terra/landingzone/library/landingzones/definition/factories/StepsDefinitionProvider.java index 8cc963ac1..93ed4063d 100644 --- a/library/src/main/java/bio/terra/landingzone/library/landingzones/definition/factories/StepsDefinitionProvider.java +++ b/library/src/main/java/bio/terra/landingzone/library/landingzones/definition/factories/StepsDefinitionProvider.java @@ -4,6 +4,7 @@ import bio.terra.landingzone.library.landingzones.definition.ArmManagers; import bio.terra.landingzone.library.landingzones.definition.DefinitionHeader; import bio.terra.landingzone.library.landingzones.definition.DefinitionVersion; +import bio.terra.landingzone.stairway.flight.ParametersResolverProvider; import bio.terra.landingzone.stairway.flight.ResourceNameProvider; import bio.terra.stairway.RetryRule; import bio.terra.stairway.Step; @@ -43,14 +44,14 @@ public interface StepsDefinitionProvider { * should go first in the list definition. * * @param ArmManagers armManagers - * @param ParametersResolver parametersResolver + * @param ParametersResolverProvider parametersResolverProvider * @param ResourceNameProvider resourceNameProvider * @param LandingZoneProtectedDataConfiguration landingZoneProtectedDataConfiguration * @return List of pairs of steps and step's retry rule */ List> get( ArmManagers armManagers, - ParametersResolver parametersResolver, + ParametersResolverProvider parametersResolverProvider, ResourceNameProvider resourceNameProvider, LandingZoneProtectedDataConfiguration landingZoneProtectedDataConfiguration); } diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/LandingZoneFlightMapKeys.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/LandingZoneFlightMapKeys.java index 907ce4f9d..4404e5c5f 100644 --- a/library/src/main/java/bio/terra/landingzone/stairway/flight/LandingZoneFlightMapKeys.java +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/LandingZoneFlightMapKeys.java @@ -10,6 +10,7 @@ public class LandingZoneFlightMapKeys { public static final String STORAGE_ACCOUNT_NAME = "storageAccountName"; public static final String CREATE_LANDING_ZONE_RESOURCES_INNER_FLIGHT_JOB_ID = "createLandingZoneResourcesInnerFlightJobId"; + public static final String CREATE_LANDING_ZONE_PARAMETERS_RESOLVER = "parametersResolver"; private LandingZoneFlightMapKeys() {} } diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/ParametersResolverProvider.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/ParametersResolverProvider.java new file mode 100644 index 000000000..d03326067 --- /dev/null +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/ParametersResolverProvider.java @@ -0,0 +1,44 @@ +package bio.terra.landingzone.stairway.flight; + +import bio.terra.landingzone.library.configuration.LandingZoneAzureRegionConfiguration; +import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; +import java.util.HashMap; +import java.util.Map; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class ParametersResolverProvider { + + private final LandingZoneAzureRegionConfiguration landingZoneAzureRegionConfiguration; + + @Autowired + public ParametersResolverProvider( + LandingZoneAzureRegionConfiguration landingZoneAzureRegionConfiguration) { + this.landingZoneAzureRegionConfiguration = landingZoneAzureRegionConfiguration; + } + + /** + * Returns a ParametersResolver for a set of input parameters and Azure region. Input parameters + * take precedence over regional default parameters, which in turn take precedence over default + * landing zone parameters defined in `LandingZoneDefaultParameters`. + */ + public ParametersResolver create(Map inputParameters, String region) { + var parameters = new HashMap<>(LandingZoneDefaultParameters.get()); + + var regionalParameters = landingZoneAzureRegionConfiguration.getDefaultParameters(); + + if (regionalParameters != null) { + if (region == null) { + throw new IllegalArgumentException("Region must not be null."); + } else { + parameters.putAll(regionalParameters.getOrDefault(region, new HashMap<>())); + } + } + if (inputParameters != null) { + parameters.putAll(inputParameters); + } + + return new ParametersResolver(parameters); + } +} diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/CreateLandingZoneResourcesFlight.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/CreateLandingZoneResourcesFlight.java index d9179a349..a34c93a32 100644 --- a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/CreateLandingZoneResourcesFlight.java +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/CreateLandingZoneResourcesFlight.java @@ -7,14 +7,13 @@ import bio.terra.landingzone.library.configuration.LandingZoneProtectedDataConfiguration; import bio.terra.landingzone.library.landingzones.definition.ArmManagers; import bio.terra.landingzone.library.landingzones.definition.factories.LandingZoneStepsDefinitionProviderFactory; -import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; import bio.terra.landingzone.library.landingzones.definition.factories.StepsDefinitionFactoryType; import bio.terra.landingzone.library.landingzones.definition.factories.StepsDefinitionProvider; import bio.terra.landingzone.library.landingzones.management.LandingZoneManager; import bio.terra.landingzone.model.LandingZoneTarget; import bio.terra.landingzone.service.landingzone.azure.model.LandingZoneRequest; -import bio.terra.landingzone.stairway.flight.LandingZoneDefaultParameters; import bio.terra.landingzone.stairway.flight.LandingZoneFlightMapKeys; +import bio.terra.landingzone.stairway.flight.ParametersResolverProvider; import bio.terra.landingzone.stairway.flight.ResourceNameProvider; import bio.terra.landingzone.stairway.flight.create.resource.step.AggregateLandingZoneResourcesStep; import bio.terra.landingzone.stairway.flight.exception.LandingZoneCreateException; @@ -31,7 +30,7 @@ public class CreateLandingZoneResourcesFlight extends Flight { private final LandingZoneRequest landingZoneRequest; private final ArmManagers armManagers; private final ResourceNameProvider resourceNameProvider; - private final ParametersResolver parametersResolver; + private final ParametersResolverProvider parametersResolverProvider; private final LandingZoneProtectedDataConfiguration landingZoneProtectedDataConfiguration; private final AzureCredentialsProvider azureCredentialsProvider; @@ -67,8 +66,7 @@ public CreateLandingZoneResourcesFlight(FlightMap inputParameters, Object applic StepsDefinitionFactoryType.fromString(landingZoneRequest.definition())); armManagers = initializeArmManagers(inputParameters, flightBeanBag.getAzureCustomerUsageConfiguration()); - parametersResolver = - new ParametersResolver(landingZoneRequest.parameters(), LandingZoneDefaultParameters.get()); + parametersResolverProvider = flightBeanBag.getParametersResolverProvider(); addCreateSteps(); } @@ -77,7 +75,7 @@ private void addCreateSteps() { stepsDefinitionProvider .get( armManagers, - parametersResolver, + parametersResolverProvider, resourceNameProvider, landingZoneProtectedDataConfiguration) .forEach(pair -> addStep(pair.getLeft(), pair.getRight())); diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/BaseResourceCreateStep.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/BaseResourceCreateStep.java index b99204119..5759d393b 100644 --- a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/BaseResourceCreateStep.java +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/BaseResourceCreateStep.java @@ -47,14 +47,10 @@ public abstract class BaseResourceCreateStep implements Step { protected final ArmManagers armManagers; protected final ResourceNameProvider resourceNameProvider; - protected final ParametersResolver parametersResolver; protected BaseResourceCreateStep( - ArmManagers armManagers, - ParametersResolver parametersResolver, - ResourceNameProvider resourceNameProvider) { + ArmManagers armManagers, ResourceNameProvider resourceNameProvider) { this.armManagers = armManagers; - this.parametersResolver = parametersResolver; this.resourceNameProvider = resourceNameProvider; registerForNameGeneration(resourceNameProvider, this); } @@ -150,6 +146,13 @@ protected String getMRGRegionName(FlightContext context) { .region(); } + protected ParametersResolver getParametersResolver(FlightContext context) { + return getParameterOrThrow( + context.getWorkingMap(), + LandingZoneFlightMapKeys.CREATE_LANDING_ZONE_PARAMETERS_RESOLVER, + ParametersResolver.class); + } + private void registerForNameGeneration( ResourceNameProvider resourceNameProvider, T step) { resourceNameProvider.registerStep(step); diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/ConnectLongTermLogStorageStep.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/ConnectLongTermLogStorageStep.java index 7c66a3d78..599d2b5e0 100644 --- a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/ConnectLongTermLogStorageStep.java +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/ConnectLongTermLogStorageStep.java @@ -1,7 +1,6 @@ package bio.terra.landingzone.stairway.flight.create.resource.step; import bio.terra.landingzone.library.landingzones.definition.ArmManagers; -import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; import bio.terra.landingzone.service.landingzone.azure.model.LandingZoneResource; import bio.terra.landingzone.stairway.flight.ResourceNameProvider; import bio.terra.landingzone.stairway.flight.ResourceNameRequirements; @@ -31,12 +30,11 @@ public class ConnectLongTermLogStorageStep extends BaseResourceCreateStep { public ConnectLongTermLogStorageStep( ArmManagers armManagers, - ParametersResolver parametersResolver, ResourceNameProvider resourceNameProvider, ProtectedDataAzureStorageHelper storageHelper, List tableNames, Map longTermStorageAccountIds) { - super(armManagers, parametersResolver, resourceNameProvider); + super(armManagers, resourceNameProvider); this.tableNames = tableNames; this.storageHelper = storageHelper; this.longTermStorageAccountIds = longTermStorageAccountIds; diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAksCostOptimizationDataCollectionRulesStep.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAksCostOptimizationDataCollectionRulesStep.java index bd46c629e..cb4a186b6 100644 --- a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAksCostOptimizationDataCollectionRulesStep.java +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAksCostOptimizationDataCollectionRulesStep.java @@ -2,7 +2,6 @@ import bio.terra.landingzone.library.landingzones.definition.ArmManagers; import bio.terra.landingzone.library.landingzones.definition.ResourceNameGenerator; -import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; import bio.terra.landingzone.library.landingzones.deployment.LandingZoneTagKeys; import bio.terra.landingzone.library.landingzones.deployment.ResourcePurpose; import bio.terra.landingzone.service.landingzone.azure.model.LandingZoneResource; @@ -91,10 +90,8 @@ public DataCollectionSettings getDataCollectionSettings() { } public CreateAksCostOptimizationDataCollectionRulesStep( - ArmManagers armManagers, - ParametersResolver parametersResolver, - ResourceNameProvider resourceNameProvider) { - super(armManagers, parametersResolver, resourceNameProvider); + ArmManagers armManagers, ResourceNameProvider resourceNameProvider) { + super(armManagers, resourceNameProvider); } @Override diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAksLogSettingsStep.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAksLogSettingsStep.java index f482434fa..1b8ab7e65 100644 --- a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAksLogSettingsStep.java +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAksLogSettingsStep.java @@ -5,7 +5,6 @@ import bio.terra.landingzone.library.configuration.LandingZoneProtectedDataConfiguration; import bio.terra.landingzone.library.landingzones.definition.ArmManagers; import bio.terra.landingzone.library.landingzones.definition.ResourceNameGenerator; -import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; import bio.terra.landingzone.stairway.flight.ResourceNameProvider; import bio.terra.landingzone.stairway.flight.ResourceNameRequirements; import bio.terra.landingzone.stairway.flight.exception.MissingRequiredFieldsException; @@ -46,10 +45,9 @@ public class CreateAksLogSettingsStep extends BaseResourceCreateStep { public CreateAksLogSettingsStep( ArmManagers armManagers, - ParametersResolver parametersResolver, ResourceNameProvider resourceNameProvider, LandingZoneProtectedDataConfiguration landingZoneProtectedDataConfiguration) { - super(armManagers, parametersResolver, resourceNameProvider); + super(armManagers, resourceNameProvider); this.landingZoneProtectedDataConfiguration = landingZoneProtectedDataConfiguration; } diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAksStep.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAksStep.java index 7fd23736a..a3ad711d4 100644 --- a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAksStep.java +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAksStep.java @@ -45,11 +45,8 @@ public class CreateAksStep extends BaseResourceCreateStep { // it's always true, false is only for testing; see denySleepWhilePoolingForAksStatus() method private boolean sleepWhilePollingAksStatus = true; - public CreateAksStep( - ArmManagers armManagers, - ParametersResolver parametersResolver, - ResourceNameProvider resourceNameProvider) { - super(armManagers, parametersResolver, resourceNameProvider); + public CreateAksStep(ArmManagers armManagers, ResourceNameProvider resourceNameProvider) { + super(armManagers, resourceNameProvider); } @Override @@ -57,17 +54,21 @@ protected void createResource(FlightContext context, ArmManagers armManagers) { var vNetId = getParameterOrThrow(context.getWorkingMap(), CreateVnetStep.VNET_ID, String.class); boolean costSavingsSpotNodesEnabled = Boolean.parseBoolean( - parametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.AKS_COST_SAVING_SPOT_NODES_ENABLED - .name())); + getParametersResolver(context) + .getValue( + LandingZoneDefaultParameters.ParametersNames.AKS_COST_SAVING_SPOT_NODES_ENABLED + .name())); boolean costSavingsVpaEnabled = Boolean.parseBoolean( - parametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.AKS_COST_SAVING_VPA_ENABLED.name())); + getParametersResolver(context) + .getValue( + LandingZoneDefaultParameters.ParametersNames.AKS_COST_SAVING_VPA_ENABLED + .name())); boolean autoScalingEnabled = Boolean.parseBoolean( - parametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.AKS_AUTOSCALING_ENABLED.name())); + getParametersResolver(context) + .getValue( + LandingZoneDefaultParameters.ParametersNames.AKS_AUTOSCALING_ENABLED.name())); var aks = createAks( @@ -77,7 +78,12 @@ protected void createResource(FlightContext context, ArmManagers armManagers) { costSavingsVpaEnabled, autoScalingEnabled); enableWorkloadIdentity(aks); - enableCostSavings(aks, vNetId, costSavingsSpotNodesEnabled, costSavingsVpaEnabled); + enableCostSavings( + aks, + vNetId, + costSavingsSpotNodesEnabled, + costSavingsVpaEnabled, + getParametersResolver(context)); context.getWorkingMap().put(AKS_ID, aks.id()); context @@ -122,18 +128,22 @@ private KubernetesCluster createAks( .withSystemAssignedManagedServiceIdentity() .withAgentPoolResourceGroup(getNodeResourceGroup(getMRGName(context))) .withAzureActiveDirectoryGroup( - parametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.AKS_AAD_PROFILE_USER_GROUP_ID - .name())) + getParametersResolver(context) + .getValue( + LandingZoneDefaultParameters.ParametersNames.AKS_AAD_PROFILE_USER_GROUP_ID + .name())) .defineAgentPool(resourceNameProvider.getName(getResourceType() + POOL_SUFFIX_KEY)) .withVirtualMachineSize( ContainerServiceVMSizeTypes.fromString( - parametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.AKS_MACHINE_TYPE.name()))) + getParametersResolver(context) + .getValue( + LandingZoneDefaultParameters.ParametersNames.AKS_MACHINE_TYPE + .name()))) .withAgentPoolVirtualMachineCount( Integer.parseInt( - parametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.AKS_NODE_COUNT.name()))) + getParametersResolver(context) + .getValue( + LandingZoneDefaultParameters.ParametersNames.AKS_NODE_COUNT.name()))) .withAgentPoolMode(AgentPoolMode.SYSTEM) .withVirtualNetwork(vNetId, LandingZoneDefaultParameters.Subnet.AKS_SUBNET.name()); @@ -141,12 +151,14 @@ private KubernetesCluster createAks( if (autoScalingEnabled) { int min = Integer.parseInt( - parametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.AKS_AUTOSCALING_MIN.name())); + getParametersResolver(context) + .getValue( + LandingZoneDefaultParameters.ParametersNames.AKS_AUTOSCALING_MIN.name())); int max = Integer.parseInt( - parametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.AKS_AUTOSCALING_MAX.name())); + getParametersResolver(context) + .getValue( + LandingZoneDefaultParameters.ParametersNames.AKS_AUTOSCALING_MAX.name())); aksPartial = aksPartial.withAutoScaling(min, max); } @@ -256,7 +268,8 @@ private void enableCostSavings( KubernetesCluster aks, String vNetId, boolean costSavingsSpotNodesEnabled, - boolean costSavingsVpaEnabled) { + boolean costSavingsVpaEnabled, + ParametersResolver parametersResolver) { // enable Vertical Pod Autoscaler on the AKS cluster if this option for cost savings is enabled if (costSavingsVpaEnabled) { KubernetesCluster.Update update = aks.update(); diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAppInsightsStep.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAppInsightsStep.java index e33781bca..831391cfa 100644 --- a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAppInsightsStep.java +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAppInsightsStep.java @@ -2,7 +2,6 @@ import bio.terra.landingzone.library.landingzones.definition.ArmManagers; import bio.terra.landingzone.library.landingzones.definition.ResourceNameGenerator; -import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; import bio.terra.landingzone.library.landingzones.deployment.LandingZoneTagKeys; import bio.terra.landingzone.library.landingzones.deployment.ResourcePurpose; import bio.terra.landingzone.stairway.flight.LandingZoneFlightMapKeys; @@ -21,11 +20,8 @@ public class CreateAppInsightsStep extends BaseResourceCreateStep { private static final Logger logger = LoggerFactory.getLogger(CreateAppInsightsStep.class); public static final String APP_INSIGHT_ID = "APP_INSIGHT_ID"; - public CreateAppInsightsStep( - ArmManagers armManagers, - ParametersResolver parametersResolver, - ResourceNameProvider resourceNameProvider) { - super(armManagers, parametersResolver, resourceNameProvider); + public CreateAppInsightsStep(ArmManagers armManagers, ResourceNameProvider resourceNameProvider) { + super(armManagers, resourceNameProvider); } @Override diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateBatchAccountStep.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateBatchAccountStep.java index 856c50151..bd154a65d 100644 --- a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateBatchAccountStep.java +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateBatchAccountStep.java @@ -2,7 +2,6 @@ import bio.terra.landingzone.library.landingzones.definition.ArmManagers; import bio.terra.landingzone.library.landingzones.definition.ResourceNameGenerator; -import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; import bio.terra.landingzone.library.landingzones.deployment.LandingZoneTagKeys; import bio.terra.landingzone.library.landingzones.deployment.ResourcePurpose; import bio.terra.landingzone.service.landingzone.azure.model.LandingZoneResource; @@ -23,10 +22,8 @@ public class CreateBatchAccountStep extends BaseResourceCreateStep { public static final String BATCH_ACCOUNT_RESOURCE_KEY = "BATCH_ACCOUNT"; public CreateBatchAccountStep( - ArmManagers armManagers, - ParametersResolver parametersResolver, - ResourceNameProvider resourceNameProvider) { - super(armManagers, parametersResolver, resourceNameProvider); + ArmManagers armManagers, ResourceNameProvider resourceNameProvider) { + super(armManagers, resourceNameProvider); } @Override diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateBatchLogSettingsStep.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateBatchLogSettingsStep.java index bbb1b7280..691b505f6 100644 --- a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateBatchLogSettingsStep.java +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateBatchLogSettingsStep.java @@ -2,7 +2,6 @@ import bio.terra.landingzone.library.landingzones.definition.ArmManagers; import bio.terra.landingzone.library.landingzones.definition.ResourceNameGenerator; -import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; import bio.terra.landingzone.stairway.flight.ResourceNameProvider; import bio.terra.landingzone.stairway.flight.ResourceNameRequirements; import bio.terra.stairway.FlightContext; @@ -16,10 +15,8 @@ public class CreateBatchLogSettingsStep extends BaseResourceCreateStep { private static final Logger logger = LoggerFactory.getLogger(CreateBatchLogSettingsStep.class); public CreateBatchLogSettingsStep( - ArmManagers armManagers, - ParametersResolver parametersResolver, - ResourceNameProvider resourceNameProvider) { - super(armManagers, parametersResolver, resourceNameProvider); + ArmManagers armManagers, ResourceNameProvider resourceNameProvider) { + super(armManagers, resourceNameProvider); } @Override diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateLandingZoneIdentityStep.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateLandingZoneIdentityStep.java index 9ac508454..d7ea539d6 100644 --- a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateLandingZoneIdentityStep.java +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateLandingZoneIdentityStep.java @@ -2,7 +2,6 @@ import bio.terra.landingzone.library.landingzones.definition.ArmManagers; import bio.terra.landingzone.library.landingzones.definition.ResourceNameGenerator; -import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; import bio.terra.landingzone.library.landingzones.deployment.LandingZoneTagKeys; import bio.terra.landingzone.library.landingzones.deployment.ResourcePurpose; import bio.terra.landingzone.service.landingzone.azure.model.LandingZoneResource; @@ -26,10 +25,8 @@ public class CreateLandingZoneIdentityStep extends BaseResourceCreateStep { public static final String LANDING_ZONE_IDENTITY_CLIENT_ID = "LANDING_ZONE_IDENTITY_CLIENT_ID"; public CreateLandingZoneIdentityStep( - ArmManagers armManagers, - ParametersResolver parametersResolver, - ResourceNameProvider resourceNameProvider) { - super(armManagers, parametersResolver, resourceNameProvider); + ArmManagers armManagers, ResourceNameProvider resourceNameProvider) { + super(armManagers, resourceNameProvider); } @Override diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateLogAnalyticsDataCollectionRulesStep.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateLogAnalyticsDataCollectionRulesStep.java index 3a541c606..e38d837e7 100644 --- a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateLogAnalyticsDataCollectionRulesStep.java +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateLogAnalyticsDataCollectionRulesStep.java @@ -2,7 +2,6 @@ import bio.terra.landingzone.library.landingzones.definition.ArmManagers; import bio.terra.landingzone.library.landingzones.definition.ResourceNameGenerator; -import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; import bio.terra.landingzone.library.landingzones.deployment.LandingZoneTagKeys; import bio.terra.landingzone.library.landingzones.deployment.ResourcePurpose; import bio.terra.landingzone.stairway.flight.LandingZoneFlightMapKeys; @@ -39,10 +38,8 @@ public class CreateLogAnalyticsDataCollectionRulesStep extends BaseResourceCreat LoggerFactory.getLogger(CreateLogAnalyticsDataCollectionRulesStep.class); public CreateLogAnalyticsDataCollectionRulesStep( - ArmManagers armManagers, - ParametersResolver parametersResolver, - ResourceNameProvider resourceNameProvider) { - super(armManagers, parametersResolver, resourceNameProvider); + ArmManagers armManagers, ResourceNameProvider resourceNameProvider) { + super(armManagers, resourceNameProvider); } @Override diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateLogAnalyticsWorkspaceStep.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateLogAnalyticsWorkspaceStep.java index 993b4136f..03811da78 100644 --- a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateLogAnalyticsWorkspaceStep.java +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateLogAnalyticsWorkspaceStep.java @@ -2,7 +2,6 @@ import bio.terra.landingzone.library.landingzones.definition.ArmManagers; import bio.terra.landingzone.library.landingzones.definition.ResourceNameGenerator; -import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; import bio.terra.landingzone.library.landingzones.deployment.LandingZoneTagKeys; import bio.terra.landingzone.library.landingzones.deployment.ResourcePurpose; import bio.terra.landingzone.library.landingzones.management.AzureResourceTypeUtils; @@ -31,10 +30,8 @@ public class CreateLogAnalyticsWorkspaceStep extends BaseResourceCreateStep { public static final String LOG_ANALYTICS_RESOURCE_KEY = "LOG_ANALYTICS"; public CreateLogAnalyticsWorkspaceStep( - ArmManagers armManagers, - ParametersResolver parametersResolver, - ResourceNameProvider resourceNameProvider) { - super(armManagers, parametersResolver, resourceNameProvider); + ArmManagers armManagers, ResourceNameProvider resourceNameProvider) { + super(armManagers, resourceNameProvider); } @Override diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateNetworkSecurityGroupStep.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateNetworkSecurityGroupStep.java index f54a9bdec..5baa05a06 100644 --- a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateNetworkSecurityGroupStep.java +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateNetworkSecurityGroupStep.java @@ -2,7 +2,6 @@ import bio.terra.landingzone.library.landingzones.definition.ArmManagers; import bio.terra.landingzone.library.landingzones.definition.ResourceNameGenerator; -import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; import bio.terra.landingzone.library.landingzones.deployment.LandingZoneTagKeys; import bio.terra.landingzone.library.landingzones.deployment.ResourcePurpose; import bio.terra.landingzone.service.landingzone.azure.model.LandingZoneResource; @@ -27,10 +26,8 @@ public class CreateNetworkSecurityGroupStep extends BaseResourceCreateStep { public static final String NSG_RESOURCE_KEY = "NSG"; public CreateNetworkSecurityGroupStep( - ArmManagers armManagers, - ParametersResolver parametersResolver, - ResourceNameProvider resourceNameProvider) { - super(armManagers, parametersResolver, resourceNameProvider); + ArmManagers armManagers, ResourceNameProvider resourceNameProvider) { + super(armManagers, resourceNameProvider); } @Override diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreatePostgresLogSettingsStep.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreatePostgresLogSettingsStep.java index 76e61d875..dca22f7a2 100644 --- a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreatePostgresLogSettingsStep.java +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreatePostgresLogSettingsStep.java @@ -2,7 +2,6 @@ import bio.terra.landingzone.library.landingzones.definition.ArmManagers; import bio.terra.landingzone.library.landingzones.definition.ResourceNameGenerator; -import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; import bio.terra.landingzone.stairway.flight.ResourceNameRequirements; import bio.terra.stairway.FlightContext; import java.time.Duration; @@ -16,9 +15,8 @@ public class CreatePostgresLogSettingsStep extends BaseResourceCreateStep { public CreatePostgresLogSettingsStep( ArmManagers armManagers, - ParametersResolver parametersResolver, bio.terra.landingzone.stairway.flight.ResourceNameProvider resourceNameProvider) { - super(armManagers, parametersResolver, resourceNameProvider); + super(armManagers, resourceNameProvider); } @Override diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreatePostgresqlDNSStep.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreatePostgresqlDNSStep.java index 7a7b3ecd7..870be44b0 100644 --- a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreatePostgresqlDNSStep.java +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreatePostgresqlDNSStep.java @@ -2,7 +2,6 @@ import bio.terra.landingzone.library.landingzones.definition.ArmManagers; import bio.terra.landingzone.library.landingzones.definition.ResourceNameGenerator; -import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; import bio.terra.landingzone.library.landingzones.deployment.LandingZoneTagKeys; import bio.terra.landingzone.service.landingzone.azure.model.LandingZoneResource; import bio.terra.landingzone.stairway.flight.LandingZoneFlightMapKeys; @@ -23,10 +22,8 @@ public class CreatePostgresqlDNSStep extends BaseResourceCreateStep { public static final String POSTGRES_DNS_SUFFIX = ".private.postgres.database.azure.com"; public CreatePostgresqlDNSStep( - ArmManagers armManagers, - ParametersResolver parametersResolver, - ResourceNameProvider resourceNameProvider) { - super(armManagers, parametersResolver, resourceNameProvider); + ArmManagers armManagers, ResourceNameProvider resourceNameProvider) { + super(armManagers, resourceNameProvider); } @Override diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreatePostgresqlDbStep.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreatePostgresqlDbStep.java index f77cbf31c..707178419 100644 --- a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreatePostgresqlDbStep.java +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreatePostgresqlDbStep.java @@ -46,10 +46,8 @@ public class CreatePostgresqlDbStep extends BaseResourceCreateStep { public static final String POSTGRESQL_RESOURCE_KEY = "POSTGRESQL"; public CreatePostgresqlDbStep( - ArmManagers armManagers, - ParametersResolver parametersResolver, - ResourceNameProvider resourceNameProvider) { - super(armManagers, parametersResolver, resourceNameProvider); + ArmManagers armManagers, ResourceNameProvider resourceNameProvider) { + super(armManagers, resourceNameProvider); } @Override @@ -58,7 +56,7 @@ protected void createResource(FlightContext context, ArmManagers armManagers) { var postgres = createServer(context, armManagers, postgresName); - enablePgBouncer(getMRGName(context), postgresName); + enablePgBouncer(getMRGName(context), postgresName, getParametersResolver(context)); createAdminUser(context, armManagers, postgresName); @@ -97,18 +95,24 @@ private Server createServer(FlightContext context, ArmManagers armManagers, Stri .withExistingResourceGroup(getMRGName(context)) .withVersion( ServerVersion.fromString( - parametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.POSTGRES_SERVER_VERSION.name()))) + getParametersResolver(context) + .getValue( + LandingZoneDefaultParameters.ParametersNames.POSTGRES_SERVER_VERSION + .name()))) .withSku( new Sku() .withName( - parametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.POSTGRES_SERVER_SKU.name())) + getParametersResolver(context) + .getValue( + LandingZoneDefaultParameters.ParametersNames.POSTGRES_SERVER_SKU + .name())) .withTier( SkuTier.fromString( - parametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.POSTGRES_SERVER_SKU_TIER - .name())))) + getParametersResolver(context) + .getValue( + LandingZoneDefaultParameters.ParametersNames + .POSTGRES_SERVER_SKU_TIER + .name())))) .withNetwork( new Network() .withDelegatedSubnetResourceId( @@ -123,20 +127,22 @@ private Server createServer(FlightContext context, ArmManagers armManagers, Stri .withGeoRedundantBackup(GeoRedundantBackupEnum.DISABLED) .withBackupRetentionDays( Integer.parseInt( - parametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames - .POSTGRES_SERVER_BACKUP_RETENTION_DAYS - .name())))) + getParametersResolver(context) + .getValue( + LandingZoneDefaultParameters.ParametersNames + .POSTGRES_SERVER_BACKUP_RETENTION_DAYS + .name())))) .withCreateMode(CreateMode.DEFAULT) .withHighAvailability(new HighAvailability().withMode(HighAvailabilityMode.DISABLED)) .withStorage( new Storage() .withStorageSizeGB( Integer.parseInt( - parametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames - .POSTGRES_SERVER_STORAGE_SIZE_GB - .name())))) + getParametersResolver(context) + .getValue( + LandingZoneDefaultParameters.ParametersNames + .POSTGRES_SERVER_STORAGE_SIZE_GB + .name())))) .withTags( Map.of( LandingZoneTagKeys.LANDING_ZONE_ID.toString(), @@ -144,8 +150,9 @@ private Server createServer(FlightContext context, ArmManagers armManagers, Stri LandingZoneTagKeys.LANDING_ZONE_PURPOSE.toString(), ResourcePurpose.SHARED_RESOURCE.toString(), LandingZoneTagKeys.PGBOUNCER_ENABLED.toString(), - parametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.ENABLE_PGBOUNCER.name()))) + getParametersResolver(context) + .getValue( + LandingZoneDefaultParameters.ParametersNames.ENABLE_PGBOUNCER.name()))) .create(); } catch (ManagementException e) { // resource may already exist if this step is being retried @@ -184,7 +191,8 @@ private void createAdminUser( .create(); } - private void enablePgBouncer(String mrgName, String postgresName) { + private void enablePgBouncer( + String mrgName, String postgresName, ParametersResolver parametersResolver) { // Note: azure sdk does not allow this to be done with one call, let alone while creating the // server if (Boolean.parseBoolean( diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateRelayNamespaceStep.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateRelayNamespaceStep.java index 891e22569..0f18229f2 100644 --- a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateRelayNamespaceStep.java +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateRelayNamespaceStep.java @@ -2,7 +2,6 @@ import bio.terra.landingzone.library.landingzones.definition.ArmManagers; import bio.terra.landingzone.library.landingzones.definition.ResourceNameGenerator; -import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; import bio.terra.landingzone.library.landingzones.deployment.LandingZoneTagKeys; import bio.terra.landingzone.library.landingzones.deployment.ResourcePurpose; import bio.terra.landingzone.service.landingzone.azure.model.LandingZoneResource; @@ -23,10 +22,8 @@ public class CreateRelayNamespaceStep extends BaseResourceCreateStep { public static final String RELAY_NAMESPACE_RESOURCE_KEY = "RELAY_NAMESPACE"; public CreateRelayNamespaceStep( - ArmManagers armManagers, - ParametersResolver parametersResolver, - ResourceNameProvider resourceNameProvider) { - super(armManagers, parametersResolver, resourceNameProvider); + ArmManagers armManagers, ResourceNameProvider resourceNameProvider) { + super(armManagers, resourceNameProvider); } @Override diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateSentinelAlertRulesStep.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateSentinelAlertRulesStep.java index cd5c359da..1717d9c7a 100644 --- a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateSentinelAlertRulesStep.java +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateSentinelAlertRulesStep.java @@ -2,7 +2,6 @@ import bio.terra.landingzone.library.configuration.LandingZoneProtectedDataConfiguration; import bio.terra.landingzone.library.landingzones.definition.ArmManagers; -import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; import bio.terra.landingzone.service.landingzone.azure.model.LandingZoneResource; import bio.terra.landingzone.stairway.flight.ResourceNameProvider; import bio.terra.landingzone.stairway.flight.ResourceNameRequirements; @@ -30,11 +29,10 @@ public class CreateSentinelAlertRulesStep extends BaseResourceCreateStep { public CreateSentinelAlertRulesStep( ArmManagers armManagers, - ParametersResolver parametersResolver, ResourceNameProvider resourceNameProvider, AlertRulesHelper alertRuleAdapter, LandingZoneProtectedDataConfiguration landingZoneProtectedDataConfiguration) { - super(armManagers, parametersResolver, resourceNameProvider); + super(armManagers, resourceNameProvider); this.alertRulesHelper = alertRuleAdapter; this.landingZoneProtectedDataConfiguration = landingZoneProtectedDataConfiguration; } diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateSentinelRunPlaybookAutomationRule.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateSentinelRunPlaybookAutomationRule.java index 501af2c20..8a57a8d0c 100644 --- a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateSentinelRunPlaybookAutomationRule.java +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateSentinelRunPlaybookAutomationRule.java @@ -2,7 +2,6 @@ import bio.terra.landingzone.library.configuration.LandingZoneProtectedDataConfiguration; import bio.terra.landingzone.library.landingzones.definition.ArmManagers; -import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; import bio.terra.landingzone.service.landingzone.azure.model.LandingZoneResource; import bio.terra.landingzone.stairway.flight.ResourceNameProvider; import bio.terra.landingzone.stairway.flight.ResourceNameRequirements; @@ -27,10 +26,9 @@ public class CreateSentinelRunPlaybookAutomationRule extends BaseResourceCreateS public CreateSentinelRunPlaybookAutomationRule( ArmManagers armManagers, - ParametersResolver parametersResolver, ResourceNameProvider resourceNameProvider, LandingZoneProtectedDataConfiguration landingZoneProtectedDataConfiguration) { - super(armManagers, parametersResolver, resourceNameProvider); + super(armManagers, resourceNameProvider); this.landingZoneProtectedDataConfiguration = landingZoneProtectedDataConfiguration; } diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateSentinelStep.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateSentinelStep.java index e34909659..d0382aa68 100644 --- a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateSentinelStep.java +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateSentinelStep.java @@ -1,7 +1,6 @@ package bio.terra.landingzone.stairway.flight.create.resource.step; import bio.terra.landingzone.library.landingzones.definition.ArmManagers; -import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; import bio.terra.landingzone.service.landingzone.azure.model.LandingZoneResource; import bio.terra.landingzone.stairway.flight.ResourceNameProvider; import bio.terra.landingzone.stairway.flight.ResourceNameRequirements; @@ -17,11 +16,8 @@ public class CreateSentinelStep extends BaseResourceCreateStep { public static final String SENTINEL_ID = "SENTINEL_ID"; public static final String SENTINEL_RESOURCE_KEY = "SENTINEL"; - public CreateSentinelStep( - ArmManagers armManagers, - ParametersResolver parametersResolver, - ResourceNameProvider resourceNameProvider) { - super(armManagers, parametersResolver, resourceNameProvider); + public CreateSentinelStep(ArmManagers armManagers, ResourceNameProvider resourceNameProvider) { + super(armManagers, resourceNameProvider); } @Override diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateStorageAccountCorsRules.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateStorageAccountCorsRules.java index aee99793f..ce73b66a5 100644 --- a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateStorageAccountCorsRules.java +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateStorageAccountCorsRules.java @@ -21,10 +21,8 @@ public class CreateStorageAccountCorsRules extends BaseResourceCreateStep { private static final Logger logger = LoggerFactory.getLogger(CreateStorageAccountCorsRules.class); public CreateStorageAccountCorsRules( - ArmManagers armManagers, - ParametersResolver parametersResolver, - ResourceNameProvider resourceNameProvider) { - super(armManagers, parametersResolver, resourceNameProvider); + ArmManagers armManagers, ResourceNameProvider resourceNameProvider) { + super(armManagers, resourceNameProvider); } @Override @@ -33,7 +31,7 @@ protected void createResource(FlightContext context, ArmManagers armManagers) { getParameterOrThrow( context.getWorkingMap(), LandingZoneFlightMapKeys.STORAGE_ACCOUNT_NAME, String.class); - var corsRules = buildStorageAccountBlobServiceCorsRules(parametersResolver); + var corsRules = buildStorageAccountBlobServiceCorsRules(getParametersResolver(context)); var rules = armManagers .azureResourceManager() diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateStorageAccountStep.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateStorageAccountStep.java index 7493c80b7..a1f838dee 100644 --- a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateStorageAccountStep.java +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateStorageAccountStep.java @@ -2,7 +2,6 @@ import bio.terra.landingzone.library.landingzones.definition.ArmManagers; import bio.terra.landingzone.library.landingzones.definition.ResourceNameGenerator; -import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; import bio.terra.landingzone.library.landingzones.deployment.LandingZoneTagKeys; import bio.terra.landingzone.library.landingzones.deployment.ResourcePurpose; import bio.terra.landingzone.service.landingzone.azure.model.LandingZoneResource; @@ -26,10 +25,8 @@ public class CreateStorageAccountStep extends BaseResourceCreateStep { public static final String STORAGE_ACCOUNT_RESOURCE_KEY = "STORAGE_ACCOUNT"; public CreateStorageAccountStep( - ArmManagers armManagers, - ParametersResolver parametersResolver, - ResourceNameProvider resourceNameProvider) { - super(armManagers, parametersResolver, resourceNameProvider); + ArmManagers armManagers, ResourceNameProvider resourceNameProvider) { + super(armManagers, resourceNameProvider); } @Override @@ -48,9 +45,11 @@ protected void createResource(FlightContext context, ArmManagers armManagers) { .withSku( StorageAccountSkuType.fromSkuName( SkuName.fromString( - parametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.STORAGE_ACCOUNT_SKU_TYPE - .name())))) + getParametersResolver(context) + .getValue( + LandingZoneDefaultParameters.ParametersNames + .STORAGE_ACCOUNT_SKU_TYPE + .name())))) .disableBlobPublicAccess() .withTags( Map.of( diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateStorageAuditLogSettingsStep.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateStorageAuditLogSettingsStep.java index a7881f801..4498bb2ab 100644 --- a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateStorageAuditLogSettingsStep.java +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateStorageAuditLogSettingsStep.java @@ -2,7 +2,6 @@ import bio.terra.landingzone.library.landingzones.definition.ArmManagers; import bio.terra.landingzone.library.landingzones.definition.ResourceNameGenerator; -import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; import bio.terra.landingzone.service.landingzone.azure.model.LandingZoneDiagnosticSetting; import bio.terra.landingzone.stairway.flight.ResourceNameProvider; import bio.terra.landingzone.stairway.flight.ResourceNameRequirements; @@ -19,10 +18,8 @@ public class CreateStorageAuditLogSettingsStep extends BaseResourceCreateStep { public static final String STORAGE_AUDIT_LOG_SETTINGS_KEY = "STORAGE_AUDIT_LOG_SETTINGS"; public CreateStorageAuditLogSettingsStep( - ArmManagers armManagers, - ParametersResolver parametersResolver, - ResourceNameProvider resourceNameProvider) { - super(armManagers, parametersResolver, resourceNameProvider); + ArmManagers armManagers, ResourceNameProvider resourceNameProvider) { + super(armManagers, resourceNameProvider); } @Override diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateVirtualNetworkLinkStep.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateVirtualNetworkLinkStep.java index 134be4e42..e0f62942e 100644 --- a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateVirtualNetworkLinkStep.java +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateVirtualNetworkLinkStep.java @@ -3,7 +3,6 @@ import bio.terra.landingzone.common.VirtualNetworkLinkResourceHelper; import bio.terra.landingzone.library.landingzones.definition.ArmManagers; import bio.terra.landingzone.library.landingzones.definition.ResourceNameGenerator; -import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; import bio.terra.landingzone.library.landingzones.deployment.LandingZoneTagKeys; import bio.terra.landingzone.service.landingzone.azure.model.LandingZoneResource; import bio.terra.landingzone.stairway.flight.LandingZoneFlightMapKeys; @@ -25,10 +24,8 @@ public class CreateVirtualNetworkLinkStep extends BaseResourceCreateStep { public static final String VNET_LINK_RESOURCE_KEY = "VNET_LINK"; public CreateVirtualNetworkLinkStep( - ArmManagers armManagers, - ParametersResolver parametersResolver, - ResourceNameProvider resourceNameProvider) { - super(armManagers, parametersResolver, resourceNameProvider); + ArmManagers armManagers, ResourceNameProvider resourceNameProvider) { + super(armManagers, resourceNameProvider); } @Override diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateVnetStep.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateVnetStep.java index 9f5744f32..eb22b0338 100644 --- a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateVnetStep.java +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateVnetStep.java @@ -2,7 +2,6 @@ import bio.terra.landingzone.library.landingzones.definition.ArmManagers; import bio.terra.landingzone.library.landingzones.definition.ResourceNameGenerator; -import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; import bio.terra.landingzone.library.landingzones.deployment.LandingZoneTagKeys; import bio.terra.landingzone.library.landingzones.deployment.SubnetResourcePurpose; import bio.terra.landingzone.service.landingzone.azure.model.LandingZoneResource; @@ -27,11 +26,8 @@ public class CreateVnetStep extends BaseResourceCreateStep { public static final String VNET_ID = "VNET_ID"; public static final String VNET_RESOURCE_KEY = "VNET"; - public CreateVnetStep( - ArmManagers armManagers, - ParametersResolver parametersResolver, - ResourceNameProvider resourceNameProvider) { - super(armManagers, parametersResolver, resourceNameProvider); + public CreateVnetStep(ArmManagers armManagers, ResourceNameProvider resourceNameProvider) { + super(armManagers, resourceNameProvider); } @Override @@ -74,32 +70,34 @@ private Network createVnetAndSubnets( .withRegion(getMRGRegionName(context)) .withExistingResourceGroup(getMRGName(context)) .withAddressSpace( - parametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.VNET_ADDRESS_SPACE.name())) + getParametersResolver(context) + .getValue(LandingZoneDefaultParameters.ParametersNames.VNET_ADDRESS_SPACE.name())) .defineSubnet(LandingZoneDefaultParameters.Subnet.AKS_SUBNET.name()) .withAddressPrefix( - parametersResolver.getValue(LandingZoneDefaultParameters.Subnet.AKS_SUBNET.name())) + getParametersResolver(context) + .getValue(LandingZoneDefaultParameters.Subnet.AKS_SUBNET.name())) .withExistingNetworkSecurityGroup(networkSecurityGroupId) .attach() .defineSubnet(LandingZoneDefaultParameters.Subnet.BATCH_SUBNET.name()) .withAddressPrefix( - parametersResolver.getValue(LandingZoneDefaultParameters.Subnet.BATCH_SUBNET.name())) + getParametersResolver(context) + .getValue(LandingZoneDefaultParameters.Subnet.BATCH_SUBNET.name())) .withExistingNetworkSecurityGroup(networkSecurityGroupId) .withAccessFromService(ServiceEndpointType.MICROSOFT_STORAGE) .withAccessFromService(ServiceEndpointType.MICROSOFT_SQL) .attach() .defineSubnet(LandingZoneDefaultParameters.Subnet.POSTGRESQL_SUBNET.name()) .withAddressPrefix( - parametersResolver.getValue( - LandingZoneDefaultParameters.Subnet.POSTGRESQL_SUBNET.name())) + getParametersResolver(context) + .getValue(LandingZoneDefaultParameters.Subnet.POSTGRESQL_SUBNET.name())) .withExistingNetworkSecurityGroup(networkSecurityGroupId) .withDelegation("Microsoft.DBforPostgreSQL/flexibleServers") .withAccessFromService(ServiceEndpointType.MICROSOFT_STORAGE) .attach() .defineSubnet(LandingZoneDefaultParameters.Subnet.COMPUTE_SUBNET.name()) .withAddressPrefix( - parametersResolver.getValue( - LandingZoneDefaultParameters.Subnet.COMPUTE_SUBNET.name())) + getParametersResolver(context) + .getValue(LandingZoneDefaultParameters.Subnet.COMPUTE_SUBNET.name())) .withExistingNetworkSecurityGroup(networkSecurityGroupId) .attach() .withTags( diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/GetParametersResolver.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/GetParametersResolver.java new file mode 100644 index 000000000..73cf3b819 --- /dev/null +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/GetParametersResolver.java @@ -0,0 +1,47 @@ +package bio.terra.landingzone.stairway.flight.create.resource.step; + +import bio.terra.landingzone.service.landingzone.azure.model.LandingZoneRequest; +import bio.terra.landingzone.stairway.common.model.TargetManagedResourceGroup; +import bio.terra.landingzone.stairway.flight.LandingZoneFlightMapKeys; +import bio.terra.landingzone.stairway.flight.ParametersResolverProvider; +import bio.terra.landingzone.stairway.flight.utils.FlightUtils; +import bio.terra.stairway.FlightContext; +import bio.terra.stairway.Step; +import bio.terra.stairway.StepResult; +import bio.terra.stairway.exception.RetryException; + +public class GetParametersResolver implements Step { + + private final ParametersResolverProvider parametersResolverProvider; + + public GetParametersResolver(ParametersResolverProvider parametersResolverProvider) { + this.parametersResolverProvider = parametersResolverProvider; + } + + @Override + public StepResult doStep(FlightContext context) throws InterruptedException, RetryException { + TargetManagedResourceGroup targetMrg = + FlightUtils.getRequired( + context.getWorkingMap(), + GetManagedResourceGroupInfo.TARGET_MRG_KEY, + TargetManagedResourceGroup.class); + LandingZoneRequest requestParameters = + FlightUtils.getRequired( + context.getInputParameters(), + LandingZoneFlightMapKeys.LANDING_ZONE_CREATE_PARAMS, + LandingZoneRequest.class); + + var parametersResolver = + parametersResolverProvider.create(requestParameters.parameters(), targetMrg.region()); + context + .getWorkingMap() + .put(LandingZoneFlightMapKeys.CREATE_LANDING_ZONE_PARAMETERS_RESOLVER, parametersResolver); + + return StepResult.getStepResultSuccess(); + } + + @Override + public StepResult undoStep(FlightContext context) throws InterruptedException { + return StepResult.getStepResultSuccess(); + } +} diff --git a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/ValidateLandingZoneParametersStep.java b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/ValidateLandingZoneParametersStep.java index f462dccdc..91bab6071 100644 --- a/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/ValidateLandingZoneParametersStep.java +++ b/library/src/main/java/bio/terra/landingzone/stairway/flight/create/resource/step/ValidateLandingZoneParametersStep.java @@ -3,6 +3,8 @@ import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; import bio.terra.landingzone.library.landingzones.definition.factories.exception.InvalidInputParameterException; import bio.terra.landingzone.library.landingzones.definition.factories.validation.InputParameterValidator; +import bio.terra.landingzone.stairway.flight.LandingZoneFlightMapKeys; +import bio.terra.landingzone.stairway.flight.utils.FlightUtils; import bio.terra.stairway.FlightContext; import bio.terra.stairway.Step; import bio.terra.stairway.StepResult; @@ -13,19 +15,20 @@ public class ValidateLandingZoneParametersStep implements Step { - private final ParametersResolver parametersResolver; private final List inputParameterValidators; - public ValidateLandingZoneParametersStep( - List validators, ParametersResolver parametersResolver) { + public ValidateLandingZoneParametersStep(List validators) { this.inputParameterValidators = Objects.requireNonNull(validators, "validators must not be null"); - this.parametersResolver = - Objects.requireNonNull(parametersResolver, "parametersResolver must not be null"); } @Override public StepResult doStep(FlightContext context) throws InterruptedException, RetryException { + ParametersResolver parametersResolver = + FlightUtils.getRequired( + context.getWorkingMap(), + LandingZoneFlightMapKeys.CREATE_LANDING_ZONE_PARAMETERS_RESOLVER, + ParametersResolver.class); try { inputParameterValidators.forEach(v -> v.validate(parametersResolver)); } catch (InvalidInputParameterException e) { diff --git a/library/src/test/java/bio/terra/landingzone/library/landingzones/definition/factories/ParametersResolverProviderTest.java b/library/src/test/java/bio/terra/landingzone/library/landingzones/definition/factories/ParametersResolverProviderTest.java new file mode 100644 index 000000000..377a7575d --- /dev/null +++ b/library/src/test/java/bio/terra/landingzone/library/landingzones/definition/factories/ParametersResolverProviderTest.java @@ -0,0 +1,100 @@ +package bio.terra.landingzone.library.landingzones.definition.factories; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import bio.terra.landingzone.library.configuration.LandingZoneAzureRegionConfiguration; +import bio.terra.landingzone.stairway.flight.LandingZoneDefaultParameters; +import bio.terra.landingzone.stairway.flight.ParametersResolverProvider; +import java.util.HashMap; +import java.util.Map; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; + +@Tag("unit") +class ParametersResolverProviderTest { + private final String REGION = "eastus"; + private final LandingZoneAzureRegionConfiguration regionConfiguration = + new LandingZoneAzureRegionConfiguration(); + private final ParametersResolverProvider provider = + new ParametersResolverProvider(regionConfiguration); + private Map inputParameters; + private Map regionalDefaults; + private String testingKey; + + @BeforeEach + void setUp() { + inputParameters = new HashMap<>(); + regionalDefaults = new HashMap<>(); + regionConfiguration.setDefaultParameters(Map.of(REGION, regionalDefaults)); + assertThat( + "nonempty base default parameters assumed throughout test suite", + LandingZoneDefaultParameters.get().size() > 0); + // grab first base default parameter key, doesn't matter which + testingKey = LandingZoneDefaultParameters.get().keySet().iterator().next(); + } + + @Test + void create_throwsAnExceptionIfRegionIsNull() { + assertThrows(IllegalArgumentException.class, () -> provider.create(new HashMap<>(), null)); + } + + @Test + void getValue_inputParametersOverrideRegionAndBaseDefaults() { + regionalDefaults.put(testingKey, "FOO"); + inputParameters.put(testingKey, "BAR"); + var resolver = provider.create(inputParameters, REGION); + + assertThat(resolver.getValue(testingKey), equalTo("BAR")); + } + + @Test + void getValue_regionParametersOverrideBaseDefaults() { + regionalDefaults.put(testingKey, "FOO"); + var resolver = provider.create(inputParameters, REGION); + + assertThat(resolver.getValue(testingKey), equalTo("FOO")); + } + + @Test + void getValue_fallsBackToBaseDefault() { + var resolver = provider.create(inputParameters, REGION); + + assertThat( + resolver.getValue(testingKey), equalTo(LandingZoneDefaultParameters.get().get(testingKey))); + } + + @Test + void getValue_usesGlobalDefaultsIfRegionNotFound() { + var resolver = provider.create(inputParameters, "nonexistent region"); + + assertThat( + resolver.getValue(testingKey), equalTo(LandingZoneDefaultParameters.get().get(testingKey))); + } + + @Test + void getValue_fallsBackToBaseDefaultIfNoParametersOrRegionProvided() { + var resolver = provider.create(null, REGION); + + assertThat( + resolver.getValue(testingKey), equalTo(LandingZoneDefaultParameters.get().get(testingKey))); + } + + @Test + void getValue_fallsBackToBaseDefaultIfRegionalConfigNotFound() { + regionConfiguration.setDefaultParameters(null); + var resolver = provider.create(null, REGION); + + assertThat( + resolver.getValue(testingKey), equalTo(LandingZoneDefaultParameters.get().get(testingKey))); + } + + @Test + void getValue_returnsEmptyStringIfKeyNotFound() { + var resolver = provider.create(inputParameters, REGION); + + assertThat(resolver.getValue("nonexistent key"), equalTo("")); + } +} diff --git a/library/src/test/java/bio/terra/landingzone/library/landingzones/definition/factories/ParametersResolverTest.java b/library/src/test/java/bio/terra/landingzone/library/landingzones/definition/factories/ParametersResolverTest.java deleted file mode 100644 index 2c6d5e8d4..000000000 --- a/library/src/test/java/bio/terra/landingzone/library/landingzones/definition/factories/ParametersResolverTest.java +++ /dev/null @@ -1,64 +0,0 @@ -package bio.terra.landingzone.library.landingzones.definition.factories; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.equalTo; - -import java.util.HashMap; -import java.util.Map; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Tag; -import org.junit.jupiter.api.Test; - -@Tag("unit") -class ParametersResolverTest { - - private Map defaultParams; - - private Map parameters; - - @BeforeEach - void setUp() { - defaultParams = new HashMap<>(); - parameters = new HashMap<>(); - } - - @Test - void getValue_withoutValueSetReturnsDefault() { - defaultParams.put("FOO", "BAR"); - var resolver = new ParametersResolver(parameters, defaultParams); - - assertThat(resolver.getValue("FOO"), equalTo("BAR")); - } - - @Test - void getValue_paramsAreNullReturnsDefault() { - defaultParams.put("FOO", "BAR"); - var resolver = new ParametersResolver(null, defaultParams); - - assertThat(resolver.getValue("FOO"), equalTo("BAR")); - } - - @Test - void getValue_paramsExistsWithDefaultReturnsValue() { - defaultParams.put("FOO", "BAR"); - parameters.put("FOO", "BAR2"); - var resolver = new ParametersResolver(parameters, defaultParams); - - assertThat(resolver.getValue("FOO"), equalTo("BAR2")); - } - - @Test - void getValue_paramsExistsWithoutDefaultReturnsValue() { - parameters.put("FOO", "BAR"); - var resolver = new ParametersResolver(parameters, defaultParams); - - assertThat(resolver.getValue("FOO"), equalTo("BAR")); - } - - @Test - void getValue_paramsAreNullWithoutDefaultReturnsEmpty() { - var resolver = new ParametersResolver(null, defaultParams); - - assertThat(resolver.getValue("FOO"), equalTo("")); - } -} diff --git a/library/src/test/java/bio/terra/landingzone/library/landingzones/definition/factories/TestLandingZoneFactory.java b/library/src/test/java/bio/terra/landingzone/library/landingzones/definition/factories/TestLandingZoneFactory.java index 35ce843b4..4fc61474b 100644 --- a/library/src/test/java/bio/terra/landingzone/library/landingzones/definition/factories/TestLandingZoneFactory.java +++ b/library/src/test/java/bio/terra/landingzone/library/landingzones/definition/factories/TestLandingZoneFactory.java @@ -4,6 +4,7 @@ import bio.terra.landingzone.library.landingzones.definition.ArmManagers; import bio.terra.landingzone.library.landingzones.definition.DefinitionHeader; import bio.terra.landingzone.library.landingzones.definition.DefinitionVersion; +import bio.terra.landingzone.stairway.flight.ParametersResolverProvider; import bio.terra.landingzone.stairway.flight.ResourceNameProvider; import bio.terra.stairway.RetryRule; import bio.terra.stairway.Step; @@ -34,7 +35,7 @@ public List availableVersions() { @Override public List> get( ArmManagers armManagers, - ParametersResolver parametersResolver, + ParametersResolverProvider parametersResolverProvider, ResourceNameProvider resourceNameProvider, LandingZoneProtectedDataConfiguration landingZoneProtectedDataConfiguration) { return Collections.emptyList(); diff --git a/library/src/test/java/bio/terra/landingzone/library/landingzones/definition/factories/validation/BlobCorsParametersValidatorTest.java b/library/src/test/java/bio/terra/landingzone/library/landingzones/definition/factories/validation/BlobCorsParametersValidatorTest.java index bc0f458f0..bb6ca80ba 100644 --- a/library/src/test/java/bio/terra/landingzone/library/landingzones/definition/factories/validation/BlobCorsParametersValidatorTest.java +++ b/library/src/test/java/bio/terra/landingzone/library/landingzones/definition/factories/validation/BlobCorsParametersValidatorTest.java @@ -155,44 +155,49 @@ ParametersResolver buildParametersResolver( String allowedHeaders, String exposedHeaders, String maxAge) { - Map inputParameters = new HashMap<>(); + Map parameters = + new HashMap<>( + Map.of( + StorageAccountBlobCorsParametersNames.STORAGE_ACCOUNT_BLOB_CORS_ALLOWED_ORIGINS + .name(), + STORAGE_ACCOUNT_BLOB_CORS_ALLOWED_ORIGINS_DEFAULT, + StorageAccountBlobCorsParametersNames.STORAGE_ACCOUNT_BLOB_CORS_ALLOWED_METHODS + .name(), + STORAGE_ACCOUNT_BLOB_CORS_ALLOWED_METHODS_DEFAULT, + StorageAccountBlobCorsParametersNames.STORAGE_ACCOUNT_BLOB_CORS_ALLOWED_HEADERS + .name(), + STORAGE_ACCOUNT_BLOB_CORS_ALLOWED_HEADERS_DEFAULT, + StorageAccountBlobCorsParametersNames.STORAGE_ACCOUNT_BLOB_CORS_EXPOSED_HEADERS + .name(), + STORAGE_ACCOUNT_BLOB_CORS_EXPOSED_HEADERS_DEFAULT, + StorageAccountBlobCorsParametersNames.STORAGE_ACCOUNT_BLOB_CORS_MAX_AGE.name(), + STORAGE_ACCOUNT_BLOB_CORS_MAX_AGE_DEFAULT)); if (allowedOrigins != null) { - inputParameters.put( + parameters.put( StorageAccountBlobCorsParametersNames.STORAGE_ACCOUNT_BLOB_CORS_ALLOWED_ORIGINS.name(), allowedOrigins); } if (allowedMethods != null) { - inputParameters.put( + parameters.put( StorageAccountBlobCorsParametersNames.STORAGE_ACCOUNT_BLOB_CORS_ALLOWED_METHODS.name(), allowedMethods); } if (allowedHeaders != null) { - inputParameters.put( + parameters.put( StorageAccountBlobCorsParametersNames.STORAGE_ACCOUNT_BLOB_CORS_ALLOWED_HEADERS.name(), allowedHeaders); } if (exposedHeaders != null) { - inputParameters.put( + parameters.put( StorageAccountBlobCorsParametersNames.STORAGE_ACCOUNT_BLOB_CORS_EXPOSED_HEADERS.name(), exposedHeaders); } if (maxAge != null) { - inputParameters.put( + parameters.put( StorageAccountBlobCorsParametersNames.STORAGE_ACCOUNT_BLOB_CORS_MAX_AGE.name(), maxAge); } - return new ParametersResolver( - inputParameters, - Map.of( - StorageAccountBlobCorsParametersNames.STORAGE_ACCOUNT_BLOB_CORS_ALLOWED_ORIGINS.name(), - STORAGE_ACCOUNT_BLOB_CORS_ALLOWED_ORIGINS_DEFAULT, - StorageAccountBlobCorsParametersNames.STORAGE_ACCOUNT_BLOB_CORS_ALLOWED_METHODS.name(), - STORAGE_ACCOUNT_BLOB_CORS_ALLOWED_METHODS_DEFAULT, - StorageAccountBlobCorsParametersNames.STORAGE_ACCOUNT_BLOB_CORS_ALLOWED_HEADERS.name(), - STORAGE_ACCOUNT_BLOB_CORS_ALLOWED_HEADERS_DEFAULT, - StorageAccountBlobCorsParametersNames.STORAGE_ACCOUNT_BLOB_CORS_EXPOSED_HEADERS.name(), - STORAGE_ACCOUNT_BLOB_CORS_EXPOSED_HEADERS_DEFAULT, - StorageAccountBlobCorsParametersNames.STORAGE_ACCOUNT_BLOB_CORS_MAX_AGE.name(), - STORAGE_ACCOUNT_BLOB_CORS_MAX_AGE_DEFAULT)); + + return new ParametersResolver(parameters); } static Stream maxAgeValueValidSupplier() { diff --git a/library/src/test/java/bio/terra/landingzone/stairway/flight/ResourceNameProviderTest.java b/library/src/test/java/bio/terra/landingzone/stairway/flight/ResourceNameProviderTest.java index 2b26de7f5..117b21860 100644 --- a/library/src/test/java/bio/terra/landingzone/stairway/flight/ResourceNameProviderTest.java +++ b/library/src/test/java/bio/terra/landingzone/stairway/flight/ResourceNameProviderTest.java @@ -7,7 +7,6 @@ import static org.mockito.Mockito.mock; import bio.terra.landingzone.library.landingzones.definition.ArmManagers; -import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; import bio.terra.landingzone.stairway.flight.create.resource.step.BaseResourceCreateStep; import bio.terra.landingzone.stairway.flight.exception.ResourceNameGenerationException; import bio.terra.stairway.FlightContext; @@ -67,8 +66,7 @@ void testStepWithSameResourceAlreadyRegisteredThrowsException() { private static BaseResourceCreateStep createDummyStep( ResourceNameProvider resourceNameProvider, ResourceNameRequirements resourceNameRequirements) { - return new BaseResourceCreateStep( - mock(ArmManagers.class), mock(ParametersResolver.class), resourceNameProvider) { + return new BaseResourceCreateStep(mock(ArmManagers.class), resourceNameProvider) { @Override public List getResourceNameRequirements() { return List.of( diff --git a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/BaseResourceCreateStepTest.java b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/BaseResourceCreateStepTest.java index f10025287..e0b4b4c18 100644 --- a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/BaseResourceCreateStepTest.java +++ b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/BaseResourceCreateStepTest.java @@ -25,8 +25,7 @@ public class BaseResourceCreateStepTest extends BaseStepTest { @Test void testDoStepThrowsInterruptedException() { var step = - new BaseResourceCreateStep( - mockArmManagers, mockParametersResolver, mockResourceNameProvider) { + new BaseResourceCreateStep(mockArmManagers, mockResourceNameProvider) { @Override public List getResourceNameRequirements() { return null; diff --git a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/BaseStepTest.java b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/BaseStepTest.java index dd6f81e98..3540c1827 100644 --- a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/BaseStepTest.java +++ b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/BaseStepTest.java @@ -34,7 +34,7 @@ class BaseStepTest { @Mock protected ArmManagers mockArmManagers; @Mock protected AzureResourceManager mockAzureResourceManager; - @Mock protected ParametersResolver mockParametersResolver; + protected ParametersResolver mockParametersResolver; @Mock protected ResourceNameProvider mockResourceNameProvider; @Mock protected FlightContext mockFlightContext; diff --git a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/ConnectLongTermLogStorageStepTest.java b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/ConnectLongTermLogStorageStepTest.java index 67fc58edc..c095b44b3 100644 --- a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/ConnectLongTermLogStorageStepTest.java +++ b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/ConnectLongTermLogStorageStepTest.java @@ -55,7 +55,6 @@ void doStepSuccess() throws InterruptedException { var step = new ConnectLongTermLogStorageStep( mockArmManagers, - mockParametersResolver, mockResourceNameProvider, mockStorageHelper, List.of("FakeTableName"), @@ -86,7 +85,6 @@ void doStep_failureNoMatchingStorageAcct() { var step = new ConnectLongTermLogStorageStep( mockArmManagers, - mockParametersResolver, mockResourceNameProvider, mockStorageHelper, List.of("FakeTableName"), @@ -100,7 +98,6 @@ void deleteResource_success() { var step = new ConnectLongTermLogStorageStep( mockArmManagers, - mockParametersResolver, mockResourceNameProvider, mockStorageHelper, List.of("FakeTableName"), diff --git a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAksCostOptimizationDataCollectionRulesStepTest.java b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAksCostOptimizationDataCollectionRulesStepTest.java index bd126331b..399180081 100644 --- a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAksCostOptimizationDataCollectionRulesStepTest.java +++ b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAksCostOptimizationDataCollectionRulesStepTest.java @@ -98,7 +98,7 @@ class CreateAksCostOptimizationDataCollectionRulesStepTest extends BaseStepTest void setup() { testStep = new CreateAksCostOptimizationDataCollectionRulesStep( - mockArmManagers, mockParametersResolver, mockResourceNameProvider); + mockArmManagers, mockResourceNameProvider); } @Test diff --git a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAksLogSettingsStepTest.java b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAksLogSettingsStepTest.java index a21495314..f4d278967 100644 --- a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAksLogSettingsStepTest.java +++ b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAksLogSettingsStepTest.java @@ -65,10 +65,7 @@ public class CreateAksLogSettingsStepTest extends BaseStepTest { void setup() { createAksLogSettingsStep = new CreateAksLogSettingsStep( - mockArmManagers, - mockParametersResolver, - mockResourceNameProvider, - mockLandingZoneProtectedDataConfiguration); + mockArmManagers, mockResourceNameProvider, mockLandingZoneProtectedDataConfiguration); } @Test diff --git a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAksStepTest.java b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAksStepTest.java index c8d1739e0..d408453dc 100644 --- a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAksStepTest.java +++ b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAksStepTest.java @@ -16,6 +16,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; +import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; import bio.terra.landingzone.library.landingzones.deployment.LandingZoneTagKeys; import bio.terra.landingzone.stairway.common.model.TargetManagedResourceGroup; import bio.terra.landingzone.stairway.flight.FlightTestUtils; @@ -56,6 +57,7 @@ @ExtendWith(MockitoExtension.class) @Tag("unit") class CreateAksStepTest extends BaseStepTest { + private static final String RESOURCE_ID = "aksId"; @Mock private KubernetesClusters mockKubernetesClusters; @@ -90,7 +92,7 @@ class CreateAksStepTest extends BaseStepTest { @BeforeEach void setup() { - testStep = new CreateAksStep(mockArmManagers, mockParametersResolver, mockResourceNameProvider); + testStep = new CreateAksStep(mockArmManagers, mockResourceNameProvider); testStep.denySleepWhilePoolingForAksStatus(); } @@ -115,7 +117,9 @@ void doStepSuccess() throws InterruptedException { GetManagedResourceGroupInfo.TARGET_MRG_KEY, mrg, CreateLogAnalyticsWorkspaceStep.LOG_ANALYTICS_WORKSPACE_ID, - "logAnalyticsWorkspaceId")); + "logAnalyticsWorkspaceId", + LandingZoneFlightMapKeys.CREATE_LANDING_ZONE_PARAMETERS_RESOLVER, + mockParametersResolver)); setupArmManagersForDoStep(); var stepResult = testStep.doStep(mockFlightContext); @@ -227,7 +231,9 @@ void doStepRetryWhenAksIsNotProvisionedYet() throws InterruptedException { GetManagedResourceGroupInfo.TARGET_MRG_KEY, mrg, CreateLogAnalyticsWorkspaceStep.LOG_ANALYTICS_WORKSPACE_ID, - "logAnalyticsWorkspaceId")); + "logAnalyticsWorkspaceId", + LandingZoneFlightMapKeys.CREATE_LANDING_ZONE_PARAMETERS_RESOLVER, + mockParametersResolver)); setupArmManagersForDoStepRetryWhenAksIsNotProvisionedYet(); var stepResult = testStep.doStep(mockFlightContext); @@ -261,7 +267,9 @@ void doStepRetryWhenAksIsAlreadyProvisioned() throws InterruptedException { GetManagedResourceGroupInfo.TARGET_MRG_KEY, mrg, CreateLogAnalyticsWorkspaceStep.LOG_ANALYTICS_WORKSPACE_ID, - "logAnalyticsWorkspaceId")); + "logAnalyticsWorkspaceId", + LandingZoneFlightMapKeys.CREATE_LANDING_ZONE_PARAMETERS_RESOLVER, + mockParametersResolver)); setupArmManagersForDoStepRetryWhenAksIsAlreadyProvisioned(); var stepResult = testStep.doStep(mockFlightContext); @@ -283,24 +291,26 @@ private void verifyAksNodeResourceGroupName(String actualValue, String managedRe } private void setupParameterResolver() { - when(mockParametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.AKS_MACHINE_TYPE.name())) - .thenReturn(ContainerServiceVMSizeTypes.STANDARD_A2_V2.toString()); - when(mockParametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.AKS_NODE_COUNT.name())) - .thenReturn("1"); - when(mockParametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.AKS_AUTOSCALING_ENABLED.name())) - .thenReturn("false"); - when(mockParametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.AKS_COST_SAVING_SPOT_NODES_ENABLED.name())) - .thenReturn(costSavingsSpotNodesEnabled); - when(mockParametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.AKS_COST_SAVING_VPA_ENABLED.name())) - .thenReturn(costSavingsVpaEnabled); - when(mockParametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.AKS_AAD_PROFILE_USER_GROUP_ID.name())) - .thenReturn("00000000-0000-0000-0000-000000000000"); + mockParametersResolver = + new ParametersResolver( + Map.of( + LandingZoneDefaultParameters.ParametersNames.AKS_MACHINE_TYPE.name(), + ContainerServiceVMSizeTypes.STANDARD_A2_V2.toString(), + LandingZoneDefaultParameters.ParametersNames.AKS_NODE_COUNT.name(), + "1", + LandingZoneDefaultParameters.ParametersNames.AKS_AUTOSCALING_ENABLED.name(), + "false", + LandingZoneDefaultParameters.ParametersNames.AKS_COST_SAVING_SPOT_NODES_ENABLED + .name(), + costSavingsSpotNodesEnabled, + LandingZoneDefaultParameters.ParametersNames.AKS_COST_SAVING_VPA_ENABLED.name(), + costSavingsVpaEnabled, + LandingZoneDefaultParameters.ParametersNames.AKS_AAD_PROFILE_USER_GROUP_ID.name(), + "00000000-0000-0000-0000-000000000000", + LandingZoneDefaultParameters.ParametersNames.AKS_SPOT_AUTOSCALING_MAX.name(), + "10", + LandingZoneDefaultParameters.ParametersNames.AKS_SPOT_MACHINE_TYPE.name(), + ContainerServiceVMSizeTypes.STANDARD_A2_V2.toString())); } private void setupArmManagersForDoStep() { @@ -365,17 +375,13 @@ private void setupCostSavingLZ() { GetManagedResourceGroupInfo.TARGET_MRG_KEY, mrg, CreateLogAnalyticsWorkspaceStep.LOG_ANALYTICS_WORKSPACE_ID, - "logAnalyticsWorkspaceId")); + "logAnalyticsWorkspaceId", + LandingZoneFlightMapKeys.CREATE_LANDING_ZONE_PARAMETERS_RESOLVER, + mockParametersResolver)); setupArmManagersForDoStep(); } private void setupCostSavingK8sMocks() { - when(mockParametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.AKS_SPOT_AUTOSCALING_MAX.name())) - .thenReturn("10"); - when(mockParametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.AKS_SPOT_MACHINE_TYPE.name())) - .thenReturn(ContainerServiceVMSizeTypes.STANDARD_A2_V2.toString()); KubernetesCluster.Update mockK8sUpdate = mock(KubernetesCluster.Update.class); when(mockKubernetesCluster.update()).thenReturn(mockK8sUpdate); var mockK8sAPDefinitionStagesBlank = diff --git a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAppInsightsStepTest.java b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAppInsightsStepTest.java index d0556c5a1..c708d689e 100644 --- a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAppInsightsStepTest.java +++ b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateAppInsightsStepTest.java @@ -71,9 +71,7 @@ class CreateAppInsightsStepTest extends BaseStepTest { @BeforeEach void setup() { - createAppInsightsStep = - new CreateAppInsightsStep( - mockArmManagers, mockParametersResolver, mockResourceNameProvider); + createAppInsightsStep = new CreateAppInsightsStep(mockArmManagers, mockResourceNameProvider); } @Test diff --git a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateBatchAccountStepTest.java b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateBatchAccountStepTest.java index d12980428..3efa77280 100644 --- a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateBatchAccountStepTest.java +++ b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateBatchAccountStepTest.java @@ -69,9 +69,7 @@ class CreateBatchAccountStepTest extends BaseStepTest { @BeforeEach void setup() { - createBatchAccountStep = - new CreateBatchAccountStep( - mockArmManagers, mockParametersResolver, mockResourceNameProvider); + createBatchAccountStep = new CreateBatchAccountStep(mockArmManagers, mockResourceNameProvider); } @Test diff --git a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateBatchLogSettingsStepTest.java b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateBatchLogSettingsStepTest.java index 55ec334e8..0342e0d55 100644 --- a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateBatchLogSettingsStepTest.java +++ b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateBatchLogSettingsStepTest.java @@ -59,8 +59,7 @@ class CreateBatchLogSettingsStepTest extends BaseStepTest { @BeforeEach void setup() { createBatchLogSettingsStep = - new CreateBatchLogSettingsStep( - mockArmManagers, mockParametersResolver, mockResourceNameProvider); + new CreateBatchLogSettingsStep(mockArmManagers, mockResourceNameProvider); } @Test diff --git a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateLandingZoneIdentityStepTest.java b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateLandingZoneIdentityStepTest.java index 76b4b1add..2f76351c0 100644 --- a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateLandingZoneIdentityStepTest.java +++ b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateLandingZoneIdentityStepTest.java @@ -41,9 +41,7 @@ public class CreateLandingZoneIdentityStepTest extends BaseStepTest { @BeforeEach void setup() { - testStep = - new CreateLandingZoneIdentityStep( - mockArmManagers, mockParametersResolver, mockResourceNameProvider); + testStep = new CreateLandingZoneIdentityStep(mockArmManagers, mockResourceNameProvider); } @Test diff --git a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateLogAnalyticsDataCollectionRulesStepTest.java b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateLogAnalyticsDataCollectionRulesStepTest.java index e40de4cd9..93d76f50d 100644 --- a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateLogAnalyticsDataCollectionRulesStepTest.java +++ b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateLogAnalyticsDataCollectionRulesStepTest.java @@ -69,8 +69,7 @@ class CreateLogAnalyticsDataCollectionRulesStepTest extends BaseStepTest { @BeforeEach void setup() { createLogAnalyticsDataCollectionRulesStep = - new CreateLogAnalyticsDataCollectionRulesStep( - mockArmManagers, mockParametersResolver, mockResourceNameProvider); + new CreateLogAnalyticsDataCollectionRulesStep(mockArmManagers, mockResourceNameProvider); } @Test diff --git a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateLogAnalyticsWorkspaceStepTest.java b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateLogAnalyticsWorkspaceStepTest.java index fbc396b9a..fc4500538 100644 --- a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateLogAnalyticsWorkspaceStepTest.java +++ b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateLogAnalyticsWorkspaceStepTest.java @@ -66,8 +66,7 @@ class CreateLogAnalyticsWorkspaceStepTest extends BaseStepTest { @BeforeEach void setup() { createLogAnalyticsWorkspaceStep = - new CreateLogAnalyticsWorkspaceStep( - mockArmManagers, mockParametersResolver, mockResourceNameProvider); + new CreateLogAnalyticsWorkspaceStep(mockArmManagers, mockResourceNameProvider); } @Test diff --git a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateNetworkSecurityGroupStepTest.java b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateNetworkSecurityGroupStepTest.java index c430bc45e..19b0dfecc 100644 --- a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateNetworkSecurityGroupStepTest.java +++ b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateNetworkSecurityGroupStepTest.java @@ -48,8 +48,7 @@ public class CreateNetworkSecurityGroupStepTest extends BaseStepTest { @BeforeEach void setup() { createNetworkSecurityGroupStep = - new CreateNetworkSecurityGroupStep( - mockArmManagers, mockParametersResolver, mockResourceNameProvider); + new CreateNetworkSecurityGroupStep(mockArmManagers, mockResourceNameProvider); } @Test diff --git a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreatePostgresDNSStepTest.java b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreatePostgresDNSStepTest.java index d0125d8d7..24f4610a0 100644 --- a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreatePostgresDNSStepTest.java +++ b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreatePostgresDNSStepTest.java @@ -41,9 +41,7 @@ public class CreatePostgresDNSStepTest extends BaseStepTest { @BeforeEach void setup() { - testStep = - new CreatePostgresqlDNSStep( - mockArmManagers, mockParametersResolver, mockResourceNameProvider); + testStep = new CreatePostgresqlDNSStep(mockArmManagers, mockResourceNameProvider); } @Test diff --git a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreatePostgresLogSettingsStepTest.java b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreatePostgresLogSettingsStepTest.java index 6b613dcca..e2262f574 100644 --- a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreatePostgresLogSettingsStepTest.java +++ b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreatePostgresLogSettingsStepTest.java @@ -60,8 +60,7 @@ class CreatePostgresLogSettingsStepTest extends BaseStepTest { @BeforeEach void setup() { createPostgresLogSettingsStep = - new CreatePostgresLogSettingsStep( - mockArmManagers, mockParametersResolver, mockResourceNameProvider); + new CreatePostgresLogSettingsStep(mockArmManagers, mockResourceNameProvider); } @Test diff --git a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreatePostgresqlDbStepTest.java b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreatePostgresqlDbStepTest.java index fc3350e5e..2d2789806 100644 --- a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreatePostgresqlDbStepTest.java +++ b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreatePostgresqlDbStepTest.java @@ -12,6 +12,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; +import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; import bio.terra.landingzone.library.landingzones.deployment.LandingZoneTagKeys; import bio.terra.landingzone.service.landingzone.azure.model.LandingZoneResource; import bio.terra.landingzone.stairway.common.model.TargetManagedResourceGroup; @@ -90,9 +91,7 @@ class CreatePostgresqlDbStepTest extends BaseStepTest { @BeforeEach void setup() { - createPostgresqlDbStep = - new CreatePostgresqlDbStep( - mockArmManagers, mockParametersResolver, mockResourceNameProvider); + createPostgresqlDbStep = new CreatePostgresqlDbStep(mockArmManagers, mockResourceNameProvider); } @Test @@ -103,6 +102,8 @@ void doStepSuccess() throws InterruptedException { final String adminName = "adminName"; final String adminPrincipalId = "adminPrincipalId"; + setupMocksForDefaultValues(serverVersion, postgresqlSku, skuTier, backupRetention, storageSize); + setupFlightContext( mockFlightContext, Map.of( @@ -124,12 +125,12 @@ void doStepSuccess() throws InterruptedException { CreateLandingZoneIdentityStep.LANDING_ZONE_IDENTITY_RESOURCE_KEY, LandingZoneResource.builder().resourceName(adminName).build(), CreateLandingZoneIdentityStep.LANDING_ZONE_IDENTITY_PRINCIPAL_ID, - adminPrincipalId)); + adminPrincipalId, + LandingZoneFlightMapKeys.CREATE_LANDING_ZONE_PARAMETERS_RESOLVER, + mockParametersResolver)); setupArmManagersForDoStep( POSTGRESQL_ID, POSTGRESQL_NAME, mrg.region(), mrg.name(), adminPrincipalId, adminName); - setupMocksForDefaultValues(serverVersion, postgresqlSku, skuTier, backupRetention, storageSize); - StepResult stepResult = createPostgresqlDbStep.doStep(mockFlightContext); assertThat(stepResult.getStepStatus(), equalTo(StepStatus.STEP_RESULT_SUCCESS)); @@ -193,6 +194,8 @@ void doStepWhenPostgresProvisioningFailedReturnFailureRetry() final String adminName = "adminName"; final String adminPrincipalId = "adminPrincipalId"; + setupMocksForDefaultValues(serverVersion, postgresqlSku, skuTier, backupRetention, storageSize); + setupFlightContext( mockFlightContext, Map.of( @@ -214,9 +217,9 @@ void doStepWhenPostgresProvisioningFailedReturnFailureRetry() CreateLandingZoneIdentityStep.LANDING_ZONE_IDENTITY_RESOURCE_KEY, LandingZoneResource.builder().resourceName(adminName).build(), CreateLandingZoneIdentityStep.LANDING_ZONE_IDENTITY_PRINCIPAL_ID, - adminPrincipalId)); - - setupMocksForDefaultValues(serverVersion, postgresqlSku, skuTier, backupRetention, storageSize); + adminPrincipalId, + LandingZoneFlightMapKeys.CREATE_LANDING_ZONE_PARAMETERS_RESOLVER, + mockParametersResolver)); var errorJson = "{\"code\":\"ResourceOperationFailure\",\"message\":\"The resource operation completed with terminal provisioning state 'Failed'.\",\"details\":[{\"code\":\"InternalServerError\",\"message\":\"An unexpected error occured while processing the request. Tracking ID: '8a04238e-7145-42d6-a71e-8a82d6f9f819'\"}]}"; @@ -328,25 +331,22 @@ private void setupMocksForDefaultValues( SkuTier skuTier, String backupRetention, String storageSize) { - when(mockParametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.POSTGRES_SERVER_VERSION.name())) - .thenReturn(serverVersion.toString()); - when(mockParametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.POSTGRES_SERVER_SKU.name())) - .thenReturn(postgresqlSku); - when(mockParametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.POSTGRES_SERVER_SKU_TIER.name())) - .thenReturn(skuTier.toString()); - when(mockParametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.POSTGRES_SERVER_BACKUP_RETENTION_DAYS - .name())) - .thenReturn(backupRetention); - when(mockParametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.POSTGRES_SERVER_STORAGE_SIZE_GB.name())) - .thenReturn(storageSize); - when(mockParametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.ENABLE_PGBOUNCER.name())) - .thenReturn("true"); + mockParametersResolver = + new ParametersResolver( + Map.of( + LandingZoneDefaultParameters.ParametersNames.POSTGRES_SERVER_VERSION.name(), + serverVersion.toString(), + LandingZoneDefaultParameters.ParametersNames.POSTGRES_SERVER_SKU.name(), + postgresqlSku, + LandingZoneDefaultParameters.ParametersNames.POSTGRES_SERVER_SKU_TIER.name(), + skuTier.toString(), + LandingZoneDefaultParameters.ParametersNames.POSTGRES_SERVER_BACKUP_RETENTION_DAYS + .name(), + backupRetention, + LandingZoneDefaultParameters.ParametersNames.POSTGRES_SERVER_STORAGE_SIZE_GB.name(), + storageSize, + LandingZoneDefaultParameters.ParametersNames.ENABLE_PGBOUNCER.name(), + "true")); } private void verifyServerProperties( diff --git a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateRelayNamespaceStepTest.java b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateRelayNamespaceStepTest.java index ad349800f..640e20d77 100644 --- a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateRelayNamespaceStepTest.java +++ b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateRelayNamespaceStepTest.java @@ -60,8 +60,7 @@ class CreateRelayNamespaceStepTest extends BaseStepTest { @BeforeEach void setup() { createRelayNamespaceStep = - new CreateRelayNamespaceStep( - mockArmManagers, mockParametersResolver, mockResourceNameProvider); + new CreateRelayNamespaceStep(mockArmManagers, mockResourceNameProvider); } @Test diff --git a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateSentinelAlertRulesStepTest.java b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateSentinelAlertRulesStepTest.java index d311b3b28..aa07ab4ce 100644 --- a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateSentinelAlertRulesStepTest.java +++ b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateSentinelAlertRulesStepTest.java @@ -73,7 +73,6 @@ void doStepSuccess() throws InterruptedException { var createSentinelAlertRulesStep = new CreateSentinelAlertRulesStep( mockArmManagers, - mockParametersResolver, mockResourceNameProvider, mockAlertRuleAdapter, mockLandingZoneProtectedDataConfiguration); @@ -111,7 +110,6 @@ void doStep_missingParamThrows() { var createSentinelAlertRulesStep = new CreateSentinelAlertRulesStep( mockArmManagers, - mockParametersResolver, mockResourceNameProvider, mockAlertRuleAdapter, mockLandingZoneProtectedDataConfiguration); @@ -147,7 +145,6 @@ void doStep_retriesOnManagementException(String errorCode) throws InterruptedExc var createSentinelAlertRulesStep = new CreateSentinelAlertRulesStep( mockArmManagers, - mockParametersResolver, mockResourceNameProvider, mockAlertRuleAdapter, mockLandingZoneProtectedDataConfiguration); diff --git a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateSentinelRunPlaybookAutomationRuleTest.java b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateSentinelRunPlaybookAutomationRuleTest.java index 18f724a7a..311cee865 100644 --- a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateSentinelRunPlaybookAutomationRuleTest.java +++ b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateSentinelRunPlaybookAutomationRuleTest.java @@ -67,10 +67,7 @@ class CreateSentinelRunPlaybookAutomationRuleTest extends BaseStepTest { void setup() { createSentinelRunPlaybookAutomationRule = new CreateSentinelRunPlaybookAutomationRule( - mockArmManagers, - mockParametersResolver, - mockResourceNameProvider, - mockLandingZoneProtectedDataConfiguration); + mockArmManagers, mockResourceNameProvider, mockLandingZoneProtectedDataConfiguration); } @Test diff --git a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateSentinelStepTest.java b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateSentinelStepTest.java index 30d31e7e3..1a78b0a89 100644 --- a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateSentinelStepTest.java +++ b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateSentinelStepTest.java @@ -47,8 +47,7 @@ class CreateSentinelStepTest extends BaseStepTest { @BeforeEach void setup() { - createSentinelStep = - new CreateSentinelStep(mockArmManagers, mockParametersResolver, mockResourceNameProvider); + createSentinelStep = new CreateSentinelStep(mockArmManagers, mockResourceNameProvider); } @Test diff --git a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateStorageAccountStepTest.java b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateStorageAccountStepTest.java index e62d50f91..df5f9b277 100644 --- a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateStorageAccountStepTest.java +++ b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateStorageAccountStepTest.java @@ -10,6 +10,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; +import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; import bio.terra.landingzone.stairway.common.model.TargetManagedResourceGroup; import bio.terra.landingzone.stairway.flight.FlightTestUtils; import bio.terra.landingzone.stairway.flight.LandingZoneDefaultParameters; @@ -38,6 +39,7 @@ @ExtendWith(MockitoExtension.class) @Tag("unit") class CreateStorageAccountStepTest extends BaseStepTest { + private static final UUID LANDING_ZONE_ID = UUID.randomUUID(); private static final String STORAGE_ACCOUNT_ID = "storageAccountId"; private static final String STORAGE_ACCOUNT_NAME = "testStorageAccount"; @@ -56,8 +58,7 @@ class CreateStorageAccountStepTest extends BaseStepTest { @BeforeEach void setup() { createStorageAccountStep = - new CreateStorageAccountStep( - mockArmManagers, mockParametersResolver, mockResourceNameProvider); + new CreateStorageAccountStep(mockArmManagers, mockResourceNameProvider); } @Test @@ -65,9 +66,11 @@ void doStepSuccess() throws InterruptedException { TargetManagedResourceGroup mrg = ResourceStepFixture.createDefaultMrg(); when(mockResourceNameProvider.getName(createStorageAccountStep.getResourceType())) .thenReturn(STORAGE_ACCOUNT_NAME); - when(mockParametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.STORAGE_ACCOUNT_SKU_TYPE.name())) - .thenReturn(StorageAccountSkuType.STANDARD_LRS.name().toString()); + mockParametersResolver = + new ParametersResolver( + Map.of( + LandingZoneDefaultParameters.ParametersNames.STORAGE_ACCOUNT_SKU_TYPE.name(), + StorageAccountSkuType.STANDARD_LRS.name().toString())); setupFlightContext( mockFlightContext, Map.of( @@ -77,7 +80,11 @@ void doStepSuccess() throws InterruptedException { LANDING_ZONE_ID, LandingZoneFlightMapKeys.LANDING_ZONE_CREATE_PARAMS, ResourceStepFixture.createLandingZoneRequestForCromwellLandingZone()), - Map.of(GetManagedResourceGroupInfo.TARGET_MRG_KEY, mrg)); + Map.of( + GetManagedResourceGroupInfo.TARGET_MRG_KEY, + mrg, + LandingZoneFlightMapKeys.CREATE_LANDING_ZONE_PARAMETERS_RESOLVER, + mockParametersResolver)); setupArmManagersForDoStep(STORAGE_ACCOUNT_ID, STORAGE_ACCOUNT_NAME, mrg.region(), mrg.name()); var stepResult = createStorageAccountStep.doStep(mockFlightContext); diff --git a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateStorageAuditLogSettingsStepTest.java b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateStorageAuditLogSettingsStepTest.java index b2860f559..a2daf0192 100644 --- a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateStorageAuditLogSettingsStepTest.java +++ b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateStorageAuditLogSettingsStepTest.java @@ -59,8 +59,7 @@ class CreateStorageAuditLogSettingsStepTest extends BaseStepTest { @BeforeEach void setup() { createStorageAuditLogSettingsStep = - new CreateStorageAuditLogSettingsStep( - mockArmManagers, mockParametersResolver, mockResourceNameProvider); + new CreateStorageAuditLogSettingsStep(mockArmManagers, mockResourceNameProvider); } @Test diff --git a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateVirtualNetworkLinkStepTest.java b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateVirtualNetworkLinkStepTest.java index 7884bfac9..637f3978c 100644 --- a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateVirtualNetworkLinkStepTest.java +++ b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateVirtualNetworkLinkStepTest.java @@ -49,9 +49,7 @@ public class CreateVirtualNetworkLinkStepTest extends BaseStepTest { @BeforeEach void setup() { - testStep = - new CreateVirtualNetworkLinkStep( - mockArmManagers, mockParametersResolver, mockResourceNameProvider); + testStep = new CreateVirtualNetworkLinkStep(mockArmManagers, mockResourceNameProvider); } @Test diff --git a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateVnetStepTest.java b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateVnetStepTest.java index b92908f7b..6fe0f25d1 100644 --- a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateVnetStepTest.java +++ b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/CreateVnetStepTest.java @@ -13,6 +13,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; +import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; import bio.terra.landingzone.stairway.flight.FlightTestUtils; import bio.terra.landingzone.stairway.flight.LandingZoneDefaultParameters; import bio.terra.landingzone.stairway.flight.LandingZoneFlightMapKeys; @@ -66,14 +67,14 @@ class CreateVnetStepTest extends BaseStepTest { @BeforeEach void setup() { - createVnetStep = - new CreateVnetStep(mockArmManagers, mockParametersResolver, mockResourceNameProvider); + createVnetStep = new CreateVnetStep(mockArmManagers, mockResourceNameProvider); } @Test void doStepSuccess() throws InterruptedException { when(mockResourceNameProvider.getName(createVnetStep.getResourceType())).thenReturn(VNET_NAME); + setupParameterResolver(); setupFlightContext( mockFlightContext, Map.of( @@ -87,8 +88,9 @@ void doStepSuccess() throws InterruptedException { GetManagedResourceGroupInfo.TARGET_MRG_KEY, ResourceStepFixture.createDefaultMrg(), CreateNetworkSecurityGroupStep.NSG_ID, - "nsgId")); - setupParameterResolver(); + "nsgId", + LandingZoneFlightMapKeys.CREATE_LANDING_ZONE_PARAMETERS_RESOLVER, + mockParametersResolver)); var network = mock(Network.class); @@ -182,17 +184,18 @@ private void setupArmManagersForDoStep(Network result) { } private void setupParameterResolver() { - when(mockParametersResolver.getValue( - LandingZoneDefaultParameters.ParametersNames.VNET_ADDRESS_SPACE.name())) - .thenReturn("10.1.0.0/27"); - when(mockParametersResolver.getValue(LandingZoneDefaultParameters.Subnet.AKS_SUBNET.name())) - .thenReturn("10.1.0.0/29"); - when(mockParametersResolver.getValue(LandingZoneDefaultParameters.Subnet.BATCH_SUBNET.name())) - .thenReturn("10.1.0.8/29"); - when(mockParametersResolver.getValue( - LandingZoneDefaultParameters.Subnet.POSTGRESQL_SUBNET.name())) - .thenReturn("10.1.0.16/29"); - when(mockParametersResolver.getValue(LandingZoneDefaultParameters.Subnet.COMPUTE_SUBNET.name())) - .thenReturn("10.1.0.24/29"); + mockParametersResolver = + new ParametersResolver( + Map.of( + LandingZoneDefaultParameters.ParametersNames.VNET_ADDRESS_SPACE.name(), + "10.1.0.0/27", + LandingZoneDefaultParameters.Subnet.AKS_SUBNET.name(), + "10.1.0.0/29", + LandingZoneDefaultParameters.Subnet.BATCH_SUBNET.name(), + "10.1.0.8/29", + LandingZoneDefaultParameters.Subnet.POSTGRESQL_SUBNET.name(), + "10.1.0.16/29", + LandingZoneDefaultParameters.Subnet.COMPUTE_SUBNET.name(), + "10.1.0.24/29")); } } diff --git a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/ValidateLandingZoneParametersStepTest.java b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/ValidateLandingZoneParametersStepTest.java index ba81256fa..7ae284569 100644 --- a/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/ValidateLandingZoneParametersStepTest.java +++ b/library/src/test/java/bio/terra/landingzone/stairway/flight/create/resource/step/ValidateLandingZoneParametersStepTest.java @@ -2,7 +2,6 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; -import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doNothing; @@ -10,23 +9,22 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import bio.terra.landingzone.library.landingzones.definition.factories.ParametersResolver; import bio.terra.landingzone.library.landingzones.definition.factories.exception.InvalidInputParameterException; -import bio.terra.landingzone.library.landingzones.definition.factories.validation.BlobCorsParametersValidator; import bio.terra.landingzone.library.landingzones.definition.factories.validation.InputParameterValidator; +import bio.terra.landingzone.stairway.flight.LandingZoneFlightMapKeys; import bio.terra.stairway.FlightContext; +import bio.terra.stairway.FlightMap; import bio.terra.stairway.StepResult; import bio.terra.stairway.StepStatus; +import java.util.HashMap; import java.util.List; -import java.util.Map; -import java.util.stream.Stream; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; @@ -36,15 +34,23 @@ class ValidateLandingZoneParametersStepTest { private ValidateLandingZoneParametersStep validateLandingZoneParametersStep; @Mock private FlightContext mockFlightContext; - @Mock private ParametersResolver mockParametersResolver; + private ParametersResolver parametersResolver; + + @BeforeEach + void init() { + parametersResolver = new ParametersResolver(new HashMap<>()); + var flightMap = new FlightMap(); + flightMap.put( + LandingZoneFlightMapKeys.CREATE_LANDING_ZONE_PARAMETERS_RESOLVER, parametersResolver); + when(mockFlightContext.getWorkingMap()).thenReturn(flightMap); + } @Test void testSuccessfulValidation() throws InterruptedException { var validator = mock(InputParameterValidator.class); doNothing().when(validator).validate(any()); List validators = List.of(validator); - validateLandingZoneParametersStep = - new ValidateLandingZoneParametersStep(validators, mockParametersResolver); + validateLandingZoneParametersStep = new ValidateLandingZoneParametersStep(validators); StepResult stepResult = validateLandingZoneParametersStep.doStep(mockFlightContext); @@ -57,8 +63,7 @@ void testFailedValidation() throws InterruptedException { var validator = mock(InputParameterValidator.class); doThrow(InvalidInputParameterException.class).when(validator).validate(any()); List validators = List.of(validator); - validateLandingZoneParametersStep = - new ValidateLandingZoneParametersStep(validators, mockParametersResolver); + validateLandingZoneParametersStep = new ValidateLandingZoneParametersStep(validators); StepResult stepResult = validateLandingZoneParametersStep.doStep(mockFlightContext); @@ -68,19 +73,4 @@ void testFailedValidation() throws InterruptedException { stepResult.getException().get().getClass(), equalTo(InvalidInputParameterException.class)); verify(validator, times(1)).validate(any()); } - - @ParameterizedTest - @MethodSource("initializationParameters") - void testInitialization( - List validators, ParametersResolver parametersResolver) { - assertThrows( - NullPointerException.class, - () -> new ValidateLandingZoneParametersStep(validators, parametersResolver)); - } - - private static Stream initializationParameters() { - return Stream.of( - Arguments.of(List.of(new BlobCorsParametersValidator()), null), - Arguments.of(null, new ParametersResolver(Map.of(), Map.of()))); - } }