def volume_attached_here(self, server, serverpath, sr_uuid, vdi_uuid, readonly=True): self.connect_volume(server, serverpath, sr_uuid, vdi_uuid) with self._session_factory.get_session() as session: vm_uuid = tools.get_this_vm_uuid() vm_ref = session.VM.get_by_uuid(vm_uuid) vdi_ref = session.VDI.get_by_uuid(vdi_uuid) vbd_ref = session.VBD.create(vm_ref, vdi_ref, userdevice='autodetect', bootable=False, mode='RO' if readonly else 'RW', type='disk', empty=False, other_config=dict()) session.VBD.plug(vbd_ref) device = session.VBD.get_device(vbd_ref) try: yield "/dev/" + device finally: session.VBD.unplug(vbd_ref) session.VBD.destroy(vbd_ref) self.disconnect_volume(vdi_uuid)
def test_create_vbd(self): session = self.session vm_uuid = tools.get_this_vm_uuid() vm_ref = session.VM.get_by_uuid(vm_uuid) with temporary_vdi(session) as vdi_ref: vbd_ref = session.VBD.create(vm_ref, vdi_ref, userdevice='autodetect', bootable=False, mode='RW', type='disk', empty=False, other_config=dict()) session.VBD.destroy(vbd_ref)
def detach_destroy_extra_disks(self): session = self.session vm_uuid = tools.get_this_vm_uuid() vm_ref = session.VM.get_by_uuid(vm_uuid) for vbd_ref in session.VM.get_vbds(vm_ref): if session.VBD.get_device(vbd_ref) == "xvda": continue vdi_ref = session.VBD.get_vdi(vbd_ref) session.VBD.unplug(vbd_ref) session.VBD.destroy(vbd_ref) session.VDI.destroy(vdi_ref)
def test_attach_a_volume_here(self): vol = self.driver.create_volume( params.nfs_server, params.nfs_serverpath, 1) vm_uuid = tools.get_this_vm_uuid() vm_ref = self.session.VM.get_by_uuid(vm_uuid) originally_attached_vbds = self.session.VM.get_vbds(vm_ref) with self.driver.volume_attached_here(params.nfs_server, params.nfs_serverpath, **vol) as blockdev: self.assertTrue(os.path.exists(blockdev)) attached_vbds = self.session.VM.get_vbds(vm_ref) self.assertEquals(len(originally_attached_vbds) + 1, len(attached_vbds)) attached_vbds_after = self.session.VM.get_vbds(vm_ref) self.assertEquals(originally_attached_vbds, attached_vbds_after)
def temporary_vbd(session): vm_uuid = tools.get_this_vm_uuid() vm_ref = session.VM.get_by_uuid(vm_uuid) with temporary_vdi(session) as vdi_ref: vbd_ref = session.VBD.create(vm_ref, vdi_ref, userdevice='autodetect', bootable=False, mode='RO', type='disk', empty=False, other_config=dict()) try: yield vbd_ref finally: try: session.VBD.unplug(vbd_ref) except: pass session.VBD.destroy(vbd_ref)
def volume_attached_here(self, server, serverpath, sr_uuid, vdi_uuid, readonly=True): self.connect_volume(server, serverpath, sr_uuid, vdi_uuid) with self._session_factory.get_session() as session: vm_uuid = tools.get_this_vm_uuid() vm_ref = session.VM.get_by_uuid(vm_uuid) vdi_ref = session.VDI.get_by_uuid(vdi_uuid) vbd_ref = session.VBD.create( vm_ref, vdi_ref, userdevice='autodetect', bootable=False, mode='RO' if readonly else 'RW', type='disk', empty=False, other_config=dict()) session.VBD.plug(vbd_ref) device = session.VBD.get_device(vbd_ref) try: yield "/dev/" + device finally: session.VBD.unplug(vbd_ref) session.VBD.destroy(vbd_ref) self.disconnect_volume(vdi_uuid)
def test_get_this_vm_uuid(self, mock_read_first_line): mock_read_first_line.return_value = 'someuuid' self.assertEquals('someuuid', tools.get_this_vm_uuid()) mock_read_first_line.assert_called_once_with('/sys/hypervisor/uuid')
def test_get_uuid(self): machine_uuid = tools.get_this_vm_uuid() self.assertTrue(bool(machine_uuid))