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() -