def _stub_out_quantum_port_and_iface_create_calls(self): self.mox.StubOutWithMock(quantum, 'create_port') self.mox.StubOutWithMock(quantum, 'plug_iface') quantum.create_port(IgnoreArg(), IgnoreArg()).\ MultipleTimes().AndReturn("port_id") quantum.plug_iface(IgnoreArg(), IgnoreArg(), IgnoreArg(), IgnoreArg()).MultipleTimes()
def allocate_for_instance(self, context, **kwargs): """Handles allocating the various network resources for an instance. rpc.called by network_api """ instance_id = kwargs.pop('instance_id') host = kwargs.pop('host') project_id = kwargs.pop('project_id') type_id = kwargs.pop('instance_type_id') vpn = kwargs.pop('vpn') admin_context = context.elevated() LOG.debug(_("network allocations for instance %s"), instance_id, context=context) networks = self._get_networks_for_instance(admin_context, instance_id, project_id) # Create a port via quantum and attach the vif tenant_id = project_id for n in networks: vif_id = "nova-" + str(instance_id) + "-" + str(n['id']) quantum_net_id = n['bridge'] LOG.debug("Using quantum_net_id: %s" % quantum_net_id) port_id = quantum.create_port(tenant_id, quantum_net_id) quantum.plug_iface(tenant_id, quantum_net_id, port_id, vif_id) # TODO: also communicate "interface-binding" and "tenant-id" # to Quantum LOG.warn(networks) self._allocate_mac_addresses(context, instance_id, networks) ips = self._allocate_fixed_ips(admin_context, instance_id, host, networks, vpn=vpn) vifs = self.db.virtual_interface_get_by_instance(context, instance_id) return self._construct_instance_nw_info(context, instance_id, type_id, host, ips, vifs)