def create_machine(request): """Creates a new virtual machine on the specified backend.""" backend_id = request.matchdict['backend'] try: key_id = request.json_body.get('key') machine_name = request.json_body['name'] location_id = request.json_body.get('location', None) image_id = request.json_body['image'] size_id = request.json_body['size'] #deploy_script received as unicode, but ScriptDeployment wants str script = str(request.json_body.get('script', '')) # these are required only for Linode/GCE, passing them anyway image_extra = request.json_body.get('image_extra', None) disk = request.json_body.get('disk', None) image_name = request.json_body.get('image_name', None) size_name = request.json_body.get('size_name', None) location_name = request.json_body.get('location_name', None) ips = request.json_body.get('ips', None) monitoring = request.json_body.get('monitoring', False) networks = request.json_body.get('networks', []) docker_env = request.json_body.get('docker_env', []) docker_command = request.json_body.get('docker_command', None) script_id = request.json_body.get('script_id', '') script_params = request.json_body.get('script_params', '') async = request.json_body.get('async', False) quantity = request.json_body.get('quantity', 1) persist = request.json_body.get('persist', False) docker_port_bindings = request.json_body.get('docker_port_bindings', {}) docker_exposed_ports = request.json_body.get('docker_exposed_ports', {}) # hostname: if provided it will be attempted to assign a DNS name hostname = request.json_body.get('hostname', '') plugins = request.json_body.get('plugins') except Exception as e: raise RequiredParameterMissingError(e) user = user_from_request(request) import uuid job_id = uuid.uuid4().hex from mist.io import tasks args = (backend_id, key_id, machine_name, location_id, image_id, size_id, script, image_extra, disk, image_name, size_name, location_name, ips, monitoring, networks, docker_env, docker_command) kwargs = {'script_id': script_id, 'script_params': script_params, 'job_id': job_id, 'docker_port_bindings': docker_port_bindings, 'docker_exposed_ports': docker_exposed_ports, 'hostname': hostname, 'plugins': plugins} if not async: ret = methods.create_machine(user, *args, **kwargs) else: args = (user.email, ) + args kwargs.update({'quantity': quantity, 'persist': persist}) tasks.create_machine_async.apply_async(args, kwargs, countdown=2) ret = {'job_id': job_id} return ret
def create_machine(request): """Creates a new virtual machine on the specified backend.""" backend_id = request.matchdict['backend'] try: key_id = request.json_body.get('key') machine_name = request.json_body['name'] location_id = request.json_body.get('location', None) image_id = request.json_body['image'] size_id = request.json_body['size'] #deploy_script received as unicode, but ScriptDeployment wants str script = str(request.json_body.get('script', '')) # these are required only for Linode/GCE, passing them anyway image_extra = request.json_body.get('image_extra', None) disk = request.json_body.get('disk', None) image_name = request.json_body.get('image_name', None) size_name = request.json_body.get('size_name', None) location_name = request.json_body.get('location_name', None) ips = request.json_body.get('ips', None) monitoring = request.json_body.get('monitoring', False) networks = request.json_body.get('networks', []) except Exception as e: raise RequiredParameterMissingError(e) user = user_from_request(request) ret = methods.create_machine(user, backend_id, key_id, machine_name, location_id, image_id, size_id, script, image_extra, disk, image_name, size_name, location_name, ips, monitoring, networks) return ret
def create_machine(request): """Creates a new virtual machine on the specified backend.""" backend_id = request.matchdict['backend'] try: key_id = request.json_body.get('key') machine_name = request.json_body['name'] location_id = request.json_body.get('location', None) image_id = request.json_body['image'] size_id = request.json_body['size'] #deploy_script received as unicode, but ScriptDeployment wants str script = str(request.json_body.get('script', '')) # these are required only for Linode/GCE, passing them anyway image_extra = request.json_body.get('image_extra', None) disk = request.json_body.get('disk', None) image_name = request.json_body.get('image_name', None) size_name = request.json_body.get('size_name', None) location_name = request.json_body.get('location_name', None) except Exception as e: raise RequiredParameterMissingError(e) user = user_from_request(request) ret = methods.create_machine(user, backend_id, key_id, machine_name, location_id, image_id, size_id, script, image_extra, disk, image_name, size_name, location_name) return ret
def create_machine_wrapper(args_kwargs): args, kwargs = args_kwargs error = False try: node = create_machine(*args, **kwargs) except MachineCreationError as exc: error = str(exc) except Exception as exc: error = repr(exc) finally: name = args[3] log_event(email, 'job', 'machine_creation_finished', job_id=job_id, backend_id=backend_id, machine_name=name, error=error)
def create_machine(request): """Creates a new virtual machine on the specified backend.""" backend_id = request.matchdict['backend'] try: key_id = request.json_body.get('key') machine_name = request.json_body['name'] location_id = request.json_body.get('location', None) image_id = request.json_body['image'] size_id = request.json_body['size'] # deploy_script received as unicode, but ScriptDeployment wants str script = str(request.json_body.get('script', '')) # these are required only for Linode/GCE, passing them anyway image_extra = request.json_body.get('image_extra', None) disk = request.json_body.get('disk', None) image_name = request.json_body.get('image_name', None) size_name = request.json_body.get('size_name', None) location_name = request.json_body.get('location_name', None) ips = request.json_body.get('ips', None) monitoring = request.json_body.get('monitoring', False) networks = request.json_body.get('networks', []) docker_env = request.json_body.get('docker_env', []) docker_command = request.json_body.get('docker_command', None) script_id = request.json_body.get('script_id', '') script_params = request.json_body.get('script_params', '') post_script_id = request.json_body.get('post_script_id', '') post_script_params = request.json_body.get('post_script_params', '') async = request.json_body.get('async', False) quantity = request.json_body.get('quantity', 1) persist = request.json_body.get('persist', False) docker_port_bindings = request.json_body.get('docker_port_bindings', {}) docker_exposed_ports = request.json_body.get('docker_exposed_ports', {}) azure_port_bindings = request.json_body.get('azure_port_bindings', '') # hostname: if provided it will be attempted to assign a DNS name hostname = request.json_body.get('hostname', '') plugins = request.json_body.get('plugins') except Exception as e: raise RequiredParameterMissingError(e) user = user_from_request(request) import uuid job_id = uuid.uuid4().hex from mist.io import tasks args = (backend_id, key_id, machine_name, location_id, image_id, size_id, script, image_extra, disk, image_name, size_name, location_name, ips, monitoring, networks, docker_env, docker_command) kwargs = {'script_id': script_id, 'script_params': script_params, 'job_id': job_id, 'docker_port_bindings': docker_port_bindings, 'docker_exposed_ports': docker_exposed_ports, 'azure_port_bindings': azure_port_bindings, 'hostname': hostname, 'plugins': plugins, 'post_script_id': post_script_id, 'post_script_params': post_script_params} if not async: ret = methods.create_machine(user, *args, **kwargs) else: args = (user.email, ) + args kwargs.update({'quantity': quantity, 'persist': persist}) tasks.create_machine_async.apply_async(args, kwargs, countdown=2) ret = {'job_id': job_id} return ret