I have played with the FirsGen Rackspace cloud on my box. It was working fine. Some info about how to start with it can be found here
rackspace-cloudservers .
At some point I have started using the Openstack
nova tool to interact with the Rackspace NextGen cloud to run some tests. Once I was done I returned to the
openstack tool and discoved that it stopped to work.
Problem
For every comamnd I run i got alwasys the same error message. An example output.
$ /usr/bin/cloudservers --username user --apikey 123 list
Traceback (most recent call last):
File "/usr/bin/cloudservers", line 9, in module
load_entry_point('python-cloudservers==1.0a5', 'console_scripts', 'cloudservers')()
File "/usr/lib/pymodules/python2.7/cloudservers/shell.py", line 413, in main
CloudserversShell().main(sys.argv[1:])
File "/usr/lib/pymodules/python2.7/cloudservers/shell.py", line 127, in main
args.func(args)
File "/usr/lib/pymodules/python2.7/cloudservers/shell.py", line 279, in do_list
print_list(self.cs.servers.list(), ['ID', 'Name', 'Status', 'Public IP', 'Private IP'])
File "/usr/lib/pymodules/python2.7/cloudservers/shell.py", line 402, in print_list
pt.printt(sortby=fields[0])
File "/usr/local/lib/python2.7/dist-packages/prettytable.py", line 163, in __getattr__
raise AttributeError(name)
AttributeError: printt
Solution
After debugin the prettytable.py code it turned out that there is not such a function like
printt. Further research confirmed this [1]. The fix this I have changed the code of
cloudserver module
on my PC. The new code after changes is listed below.
# vim +399 /usr/lib/pymodules/python2.7/cloudservers/shell.py
def print_list(objs, fields):
pt = prettytable.PrettyTable([f for f in fields], caching=False)
pt.aligns = ['l' for f in fields]
for o in objs:
pt.add_row([getattr(o, f.lower().replace(' ', '_'), '') for f in fields])
# pt.printt(sortby=fields[0])
print pt.get_string(sortby=fields[0])
References
- http://code.google.com/p/prettytable/issues/detail?id=14&q=printt
- https://answers.launchpad.net/nova/+question/198709
Other examples where the code was broken as well
- https://github.com/calebgroom/clb/issues/24
- http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=673790