| 12 | |
| 13 | |
| 14 | class wvmHostDetails(wvmConnect): |
| 15 | def get_memory_usage(self): |
| 16 | """ |
| 17 | Function return memory usage on node. |
| 18 | """ |
| 19 | get_all_mem = self.wvm.getInfo()[1] * 1048576 |
| 20 | get_freemem = self.wvm.getMemoryStats(-1, 0) |
| 21 | if type(get_freemem) == dict: |
| 22 | free = (get_freemem.values()[0] + |
| 23 | get_freemem.values()[2] + |
| 24 | get_freemem.values()[3]) * 1024 |
| 25 | percent = (100 - ((free * 100) / get_all_mem)) |
| 26 | usage = (get_all_mem - free) |
| 27 | mem_usage = {'usage': usage, 'percent': percent} |
| 28 | else: |
| 29 | mem_usage = {'usage': None, 'percent': None} |
| 30 | return mem_usage |
| 31 | |
| 32 | def get_cpu_usage(self): |
| 33 | """ |
| 34 | Function return cpu usage on node. |
| 35 | """ |
| 36 | prev_idle = 0 |
| 37 | prev_total = 0 |
| 38 | cpu = self.wvm.getCPUStats(-1, 0) |
| 39 | if type(cpu) == dict: |
| 40 | for num in range(2): |
| 41 | idle = self.wvm.getCPUStats(-1, 0).values()[1] |
| 42 | total = sum(self.wvm.getCPUStats(-1, 0).values()) |
| 43 | diff_idle = idle - prev_idle |
| 44 | diff_total = total - prev_total |
| 45 | diff_usage = (1000 * (diff_total - diff_idle) / diff_total + 5) / 10 |
| 46 | prev_total = total |
| 47 | prev_idle = idle |
| 48 | if num == 0: |
| 49 | time.sleep(1) |
| 50 | else: |
| 51 | if diff_usage < 0: |
| 52 | diff_usage = 0 |
| 53 | else: |
| 54 | return {'usage': None} |
| 55 | return {'usage': diff_usage} |
| 56 | |
| 57 | def get_node_info(self): |
| 58 | """ |
| 59 | Function return host server information: hostname, cpu, memory, ... |
| 60 | """ |
| 61 | info = [] |
| 62 | info.append(self.wvm.getHostname()) |
| 63 | info.append(self.wvm.getInfo()[0]) |
| 64 | info.append(self.wvm.getInfo()[1] * 1048576) |
| 65 | info.append(self.wvm.getInfo()[2]) |
| 66 | info.append(get_xml_path(self.wvm.getSysinfo(0), func=cpu_version)) |
| 67 | info.append(self.wvm.getURI()) |
| 68 | return info |
| 69 | |
| 70 | def hypervisor_type(self): |
| 71 | """Return hypervisor type""" |
no outgoing calls
no test coverage detected