def _update_stack(self, parameters={}, timeout_mins=constants.STACK_TIMEOUT_DEFAULT, context=None): # TODO(rbrady): migrate _update_stack to it's own action and update # the workflow for scale down # update the plan parameters with the scaled down parameters update_params_action = parameters_actions.UpdateParametersAction( parameters, self.container) updated_plan = update_params_action.run(context) if isinstance(updated_plan, actions.Result): return updated_plan process_templates_action = templates.ProcessTemplatesAction( container=self.container) processed_data = process_templates_action.run(context) if isinstance(processed_data, actions.Result): return processed_data update.add_breakpoints_cleanup_into_env(processed_data['environment']) fields = processed_data.copy() fields['timeout_mins'] = timeout_mins fields['existing'] = True # As we do a PATCH update when deleting nodes, parameters set for a # stack before upgrade to newton (ex. ComputeRemovalPolicies), # would still take precedence over the ones set in parameter_defaults # after upgrade. Clear these parameters for backward compatibility. fields['clear_parameters'] = list(parameters.keys()) LOG.debug('stack update params: %s', fields) self.get_orchestration_client(context).stacks.update( self.container, **fields)
def test_run(self, mock_ctx, mock_get_workflow_client, mock_cache): mock_ctx.return_value = mock.MagicMock() mock_mistral = mock.MagicMock() mock_env = mock.MagicMock() mock_env.name = constants.DEFAULT_CONTAINER_NAME mock_env.variables = { 'temp_environment': 'temp_environment', 'template': 'template', 'environments': [{ u'path': u'environments/test.yaml' }], } mock_mistral.environments.get.return_value = mock_env mock_get_workflow_client.return_value = mock_mistral # Test test_parameters = {'SomeTestParameter': 42} action = parameters.UpdateParametersAction(test_parameters) action.run() mock_mistral.environments.update.assert_called_once_with( name=constants.DEFAULT_CONTAINER_NAME, variables={ 'temp_environment': 'temp_environment', 'template': 'template', 'environments': [{ u'path': u'environments/test.yaml' }], 'parameter_defaults': { 'SomeTestParameter': 42 } }) mock_cache.assert_called_once_with("overcloud", "tripleo.parameters.get")
def _update_stack(self, parameters={}, timeout_mins=constants.STACK_TIMEOUT_DEFAULT): # TODO(rbrady): migrate _update_stack to it's own action and update # the workflow for scale down # update the plan parameters with the scaled down parameters update_params_action = parameters_actions.UpdateParametersAction( parameters, self.container) updated_plan = update_params_action.run() if isinstance(updated_plan, mistral_workflow_utils.Result): return updated_plan processed_data = super(ScaleDownAction, self).run() if isinstance(processed_data, mistral_workflow_utils.Result): return processed_data update.add_breakpoints_cleanup_into_env(processed_data['environment']) fields = processed_data.copy() fields['timeout_mins'] = timeout_mins fields['existing'] = True LOG.debug('stack update params: %s', fields) self.get_orchestration_client().stacks.update(self.container, **fields)
def test_run(self, mock_get_object_client, mock_cache): mock_ctx = mock.MagicMock() swift = mock.MagicMock(url="http://test.com") mock_env = yaml.safe_dump( { 'name': constants.DEFAULT_CONTAINER_NAME, 'temp_environment': 'temp_environment', 'template': 'template', 'environments': [{ u'path': u'environments/test.yaml' }], }, default_flow_style=False) swift.get_object.return_value = ({}, mock_env) mock_get_object_client.return_value = swift # Test test_parameters = {'SomeTestParameter': 42} action = parameters.UpdateParametersAction(test_parameters) action.run(mock_ctx) mock_env_updated = yaml.safe_dump( { 'name': constants.DEFAULT_CONTAINER_NAME, 'temp_environment': 'temp_environment', 'parameter_defaults': { 'SomeTestParameter': 42 }, 'template': 'template', 'environments': [{ u'path': u'environments/test.yaml' }] }, default_flow_style=False) swift.put_object.assert_called_once_with( constants.DEFAULT_CONTAINER_NAME, constants.PLAN_ENVIRONMENT, mock_env_updated) mock_cache.assert_called_once_with(mock_ctx, "overcloud", "tripleo.parameters.get")