def get_unique_data(self): """ 当 type 是 hostname, 重新生成 data. data 中每个元素是个 dict, 每个 dict 有一个字段: hostname. 本函数输出新的 data, 每个 dict 加入 hostname 所在的 vmh 和 vmname. """ unique_data = list() if self.type == "hostname": for d in self.unique_data: hostname = d["hostname"] data = utils.get_vmname_from_hostname(hostname) data["sn"] = asset_utils.get_sn_from_hostname(hostname) data["rpc_client"] = utils.get_rpc_client(data["vmh"]) unique_data.append(data) else: for d in self.unique_data: data = copy.deepcopy(d) data["rpc_client"] = utils.get_rpc_client(data["vmh"]) unique_data.append(data) self.unique_data = unique_data
def get_vmname_from_hostname(hostname): """ 根据 hostname 拿到 vmh 和 vmname. """ sn = asset_utils.get_sn_from_hostname(hostname) vmh, vmname = asset_utils.get_vmh_vmname_from_sn(sn) return {"hostname": hostname, "vmh": vmh, "vmname": vmname}
def get(self): """ 查看资源状况. """ area = self.get_argument("area", None) idc = self.get_argument("idc", None) sort = self.get_argument("sort", 1) show_ignores = self.get_argument("show_ignores", 0) show_vms = self.get_argument("show_vms", 0) vmhs = utils.get_vmhs(area, idc) return_list = list() for vmh in vmhs: _dict = { "vmh": vmh, "data": { "vcpu": utils.get_info(vmh, "vcpu"), "mem": utils.get_info(vmh, "mem"), "space": utils.get_info(vmh, "space"), "vmlist": utils.get_info(vmh, "vmlist"), "type": utils.get_info(vmh, "type"), } } return_list.append(_dict) if show_ignores != 0 and show_ignores != "0": ignore_vmhs = utils.get_ignore_vmhs() for i in xrange(len(return_list)): if return_list[i]["vmh"] in ignore_vmhs: return_list[i]["ignored"] = True else: return_list[i]["ignored"] = False if show_vms != 0 and show_vms != "0": for i in xrange(len(return_list)): if return_list[i]["data"]["vmlist"] == []: return_list[i]["vms"] = [] else: sn = asset_utils.get_sn_from_hostname( return_list[i]["vmh"]) try: return_list[i]["vms"] = [ x["hostname"] for x in asset_utils.query_from_sn(sn)["vms"] ] except Exception, e: return_list[i]["vms"] = []