Loading ccnode/handlers.py +93 −0 Original line number Diff line number Diff line Loading @@ -796,6 +796,99 @@ class NodeHandler(RpcHandler): jmgr = self._host_handle.jobmgr jmgr.cancel(jid) ### # Live network copy @pure def drbd_setup(self, pool, name): ''' ''' if hasattr(self._host_handle, 'storage'): # facilities sto = self._host_handle.storage() lvm = self._host_handle.lvm jobmgr = self._host_handle.jobmgr drbdpool = self._host_handle.drbdpool # get pool and volume handles vol_pool = sto.pool_get(pool) vol = vol_pool.volume_get(name) # stop if it's not an LVM volume if vol_pool.get_source_format() != 'lvm2': raise HostError('not a LVM2 volume, cannot use DRBD') # fetch LV/VG info vg_name = vol_pool.get_source_name() lv_name = vol.get_name() # create job job = DrbdCopyJob(jobmgr, lvm, drbdpool, vg_name, lv_name) job.start_now() return { 'jid' : job.get_id(), 'port' : job.drbd_get_port(), } else: raise NotImplementedError('host handler has no storage support') @pure def drbd_connect(self, res, remote_res, remote_ip): ''' Connect the local live copy engine to the designated remote host that will push or pull data. ''' # facilities jobmgr = self._host_handle.jobmgr # get the job job = jobmgr.get_job(res['jid']) # connect node job.drbd_connect(remote_ip, remote_res['port']) @pure def drbd_role(self, res, primary): ''' ''' # facilities jobmgr = self._host_handle.jobmgr # get the job job = jobmgr.get_job(res['jid']) # change role job.drbd_role(primary=primary) @pure def drbd_takeover(self, res, state): ''' ''' # facilities jobmgr = self._host_handle.jobmgr # get the job job = jobmgr.get_job(res['jid']) # hijack the VM disk DM job.drbd_takeover(state) @pure def drbd_sync(self, res): ''' Wait for the live copy engine to complete a pending initial disk synchronization. ''' # facilities jobmgr = self._host_handle.jobmgr # get the job job = jobmgr.get_job(res['jid']) # wait for sync completion job.drbd_waitsync() @pure def drbd_shutdown(self, res): ''' Close connection and destroy all ressources allocated for a live copy. ''' # facilities jobmgr = self._host_handle.jobmgr # get the job job = jobmgr.get_job(res['jid']) # FIXME job.drbd_stop() Loading Loading
ccnode/handlers.py +93 −0 Original line number Diff line number Diff line Loading @@ -796,6 +796,99 @@ class NodeHandler(RpcHandler): jmgr = self._host_handle.jobmgr jmgr.cancel(jid) ### # Live network copy @pure def drbd_setup(self, pool, name): ''' ''' if hasattr(self._host_handle, 'storage'): # facilities sto = self._host_handle.storage() lvm = self._host_handle.lvm jobmgr = self._host_handle.jobmgr drbdpool = self._host_handle.drbdpool # get pool and volume handles vol_pool = sto.pool_get(pool) vol = vol_pool.volume_get(name) # stop if it's not an LVM volume if vol_pool.get_source_format() != 'lvm2': raise HostError('not a LVM2 volume, cannot use DRBD') # fetch LV/VG info vg_name = vol_pool.get_source_name() lv_name = vol.get_name() # create job job = DrbdCopyJob(jobmgr, lvm, drbdpool, vg_name, lv_name) job.start_now() return { 'jid' : job.get_id(), 'port' : job.drbd_get_port(), } else: raise NotImplementedError('host handler has no storage support') @pure def drbd_connect(self, res, remote_res, remote_ip): ''' Connect the local live copy engine to the designated remote host that will push or pull data. ''' # facilities jobmgr = self._host_handle.jobmgr # get the job job = jobmgr.get_job(res['jid']) # connect node job.drbd_connect(remote_ip, remote_res['port']) @pure def drbd_role(self, res, primary): ''' ''' # facilities jobmgr = self._host_handle.jobmgr # get the job job = jobmgr.get_job(res['jid']) # change role job.drbd_role(primary=primary) @pure def drbd_takeover(self, res, state): ''' ''' # facilities jobmgr = self._host_handle.jobmgr # get the job job = jobmgr.get_job(res['jid']) # hijack the VM disk DM job.drbd_takeover(state) @pure def drbd_sync(self, res): ''' Wait for the live copy engine to complete a pending initial disk synchronization. ''' # facilities jobmgr = self._host_handle.jobmgr # get the job job = jobmgr.get_job(res['jid']) # wait for sync completion job.drbd_waitsync() @pure def drbd_shutdown(self, res): ''' Close connection and destroy all ressources allocated for a live copy. ''' # facilities jobmgr = self._host_handle.jobmgr # get the job job = jobmgr.get_job(res['jid']) # FIXME job.drbd_stop() Loading