示例#1
0
    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
示例#2
0
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}
示例#3
0
    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"] = []