Skip to content
This repository was archived by the owner on Dec 20, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -579,7 +579,7 @@ class AmazonClusterProvider implements ClusterProvider<AmazonCluster>, ServerGro
// get launch template for version specified
def ltSpec = serverGroup.getLaunchTemplateSpecification()
log.debug("Attempting to populate server group $serverGroup.name with launch template $ltSpec.")
Map ec2Lt = getLaunchTemplateForVersion(launchData, ltSpec["version"] as String)
Map ec2Lt = getLaunchTemplateForVersion(launchData, (ltSpec["version"] ?: "\$Latest") as String)

if (!ec2Lt) {
return
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -403,4 +403,68 @@ class AmazonClusterProviderSpec extends Specification {
[[instanceType: "some.type.large", weightedCapacity: 2],
[instanceType: "some.type.xlarge", weightedCapacity: 4]] || null | ["some.type.large", "some.type.xlarge"]
}

@Unroll
def "should default to latest version when unable to resolve server group launch template version"() {
given:
serverGroup.asg = [
launchTemplate: [
launchTemplateId: "lt-" + launchTemplateName,
launchTemplateName: launchTemplateName
]
]

def defaultVersion = [
launchTemplateName: launchTemplateName,
versionNumber: 0,
defaultVersion: true,
launchTemplateData: [
imageId: "ami-345"
]
]

def latestVersion = [
launchTemplateName: launchTemplateName,
versionNumber: 1,
defaultVersion: false,
launchTemplateData: [
imageId: "ami-123"
]
]

def launchTemplate = new DefaultCacheData(
Keys.getLaunchTemplateKey(launchTemplateName, account, "us-east-1"),
[
launchTemplateName: launchTemplateName,
latestVersion: latestVersion,
versions: [
defaultVersion,
latestVersion
]
], [:])

and:
cacheView.getAll(LAUNCH_TEMPLATES.ns, _ as Set) >> [launchTemplate]
cacheView.get(CLUSTERS.ns, clusterId) >> new DefaultCacheData(clusterId, clusterAttributes, [serverGroups: [serverGroupId]])
cacheView.getAll(SERVER_GROUPS.ns, [ serverGroupId ], _ as CacheFilter) >> [
new DefaultCacheData(serverGroupId, serverGroup, [launchTemplates: [launchTemplate.id]])
]

when:
def result = provider.getCluster(app, account, clusterName)

then:
result.serverGroups.size() == 1
result.serverGroups[0].launchConfig == null
result.serverGroups[0].mixedInstancesPolicy == null
result.serverGroups[0].launchTemplate.versionNumber == resolvedVersion

where:
asgLaunchTemplateVersion | resolvedVersion
'1' | 1
'$Default' | 1
'$Latest' | 1
}


}
Loading