Example #1
0
    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)
Example #2
0
    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")
Example #3
0
    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)
Example #4
0
    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")