def test_cinder_attachment(self): fv = FakeVolume('creating', 'available') fva = FakeVolume('attaching', 'in-use') stack_name = 'test_volume_attach_stack' # volume create 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) # create script clients.OpenStackClients.nova().MultipleTimes().AndReturn(self.fc) scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None) self.fc.volumes.create_server_volume( device=u'/dev/vdc', server_id=u'WikiDatabase', volume_id=u'vol-123').AndReturn(fva) self.cinder_fc.volumes.get('vol-123').AndReturn(fva) # delete script fva = FakeVolume('in-use', 'available') self.fc.volumes.delete_server_volume('WikiDatabase', 'vol-123').AndReturn(None) self.cinder_fc.volumes.get('vol-123').AndReturn(fva) self.m.ReplayAll() t = template_format.parse(volume_template) t['Resources']['DataVolume']['Properties']['AvailabilityZone'] = 'nova' t['Resources']['MountPoint']['Properties'] = { 'instance_uuid': { 'Ref': 'WikiDatabase' }, 'volume_id': { 'Ref': 'DataVolume' }, 'mountpoint': '/dev/vdc' } stack = parse_stack(t, stack_name=stack_name) scheduler.TaskRunner(stack['DataVolume'].create)() self.assertEqual(fv.status, 'available') rsrc = vol.CinderVolumeAttachment('MountPoint', t['Resources']['MountPoint'], stack) self.assertEqual(rsrc.validate(), None) scheduler.TaskRunner(rsrc.create)() self.assertEqual(rsrc.state, vol.VolumeAttachment.CREATE_COMPLETE) self.assertRaises(resource.UpdateReplace, rsrc.handle_update, {}, {}, {}) self.assertEqual(rsrc.delete(), None) self.m.VerifyAll()
def test_cinder_attachment(self): fv = FakeVolume('creating', 'available') fva = FakeVolume('attaching', 'in-use') stack_name = 'test_volume_attach_stack' self._mock_create_volume(fv, stack_name) self._mock_create_server_volume_script(fva) # delete script fva = FakeVolume('in-use', 'available') self.fc.volumes.get_server_volume(u'WikiDatabase', 'vol-123').AndReturn(fva) self.cinder_fc.volumes.get(fva.id).AndReturn(fva) self.fc.volumes.delete_server_volume( 'WikiDatabase', 'vol-123').MultipleTimes().AndReturn(None) self.fc.volumes.get_server_volume(u'WikiDatabase', 'vol-123').AndReturn(fva) self.fc.volumes.get_server_volume(u'WikiDatabase', 'vol-123').AndRaise( clients.novaclient.exceptions.NotFound('NotFound')) self.m.ReplayAll() t = template_format.parse(volume_template) t['Resources']['DataVolume']['Properties']['AvailabilityZone'] = 'nova' t['Resources']['MountPoint']['Properties'] = { 'instance_uuid': { 'Ref': 'WikiDatabase' }, 'volume_id': { 'Ref': 'DataVolume' }, 'mountpoint': '/dev/vdc' } stack = utils.parse_stack(t, stack_name=stack_name) scheduler.TaskRunner(stack['DataVolume'].create)() self.assertEqual('available', fv.status) rsrc = vol.CinderVolumeAttachment('MountPoint', t['Resources']['MountPoint'], stack) self.assertIsNone(rsrc.validate()) scheduler.TaskRunner(rsrc.create)() self.assertEqual((rsrc.CREATE, rsrc.COMPLETE), rsrc.state) scheduler.TaskRunner(rsrc.delete)() self.m.VerifyAll()
def test_cinder_attachment(self): fv = FakeVolume('creating', 'available') fva = FakeVolume('attaching', 'in-use') stack_name = 'test_volume_attach_stack' self._mock_create_volume(fv, stack_name) self._mock_create_server_volume_script(fva) # delete script fva = FakeVolume('in-use', 'available') self.fc.volumes.delete_server_volume('WikiDatabase', 'vol-123').AndReturn(None) self.cinder_fc.volumes.get('vol-123').AndReturn(fva) self.m.ReplayAll() t = template_format.parse(volume_template) t['Resources']['DataVolume']['Properties']['AvailabilityZone'] = 'nova' t['Resources']['MountPoint']['Properties'] = { 'instance_uuid': { 'Ref': 'WikiDatabase' }, 'volume_id': { 'Ref': 'DataVolume' }, 'mountpoint': '/dev/vdc' } stack = utils.parse_stack(t, stack_name=stack_name) scheduler.TaskRunner(stack['DataVolume'].create)() self.assertEqual(fv.status, 'available') rsrc = vol.CinderVolumeAttachment('MountPoint', t['Resources']['MountPoint'], stack) self.assertEqual(rsrc.validate(), None) scheduler.TaskRunner(rsrc.create)() self.assertEqual(rsrc.state, (rsrc.CREATE, rsrc.COMPLETE)) self.assertRaises(resource.UpdateReplace, rsrc.handle_update, {}, {}, {}) scheduler.TaskRunner(rsrc.delete)() self.m.VerifyAll()