[nova] Train: how to use newer API microversion

Eugen Block eblock at nde.ag
Thu Mar 18 14:10:49 UTC 2021


Hi *,

I'm a little confused and could use some guidance regarding endpoints  
and microversions.
Just recently I did a lot of maintenance in our old cloud, I believe  
it was created with Kilo and is now Train.

Anyway, I wanted to use the "server create" option "--nic none" but  
couldn't because of the v2 endpoint for the nova service, right?  
According to the cli help this option is available from microversion  
2.37+.

This was the first attempt before adding new endpoints:

controller:~ # openstack server create --image <UUID> --nic none  
--flavor 3 test-nic-none
nics must be a list or a tuple, not <class 'str'>


These were the endpoints before I added new ones:

controller:~ # openstack endpoint list | grep nova
| <UUID> | RegionOne | nova         | compute        | True    |  
public    | http://controller:<PORT>/v2/%(tenant_id)s  |
| <UUID> | RegionOne | nova         | compute        | True    |  
internal  | http://controller:<PORT>/v2/%(tenant_id)s  |
| <UUID> | RegionOne | nova         | compute        | True    | admin  
     | http://controller:<PORT>/v2/%(tenant_id)s  |


I checked with the Train install guide and created new endpoints for nova:

controller:~ # openstack endpoint create --region RegionOne compute  
public http://controller:<PORT>/v2.1
controller:~ # openstack endpoint create --region RegionOne compute  
internal http://controller:<PORT>/v2.1
controller:~ # openstack endpoint create --region RegionOne compute  
admin http://controller:<PORT>/v2.1


I should mention that I haven't restarted any services yet, I wanted  
to check each step carefully since people are working in that cloud.

In the debug output from creating a new instance I saw that it's still  
trying to use v2 api, so I disabled it, resulting in error messages  
that there's no compute service available. So I reenabled the old  
endpoints and now have both versions active. Then I tried this:

controller:~ #  openstack --os-compute-api-version 2.37 server create  
--image <UUID> --nic none --flavor 3 test-nic-none
Invalid input for field/attribute networks. Value: none. 'none' is not  
of type 'array' (HTTP 400) (Request-ID:  
req-b3c53ab2-8040-42cf-bf07-d03e8f46cfd5)

Now I'm running out of ideas how to upgrade our api endpoints so the  
services will actually be able to use them properly. I read Train  
release notes (we're planning to upgrade to Ussuri soon) and multiple  
docs about microversions but nothing seems to cover my issue.

Could anyone shed some light? I must admit, during the upgrade cycles  
in the past years I just hoped everything would keep working and it  
did, I didn't put too much attention in the api versions yet. Any help  
is appreciated!

Thanks and best regards,
Eugen




More information about the openstack-discuss mailing list