Newer
Older
#!/usr/bin/env python
#coding=utf8
'''
CloudControl list command
'''
from cccli.exception import *
from sjrpc.core.exceptions import *
from cccli.printer import Printer, color
def __init__(self, cli, argv0):
self.set_usage("%prog [options] [tql]")
self.add_option("-t", action="store_true", dest="table",
help="column aligment display")
self.add_option("-l", action="store_true", dest="align",
help="line aligment display")
self.remove_option("--quiet")
self.remove_option("--direct")
self.parse_args(argv)
if len(self.args) == 0:
self.args.append("")
objs = self.rpccall("list", str.join("", self.args), _status=False, _direct=True)
if self.options.align:
elif self.options.table:
self.print_objects(objs, index=self.options.index)
def remote_functions(self):
return set(("list",))
'''Listing line aligned'''
# get max size by tag
for o in objs["objects"]:
for (t,v) in o.items():
# build initial print order
order = [ t for t in objs.get("order", []) if t in tags ]
order.extend(sorted(set(tags.keys()) - set(order)))
# compute index width
indexw = int(math.log10(len(objs["objects"])))
# dislay each object by line
for (i,o) in enumerate(objs["objects"]):
if self.options.index:
line = ("[%d]"%i).ljust(indexw + 4)
else:
line = ""
for t in order:
line += "%s%s:%s%s "%(self.tdtc(t),
t,
self.tdc(t),
self.tdr(t, o.get(t, u"")).ljust(tags[t]))
self.printer.out("%s%s"%(line, color["reset"]))
'''Listing table style'''
# get max size by tag
for o in objs["objects"]:
for (t,v) in o.items():
# build initial print order
order = [ t for t in objs.get("order", []) if t in tags ]
order.extend(sorted(set(tags.keys()) - set(order)))
if self.options.index:
# compute index width
indexw = max(int(math.log10(len(objs["objects"]))+1), len("index "))
# print index title
self.printer.out("index ", nl="")
# print tag title in order
for t in order:
self.printer.out(t.ljust(tags[t]), nl=" ")
if self.options.index:
self.printer.out(("%d "%i).ljust(indexw), nl="")
self.printer.out(self.tdr(t, o.get(t, u"")).ljust(tags[t]) ,nl=" ")
self.printer.out(color["reset"])