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()
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()
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)
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()
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()
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)
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()
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()
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)
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)]
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()
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)
def _container_exists(self, container): if container != 'container': raise client.ClientException("Not found", http_status=404)
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)