def test_create_from_snapshot_error(self): stack_name = 'test_volume_stack' fv = FakeVolumeWithStateTransition('restoring-backup', 'error') fvbr = FakeBackupRestore('vol-123') # create script clients.OpenStackClients.cinder().MultipleTimes().AndReturn( self.cinder_fc) self.m.StubOutWithMock(self.cinder_fc.restores, 'restore') self.cinder_fc.restores.restore('backup-123').AndReturn(fvbr) self.cinder_fc.volumes.get('vol-123').AndReturn(fv) self.m.StubOutWithMock(fv, 'update') vol_name = utils.PhysName(stack_name, 'DataVolume') fv.update( display_description=vol_name, display_name=vol_name) self.m.ReplayAll() t = template_format.parse(volume_template) t['Resources']['DataVolume']['Properties']['SnapshotId'] = 'backup-123' t['Resources']['DataVolume']['Properties']['AvailabilityZone'] = 'nova' stack = utils.parse_stack(t, stack_name=stack_name) rsrc = vol.Volume('DataVolume', t['Resources']['DataVolume'], stack) create = scheduler.TaskRunner(rsrc.create) self.assertRaises(exception.ResourceFailure, create) self.m.VerifyAll()
def create_volume(self, t, stack, resource_name): resource = vol.Volume(resource_name, t['Resources'][resource_name], stack) self.assertEqual(None, resource.validate()) self.assertEqual(None, resource.create()) self.assertEqual(vol.Volume.CREATE_COMPLETE, resource.state) return resource
def test_snapshot_no_volume(self): stack_name = 'test_volume_stack' fv = FakeVolume('creating', 'error') # create script clients.OpenStackClients.cinder().MultipleTimes().AndReturn( self.cinder_fc) vol_name = utils.PhysName(stack_name, 'DataVolume') self.cinder_fc.volumes.create(size=u'1', availability_zone='nova', display_description=vol_name, display_name=vol_name).AndReturn(fv) self.cinder_fc.volumes.get('vol-123').AndReturn(fv) self.cinder_fc.volumes.delete('vol-123').AndReturn(None) self.m.ReplayAll() t = template_format.parse(volume_template) t['Resources']['DataVolume']['DeletionPolicy'] = 'Snapshot' t['Resources']['DataVolume']['Properties']['AvailabilityZone'] = 'nova' stack = parse_stack(t, stack_name=stack_name) rsrc = vol.Volume('DataVolume', t['Resources']['DataVolume'], stack) create = scheduler.TaskRunner(rsrc.create) self.assertRaises(exception.ResourceFailure, create) self.assertEqual(rsrc.destroy(), None) self.m.VerifyAll()
def test_snapshot_no_volume(self): stack_name = 'test_volume_stack' fv = FakeVolume('creating', 'error') self._mock_create_volume(fv, stack_name) self.cinder_fc.volumes.get('vol-123').AndReturn(fv) self.m.ReplayAll() t = template_format.parse(volume_template) t['Resources']['DataVolume']['DeletionPolicy'] = 'Snapshot' t['Resources']['DataVolume']['Properties']['AvailabilityZone'] = 'nova' stack = utils.parse_stack(t, stack_name=stack_name) rsrc = vol.Volume('DataVolume', t['Resources']['DataVolume'], stack) create = scheduler.TaskRunner(rsrc.create) self.assertRaises(exception.ResourceFailure, create) self._stubout_delete_volume(fv) scheduler.TaskRunner(rsrc.destroy)() self.m.VerifyAll()
def create_volume(self, t, stack, resource_name): data = t['Resources'][resource_name] data['Properties']['AvailabilityZone'] = 'nova' rsrc = vol.Volume(resource_name, data, stack) self.assertEqual(rsrc.validate(), None) scheduler.TaskRunner(rsrc.create)() self.assertEqual(rsrc.state, (rsrc.CREATE, rsrc.COMPLETE)) return rsrc
def test_volume_bad_tags(self): t = template_format.parse(volume_template) t['Resources']['DataVolume']['Properties']['Tags'] = [{'Foo': 'bar'}] stack = utils.parse_stack(t, stack_name='test_volume_bad_tags_stack') rsrc = vol.Volume('DataVolume', t['Resources']['DataVolume'], stack) self.assertRaises(exception.StackValidationFailed, rsrc.validate) self.m.VerifyAll()
def test_volume_size_constraint_aws(self): t = template_format.parse(volume_template) t['Resources']['DataVolume']['Properties']['Size'] = '0' stack = utils.parse_stack(t) rsrc = vol.Volume('DataVolume', t['Resources']['DataVolume'], stack) error = self.assertRaises(exception.StackValidationFailed, rsrc.validate) self.assertEqual( "Property error : DataVolume: Size 0 is out of " "range (min: 1, max: None)", str(error))
def test_volume_create_error(self): fv = FakeVolume('creating', 'error') stack_name = 'test_volume_create_error_stack' self._mock_create_volume(fv, stack_name) self.m.ReplayAll() t = template_format.parse(volume_template) t['Resources']['DataVolume']['Properties']['AvailabilityZone'] = 'nova' stack = utils.parse_stack(t, stack_name=stack_name) rsrc = vol.Volume('DataVolume', t['Resources']['DataVolume'], stack) create = scheduler.TaskRunner(rsrc.create) self.assertRaises(exception.ResourceFailure, create) self.m.VerifyAll()
def test_volume_create_error(self): fv = FakeVolume('creating', 'error') # create script vol.Volume.nova('volume').AndReturn(self.fc) self.fc.volumes.create( u'1', display_description='test_stack.DataVolume', display_name='test_stack.DataVolume').AndReturn(fv) eventlet.sleep(1).AndReturn(None) self.m.ReplayAll() t = self.load_template() stack = self.parse_stack(t) resource = vol.Volume('DataVolume', t['Resources']['DataVolume'], stack) self.assertEqual('error', resource.create()) self.m.VerifyAll()
def test_volume_create_error(self): fv = FakeVolume('creating', 'error') stack_name = 'test_volume_create_error_stack' # create script clients.OpenStackClients.cinder().AndReturn(self.fc) self.fc.volumes.create( u'1', display_description='%s.DataVolume' % stack_name, display_name='%s.DataVolume' % stack_name).AndReturn(fv) eventlet.sleep(1).AndReturn(None) self.m.ReplayAll() t = self.load_template() stack = self.parse_stack(t, stack_name) resource = vol.Volume('DataVolume', t['Resources']['DataVolume'], stack) self.assertEqual(resource.create(), 'error') self.m.VerifyAll()
def test_volume_create_error(self): fv = FakeVolume('creating', 'error') stack_name = 'test_volume_create_error_stack' # create script clients.OpenStackClients.cinder().AndReturn(self.cinder_fc) vol_name = utils.PhysName(stack_name, 'DataVolume') self.cinder_fc.volumes.create(size=u'1', availability_zone='nova', display_description=vol_name, display_name=vol_name).AndReturn(fv) self.m.ReplayAll() t = template_format.parse(volume_template) t['Resources']['DataVolume']['Properties']['AvailabilityZone'] = 'nova' stack = parse_stack(t, stack_name=stack_name) rsrc = vol.Volume('DataVolume', t['Resources']['DataVolume'], stack) create = scheduler.TaskRunner(rsrc.create) self.assertRaises(exception.ResourceFailure, create) self.m.VerifyAll()