def revert_volume_from_snapshot(self, req): cmd = jsonobject.loads(req[http.REQUEST_BODY]) rsp = RevertVolumeFromSnapshotRsp() snapshot_abs_path = translate_absolute_path_from_install_path( cmd.snapshotInstallPath) qcow2_options = self.calc_qcow2_option(self, cmd.qcow2Options, True, cmd.provisioning) new_volume_path = cmd.installPath if new_volume_path is None or new_volume_path == "": new_volume_path = "/dev/%s/%s" % (cmd.vgUuid, uuidhelper.uuid()) else: new_volume_path = translate_absolute_path_from_install_path( new_volume_path) with lvm.RecursiveOperateLv(snapshot_abs_path, shared=True): size = linux.qcow2_virtualsize(snapshot_abs_path) lvm.create_lv_from_cmd( new_volume_path, size, cmd, "%s::%s::%s" % (VOLUME_TAG, cmd.hostUuid, time.time())) with lvm.OperateLv(new_volume_path, shared=False, delete_when_exception=True): linux.qcow2_clone_with_option(snapshot_abs_path, new_volume_path, qcow2_options) size = linux.qcow2_virtualsize(new_volume_path) rsp.newVolumeInstallPath = new_volume_path rsp.size = size return jsonobject.dumps(rsp)
def create_root_volume(self, req): cmd = jsonobject.loads(req[http.REQUEST_BODY]) rsp = AgentRsp() template_abs_path_cache = translate_absolute_path_from_install_path( cmd.templatePathInCache) install_abs_path = translate_absolute_path_from_install_path( cmd.installPath) qcow2_options = self.calc_qcow2_option(self, cmd.qcow2Options, True, cmd.provisioning) with lvm.RecursiveOperateLv(template_abs_path_cache, shared=True, skip_deactivate_tags=[IMAGE_TAG]): virtual_size = linux.qcow2_virtualsize(template_abs_path_cache) if not lvm.lv_exists(install_abs_path): lvm.create_lv_from_cmd( install_abs_path, virtual_size, cmd, "%s::%s::%s" % (VOLUME_TAG, cmd.hostUuid, time.time())) with lvm.OperateLv(install_abs_path, shared=False, delete_when_exception=True): linux.qcow2_clone_with_option(template_abs_path_cache, install_abs_path, qcow2_options) rsp.totalCapacity, rsp.availableCapacity = lvm.get_vg_size(cmd.vgUuid) return jsonobject.dumps(rsp)
def create_root_volume(self, req): cmd = jsonobject.loads(req[http.REQUEST_BODY]) rsp = AgentRsp() template_abs_path_cache = translate_absolute_path_from_install_path(cmd.templatePathInCache) install_abs_path = translate_absolute_path_from_install_path(cmd.installPath) qcow2_options = self.calc_qcow2_option(self, cmd.qcow2Options, True, cmd.provisioning) with lvm.RecursiveOperateLv(template_abs_path_cache, shared=True, skip_deactivate_tags=[IMAGE_TAG]): virtual_size = linux.qcow2_virtualsize(template_abs_path_cache) if not lvm.lv_exists(install_abs_path): lvm.create_lv_from_cmd(install_abs_path, virtual_size, cmd, "%s::%s::%s" % (VOLUME_TAG, cmd.hostUuid, time.time())) with lvm.OperateLv(install_abs_path, shared=False, delete_when_exception=True): linux.qcow2_clone_with_option(template_abs_path_cache, install_abs_path, qcow2_options) rsp.totalCapacity, rsp.availableCapacity = lvm.get_vg_size(cmd.vgUuid) return jsonobject.dumps(rsp)
def revert_volume_from_snapshot(self, req): cmd = jsonobject.loads(req[http.REQUEST_BODY]) rsp = RevertVolumeFromSnapshotRsp() snapshot_abs_path = translate_absolute_path_from_install_path(cmd.snapshotInstallPath) qcow2_options = self.calc_qcow2_option(self, cmd.qcow2Options, True, cmd.provisioning) new_volume_path = cmd.installPath if new_volume_path is None or new_volume_path == "": new_volume_path = "/dev/%s/%s" % (cmd.vgUuid, uuidhelper.uuid()) else: new_volume_path = translate_absolute_path_from_install_path(new_volume_path) with lvm.RecursiveOperateLv(snapshot_abs_path, shared=True): size = linux.qcow2_virtualsize(snapshot_abs_path) lvm.create_lv_from_cmd(new_volume_path, size, cmd, "%s::%s::%s" % (VOLUME_TAG, cmd.hostUuid, time.time())) with lvm.OperateLv(new_volume_path, shared=False, delete_when_exception=True): linux.qcow2_clone_with_option(snapshot_abs_path, new_volume_path, qcow2_options) size = linux.qcow2_virtualsize(new_volume_path) rsp.newVolumeInstallPath = new_volume_path rsp.size = size return jsonobject.dumps(rsp)