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
SolutionAfter 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
No comments:
Post a Comment