Hi Matt, Yong, Dan and folks > Matt Thank you for your comment in launchpad https://bugs.launchpad.net/nova/+bug/1031096
Quantum team get consensus in a Netstack meeting today to propose port-id for requested networks. I took the job. At first, i thought i can write extension for this. But as you say we should add port-id for the core API which is only used for quantum API 2.0. My WIP code is like [1]. This change keep backward compatibility. > Yong, Dan Matt said "you'd be breaking API compatibility and thus the API spec." This work will change API, so some consensus in community is needed to add port_id. I wanna discuss about the spec in this thread. If the community rejects this addition, I'll implement fixed_ip one ( see previous my message ) [1] WIP code for adding port_id ( Not tested) + def _get_port(self, port_id): + if FLAGS.network_api_class != + "nova.network.quantumv2.api.API": + msg = _("Unknown argment : port_id") + raise exc.HTTPBadRequest(explanation=msg) + + if port_id and not utils.is_uuid_like(port_id): + msg = _("Bad port format: port uuid is " + "not in proper format " + "(%s)") % port_id + raise exc.HTTPBadRequest(explanation=msg) + try: + port = quantumv2.get_client(context).list_networks(**search_opts) + if port.device_id: + raise Exception("Port id %s is already used" % port_id) + return port + except Exception as e: + msg = _("This port_id can't used " + "(%s)") % port_id + raise exc.HTTPBadRequest(explanation=msg) + def _get_requested_networks(self, requested_networks): """Create a list of requested networks from the networks attribute.""" networks = [] for network in requested_networks: try: + port_id = network.get('port_id', None) + if port_id: + port = self._get_port() + network['uuid'] = port.network_id + network['fixed_ip'] = port.fixed_ip + Thank you in advance Nachi Ueno >> Hi Nachi, >> It is seemingly a way to make it work, but I think we are thinking to >> provide 'port-id' or just 'port' to specify the top resource in quantum API. >> fix ip is not one. >> >> Besides, Port can be assigned to more than one fixed IP. > >Ah, It it true. >OK I'll implement port id version. > >> Imagine in horizon, we created many networks, ports and subnets, but when >> booting a VM, we use a fixed_ip to specify our resource indirectly. > >> By the way, we should use openstack-...@list.openstack.org > >Sorry, I changed my mail address recently. But launchpad rejects new >mail to receive. >I'll find way to fix this. > >Thanks > > >Nachi > >> Thanks >> Yong Sheng Gong >> >> -----netstack-bounces+gongysh=cn.ibm....@lists.launchpad.net wrote: ----- >> To: openst...@lists.openstack.org, netst...@lists.launchpad.net >> From: Nachi Ueno >> Sent by: netstack-bounces+gongysh=cn.ibm....@lists.launchpad.net >> Date: 07/31/2012 08:33AM >> Subject: [Netstack] [Quantum][Nova] requested_id and port spec >> >> Hi Dan,folks >> >> As we talked in netstack IRC meetins, I submit this as bug. >> https://bugs.launchpad.net/nova/+bug/1031096 >> >> I tried to write this, but the code looks very ugly in order to keep >> backward compatibility. >> So I wanna propose an alternative design. >> In this design, we will use fixed_ip as a temporary identifier of the port. >> >> 1. create port >> fixed_ip assigned >> >> 2. specify the fixed_ip in nova boot >> >> 3. If the fixed_ip is specified, >> nova.network.quantumv2.api.API will check existing port who use the >> fixed_ip. >> >> if there are existing port and device_id is None >> use the port_id. >> >> if there are no existing port. >> create new port with the fixed_ip >> >> This approach needs no client side change. >> >> Thank you in advance >> Nachi Ueno >> >> -- >> Mailing list: https://launchpad.net/~netstack >> Post to : netst...@lists.launchpad.net >> Unsubscribe : https://launchpad.net/~netstack >> More help : https://help.launchpad.net/ListHelp >> >-- >Nachi Ueno >email:nati.u...@gmail.com >twitter:http://twitter.com/nati _______________________________________________ Mailing list: https://launchpad.net/~openstack Post to : openstack@lists.launchpad.net Unsubscribe : https://launchpad.net/~openstack More help : https://help.launchpad.net/ListHelp