diff --git a/lib/cmdlib.py b/lib/cmdlib.py index 1df5ea512045350d007343be15ec943022493206..18bc22cc7d4bc0d74a536608db6a8741ec1fe7b6 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -4849,9 +4849,12 @@ class IAllocator(object): "version": 1, "cluster_name": self.sstore.GetClusterName(), "cluster_tags": list(cfg.GetClusterInfo().GetTags()), + "hypervisor_type": self.sstore.GetHypervisorType(), # we don't have job IDs } + i_list = [cfg.GetInstanceInfo(iname) for iname in cfg.GetInstanceList()] + # node data node_results = {} node_list = cfg.GetNodeList() @@ -4871,12 +4874,22 @@ class IAllocator(object): except ValueError, err: raise errors.OpExecError("Node '%s' returned invalid value for '%s':" " %s" % (nname, attr, str(err))) + # compute memory used by primary instances + i_p_mem = i_p_up_mem = 0 + for iinfo in i_list: + if iinfo.primary_node == nname: + i_p_mem += iinfo.memory + if iinfo.status == "up": + i_p_up_mem += iinfo.memory + # compute memory used by instances pnr = { "tags": list(ninfo.GetTags()), "total_memory": remote_info['memory_total'], "reserved_memory": remote_info['memory_dom0'], "free_memory": remote_info['memory_free'], + "i_pri_memory": i_p_mem, + "i_pri_up_memory": i_p_up_mem, "total_disk": remote_info['vg_size'], "free_disk": remote_info['vg_free'], "primary_ip": ninfo.primary_ip, @@ -4887,9 +4900,7 @@ class IAllocator(object): # instance data instance_data = {} - i_list = cfg.GetInstanceList() - for iname in i_list: - iinfo = cfg.GetInstanceInfo(iname) + for iinfo in i_list: nic_data = [{"mac": n.mac, "ip": n.ip, "bridge": n.bridge} for n in iinfo.nics] pir = {