diff options
-rw-r--r-- | heatclient/osc/v1/stack.py | 16 | ||||
-rw-r--r-- | heatclient/tests/unit/osc/v1/test_stack.py | 22 |
2 files changed, 36 insertions, 2 deletions
diff --git a/heatclient/osc/v1/stack.py b/heatclient/osc/v1/stack.py index 6787f1c..719c0de 100644 --- a/heatclient/osc/v1/stack.py +++ b/heatclient/osc/v1/stack.py @@ -124,9 +124,11 @@ class CreateStack(command.ShowOne): parsed_args.template, object_request=http.authenticated_fetcher(client)) + env_files_list = [] env_files, env = ( template_utils.process_multiple_environments_and_files( - env_paths=parsed_args.environment)) + env_paths=parsed_args.environment, + env_list_tracker=env_files_list)) parameters = heat_utils.format_all_parameters( parsed_args.parameter, @@ -146,6 +148,10 @@ class CreateStack(command.ShowOne): 'environment': env } + # If one or more environments is found, pass the listing to the server + if env_files_list: + fields['environment_files'] = env_files_list + if parsed_args.tags: fields['tags'] = parsed_args.tags if parsed_args.timeout: @@ -286,9 +292,11 @@ class UpdateStack(command.ShowOne): object_request=http.authenticated_fetcher(client), existing=parsed_args.existing) + env_files_list = [] env_files, env = ( template_utils.process_multiple_environments_and_files( - env_paths=parsed_args.environment)) + env_paths=parsed_args.environment, + env_list_tracker=env_files_list)) parameters = heat_utils.format_all_parameters( parsed_args.parameter, @@ -308,6 +316,10 @@ class UpdateStack(command.ShowOne): 'environment': env } + # If one or more environments is found, pass the listing to the server + if env_files_list: + fields['environment_files'] = env_files_list + if parsed_args.tags: fields['tags'] = parsed_args.tags if parsed_args.timeout: diff --git a/heatclient/tests/unit/osc/v1/test_stack.py b/heatclient/tests/unit/osc/v1/test_stack.py index d2ee28c..c40bdf1 100644 --- a/heatclient/tests/unit/osc/v1/test_stack.py +++ b/heatclient/tests/unit/osc/v1/test_stack.py @@ -43,6 +43,7 @@ class TestStack(orchestration_fakes.TestOrchestrationv1): class TestStackCreate(TestStack): template_path = 'heatclient/tests/test_templates/empty.yaml' + env_path = 'heatclient/tests/unit/var/environment.json' defaults = { 'stack_name': 'my_stack', @@ -71,6 +72,16 @@ class TestStackCreate(TestStack): self.stack_client.create.assert_called_with(**self.defaults) + def test_stack_create_with_env(self): + arglist = ['my_stack', '-t', self.template_path, '-e', self.env_path] + parsed_args = self.check_parser(self.cmd, arglist, []) + self.cmd.take_action(parsed_args) + + self.assertEqual(1, self.stack_client.create.call_count) + args = self.stack_client.create.call_args[1] + self.assertEqual({'parameters': {}}, args.get('environment')) + self.assertIn(self.env_path, args.get('environment_files')[0]) + def test_stack_create_rollback(self): arglist = ['my_stack', '-t', self.template_path, '--enable-rollback'] kwargs = copy.deepcopy(self.defaults) @@ -162,6 +173,7 @@ class TestStackCreate(TestStack): class TestStackUpdate(TestStack): template_path = 'heatclient/tests/test_templates/empty.yaml' + env_path = 'heatclient/tests/unit/var/environment.json' defaults = { 'stack_id': 'my_stack', @@ -193,6 +205,16 @@ class TestStackUpdate(TestStack): self.stack_client.update.assert_called_with(**self.defaults) + def test_stack_update_with_env(self): + arglist = ['my_stack', '-t', self.template_path, '-e', self.env_path] + parsed_args = self.check_parser(self.cmd, arglist, []) + self.cmd.take_action(parsed_args) + + self.assertEqual(1, self.stack_client.update.call_count) + args = self.stack_client.update.call_args[1] + self.assertEqual({'parameters': {}}, args.get('environment')) + self.assertIn(self.env_path, args.get('environment_files')[0]) + def test_stack_update_rollback_enabled(self): arglist = ['my_stack', '-t', self.template_path, '--rollback', 'enabled'] |