openstack team mailing list archive
-
openstack team
-
Mailing list archive
-
Message #15256
[Quantum][Nova] requested_id and port spec
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-dev@xxxxxxxxxxxxxxxxxx
>
>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.com@xxxxxxxxxxxxxxxxxxx wrote: -----
>> To: openstack@xxxxxxxxxxxxxxxxxxx, netstack@xxxxxxxxxxxxxxxxxxx
>> From: Nachi Ueno
>> Sent by: netstack-bounces+gongysh=cn.ibm.com@xxxxxxxxxxxxxxxxxxx
>> 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 : netstack@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~netstack
>> More help : https://help.launchpad.net/ListHelp
>>
>--
>Nachi Ueno
>email:nati.ueno@xxxxxxxxx
>twitter:http://twitter.com/nati
Follow ups