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