diff options
-rw-r--r-- | devstack/lib/heat | 3 | ||||
-rw-r--r-- | heat/engine/resources/openstack/nova/server.py | 12 | ||||
-rw-r--r-- | heat/engine/resources/openstack/senlin/cluster.py | 8 | ||||
-rw-r--r-- | heat/tests/openstack/senlin/test_cluster.py | 4 | ||||
-rw-r--r-- | heat/tests/test_engine_service.py | 50 | ||||
-rw-r--r-- | releasenotes/notes/honor-hidden-parameter-in-stack-env-show-cmd-062065545dfef82a.yaml | 4 |
6 files changed, 72 insertions, 9 deletions
diff --git a/devstack/lib/heat b/devstack/lib/heat index 8e953ca26..170d034eb 100644 --- a/devstack/lib/heat +++ b/devstack/lib/heat @@ -437,7 +437,8 @@ function configure_tempest_for_heat { # Skip AutoscalingLoadBalancerTest and AutoscalingLoadBalancerv2Test as deprecated neutron-lbaas service is not enabled # Skip CfnInitIntegrationTest as latest fedora images don't have heat-cfntools iniset $TEMPEST_CONFIG heat_plugin skip_scenario_test_list 'AutoscalingLoadBalancerTest, AutoscalingLoadBalancerv2Test, \ - SoftwareConfigIntegrationTest, AodhAlarmTest, CfnInitIntegrationTest' + SoftwareConfigIntegrationTest, AodhAlarmTest, CfnInitIntegrationTest, \ + BasicResourcesTest' # Skip LoadBalancerv2Test as deprecated neutron-lbaas service is not enabled. # Also Skip a few tests failing because of a known libvirt issue in Jammy # https://bugs.launchpad.net/nova/+bug/1998274 diff --git a/heat/engine/resources/openstack/nova/server.py b/heat/engine/resources/openstack/nova/server.py index 6cb782a4a..700527dee 100644 --- a/heat/engine/resources/openstack/nova/server.py +++ b/heat/engine/resources/openstack/nova/server.py @@ -944,9 +944,19 @@ class Server(server_base.BaseServer, sh.SchedulerHintsMixin, def parse_live_resource_data(self, resource_properties, resource_data): server, server_data = resource_data + flavor = server_data.get(self.FLAVOR) + # NOTE(pas-ha) since compute API 2.47 flavor in instance + # does not have "id" but "original_name" instead, + # check for both here, and fail if none of them are in flavor. + if "id" in flavor: + flavor_value = flavor["id"] + elif "original_name" in flavor: + flavor_value = flavor["original_name"] + else: + raise KeyError("Flavor does not contain id or original_name") result = { # there's a risk that flavor id will be int type, so cast to str - self.FLAVOR: str(server_data.get(self.FLAVOR)['id']), + self.FLAVOR: str(flavor_value), self.IMAGE: str(server_data.get(self.IMAGE)['id']), self.NAME: server_data.get(self.NAME), self.METADATA: server_data.get(self.METADATA), diff --git a/heat/engine/resources/openstack/senlin/cluster.py b/heat/engine/resources/openstack/senlin/cluster.py index 02c59fa64..6d68bb919 100644 --- a/heat/engine/resources/openstack/senlin/cluster.py +++ b/heat/engine/resources/openstack/senlin/cluster.py @@ -322,11 +322,11 @@ class Cluster(res_base.BaseSenlinResource): params['cluster'] = cluster_obj if self.PROFILE in params: params['profile_id'] = params.pop(self.PROFILE) + + self.client().update_cluster(**params) action = { - 'func': 'update_cluster', - 'params': params, - 'action_id': None, - 'done': False, + 'cluster_id': self.resource_id, + 'done': False } actions.append(action) # Resize Cluster diff --git a/heat/tests/openstack/senlin/test_cluster.py b/heat/tests/openstack/senlin/test_cluster.py index 32b39fb54..5a451801c 100644 --- a/heat/tests/openstack/senlin/test_cluster.py +++ b/heat/tests/openstack/senlin/test_cluster.py @@ -196,7 +196,7 @@ class SenlinClusterTest(common.HeatTestCase): rsrc_defns = template.Template(new_t).resource_definitions(self.stack) new_cluster = rsrc_defns['senlin-cluster'] self.senlin_mock.update_cluster.return_value = mock.Mock( - location='/actions/fake-action') + cluster=new_cluster) self.senlin_mock.get_action.return_value = mock.Mock( status='SUCCEEDED') scheduler.TaskRunner(cluster.update, new_cluster)() @@ -207,7 +207,7 @@ class SenlinClusterTest(common.HeatTestCase): } self.senlin_mock.update_cluster.assert_called_once_with( cluster=self.fake_cl, **cluster_update_kwargs) - self.assertEqual(2, self.senlin_mock.get_action.call_count) + self.assertEqual(1, self.senlin_mock.get_action.call_count) def test_cluster_update_desire_capacity(self): cluster = self._create_cluster(self.t) diff --git a/heat/tests/test_engine_service.py b/heat/tests/test_engine_service.py index 9ce13e308..3e505e39a 100644 --- a/heat/tests/test_engine_service.py +++ b/heat/tests/test_engine_service.py @@ -991,6 +991,56 @@ class StackServiceTest(common.HeatTestCase): # Verify self.assertEqual(env, found) + def test_get_environment_hidden_param(self): + # Setup + env = { + 'parameters': { + 'admin': 'testuser', + 'pass': 'pa55w0rd' + }, + 'parameter_defaults': { + 'secret': 'dummy' + }, + 'resource_registry': { + 'res': 'resource.yaml' + } + } + t = { + 'heat_template_version': '2018-08-31', + 'parameters': { + 'admin': {'type': 'string'}, + 'pass': {'type': 'string', 'hidden': True} + }, + 'resources': { + 'res1': {'type': 'res'} + } + } + files = { + 'resource.yaml': ''' + heat_template_version: 2018-08-31 + parameters: + secret: + type: string + hidden: true + ''' + } + tmpl = templatem.Template(t, files=files) + 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(templatem.Template, 'load', return_value=tmpl) + + # Test + found = self.eng.get_environment(self.ctx, stack.identifier()) + + # Verify + env['parameters']['pass'] = '******' + env['parameter_defaults']['secret'] = '******' + self.assertEqual(env, found) + def test_get_environment_no_env(self): # Setup exc = exception.EntityNotFound(entity='stack', name='missing') 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 index 385e3d4d5..8a3a366ee 100644 --- 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 @@ -1,4 +1,6 @@ --- fixes: - | - Honor ``hidden`` parameter in ``stack environment show`` command + 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. |