Small Changes, Unused import removed, Use ucloud_common.states instead of hard coded strings
This commit is contained in:
parent
0ecb2d9cb8
commit
0c1e9328e8
1 changed files with 10 additions and 12 deletions
22
main.py
22
main.py
|
@ -4,7 +4,6 @@
|
||||||
# 2. v3) Introduce a status endpoint of the scheduler -
|
# 2. v3) Introduce a status endpoint of the scheduler -
|
||||||
# maybe expose a prometheus compatible output
|
# maybe expose a prometheus compatible output
|
||||||
|
|
||||||
import json
|
|
||||||
import argparse
|
import argparse
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
@ -13,9 +12,8 @@ from collections import Counter
|
||||||
from functools import reduce
|
from functools import reduce
|
||||||
from etcd3_wrapper import Etcd3Wrapper
|
from etcd3_wrapper import Etcd3Wrapper
|
||||||
|
|
||||||
from ucloud_common.enums import HostStatus
|
from ucloud_common.vm import VmPool, VMEntry, VMStatus
|
||||||
from ucloud_common.vm import VmPool, VMEntry
|
from ucloud_common.host import HostPool, HostStatus
|
||||||
from ucloud_common.host import HostPool
|
|
||||||
|
|
||||||
logging.basicConfig(
|
logging.basicConfig(
|
||||||
level=logging.DEBUG,
|
level=logging.DEBUG,
|
||||||
|
@ -45,14 +43,14 @@ def remaining_resources(host_specs, vms_specs):
|
||||||
|
|
||||||
|
|
||||||
def get_suitable_host(vm_specs):
|
def get_suitable_host(vm_specs):
|
||||||
hosts = HOST_POOL.by_status("ALIVE")
|
hosts = HOST_POOL.by_status(HostStatus.alive)
|
||||||
|
|
||||||
for host in hosts:
|
for host in hosts:
|
||||||
# Filter them by host_name
|
# Filter them by host_name
|
||||||
vms = VM_POOL.by_host(host.key)
|
vms = VM_POOL.by_host(host.key)
|
||||||
|
|
||||||
# Filter them by status
|
# Filter them by status
|
||||||
vms = VM_POOL.except_status("REQUESTED_NEW", vms=vms)
|
vms = VM_POOL.except_status(VMStatus.requested_new, vms)
|
||||||
|
|
||||||
running_vms_specs = [vm.specs for vm in vms]
|
running_vms_specs = [vm.specs for vm in vms]
|
||||||
# Accumulate all of their combined specs
|
# Accumulate all of their combined specs
|
||||||
|
@ -109,11 +107,11 @@ def dead_host_mitigation(dead_hosts_keys):
|
||||||
def assign_host(vm):
|
def assign_host(vm):
|
||||||
host_name = get_suitable_host(vm.specs)
|
host_name = get_suitable_host(vm.specs)
|
||||||
if host_name:
|
if host_name:
|
||||||
if vm.status == "REQUESTED_NEW":
|
if vm.status == VMStatus.requested_new:
|
||||||
vm.status = "SCHEDULED_DEPLOY"
|
vm.status = VMStatus.scheduled_deploy
|
||||||
|
|
||||||
if vm.status == "KILLED":
|
if vm.status == VMStatus.killed:
|
||||||
vm.status = "REQUESTED_START"
|
vm.status = VMStatus.requested_start
|
||||||
|
|
||||||
vm.hostname = host_name
|
vm.hostname = host_name
|
||||||
VM_POOL.put(vm)
|
VM_POOL.put(vm)
|
||||||
|
@ -134,7 +132,7 @@ def main(vm_prefix, host_prefix):
|
||||||
PENDING_VMS = []
|
PENDING_VMS = []
|
||||||
for events_iterator in [
|
for events_iterator in [
|
||||||
client.get_prefix(vm_prefix, value_in_json=True),
|
client.get_prefix(vm_prefix, value_in_json=True),
|
||||||
client.watch_prefix(vm_prefix, timeout=10, value_in_json=True),
|
client.watch_prefix(vm_prefix, timeout=5, value_in_json=True),
|
||||||
]:
|
]:
|
||||||
for e in events_iterator:
|
for e in events_iterator:
|
||||||
e = VMEntry(e)
|
e = VMEntry(e)
|
||||||
|
@ -157,7 +155,7 @@ def main(vm_prefix, host_prefix):
|
||||||
for vm in vm_scheduled:
|
for vm in vm_scheduled:
|
||||||
PENDING_VMS.remove(vm)
|
PENDING_VMS.remove(vm)
|
||||||
logging.debug(f"Remaining Pending: {PENDING_VMS}")
|
logging.debug(f"Remaining Pending: {PENDING_VMS}")
|
||||||
elif e.status in ["REQUESTED_NEW", "KILLED"]:
|
elif e.status in [VMStatus.requested_new, VMStatus.killed]:
|
||||||
if assign_host(e) is None:
|
if assign_host(e) is None:
|
||||||
PENDING_VMS.append(e)
|
PENDING_VMS.append(e)
|
||||||
logging.info("No Resource Left. Emailing admin....")
|
logging.info("No Resource Left. Emailing admin....")
|
||||||
|
|
Loading…
Reference in a new issue