def add(request, net, args): # Normal Response Code: 202 # Error Response Codes: computeFault (400, 500), # serviceUnavailable (503), # unauthorized (401), # badRequest (400), # buildInProgress (409), # badMediaType(415), # itemNotFound (404), # overLimit (413) if net.state != 'ACTIVE': raise faults.BuildInProgress('Network not active yet') server_id = args.get('serverRef', None) if not server_id: raise faults.BadRequest('Malformed Request.') vm = get_vm(server_id, request.user_uniq, non_suspended=True) address = None if net.dhcp: # Get a free IP from the address pool. try: address = get_network_free_address(net) except EmptyPool: raise faults.OverLimit('Network is full') log.info("Connecting VM %s to Network %s(%s)", vm, net, address) backend.connect_to_network(vm, net, address) return HttpResponse(status=202)
def connect(vm, network, port=None): if port is None: port = _create_port(vm.userid, network) associate_port_with_machine(port, vm) log.info("Creating NIC %s with IPv4 Address %s", port, port.ipv4_address) return backend.connect_to_network(vm, port)
def connect_port(vm, network, port): with commands.ServerCommand("CONNECT", vm): associate_port_with_machine(port, vm) log.info("Creating NIC %s with IPv4 Address %s", port, port.ipv4_address) job_id = backend.connect_to_network(vm, port) vm.record_job(job_id) return vm
def import_server(instance_name, backend_id, flavor_id, image_id, user_id, new_public_nic, stream=sys.stdout): flavor = common.get_flavor(flavor_id) backend = common.get_backend(backend_id) backend_client = backend.get_client() try: instance = backend_client.GetInstance(instance_name) except GanetiApiError as e: if e.code == 404: raise CommandError("Instance %s does not exist in backend %s" % (instance_name, backend)) else: raise CommandError("Unexpected error" + str(e)) if not new_public_nic: check_instance_nics(instance) shutdown_instance(instance, backend_client, stream=stream) # Create the VM in DB stream.write("Creating VM entry in DB\n") vm = VirtualMachine.objects.create(name=instance_name, backend=backend, userid=user_id, imageid=image_id, flavor=flavor) quotas.issue_and_accept_commission(vm) if new_public_nic: remove_instance_nics(instance, backend_client, stream=stream) # Rename instance rename_instance(instance_name, vm.backend_vm_id, backend_client, stream) if new_public_nic: ports = servers.create_instance_ports(user_id) stream.write("Adding new NICs to server") [servers.associate_port_with_machine(port, vm) for port in ports] [connect_to_network(vm, port) for port in ports] # Startup instance startup_instance(vm.backend_vm_id, backend_client, stream=stream) backend.put_client(backend_client) return