check whether vm image exists before running it
This commit is contained in:
parent
aaa733d16f
commit
a0a30f46ae
1 changed files with 21 additions and 6 deletions
27
main.py
27
main.py
|
@ -33,6 +33,20 @@ class VM:
|
|||
vm: qmp.QEMUMachine
|
||||
|
||||
|
||||
class RBD(object):
|
||||
@staticmethod
|
||||
def ls(pool):
|
||||
output = ""
|
||||
try:
|
||||
output = subprocess.check_output(
|
||||
["rbd", "ls", pool], stderr=subprocess.PIPE
|
||||
).decode("utf-8").strip()
|
||||
except subprocess.CalledProcessError as e:
|
||||
raise Exception(e.stderr)
|
||||
return output.split("\n")
|
||||
|
||||
|
||||
|
||||
logging.basicConfig(
|
||||
level=logging.DEBUG,
|
||||
filename="log.txt",
|
||||
|
@ -99,12 +113,13 @@ def start_vm(vm_path, e):
|
|||
# uservms pool then checkwhether the e.key.split("/").pop()
|
||||
# exists in rbd_ls(uservms_pool)
|
||||
|
||||
# if not os.path.isfile(vm_path):
|
||||
# logging.info(f"Image file of vm {e.key} does not exists")
|
||||
# logging.info(f"Setting vm {e.key} status to DELETED")
|
||||
# e.value["status"] = "DELETED"
|
||||
# client.put(e.key, json.dumps(e.value))
|
||||
# return
|
||||
if not vm_path.split("/")[-1] in RBD.ls("uservms")
|
||||
logging.info(f"Image file of vm {e.key} does not exists")
|
||||
logging.info(f"Setting vm {e.key} status to DELETED")
|
||||
e.value["status"] = "DELETED"
|
||||
client.put(e.key, json.dumps(e.value))
|
||||
return
|
||||
|
||||
|
||||
_vm = get_vm(running_vms, e.key)
|
||||
if _vm:
|
||||
|
|
Loading…
Reference in a new issue