Skip to content

Commit 65a4b04

Browse files
fix(aws): Launch template version of ASG default to when not defined
1 parent 5e0ce2a commit 65a4b04

File tree

2 files changed

+65
-1
lines changed

2 files changed

+65
-1
lines changed

clouddriver-aws/src/main/groovy/com/netflix/spinnaker/clouddriver/aws/provider/view/AmazonClusterProvider.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -579,7 +579,7 @@ class AmazonClusterProvider implements ClusterProvider<AmazonCluster>, ServerGro
579579
// get launch template for version specified
580580
def ltSpec = serverGroup.getLaunchTemplateSpecification()
581581
log.debug("Attempting to populate server group $serverGroup.name with launch template $ltSpec.")
582-
Map ec2Lt = getLaunchTemplateForVersion(launchData, ltSpec["version"] as String)
582+
Map ec2Lt = getLaunchTemplateForVersion(launchData, (ltSpec["version"] ?: "\$Latest") as String)
583583

584584
if (!ec2Lt) {
585585
return

clouddriver-aws/src/test/groovy/com/netflix/spinnaker/clouddriver/aws/provider/view/AmazonClusterProviderSpec.groovy

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,4 +403,68 @@ class AmazonClusterProviderSpec extends Specification {
403403
[[instanceType: "some.type.large", weightedCapacity: 2],
404404
[instanceType: "some.type.xlarge", weightedCapacity: 4]] || null | ["some.type.large", "some.type.xlarge"]
405405
}
406+
407+
@Unroll
408+
def "should default to latest version when unable to resolve server group launch template version"() {
409+
given:
410+
serverGroup.asg = [
411+
launchTemplate: [
412+
launchTemplateId: "lt-" + launchTemplateName,
413+
launchTemplateName: launchTemplateName
414+
]
415+
]
416+
417+
def defaultVersion = [
418+
launchTemplateName: launchTemplateName,
419+
versionNumber: 0,
420+
defaultVersion: true,
421+
launchTemplateData: [
422+
imageId: "ami-345"
423+
]
424+
]
425+
426+
def latestVersion = [
427+
launchTemplateName: launchTemplateName,
428+
versionNumber: 1,
429+
defaultVersion: false,
430+
launchTemplateData: [
431+
imageId: "ami-123"
432+
]
433+
]
434+
435+
def launchTemplate = new DefaultCacheData(
436+
Keys.getLaunchTemplateKey(launchTemplateName, account, "us-east-1"),
437+
[
438+
launchTemplateName: launchTemplateName,
439+
latestVersion: latestVersion,
440+
versions: [
441+
defaultVersion,
442+
latestVersion
443+
]
444+
], [:])
445+
446+
and:
447+
cacheView.getAll(LAUNCH_TEMPLATES.ns, _ as Set) >> [launchTemplate]
448+
cacheView.get(CLUSTERS.ns, clusterId) >> new DefaultCacheData(clusterId, clusterAttributes, [serverGroups: [serverGroupId]])
449+
cacheView.getAll(SERVER_GROUPS.ns, [ serverGroupId ], _ as CacheFilter) >> [
450+
new DefaultCacheData(serverGroupId, serverGroup, [launchTemplates: [launchTemplate.id]])
451+
]
452+
453+
when:
454+
def result = provider.getCluster(app, account, clusterName)
455+
456+
then:
457+
result.serverGroups.size() == 1
458+
result.serverGroups[0].launchConfig == null
459+
result.serverGroups[0].mixedInstancesPolicy == null
460+
result.serverGroups[0].launchTemplate.versionNumber == resolvedVersion
461+
462+
where:
463+
asgLaunchTemplateVersion | resolvedVersion
464+
'1' | 1
465+
'$Default' | 1
466+
'$Latest' | 1
467+
}
468+
469+
406470
}

0 commit comments

Comments
 (0)