[nova] Train: how to use newer API microversion

Ghanshyam Mann gmann at ghanshyammann.com
Thu Mar 18 14:44:23 UTC 2021


 ---- On Thu, 18 Mar 2021 09:10:49 -0500 Eugen Block <eblock at nde.ag> wrote ----
 > 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'>


You can specify the microversion per API request via the below arg

CLI: --os-comoute-api-version 2.37
API: in the header : 

    OpenStack-API-Version: compute 2.37 OR
    X-OpenStack-Nova-API-Version: 2.37

And here is the detail of each microversion what they have changed: 

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

-gmann

 > 
 > 
 > 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