1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2024-12-27 08:35:22 +00:00
webvirtcloud/vrtManager/hostdetails.py

70 lines
2.3 KiB
Python
Raw Normal View History

2015-02-27 08:53:51 +00:00
import time
2015-02-27 08:53:51 +00:00
from vrtManager.connection import wvmConnect
from vrtManager.util import get_xml_path
def cpu_version(doc):
for info in doc.xpath("/sysinfo/processor/entry"):
elem = info.xpath("@name")[0]
if elem == "version":
2018-06-29 12:09:01 +00:00
return info.text
return "Unknown"
2015-02-27 08:53:51 +00:00
class wvmHostDetails(wvmConnect):
def get_memory_usage(self):
"""
Function return memory usage on node.
"""
all_mem = self.wvm.getInfo()[1] * 1048576
freemem = self.wvm.getMemoryStats(-1, 0)
2020-04-26 13:14:34 +00:00
if isinstance(freemem, dict):
free = (freemem["buffers"] + freemem["free"] + freemem["cached"]) * 1024
percent = abs(100 - free * 100 // all_mem)
usage = all_mem - free
return {"total": all_mem, "usage": usage, "percent": percent}
2015-02-27 08:53:51 +00:00
else:
return {"total": None, "usage": None, "percent": None}
2015-02-27 08:53:51 +00:00
def get_cpu_usage(self, diff=True):
2015-02-27 08:53:51 +00:00
"""
Function return cpu usage on node.
"""
prev_idle = 0
prev_total = 0
cpu = self.wvm.getCPUStats(-1, 0)
if not isinstance(cpu, dict):
return {"usage": None}
for num in range(2):
idle = self.wvm.getCPUStats(-1, 0)["idle"]
total = sum(self.wvm.getCPUStats(-1, 0).values())
diff_idle = idle - prev_idle
diff_total = total - prev_total
2022-11-02 05:54:35 +00:00
diff_usage = (1000 * (diff_total - diff_idle) / diff_total + 5) / 10
if not diff:
return {"usage": diff_usage}
prev_total = total
prev_idle = idle
if num == 0:
time.sleep(1)
else:
diff_usage = max(diff_usage, 0)
return {"usage": diff_usage}
2015-02-27 08:53:51 +00:00
def get_node_info(self):
"""
Function return host server information: hostname, cpu, memory, ...
"""
info = [self.wvm.getHostname()] # hostname
2019-09-10 06:48:31 +00:00
info.append(self.wvm.getInfo()[0]) # architecture
info.append(self.wvm.getInfo()[1] * 1048576) # memory
info.append(self.wvm.getInfo()[2]) # cpu core count
2022-11-02 05:54:35 +00:00
info.append(
get_xml_path(self.wvm.getSysinfo(0), func=cpu_version)
) # cpu version
2019-09-10 06:48:31 +00:00
info.append(self.wvm.getURI()) # uri
2015-02-27 08:53:51 +00:00
return info