def init(self, req): cmd = jsonobject.loads(req[http.REQUEST_BODY]) fusionstorIsReady = False fusionstorIsReady = lichbd.lichbd_check_cluster_is_ready( cmd.monHostnames, cmd.sshUsernames, cmd.sshPasswords) if fusionstorIsReady is not True: lichbd.lichbd_create_cluster(cmd.monHostnames, cmd.sshPasswords) for monHostname in cmd.monHostnames: lichbd.lichbd_add_disks(monHostname) existing_pools = lichbd.lichbd_lspools() for pool in cmd.pools: if pool.predefined and pool.name not in existing_pools: raise Exception( 'cannot find pool[%s] in the fusionstor cluster, you must create it manually' % pool.name) elif pool.name not in existing_pools: lichbd.lichbd_mkpool(pool.name) rsp = InitRsp() rsp.fsid = lichbd.lichbd_get_fsid() rsp.userKey = "AQDVyu9VXrozIhAAuT2yMARKBndq9g3W8KUQvw==" self._set_capacity_to_response(rsp) return jsonobject.dumps(rsp)
def download(self, req): cmd = jsonobject.loads(req[http.REQUEST_BODY]) pool, image_name = self._parse_install_path(cmd.installPath) tmp_image_name = 'tmp-%s' % image_name lichbd_file = os.path.join(pool, image_name) tmp_lichbd_file = os.path.join(pool, tmp_image_name) lichbd.lichbd_mkpool(os.path.dirname(lichbd_file)) shell.call('set -o pipefail; wget --no-check-certificate -q -O - %s | lichbd import - %s -p lichbd' % (cmd.url, tmp_lichbd_file)) @rollbackable def _1(): if lichbd.lichbd_file_exist(tmp_lichbd_file): lichbd.lichbd_rm(tmp_lichbd_file) lichbd.lichbd_rm(lichbd_file) _1() qemu_img = lichbd.lichbd_get_qemu_img_path() file_format = shell.call("set -o pipefail;%s info rbd:%s/%s 2>/dev/null | grep 'file format' | cut -d ':' -f 2" % (qemu_img, pool, tmp_image_name)) file_format = file_format.strip() if file_format not in ['qcow2', 'raw']: raise Exception('unknown image format: %s' % file_format) lichbd.lichbd_mv(lichbd_file, tmp_lichbd_file) size = lichbd.lichbd_file_size(lichbd_file) rsp = DownloadRsp() rsp.size = size self._set_capacity_to_response(rsp) return jsonobject.dumps(rsp)
def clone(self, req): cmd = jsonobject.loads(req[http.REQUEST_BODY]) src_path = self._normalize_install_path(cmd.srcPath) dst_path = self._normalize_install_path(cmd.dstPath) _pool = os.path.dirname(dst_path) if not lichbd.lichbd_pool_exist(_pool): lichbd.lichbd_mkpool(_pool) lichbd.lichbd_snap_clone(src_path, dst_path) rsp = AgentResponse() self._set_capacity_to_response(rsp) return jsonobject.dumps(rsp)
def clone(self, req): cmd = jsonobject.loads(req[http.REQUEST_BODY]) src_path = self._normalize_install_path(cmd.srcPath) dst_path = self._normalize_install_path(cmd.dstPath) _pool = os.path.dirname(dst_path) if not lichbd.lichbd_file_exist(_pool): lichbd.lichbd_mkpool(_pool) lichbd.lichbd_snap_clone(src_path, dst_path) rsp = AgentResponse() self._set_capacity_to_response(rsp) return jsonobject.dumps(rsp)
def download(self, req): cmd = jsonobject.loads(req[http.REQUEST_BODY]) pool, image_name = self._parse_install_path(cmd.installPath) tmp_image_name = 'tmp-%s' % image_name lichbd_file = os.path.join(pool, image_name) tmp_lichbd_file = os.path.join(pool, tmp_image_name) protocol = lichbd.get_protocol() lichbd.lichbd_mkpool(os.path.dirname(lichbd_file)) @rollbackable def _1(): if lichbd.lichbd_file_exist(tmp_lichbd_file): lichbd.lichbd_rm(tmp_lichbd_file) if lichbd.lichbd_file_exist(lichbd_file): lichbd.lichbd_rm(lichbd_file) _1() if cmd.url.startswith('http://') or cmd.url.startswith('https://'): cmd.url = linux.shellquote(cmd.url) shell.call( 'set -o pipefail; wget --no-check-certificate -q -O - %s | %s - %s -p %s' % (cmd.url, lichbdfactory.get_lichbd_version_class(). LICHBD_CMD_VOL_IMPORT, tmp_lichbd_file, protocol)) actual_size = linux.get_file_size_by_http_head(cmd.url) elif cmd.url.startswith('file://'): src_path = cmd.url.lstrip('file:') src_path = os.path.normpath(src_path) if not os.path.isfile(src_path): raise Exception('cannot find the file[%s]' % src_path) lichbd.lichbd_import(src_path, tmp_lichbd_file) actual_size = os.path.getsize(src_path) else: raise Exception('unknown url[%s]' % cmd.url) file_format = lichbd.lichbd_get_format(tmp_lichbd_file) if file_format not in ['qcow2', 'raw']: raise Exception('unknown image format: %s' % file_format) lichbd.lichbd_mv(lichbd_file, tmp_lichbd_file) size = lichbd.lichbd_file_size(lichbd_file) rsp = DownloadRsp() rsp.size = size rsp.actualSize = actual_size self._set_capacity_to_response(rsp) return jsonobject.dumps(rsp)
def download(self, req): cmd = jsonobject.loads(req[http.REQUEST_BODY]) pool, image_name = self._parse_install_path(cmd.installPath) tmp_image_name = 'tmp-%s' % image_name lichbd_file = os.path.join(pool, image_name) tmp_lichbd_file = os.path.join(pool, tmp_image_name) protocol = lichbd.get_protocol() lichbd.lichbd_mkpool(os.path.dirname(lichbd_file)) @rollbackable def _1(): if lichbd.lichbd_file_exist(tmp_lichbd_file): lichbd.lichbd_rm(tmp_lichbd_file) if lichbd.lichbd_file_exist(lichbd_file): lichbd.lichbd_rm(lichbd_file) _1() if cmd.url.startswith('http://') or cmd.url.startswith('https://'): shell.call('set -o pipefail; wget --no-check-certificate -q -O - %s | lichbd import - %s -p %s' % (cmd.url, tmp_lichbd_file, protocol)) actual_size = linux.get_file_size_by_http_head(cmd.url) elif cmd.url.startswith('file://'): src_path = cmd.url.lstrip('file:') src_path = os.path.normpath(src_path) if not os.path.isfile(src_path): raise Exception('cannot find the file[%s]' % src_path) lichbd.lichbd_import(src_path, tmp_lichbd_file) actual_size = os.path.getsize(src_path) else: raise Exception('unknown url[%s]' % cmd.url) file_format = lichbd.lichbd_get_format(tmp_lichbd_file) if file_format not in ['qcow2', 'raw']: raise Exception('unknown image format: %s' % file_format) lichbd.lichbd_mv(lichbd_file, tmp_lichbd_file) size = lichbd.lichbd_file_size(lichbd_file) rsp = DownloadRsp() rsp.size = size rsp.actualSize = actual_size self._set_capacity_to_response(rsp) return jsonobject.dumps(rsp)
def create(self, req): cmd = jsonobject.loads(req[http.REQUEST_BODY]) path = self._normalize_install_path(cmd.installPath) size_M = sizeunit.Byte.toMegaByte(cmd.size) + 1 size = "%dM" % (size_M) _pool = os.path.dirname(path) if not lichbd.lichbd_pool_exist(_pool): lichbd.lichbd_mkpool(_pool) lichbd.lichbd_create_raw(path, size) rsp = AgentResponse() self._set_capacity_to_response(rsp) return jsonobject.dumps(rsp)
def init(self, req): cmd = jsonobject.loads(req[http.REQUEST_BODY]) existing_pools = lichbd.lichbd_lspools() for pool in cmd.pools: if pool.predefined and pool.name not in existing_pools: raise Exception('cannot find pool[%s] in the fusionstor cluster, you must create it manually' % pool.name) elif pool.name not in existing_pools: lichbd.lichbd_mkpool(pool.name) rsp = InitRsp() rsp.fsid = "96a91e6d-892a-41f4-8fd2-4a18c9002425" self._set_capacity_to_response(rsp) return jsonobject.dumps(rsp)
def create(self, req): cmd = jsonobject.loads(req[http.REQUEST_BODY]) path = self._normalize_install_path(cmd.installPath) size_M = sizeunit.Byte.toMegaByte(cmd.size) + 1 size = "%dM" % (size_M) _pool = os.path.dirname(path) if not lichbd.lichbd_file_exist(_pool): lichbd.lichbd_mkpool(_pool) lichbd.lichbd_create_raw(path, size) rsp = AgentResponse() self._set_capacity_to_response(rsp) return jsonobject.dumps(rsp)
def init(self, req): cmd = jsonobject.loads(req[http.REQUEST_BODY]) existing_pools = lichbd.lichbd_lspools() for pool in cmd.pools: if pool.predefined and pool.name not in existing_pools: raise Exception('cannot find pool[%s] in the fusionstor cluster, you must create it manually' % pool.name) elif pool.name not in existing_pools: lichbd.lichbd_mkpool(pool.name) rsp = InitRsp() rsp.fsid = lichbd.lichbd_get_fsid() self._set_capacity_to_response(rsp) return jsonobject.dumps(rsp)
def init(self, req): cmd = jsonobject.loads(req[http.REQUEST_BODY]) fusionstorIsReady = False fusionstorIsReady = lichbd.lichbd_check_cluster_is_ready(cmd.monHostnames, cmd.sshUsernames, cmd.sshPasswords) if fusionstorIsReady is not True: lichbd.lichbd_create_cluster(cmd.monHostnames, cmd.sshPasswords) for monHostname in cmd.monHostnames: lichbd.lichbd_add_disks(monHostname) existing_pools = lichbd.lichbd_lspools() for pool in cmd.pools: if pool.predefined and pool.name not in existing_pools: raise Exception('cannot find pool[%s] in the fusionstor cluster, you must create it manually' % pool.name) elif pool.name not in existing_pools: lichbd.lichbd_mkpool(pool.name) rsp = InitRsp() rsp.fsid = lichbd.lichbd_get_fsid() rsp.userKey = "AQDVyu9VXrozIhAAuT2yMARKBndq9g3W8KUQvw==" self._set_capacity_to_response(rsp) return jsonobject.dumps(rsp)