Hi Dan >> > 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. > > > Hi Nachi, why is it that we can't implement this as an API extension (even > if passing in a network-id is in fact part of the core API)?
I can write extension implemented in core API code. My understanding of definition of extension was "the code is in extension directory". However , the implementation for extensions are also in outside of extension directory as you mentioned in bug report. # I could see no clear policy for this. IMO, the key concept of extension is let users to select the function to use. ( User can turn off the extension. ) So if we enable port_id when we use quantumV2 only, the concept will be satisfied. Nachi > dan > > >> >> 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 > > > > > -- > ~~~~~~~~~~~~~~~~~~~~~~~~~~~ > Dan Wendlandt > Nicira, Inc: www.nicira.com > twitter: danwendlandt > ~~~~~~~~~~~~~~~~~~~~~~~~~~~ > -- 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