def mount_snapshot(json_args): _logger.info("MountSnapshot mount_snapshot json_args:{}".format(json_args)) result_mount_snapshot = dict() j_args = json.loads(json_args) snapshots = j_args.get('snapshots', None) not_need_nbd = j_args.get('not_need_nbd', False) if snapshots and (not not_need_nbd): # 初始化一个 nbd 对象 nbd_object = nbd.nbd_wrapper( nbd.nbd_wrapper_disable_lvm_allocator(nbd.nbd_wrapper_local_device_allocator())) device_path = nbd_object.device_path device_name = nbd_object.device_name # 挂载 (线程) nbd_thread = nbd.nbd_direct_images(device_name, nbd_object, snapshots) nbd_thread.start() nbd.nbd_wrapper.wait_nbd_read_ok(nbd_object) nbd_indet = uuid.uuid4().hex result_mount_snapshot['nbd_device_path'] = device_path result_mount_snapshot['nbd_object_uuid'] = nbd_indet with _threading_op_locker: _threading_pools[nbd_indet] = nbd_object else: result_mount_snapshot['nbd_device_path'] = None result_mount_snapshot['nbd_object_uuid'] = None _logger.info("MountSnapshot mount_snapshot result_mount_snapshot:{}".format(result_mount_snapshot)) return result_mount_snapshot
def _nbd_object_by_data_device(data_device): device_profile = data_device['device_profile'] nbdinfo = device_profile['nbd'] return nbd.nbd_wrapper( nbd.nbd_wrapper_disable_lvm_allocator( nbd.nbd_wrapper_empty_allocator(nbdinfo['device_index'], nbdinfo['device_name'], nbdinfo['device_path'], nbdinfo['vnc_address'])))
def __init__(self): threading.Thread.__init__(self) self.__mount_cmd = None self.__umount_cmd = None self.new_nbd = nbd.nbd_wrapper( nbd.nbd_wrapper_disable_lvm_allocator( nbd.nbd_wrapper_local_device_allocator())) self.device_path = self.new_nbd.device_path self.scsi_id = None _logger.debug('nbd init,device_path {}'.format(self.device_path))
def __init__(self, username='', hostname='', diskindex=0, disk_snapshots=''): threading.Thread.__init__(self) self.username = username self.hostname = hostname self.diskindex = diskindex self.disk_snapshots = disk_snapshots self.new_nbd = nbd.nbd_wrapper(nbd.nbd_wrapper_local_device_allocator()) self.device_path = self.new_nbd.device_path _logger.debug('username {} hostname {} diskindex {} disk_snapshots {} nbd start,device_path {}'. format(self.username, self.hostname, self.diskindex, self.disk_snapshots, self.device_path))
def _get_nbd_object(self): if self._nbd_object: return self._nbd_object else: self._nbd_object = nbd.nbd_wrapper( nbd.nbd_wrapper_disable_lvm_allocator( nbd.nbd_wrapper_local_device_allocator())) nbd_thread = nbd.nbd_direct_images(self._nbd_object.device_name, self._nbd_object, self._snapshots) nbd_thread.start() nbd.nbd_wrapper.wait_nbd_read_ok(self._nbd_object) return self._nbd_object
def __init__(self, config): self._config = config self._nbd_object = nbd.nbd_wrapper( nbd.nbd_wrapper_disable_lvm_allocator( nbd.nbd_wrapper_local_device_allocator())) self._nbd_thread = None