From 436ecad6511b30683f6b9af4e484ed64c3bcaab9 Mon Sep 17 00:00:00 2001 From: Chengen Du Date: Tue, 20 Dec 2022 18:00:00 +0800 Subject: Honor 'hidden' parameter in 'stack environment show' command Backport note: This includes change I0abbd535aacc03446ada0fa806dfdfdaa4522afe which fixed the wrong explanation in the release note file. Related-Bug: #1999665 Story: 2010484 Task: 47052 Change-Id: Ifc51ff6a4deab05002ccded59383416f9a586aa0 (cherry picked from commit c1b5fcfbe37d3f94d5b73ae36e071d1aa8c4e0f5) --- heat/engine/service.py | 12 +++++++++++- heat/tests/test_engine_service.py | 3 ++- ...den-parameter-in-stack-env-show-cmd-062065545dfef82a.yaml | 6 ++++++ 3 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 releasenotes/notes/honor-hidden-parameter-in-stack-env-show-cmd-062065545dfef82a.yaml diff --git a/heat/engine/service.py b/heat/engine/service.py index fdd497503..9019ddbea 100644 --- a/heat/engine/service.py +++ b/heat/engine/service.py @@ -12,6 +12,7 @@ # under the License. import collections +import copy import datetime import functools import itertools @@ -1354,7 +1355,16 @@ class EngineService(service.ServiceBase): :rtype: dict """ s = self._get_stack(cnxt, stack_identity, show_deleted=True) - return s.raw_template.environment + tmpl = templatem.Template.load(cnxt, s.raw_template_id, s.raw_template) + param_schemata = tmpl.all_param_schemata(tmpl.files) + env = copy.deepcopy(s.raw_template.environment) + for section in [env_fmt.PARAMETERS, env_fmt.PARAMETER_DEFAULTS]: + for param_name in env.get(section, {}).keys(): + if (param_name not in param_schemata + or not param_schemata[param_name].hidden): + continue + env[section][param_name] = str('******') + return env @context.request_context def get_files(self, cnxt, stack_identity): diff --git a/heat/tests/test_engine_service.py b/heat/tests/test_engine_service.py index 875d44dcd..9ce13e308 100644 --- a/heat/tests/test_engine_service.py +++ b/heat/tests/test_engine_service.py @@ -978,11 +978,12 @@ class StackServiceTest(common.HeatTestCase): env = {'parameters': {'KeyName': 'EnvKey'}} tmpl = templatem.Template(t) stack = parser.Stack(self.ctx, 'get_env_stack', tmpl) + stack.store() mock_get_stack = self.patchobject(self.eng, '_get_stack') mock_get_stack.return_value = mock.MagicMock() mock_get_stack.return_value.raw_template.environment = env - self.patchobject(parser.Stack, 'load', return_value=stack) + self.patchobject(templatem.Template, 'load', return_value=tmpl) # Test found = self.eng.get_environment(self.ctx, stack.identifier()) diff --git a/releasenotes/notes/honor-hidden-parameter-in-stack-env-show-cmd-062065545dfef82a.yaml b/releasenotes/notes/honor-hidden-parameter-in-stack-env-show-cmd-062065545dfef82a.yaml new file mode 100644 index 000000000..8a3a366ee --- /dev/null +++ b/releasenotes/notes/honor-hidden-parameter-in-stack-env-show-cmd-062065545dfef82a.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + Honor ``hidden`` parameter in get stack environment API. Now values passed + to hidden parameters are replaced by '******', similarly to the other + APIs such as show stack details API. -- cgit v1.2.1