Skip to content

Commit e9f8472

Browse files
authored
Merge pull request #565 from zalando-stups/fix-ami-for-elastigroups
add discovery of other standard STUPS AMIs for Elastigroups
2 parents 235c2a4 + f285988 commit e9f8472

File tree

2 files changed

+16
-5
lines changed

2 files changed

+16
-5
lines changed

senza/components/elastigroup.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ def component_elastigroup(definition, configuration, args, info, force, account_
138138
extract_user_data(configuration, elastigroup_config, info, force, account_info)
139139
extract_load_balancer_name(configuration, elastigroup_config)
140140
extract_public_ips(configuration, elastigroup_config)
141-
extract_image_id(elastigroup_config)
141+
extract_image_id(configuration, elastigroup_config)
142142
extract_security_group_ids(configuration, elastigroup_config, args)
143143
extract_instance_types(configuration, elastigroup_config)
144144
extract_autoscaling_capacity(configuration, elastigroup_config)
@@ -497,7 +497,7 @@ def extract_public_ips(configuration, elastigroup_config):
497497
]
498498

499499

500-
def extract_image_id(elastigroup_config: dict):
500+
def extract_image_id(configuration, elastigroup_config: dict):
501501
"""
502502
This function identifies whether a senza formatted AMI mapping is configured,
503503
if so it transforms it into a Spotinst Elastigroup AMI API configuration
@@ -506,7 +506,8 @@ def extract_image_id(elastigroup_config: dict):
506506
launch_spec_config = elastigroup_config["compute"]["launchSpecification"]
507507

508508
if "imageId" not in launch_spec_config.keys():
509-
launch_spec_config["imageId"] = {"Fn::FindInMap": ["Images", {"Ref": "AWS::Region"}, "LatestTaupageImage"]}
509+
image_key = configuration.get("Image", "LatestTaupageImage")
510+
launch_spec_config["imageId"] = {"Fn::FindInMap": ["Images", {"Ref": "AWS::Region"}, image_key]}
510511

511512

512513
def extract_security_group_ids(configuration, elastigroup_config: dict, args):

tests/test_elastigroup.py

+12-2
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ def test_component_elastigroup_defaults(monkeypatch):
6262
assert {'tagKey': 'StackName', 'tagValue': 'foobar'} in tags
6363
assert {'tagKey': 'StackVersion', 'tagValue': '0.1'} in tags
6464
assert properties["group"]["compute"]["product"] == ELASTIGROUP_DEFAULT_PRODUCT
65-
assert properties["group"]["compute"]["subnetIds"] == {"Fn::FindInMap": ["ServerSubnets", {"Ref": "AWS::Region"}, "Subnets"]}
65+
assert properties["group"]["compute"]["subnetIds"] == {
66+
"Fn::FindInMap": ["ServerSubnets", {"Ref": "AWS::Region"}, "Subnets"]}
6667
assert properties["group"]["region"] == "reg1"
6768
assert properties["group"]["strategy"] == ELASTIGROUP_DEFAULT_STRATEGY
6869

@@ -666,19 +667,28 @@ def test_public_ips():
666667
def test_extract_image_id():
667668
test_cases = [
668669
{ # default behavior - set latest taupage image
670+
"input": {},
669671
"given_config": {},
670672
"expected_config": {"compute": {"launchSpecification": {
671673
"imageId": {"Fn::FindInMap": ["Images", {"Ref": "AWS::Region"}, "LatestTaupageImage"]}
672674
}}},
673675
},
674676
{ # leave imageId untouched
677+
"input": {},
675678
"given_config": {"compute": {"launchSpecification": {"imageId": "fake-id"}}},
676679
"expected_config": {"compute": {"launchSpecification": {"imageId": "fake-id"}}},
677680
},
681+
{ # use specified image from the Senza mapping
682+
"input": {"Image": "Foo"},
683+
"given_config": {},
684+
"expected_config": {"compute": {"launchSpecification": {
685+
"imageId": {"Fn::FindInMap": ["Images", {"Ref": "AWS::Region"}, "Foo"]}
686+
}}},
687+
}
678688
]
679689
for test_case in test_cases:
680690
got = test_case["given_config"]
681-
extract_image_id(got)
691+
extract_image_id(test_case["input"], got)
682692
assert test_case["expected_config"] == got
683693

684694

0 commit comments

Comments
 (0)