Ejemplo n.º 1
0
    def test_delete_exception(self):
        container_name = utils.PhysName('test_stack', 'test_resource')
        sc.Connection.put_container(
            container_name,
            {}).AndReturn(None)
        sc.Connection.get_container(
            container_name).AndReturn(({'name': container_name},
                                       []))
        sc.Connection.delete_container(container_name).AndRaise(
            sc.ClientException('Test delete failure'))

        self.m.ReplayAll()
        t = template_format.parse(swift_template)
        stack = utils.parse_stack(t)
        rsrc = self.create_resource(t, stack, 'SwiftContainer')
        self.assertRaises(exception.ResourceFailure,
                          scheduler.TaskRunner(rsrc.delete))

        self.m.VerifyAll()
Ejemplo n.º 2
0
    def test_delete_not_found(self):
        container_name = utils.PhysName('test_stack', 'test_resource')
        sc.Connection.put_container(
            container_name,
            {}).AndReturn(None)
        sc.Connection.get_container(
            container_name).AndReturn(({'name': container_name},
                                       []))
        sc.Connection.delete_container(container_name).AndRaise(
            sc.ClientException('Its gone',
                               http_status=404))

        self.m.ReplayAll()
        t = template_format.parse(swift_template)
        stack = utils.parse_stack(t)
        rsrc = self.create_resource(t, stack, 'SwiftContainer')
        scheduler.TaskRunner(rsrc.delete)()

        self.m.VerifyAll()
Ejemplo n.º 3
0
    def test_delete_exception(self, mock_put, mock_get, mock_delete):
        # Setup
        container_name = utils.PhysName('test_stack', 'test_resource')
        stack = utils.parse_stack(self.t)

        mock_delete.side_effect = sc.ClientException('test-delete-failure')
        mock_get.return_value = ({'name': container_name}, [])

        # Test
        container = self._create_container(stack)
        runner = scheduler.TaskRunner(container.delete)
        self.assertRaises(exception.ResourceFailure, runner)

        # Verify
        self.assertEqual((container.DELETE, container.FAILED),
                         container.state)
        mock_put.assert_called_once_with(container_name, {})
        mock_get.assert_called_once_with(container_name)
        mock_delete.assert_called_once_with(container_name)
Ejemplo n.º 4
0
    def test_delete_not_found(self):
        t = template_format.parse(swift_template)
        stack = utils.parse_stack(t)

        container_name = utils.PhysName(stack.name, 'test_resource')
        sc.Connection.put_container(
            container_name, {
                'X-Container-Write': 'test_tenant:test_username',
                'X-Container-Read': 'test_tenant:test_username'
            }).AndReturn(None)
        sc.Connection.delete_container(container_name).AndRaise(
            sc.ClientException('Its gone', http_status=404))

        self.m.ReplayAll()

        rsrc = self.create_resource(t, stack, 'S3Bucket')
        scheduler.TaskRunner(rsrc.delete)()

        self.m.VerifyAll()
Ejemplo n.º 5
0
    def test_delete_exception(self):
        t = template_format.parse(swift_template)
        stack = utils.parse_stack(t)

        container_name = utils.PhysName(stack.name, 'test_resource')
        sc.Connection.put_container(
            container_name,
            {'X-Container-Write': 'test_tenant:test_username',
             'X-Container-Read': 'test_tenant:test_username'}).AndReturn(None)
        sc.Connection.delete_container(container_name).AndRaise(
            sc.ClientException('Test delete failure'))

        self.m.ReplayAll()

        rsrc = self.create_resource(t, stack, 'S3Bucket')
        self.assertRaises(exception.ResourceFailure,
                          scheduler.TaskRunner(rsrc.delete))

        self.m.VerifyAll()
Ejemplo n.º 6
0
    def test_delete_not_found(self, mock_put, mock_get, mock_delete):
        # Setup
        stack = utils.parse_stack(self.t)
        container_name = utils.PhysName(stack.name, 'test_resource')

        mock_delete.side_effect = sc.ClientException('missing',
                                                     http_status=404)
        mock_get.return_value = ({'name': container_name}, [])

        # Test
        container = self._create_container(stack)
        runner = scheduler.TaskRunner(container.delete)
        runner()

        # Verify
        self.assertEqual((container.DELETE, container.COMPLETE),
                         container.state)
        mock_put.assert_called_once_with(container_name, {})
        mock_get.assert_called_once_with(container_name)
        mock_delete.assert_called_once_with(container_name)
Ejemplo n.º 7
0
    def test_delete_conflict_empty(self):
        container_name = utils.PhysName('test_stack', 'test_resource')
        sc.Connection.put_container(
            container_name,
            {'X-Container-Write': 'test_tenant:test_username',
             'X-Container-Read': 'test_tenant:test_username'}).AndReturn(None)
        sc.Connection.delete_container(container_name).AndRaise(
            sc.ClientException('Conflict', http_status=409))
        sc.Connection.get_container(container_name).AndReturn(
            ({'name': container_name}, []))

        self.m.ReplayAll()
        t = template_format.parse(swift_template)
        stack = utils.parse_stack(t)
        rsrc = self.create_resource(t, stack, 'S3Bucket')
        deleter = scheduler.TaskRunner(rsrc.delete)
        ex = self.assertRaises(exception.ResourceFailure, deleter)
        self.assertIn("Conflict", six.text_type(ex))

        self.m.VerifyAll()
