Skip to content

Commit 8a3134f

Browse files
author
Giacomo Margaria
committed
Product Version Creation: Made sure template format is taken into account
1 parent dc8945b commit 8a3134f

File tree

4 files changed

+28
-4
lines changed

4 files changed

+28
-4
lines changed

servicecatalog_factory/constants.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
build:
6464
commands:
6565
{% for region in ALL_REGIONS %}
66-
- aws cloudformation package --region {{ region }} --template $(pwd)/product.template.yaml --s3-bucket sc-factory-artifacts-${ACCOUNT_ID}-{{ region }} --s3-prefix ${STACK_NAME} --output-template-file product.template-{{ region }}.yaml
66+
- aws cloudformation package --region {{ region }} --template $(pwd)/product.template.{{ template_format }} --s3-bucket sc-factory-artifacts-${ACCOUNT_ID}-{{ region }} --s3-prefix ${STACK_NAME} --output-template-file product.template-{{ region }}.{{ template_format }}
6767
6868
{% endfor %}
6969
artifacts:

servicecatalog_factory/workflow/portfolios/create_version_pipeline_template_task.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ def handle_cloudformation_provisioner(
147147
friendly_uid=f"{friendly_uid}-{self.version.get('Name')}",
148148
version=self.version,
149149
product=self.product,
150+
template_format=self.provisioner.get("Format", "yaml"),
150151
Options=utils.merge(
151152
self.product.get("Options", {}), self.version.get("Options", {})
152153
),

servicecatalog_factory/workflow/portfolios/create_version_pipeline_template_task_test.py

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
# Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
22
# SPDX-License-Identifier: Apache-2.0
33

4-
from unittest import skip
4+
from unittest import mock, skip
55
from servicecatalog_factory.workflow import tasks_unit_tests_helper
66

7+
import os
78

89
class CreateVersionPipelineTemplateTaskTest(
910
tasks_unit_tests_helper.FactoryTaskUnitTest
1011
):
11-
all_regions = []
12+
version = {}
13+
all_regions = ["region"]
1214
version = {}
1315
product = {}
14-
provisioner = {}
16+
provisioner = {"Type": "Cloudformation"}
1517
template = {}
1618
factory_version = "factory_version"
1719
products_args_by_region = {}
@@ -51,6 +53,26 @@ def test_params_for_results_display(self):
5153
# verify
5254
self.assertEqual(expected_result, actual_result)
5355

56+
57+
@mock.patch.dict(os.environ, {"ACCOUNT_ID": "account_id", "REGION": "region"}, clear=True)
58+
def test_handle_cloudformation_provisioner_format(self):
59+
provisioner_formats = ["json", "yaml"]
60+
for provisioner_format in provisioner_formats:
61+
# setup
62+
self.sut.provisioner = {"Type": "Cloudformation", "Format": provisioner_format}
63+
64+
# exercise
65+
rendered = self.sut.handle_cloudformation_provisioner(
66+
product_ids_by_region={},
67+
friendly_uid="",
68+
tags=[],
69+
source={"Provider": "codecommit", "Configuration": { "PollForSourceChanges": "False"} }
70+
)
71+
72+
# verify
73+
self.assertIn(f"product.template.{provisioner_format}", rendered)
74+
self.assertNotIn(f"product.template.{provisioner_formats[1 - provisioner_formats.index(provisioner_format)]}", rendered)
75+
5476
@skip
5577
def test_requires(self):
5678
# setup

servicecatalog_factory/workflow/tasks_unit_tests_helper.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ def wire_up_mocks(self):
3838

3939
self.hub_client_mock, self.sut.hub_client = mocked_client()
4040
self.hub_regional_client_mock, self.sut.hub_regional_client = mocked_client()
41+
self.sut.client = mock.MagicMock()
4142

4243
self.sut.write_output = mock.MagicMock()
4344
self.sut.input = mock.MagicMock()

0 commit comments

Comments
 (0)