[openstack-dev] [nova][osc] How to deal with add/remove fixed/floating CLIs after novaclient 10.0.0?

Matt Riedemann mriedemos at gmail.com
Tue Jan 30 15:15:11 UTC 2018


The 10.0.0 release of python-novaclient dropped some deprecated CLIs and 
python API bindings for the server actions to add/remove fixed and 
floating IPs:

https://docs.openstack.org/releasenotes/python-novaclient/queens.html#id2

python-openstackclient was using some of those python API bindings from 
novaclient which now no longer work:

https://bugs.launchpad.net/python-openstackclient/+bug/1745795

I've at least identified where the broken code is:

https://review.openstack.org/#/c/538539/

The question I'm struggling with is how to resolve this in OSC. We can't 
just remove the CLIs without a deprecation period. I thought about doing 
something similar to the proxy orchestration that the compute API does 
for these actions, but that gets a bit complicated in OSC if we are 
going to make the CLI support both nova-network and neutron. 
Furthermore, if we did still support nova-network in those CLIs, the 
novaclient python API bindings are gone, so OSC would have to do 
something different - likely make it's own REST API calls to the compute 
API at a low enough microversion where those APIs still exist (<=2.43):

https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id39

So if we had to make a straight up REST API call to the compute endpoint 
anyway for the CLIs to still work, it seems easiest to just do that for 
now in both the nova-network and neutron cases. OSC CLI would make a 
request to the compute API on a microversion <= 2.43 and the compute 
service does the proxy work (albeit deprecated). In the OSC CLI, we 
could dump a deprecation warning if you're using these with nova-network 
since that is deprecated and the plan is in Rocky to drop support for 
nova-network altogether. Users of OSC could still be using newer 
versions of the client with older clouds that still run nova-network, 
but the deprecation timer would at least be set.

Are there other options here? Or some other precedent for a situation 
like this?

-- 

Thanks,

Matt



More information about the OpenStack-dev mailing list