Ejemplo n.º 8
0
    def test_delete_non_empty_fails_delete_object(self):
        container_name = utils.PhysName('test_stack', 'test_resource')
        sc.Connection.put_container(container_name, {}).AndReturn(None)
        sc.Connection.get_container(container_name).AndReturn(({
            'name':
            container_name
        }, [{
            'name': 'test_object'
        }]))
        sc.Connection.delete_object(container_name, 'test_object').AndRaise(
            sc.ClientException('Test object delete failure'))

        self.m.ReplayAll()
        t = template_format.parse(swift_template)
        t['Resources']['SwiftContainer']['Properties']['PurgeOnDelete'] = True
        stack = utils.parse_stack(t)
        rsrc = self.create_resource(t, stack, 'SwiftContainer')
        self.assertRaises(exception.ResourceFailure,
                          scheduler.TaskRunner(rsrc.delete))
        self.m.VerifyAll()
Ejemplo n.º 9
0
    def test_swift_get_object_404(self, mock_name, mock_swift):
        st = create_stack(swiftsignal_template)
        handle = st['test_wait_condition_handle']

        mock_swift_object = mock.Mock()
        mock_swift.return_value = mock_swift_object
        mock_swift_object.url = "http://fake-host.com:8080/v1/AUTH_1234"
        mock_swift_object.head_account.return_value = {
            'x-account-meta-temp-url-key': '123456'
        }
        obj_name = "%s-%s-abcdefghijkl" % (st.name, handle.name)
        mock_name.return_value = obj_name
        mock_swift_object.get_container.return_value = cont_index(obj_name, 2)
        mock_swift_object.get_object.side_effect = (
            (obj_header, ''),
            swiftclient_client.ClientException("Object %s not found" %
                                               obj_name,
                                               http_status=404))

        st.create()
        self.assertEqual(('CREATE', 'COMPLETE'), st.state)
Ejemplo n.º 10
0
    def get_container(self, container, prefix=None, delimiter=None, marker=None, limit=10000):
        if container != 'container':
            raise client.ClientException("Not found", http_status=404)

        # test provided objects
        if self.objects:
            index = 0
            if marker:
                while True:
                    name = self.objects[index].get('name', self.objects[index].get('subdir'))
                    if marker == name.rstrip("/"):
                        index += 1
                        break
                    index += 1
                    if index == self.num_objects:
                        # marker not found, so it's ignored
                        index = 0
                        break
            return {}, self.objects[index:index+10000]

        # generated
        start = 0
        if marker:
            while start <= self.num_objects:
                if marker == 'object%s.txt' % start:
                    break
                start += 1

        end = self.num_objects-start
        if end == 0:
            # marker not found, so it's ingored (behaviour in OpenStack
            # Object Storage)
            start = 0
            end = self.num_objects
        if end > limit:
            end = limit

        return {}, [self.gen_object('object%s.txt' % i) for i in xrange(start, start+end)]
Ejemplo n.º 11
0
    def test_delete_conflict_not_empty(self):
        t = template_format.parse(swift_template)
        stack = utils.parse_stack(t)

        container_name = utils.PhysName(stack.name, 'test_resource')
        sc.Connection.put_container(
            container_name,
            {'X-Container-Write': 'test_tenant:test_username',
             'X-Container-Read': 'test_tenant:test_username'}).AndReturn(None)
        sc.Connection.delete_container(container_name).AndRaise(
            sc.ClientException('Not empty', http_status=409))
        sc.Connection.get_container(container_name).AndReturn(
            ({'name': container_name}, [{'name': 'test_object'}]))
        self.m.ReplayAll()

        rsrc = self.create_resource(t, stack, 'S3Bucket')
        deleter = scheduler.TaskRunner(rsrc.delete)
        ex = self.assertRaises(exception.ResourceFailure, deleter)
        self.assertIn("ResourceActionNotSupported: resources.test_resource: "
                      "The bucket you tried to delete is not empty",
                      six.text_type(ex))

        self.m.VerifyAll()
Ejemplo n.º 12
0
    def test_delete_conflict_empty(self):
        cfg.CONF.set_override('action_retry_limit', 0)
        t = template_format.parse(swift_template)
        stack = utils.parse_stack(t)

        container_name = utils.PhysName(stack.name, 'test_resource')
        self.mock_con.put_container.return_value = None
        self.mock_con.delete_container.side_effect = sc.ClientException(
            'Conflict', http_status=409)
        self.mock_con.get_container.return_value = ({
            'name': container_name
        }, [])

        rsrc = self.create_resource(t, stack, 'S3Bucket')
        deleter = scheduler.TaskRunner(rsrc.delete)
        ex = self.assertRaises(exception.ResourceFailure, deleter)
        self.assertIn("Conflict", str(ex))
        self.mock_con.put_container.assert_called_once_with(
            container_name, {
                'X-Container-Write': 'test_tenant:test_username',
                'X-Container-Read': 'test_tenant:test_username'
            })
        self.mock_con.delete_container.assert_called_once_with(container_name)
        self.mock_con.get_container.assert_called_once_with(container_name)
Ejemplo n.º 13
0
 def _container_exists(self, container):
     if container != 'container':
         raise client.ClientException("Not found", http_status=404)
Ejemplo n.º 14
0
 def test_get_temp_key_get_account_exception(self, mock_get_account):
     mock_get_account.side_effect = client.ClientException('')
     computed_key = utils.get_temp_key('http://fakeurl', 'faketoken', False)
     self.assertIsNone(computed_key)