diff --git a/.changelogs/1.1.1/200_requery_zero_guest_cpu_used.yml b/.changelogs/1.1.1/200_requery_zero_guest_cpu_used.yml new file mode 100644 index 0000000..774d64b --- /dev/null +++ b/.changelogs/1.1.1/200_requery_zero_guest_cpu_used.yml @@ -0,0 +1,2 @@ +fixed: + - Requery a guest if that running guest reports 0 cpu usage (by @glitchvern) [#200] \ No newline at end of file diff --git a/proxlb/models/guests.py b/proxlb/models/guests.py index 25ca839..2e143b3 100644 --- a/proxlb/models/guests.py +++ b/proxlb/models/guests.py @@ -11,6 +11,7 @@ __license__ = "GPL-3.0" from typing import Dict, Any from utils.logger import SystemdLogger from models.tags import Tags +import time logger = SystemdLogger() @@ -61,6 +62,13 @@ class Guests: # resource metrics for rebalancing to ensure that we do not overprovisiong the node. for guest in proxmox_api.nodes(node).qemu.get(): if guest['status'] == 'running': + retry_counter = 1 + while guest['cpu'] == 0 and retry_counter < 10: + guest = proxmox_api.nodes(node).qemu(guest['vmid']).status.current.get() + logger.debug(f"guest {guest['name']} is reporting { +guest['cpu']} cpu usage on retry {retry_counter}.") + time.sleep(1) + retry_counter += 1 guests['guests'][guest['name']] = {} guests['guests'][guest['name']]['name'] = guest['name'] guests['guests'][guest['name']]['cpu_total'] = guest['cpus']