diff --git a/rosco-core/src/main/groovy/com/netflix/spinnaker/rosco/providers/aws/AWSBakeHandler.groovy b/rosco-core/src/main/groovy/com/netflix/spinnaker/rosco/providers/aws/AWSBakeHandler.groovy index 139c80a73..c21cc816b 100644 --- a/rosco-core/src/main/groovy/com/netflix/spinnaker/rosco/providers/aws/AWSBakeHandler.groovy +++ b/rosco-core/src/main/groovy/com/netflix/spinnaker/rosco/providers/aws/AWSBakeHandler.groovy @@ -16,6 +16,7 @@ package com.netflix.spinnaker.rosco.providers.aws +import com.netflix.spinnaker.kork.dynamicconfig.DynamicConfigService import com.netflix.spinnaker.rosco.api.Bake import com.netflix.spinnaker.rosco.api.BakeOptions import com.netflix.spinnaker.rosco.api.BakeRequest @@ -36,6 +37,9 @@ public class AWSBakeHandler extends CloudProviderBakeHandler { @Autowired RoscoAWSConfiguration.AWSBakeryDefaults awsBakeryDefaults + @Autowired + DynamicConfigService dynamicConfigService + @Override def getBakeryDefaults() { return awsBakeryDefaults @@ -87,6 +91,13 @@ public class AWSBakeHandler extends CloudProviderBakeHandler { awsVirtualizationSettings.sourceAmi = bakeRequest.base_ami } + // Attempt to lookup baseAmi via dynamicConfigService if unset in the bakeRequest or rosco.yml + // Property name: "aws.base.${bakeRequest.base_os}.${bakeRequest.vm_type}.${bakeRequest.base_label}.$region" + if (!awsVirtualizationSettings.sourceAmi) { + def property = "aws.base.${bakeRequest.base_os}.${bakeRequest.vm_type}.${bakeRequest.base_label}.$region" + awsVirtualizationSettings.sourceAmi = dynamicConfigService.getConfig(String, property, null) + } + return awsVirtualizationSettings }