From e17188746686b1451b56cb5d431cc9fbf953cfa6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BE=D0=BB=D0=B3=D0=B8=D0=B9=20=D0=90=D1=80=D1=82?= =?UTF-8?q?=D1=91=D0=BC?= Date: Sat, 11 Mar 2023 22:32:11 +0300 Subject: [PATCH] add check vm --- deploy_aldpro_vm.py | 20 ++++++++++++++++++++ deploy_template_subprocess.py | 9 +++++++++ 2 files changed, 29 insertions(+) diff --git a/deploy_aldpro_vm.py b/deploy_aldpro_vm.py index 703011b..19495c1 100755 --- a/deploy_aldpro_vm.py +++ b/deploy_aldpro_vm.py @@ -10,6 +10,20 @@ with open('vars.yaml') as data: vars_dict = yaml.safe_load(data) +def check_vm(id): + """ + Проверка существования ВМ. + + :param id: (int), идентификатор ВМ. + :return: None + """ + proc = subprocess.run(f'qm status {id}'.split(), capture_output=True, text=True) + if proc.stderr: + print(f'Вероятно ВМ с идентификатором - {id} существует') + print(proc.stderr) + exit(1) + + def shell_run(cmd): """ Выполнение shell команды. @@ -65,6 +79,12 @@ def create_vms(commands_dict): if __name__ == "__main__": + ids = [vars_dict['template']['id']] + for id in vars_dict['vms']['id']: + ids.append(id) + for id in ids: + check_vm(id) + cmds = gen_vm_commands(vars_dict) create_vms(cmds) # pprint(cmds) diff --git a/deploy_template_subprocess.py b/deploy_template_subprocess.py index f308412..8fc8944 100755 --- a/deploy_template_subprocess.py +++ b/deploy_template_subprocess.py @@ -85,6 +85,14 @@ def deploy_template(list_commands): print('Шаблон создан.') +def check_vm(id): + proc = subprocess.run(f'qm status {id}'.split(), capture_output=True, text=True) + if proc.stderr: + print(f'Вероятно ВМ с идентификатором - {id} существует') + print(proc.stderr) + exit(1) + + if __name__ == "__main__": # в зависимости от типа и нахождения хранилища # путь к создаваемому в процессе импорта диску указывается по-разному @@ -100,6 +108,7 @@ if __name__ == "__main__": f'qm set {tmpl_id} --ciuser={tmpl_user} --cipassword={tmpl_passwd}', f'qm template {tmpl_id}'] + check_vm(tmpl_id) download_img(img_name, img_url) deploy_template(commands) del_img(img_name)