Esempio n. 1
0
    def reject_change_set(self):
        """
        Delete the named ChangeSet, and if the stack is in the REVIEW_IN_PROGRESS status and there are
        no remaining ChangeSets, then delete the stack.
        """
        if not self.stack:
            raise ValidationError(f'Stack {self.config.stack_name} not found')

        self.print_stack_status()
        try:
            self.client.describe_change_set(ChangeSetName=self.change_set_name,
                                            StackName=self.config.stack_name)
        except self.client.exceptions.ChangeSetNotFoundException:
            raise ValidationError(
                f'ChangeSet {self.change_set_name} not found')

        info(
            f'\nDeleting ChangeSet {self.change_set_name} for {self.config.stack_name}'
        )

        self.client.delete_change_set(ChangeSetName=self.change_set_name,
                                      StackName=self.config.stack_name)

        if StackStatus.is_status(self.stack, StackStatus.REVIEW_IN_PROGRESS):
            change_sets = self.client.list_change_sets(
                StackName=self.config.stack_name)['Summaries']
            if not change_sets:
                info(
                    f'\nDeleting REVIEW_IN_PROGRESS Stack {self.config.stack_name} that has no remaining ChangeSets'
                )
                # Delete stack, no need to wait for deletion to complete
                self.client.delete_stack(StackName=self.config.stack_name)
Esempio n. 2
0
def test_is_status_invalid_status():
    with pytest.raises(ValueError, match='Unknown StackStatus UNKNOWN'):
        StackStatus.is_status({STACK_STATUS: 'UNKNOWN'},
                              StackStatus.CREATE_COMPLETE)
Esempio n. 3
0
def test_is_status_missing_status():
    with pytest.raises(ValueError, match='No StackStatus available'):
        StackStatus.is_status({}, StackStatus.CREATE_COMPLETE)