mirror of
https://github.com/retspen/webvirtcloud
synced 2024-12-26 08:05:22 +00:00
73 lines
2.4 KiB
Python
73 lines
2.4 KiB
Python
|
import time
|
||
|
from vrtManager.connection import wvmConnect
|
||
|
from vrtManager.util import get_xml_path
|
||
|
|
||
|
|
||
|
def cpu_version(ctx):
|
||
|
for info in ctx.xpathEval('/sysinfo/processor/entry'):
|
||
|
elem = info.xpathEval('@name')[0].content
|
||
|
if elem == 'version':
|
||
|
return info.content
|
||
|
return 'Unknown'
|
||
|
|
||
|
|
||
|
class wvmHostDetails(wvmConnect):
|
||
|
def get_memory_usage(self):
|
||
|
"""
|
||
|
Function return memory usage on node.
|
||
|
"""
|
||
|
get_all_mem = self.wvm.getInfo()[1] * 1048576
|
||
|
get_freemem = self.wvm.getMemoryStats(-1, 0)
|
||
|
if type(get_freemem) == dict:
|
||
|
free = (get_freemem.values()[0] +
|
||
|
get_freemem.values()[2] +
|
||
|
get_freemem.values()[3]) * 1024
|
||
|
percent = (100 - ((free * 100) / get_all_mem))
|
||
|
usage = (get_all_mem - free)
|
||
|
mem_usage = {'usage': usage, 'percent': percent}
|
||
|
else:
|
||
|
mem_usage = {'usage': None, 'percent': None}
|
||
|
return mem_usage
|
||
|
|
||
|
def get_cpu_usage(self):
|
||
|
"""
|
||
|
Function return cpu usage on node.
|
||
|
"""
|
||
|
prev_idle = 0
|
||
|
prev_total = 0
|
||
|
cpu = self.wvm.getCPUStats(-1, 0)
|
||
|
if type(cpu) == dict:
|
||
|
for num in range(2):
|
||
|
idle = self.wvm.getCPUStats(-1, 0).values()[1]
|
||
|
total = sum(self.wvm.getCPUStats(-1, 0).values())
|
||
|
diff_idle = idle - prev_idle
|
||
|
diff_total = total - prev_total
|
||
|
diff_usage = (1000 * (diff_total - diff_idle) / diff_total + 5) / 10
|
||
|
prev_total = total
|
||
|
prev_idle = idle
|
||
|
if num == 0:
|
||
|
time.sleep(1)
|
||
|
else:
|
||
|
if diff_usage < 0:
|
||
|
diff_usage = 0
|
||
|
else:
|
||
|
return {'usage': None}
|
||
|
return {'usage': diff_usage}
|
||
|
|
||
|
def get_node_info(self):
|
||
|
"""
|
||
|
Function return host server information: hostname, cpu, memory, ...
|
||
|
"""
|
||
|
info = []
|
||
|
info.append(self.wvm.getHostname())
|
||
|
info.append(self.wvm.getInfo()[0])
|
||
|
info.append(self.wvm.getInfo()[1] * 1048576)
|
||
|
info.append(self.wvm.getInfo()[2])
|
||
|
info.append(get_xml_path(self.wvm.getSysinfo(0), func=cpu_version))
|
||
|
info.append(self.wvm.getURI())
|
||
|
return info
|
||
|
|
||
|
def hypervisor_type(self):
|
||
|
"""Return hypervisor type"""
|
||
|
return get_xml_path(self.get_cap_xml(), "/capabilities/guest/arch/domain/@type")
|