Argumentative Supernova and python pip

My first few weeks at working in cloud, particularly openstack were challenging. There were quite a few tools ,and interpreters that I had to get used to using and debugging to properly use software, and as always, the compiler or interpreters messages aren’t usually helpful. It’s worth noting that before we start, some of the messages from python applications can be unhelpful and appear to be dependency issues but in one case it was because of an extra character lurking in my .supernova configuration, thanks to a colleague of mine who pointed this out yesterday.

openstack

One of the important things to get a handle on was the installation and configuration of my supernova and nova openstack for use with the Rackspace UK API. Here is some of the ‘arguments’ we had at the commandline.

There is some pretty helpful information listed at: https://developer.rackspace.com/blog/supernova-managing-openstack-environments-made-easy/

but I decided that after all the problems I had, specific to my Mac OS X Yosemite 10.10.4 that some sort of additional documentation on getting started was necessary, if not for other people, but my own personal record! I list quite a few of the common mishaps I ran into when installing.

# I had lots of problems so I started from scratch

pip freeze |  xargs pip uninstall -y

git clone https://github.com/major/supernova
# install latest supernova from github (optional)
sudo python setup.py install

After doing this and running a ‘supernova’ command from the commandline I am quickly informed that

ERROR (AuthSystemNotFound): AuthSystemNotFound: ‘rackspace’

We should make sure that the novaclient and supernova are installed and note that the supernova application is merely a wrapper for the the nova openstack api connector.

pip install supernova rackspace-novaclient

I also got a bit crazy and started trying to install different versions of novaclient noting that there were some possible compatibility problems between supernova and nova due to differences in the packages. I also resorted to running a ‘brew install python’ after getting fed up, but I won’t need to cover this here because brew is fairly simple

pip install -U python-novaclient==2.11.1

This didn’t bring me much luck and I was sitll encountering the AuthSystemNotFound error. So I started to try and dig deeper into what was going on, and what packages were available and/or might be missing.

pip search rackspace

pip search rackspace | grep auth

rackspace-auth-openstack                       – Rackspace Auth Plugin for OpenStack Clients.
rackspace-auth-neutronclientext                – Rackspace Auth Plugin for OpenStack Neutron Clients.
rackspace-glanceclient                         – Metapackage to install python-glanceclient and Rackspace auth package

Confirming my suspicions that a plugin was not installed by pip when I ran pip install supernova rackspace-novaclient. So I ran

pip install rackspace-auth-openstack
supernova lon image-list
__ Error Output ______________________________________________________________
ERROR: No module named auth_plugin

Which certainly meant progress, now a different error, “auth_plugin”. So I re-ran an install of rackspace-novaclient

pip install rackspace-novaclient

 

paying special attention to these particular entries:

Successfully installed os-diskconfig-python-novaclient-ext-0.1.2 os-networksv2-python-novaclient-ext-0.25 os-virtual-interfacesv2-python-novaclient-ext-0.19 rackspace-novaclient-1.4 rax-default-network-flags-python-novaclient-ext-0.3.1 rax-scheduled-images-python-novaclient-ext-0.3.1

It looked like the two were missing some dependencies that were causing this particular cryptic error above with auth_plugin.

I found then when running a supernova lon image-list I was presented with a new difficulty:

supernova lon image-list

__ Error Output ______________________________________________________________
ERROR: cannot import name cliutils

This was probably the least cryptic error because simply searching for cliutils with pip was easy enough, and then i installed that package:

pip search cliutils
cliutils     – A collection of utilities easing the creation of command line scripts

pip install cliutils

for special measure I also installed a package called ‘rack’ and upgraded supernova once more from pip repository. I do not know if these steps are necessary but if your still having trouble running supernova you can always try them:

pip install rack

pip install supernova –upgrade

Which gives the friendly and expected output:

supernova customer image-list
[SUPERNOVA] Running nova against customer…
+————————————–+————————————————————–+——–+————————————–+
| ID                                   | Name                                                         | Status | Server                               |
+————————————–+————————————————————–+——–+————————————–+
| 8785022e-a29c-4e31-9d9c-213b87c63e2a | Arch 2015.7 (PVHVM)                                          | ACTIVE |                                      |
| 6e44a225-85f4-4d53-858b-a3022939845b | CentOS 5 (PV)                                                |
……. etc

Please note IMPORTANTLY that to properly query the Rackspace Openstack API thru supernova nova wrapper you will require a properly formatted .supernova config file. This actually takes some time to get to grips with. Your supernova file should , usually be in your user context home, ie cd ~

.supernova config template

[myopenstackconfig] OS_AUTH_URL=https://identity.api.rackspacecloud.com/v2.0/
OS_AUTH_SYSTEM=rackspace
OS_COMPUTE_API_VERSION=1.1
NOVA_RAX_AUTH=1
OS_REGION_NAME=LON
NOVA_SERVICE_NAME=cloudServersOpenStack
OS_PASSWORD=yourrackspaceAPIkeygoeshere
OS_USERNAME=yourrackspacemycloudusernamegoeshere
OS_TENANT_NAME=yourrackspaceaccountnumbergoeshere

If you don’t like the idea of using plaintext in your config file you could use supernova-keyring your .supernova config file must look like this:

[myopenstackconfig] OS_AUTH_URL=https://identity.api.rackspacecloud.com/v2.0/
OS_AUTH_SYSTEM=rackspace
OS_COMPUTE_API_VERSION=1.1
NOVA_RAX_AUTH=1
OS_REGION_NAME=LON
NOVA_SERVICE_NAME=cloudServersOpenStack
OS_PASSWORD=USE_KEYRING[‘UKRackspaceAccountAPIKey’] OS_USERNAME=USE_KEYRING[‘UKRackspaceAccountUser’] OS_TENANT_NAME=USE_KEYRING[‘UKRackspaceAccountDDI’]

at the shell you will have to set the variables for the ‘keyring’ do that like this and you will be prompted to type in your account API Key, and username and DDI (which is the 6 or 7 digit number your account is in the url address when using mycloud) the details there:

Type this at the commandline

# something like myusername
supernova-keyring -s global RackspaceAccountUser
# something like 80aa1af9a6Bc459076834592ab324a

supernova-keyring -s global RackspaceAccountAPIKey

# something like 1004345
supernova-keyring -s global RackspaceAccountDDI

Here are some critically important and helpful links for supernova guides , tutorials, examples and so on, the developer “Major Harden” is a great guy and I am sure if you have issues further to what I had he will be able to help you further over at GitHub.

Supernova Developers’ website and documentation https://major.io/2012/06/05/supernova-manage-multiple-openstack-nova-environments-with-ease/
Latest github for cloning on Github https://github.com/major/supernova
1 Hour Presentation on Supernova https://www.youtube.com/watch?v=BZGhoCYZKEM

Hello world!

tiki-1200x750
What fun! Hello I am Adam, Linux Administrator and Cloud Infrastructure peon. I don’t really have much time but here is my asserted attempt at making something useful of myself and recording the things I experience from day to day.

One tries, anyway.