at exit set running vm status to requested_start

This commit is contained in:
ahmadbilalkhalid 2019-07-25 14:59:28 +05:00
parent cbcbbdd9d7
commit 0d443ab285
3 changed files with 37 additions and 2 deletions

View file

@ -21,6 +21,7 @@ from typing import Union
from functools import wraps from functools import wraps
from decouple import config from decouple import config
from datetime import datetime from datetime import datetime
from ucloud_common.enums import VMStatus
running_vms = [] running_vms = []
vnc_port_pool = list(range(0, 100)) vnc_port_pool = list(range(0, 100))
@ -65,11 +66,14 @@ def goodbye(host):
vms = filter(lambda v: v.value["hostname"] == host.key, vms) vms = filter(lambda v: v.value["hostname"] == host.key, vms)
for vm in vms: for vm in vms:
vm.value["hostname"] = "" 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) client.put(vm.key, vm.value, value_in_json=True)
logging.info(f"Host {host.key} dead! at {host.value['last_heartbeat']}") logging.info(f"Host {host.key} dead! at {host.value['last_heartbeat']}")
print("Goodbye")
os.kill(os.getpid(), signal.SIGKILL) os.kill(os.getpid(), signal.SIGKILL)

View file

31
ucloud_common/enums.py Normal file
View file

@ -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"