From 0d443ab2856748cf4ce174b3993baf8eee2a9624 Mon Sep 17 00:00:00 2001 From: Ahmad Bilal Khalid Date: Thu, 25 Jul 2019 14:59:28 +0500 Subject: [PATCH] at exit set running vm status to requested_start --- main.py | 8 ++++++-- ucloud_common/__init__.py | 0 ucloud_common/enums.py | 31 +++++++++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 ucloud_common/__init__.py create mode 100644 ucloud_common/enums.py diff --git a/main.py b/main.py index b7eceac..28d0f23 100644 --- a/main.py +++ b/main.py @@ -21,6 +21,7 @@ from typing import Union from functools import wraps from decouple import config from datetime import datetime +from ucloud_common.enums import VMStatus running_vms = [] vnc_port_pool = list(range(0, 100)) @@ -65,11 +66,14 @@ def goodbye(host): vms = filter(lambda v: v.value["hostname"] == host.key, vms) for vm in vms: vm.value["hostname"] = "" - if vm.value["status"] != "STOPPED": - vm.value["status"] = "REQUESTED_NEW" + + if vm.value["status"] in VMStatus.running_vm_statuses: + vm.value["status"] = VMStatus.requested_start + client.put(vm.key, vm.value, value_in_json=True) logging.info(f"Host {host.key} dead! at {host.value['last_heartbeat']}") + print("Goodbye") os.kill(os.getpid(), signal.SIGKILL) diff --git a/ucloud_common/__init__.py b/ucloud_common/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ucloud_common/enums.py b/ucloud_common/enums.py new file mode 100644 index 0000000..a1c0e17 --- /dev/null +++ b/ucloud_common/enums.py @@ -0,0 +1,31 @@ +from enum import Enum + +class VMStatus(Enum): + # Must be only assigned to brand new VM + requested_new = "REQUESTED_NEW" + + # Only Assigned to already created vm + requested_start = "REQUESTED_START" + + # These all are for running vms + requested_shutdown = "REQUESTED_SHUTDOWN" + requested_suspend = "REQUESTED_SUSPEND" + requested_resume = "REQUESTED_RESUME" + requested_migrate = "REQUESTED_MIGRATE" + + # either its image is not found or user requested + # to delete it + deleted = "DELETED" + + stopped = "STOPPED" # After requested_shutdown + killed = "KILLED" # either host died or vm died itself + + running = "RUNNING" + suspended = "SUSPENDED" + + running_vm_statuses = [requested_shutdown, requested_suspend, + requested_resume, requested_migrate, + running, suspended] +class HostStatus(Enum): + alive = "ALIVE" + dead = "DEAD" \ No newline at end of file