From 19a75ea92e4eb01f884a126cc027eb3db16416cb Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Mon, 9 Dec 2019 10:33:44 -0500 Subject: [PATCH] Verify if VM name exists before starting --- client-provisioner/provisioner_lib/provisioner.py | 9 +++++++++ client-provisioner/pvc-provisioner.py | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/client-provisioner/provisioner_lib/provisioner.py b/client-provisioner/provisioner_lib/provisioner.py index 2345cf16..93f286c8 100755 --- a/client-provisioner/provisioner_lib/provisioner.py +++ b/client-provisioner/provisioner_lib/provisioner.py @@ -660,6 +660,11 @@ def run_os_command(command_string, background=False, environment=None, timeout=N stderr = '' return retcode, stdout, stderr +# +# Cloned VM provisioning function - executed by the Celery worker +# +def clone_vm(self, vm_name, vm_profile): + pass # # Main VM provisioning function - executed by the Celery worker @@ -753,6 +758,10 @@ def create_vm(self, vm_name, vm_profile): self.update_state(state='RUNNING', meta={'current': 2, 'total': 10, 'status': 'Verifying configuration against cluster'}) time.sleep(1) + # Verify that a VM with this name does not already exist + if pvc_vm.searchClusterByName(zk_conn, vm_name): + raise ClusterError("A VM with the name '{}' already exists in the cluster".format(vm_name)) + # Verify that at least one host has enough free RAM to run the VM _discard, nodes = pvc_node.get_list(zk_conn, None) target_node = None diff --git a/client-provisioner/pvc-provisioner.py b/client-provisioner/pvc-provisioner.py index 7578a5c9..74b59dae 100755 --- a/client-provisioner/pvc-provisioner.py +++ b/client-provisioner/pvc-provisioner.py @@ -1073,6 +1073,7 @@ def api_status_root(task_id): # Entrypoint # if __name__ == '__main__': + # Start main API if config['debug']: # Run in Flask standard mode api.run(config['listen_address'], config['listen_port']) @@ -1095,4 +1096,3 @@ if __name__ == '__main__': print('Starting PyWSGI server at {}:{} with SSL={}, Authentication={}'.format(config['listen_address'], config['listen_port'], config['ssl_enabled'], config['auth_enabled'])) http_server.serve_forever() -