Initial changes to the CLI to support performance management
configuration. There are still some todos left in the code which will
be addressed in later commits.
Change-Id: I329a54f4ad9fca1599e53949a621c316e9b2d4fc
diff --git a/cli/table.py b/cli/table.py
index 6485787..1a1f576 100644
--- a/cli/table.py
+++ b/cli/table.py
@@ -89,7 +89,8 @@
assert self.field_names[field_key] == field_name
-def print_pb_list_as_table(header, items, fields_to_omit=None, printfn=_printfn):
+def print_pb_list_as_table(header, items, fields_to_omit=None,
+ printfn=_printfn, dividers=10):
from cli.utils import pb2dict
t = TablePrinter()
@@ -98,21 +99,36 @@
def add(_row, pb, prefix='', number=0):
d = pb2dict(pb)
- for field in pb._fields:
- fname = prefix + field.name
+ l=[]
+ for field in sorted(pb._fields, key=lambda f: f.number):
+ l.append(field.name)
+ for field in d:
+ if field not in l:
+ l.append(field)
+
+ field_number = 0
+ #for field in pb._fields:
+ for field in sorted(d, key=lambda f: l.index(f)):
+ #fname = prefix + field.name
+ fname = prefix + field
if fname in fields_to_omit:
continue
- value = getattr(pb, field.name)
+ #value = getattr(pb, field.name)
+ value = getattr(pb, field)
if isinstance(value, Message):
add(_row, value, fname + '.',
- 100 * (number + field.number))
+ 100 * (number + field_number))
+ #100 * (number + field.number))
else:
- t.add_cell(_row, number + field.number, fname,
- d.get(field.name))
+ t.add_cell(_row, number + field_number, fname,
+ d.get(field))
+ #t.add_cell(_row, number + field.number, fname,
+ #d.get(field.name))
+ field_number += 1
add(row, obj)
- t.print_table(header, printfn)
+ t.print_table(header, printfn, dividers)
def print_pb_as_table(header, pb, fields_to_omit={}, printfn=_printfn):
@@ -122,11 +138,14 @@
def pr(_pb, prefix=''):
d = pb2dict(_pb)
- for field in sorted(_pb._fields, key=lambda f: f.number):
- fname = prefix + field.name
+ #for field in sorted(_pb._fields, key=lambda f: f.number):
+ for field in sorted(d):
+ #fname = prefix + field.name
+ fname = prefix + field
if fname in fields_to_omit:
continue
- value = getattr(_pb, field.name)
+ #value = getattr(_pb, field.name)
+ value = getattr(_pb, field)
if isinstance(value, Message):
pr(value, fname + '.')
elif isinstance(value, RepeatedCompositeFieldContainer):
@@ -137,7 +156,8 @@
else:
row = t.number_of_rows()
t.add_cell(row, 0, 'field', fname)
- t.add_cell(row, 1, 'value', d.get(field.name))
+ #t.add_cell(row, 1, 'value', d.get(field.name))
+ t.add_cell(row, 1, 'value', d.get(field))
pr(pb)