As I mentioned earlier in Moving to OpenStackClient CLI I came across several differences in reconciling the legacy CLI tools.
I have also come across very inconsistent messaging. Here is a simple example.
In nova
$ nova list ERROR (CommandError): You must provide an auth url via either --os-auth-url or env[OS_AUTH_URL] or specify an auth_system which defines a default url with --os-auth-system or env[OS_AUTH_SYSTEM]
In openstack
$ openstack service list ERROR: openstack Authorization Failed: Cannot authenticate without an auth_url $ openstack keypair list ERROR: openstack Authentication requires 'auth_url', which should be specified in 'HTTPClient' $ openstack catalog list ERROR: openstack 'NoneType' object has no attribute 'auth' $ openstack volume list ERROR: openstack unsupported operand type(s) for +: 'NoneType' and 'str'
All three errors are effectively the same. That is I have not setup environment variables (OS_PROJECT_NAME, OS_AUTH_URL, OS_USERNAME, OS_PASSWORD) or passed all correctly as arguments.
In delving to the openstackclient source code specifically auth.py#147 I see another message “Set an authentication URL, with –os-auth-url, OS_AUTH_URL or auth.auth_url”. api.auth
is also referenced in the Authentication Documentation as the place to start.
Time to delve in the code to see what I can find out.
cd git clone git://git.openstack.org/openstack/python-openstackclient cd python-openstackclient python tools/install_venv.py source .venv/bin/activate # Don't need sudo for local environment which openstack
After setting OS_USERNAME, OS_PASSWORD, and OS_PROJECT NAME (and not setting OS_AUTH_URL in my test) I run the following.
$ openstack image list WARNING: openstackclient.shell Possible error authenticating: Missing parameter(s): Set an authentication URL, with --os-auth-url, OS_AUTH_URL or auth.auth_url ERROR: openstack Missing parameter(s): Set an authentication URL, with --os-auth-url, OS_AUTH_URL or auth.auth_url
This matches what I saw in the code, so it’s the installed version that is older code. While user, service and keypair lists returns the same message volume and catalog still do not.
(.venv)rbradfor@octogon:~/python-openstackclient$ openstack volume list WARNING: openstackclient.shell Possible error authenticating: Missing parameter(s): Set an authentication URL, with --os-auth-url, OS_AUTH_URL or auth.auth_url ERROR: openstack unsupported operand type(s) for +: 'NoneType' and 'str' (.venv)rbradfor@octogon:~/python-openstackclient$ openstack catalog list WARNING: openstackclient.shell Possible error authenticating: Missing parameter(s): Set an authentication URL, with --os-auth-url, OS_AUTH_URL or auth.auth_url ERROR: openstack 'NoneType' object has no attribute 'auth'
[…] This threw me because of reading several OpenStack documentation pages including Getting the code that specifically mentions in Hacking on your laptop and running unit tests an example Setting Up a Developer Environment, and consulting with a friend that is a ATC this is the way I learned to setup virtual environments and running tests. […]