diff options
| author | Lianhao Lu <lianhao.lu@intel.com> | 2013-03-29 18:40:44 +0800 |
|---|---|---|
| committer | Lianhao Lu <lianhao.lu@intel.com> | 2013-03-29 18:40:44 +0800 |
| commit | f3d044291fe75c2b6ce7a4f8e9a6885d4ffd38c0 (patch) | |
| tree | 95b49087d4845bae406bbe5e66fdf9805be602c1 /ceilometerclient/common | |
| parent | e30d70074f278f58457d9d2b278815b5ccb39a63 (diff) | |
| download | python-ceilometerclient-f3d044291fe75c2b6ce7a4f8e9a6885d4ffd38c0.tar.gz | |
v2 API: added resource-show.
Added resource-show command for v2 API.
blueprint more-cli-cmd.
Change-Id: I9e0dcff63b2ac6650094d47a947a2deaaea2ba4d
Diffstat (limited to 'ceilometerclient/common')
| -rw-r--r-- | ceilometerclient/common/base.py | 5 | ||||
| -rw-r--r-- | ceilometerclient/common/utils.py | 29 |
2 files changed, 24 insertions, 10 deletions
diff --git a/ceilometerclient/common/base.py b/ceilometerclient/common/base.py index 02ecdae..ae1ecfc 100644 --- a/ceilometerclient/common/base.py +++ b/ceilometerclient/common/base.py @@ -49,7 +49,8 @@ class Manager(object): def __init__(self, api): self.api = api - def _list(self, url, response_key=None, obj_class=None, body=None): + def _list(self, url, response_key=None, obj_class=None, body=None, + expect_single=False): resp, body = self.api.json_request('GET', url) if obj_class is None: @@ -62,6 +63,8 @@ class Manager(object): return [] else: data = body + if expect_single: + data = [data] return [obj_class(self, res, loaded=True) for res in data if res] def _delete(self, url): diff --git a/ceilometerclient/common/utils.py b/ceilometerclient/common/utils.py index 2703b7a..658cdf4 100644 --- a/ceilometerclient/common/utils.py +++ b/ceilometerclient/common/utils.py @@ -17,6 +17,7 @@ import errno import hashlib import os import sys +import textwrap import uuid import prettytable @@ -49,22 +50,32 @@ def print_list(objs, fields, field_labels, formatters={}, sortby=0): if field in formatters: row.append(formatters[field](o)) else: - data = getattr(o, field, None) or '' + data = getattr(o, field, '') row.append(data) pt.add_row(row) print pt.get_string(sortby=field_labels[sortby]) -def print_dict(d, formatters={}): - pt = prettytable.PrettyTable(['Property', 'Value'], caching=False) +def print_dict(d, dict_property="Property", wrap=0): + pt = prettytable.PrettyTable([dict_property, 'Value'], caching=False) pt.align = 'l' - - for field in d.keys(): - if field in formatters: - pt.add_row([field, formatters[field](d[field])]) + for k, v in d.iteritems(): + # convert dict to str to check length + if isinstance(v, dict): + v = str(v) + if wrap > 0: + v = textwrap.fill(str(v), wrap) + # if value has a newline, add in multiple rows + # e.g. fault with stacktrace + if v and isinstance(v, basestring) and r'\n' in v: + lines = v.strip().split(r'\n') + col1 = k + for line in lines: + pt.add_row([col1, line]) + col1 = '' else: - pt.add_row([field, d[field]]) - print pt.get_string(sortby='Property') + pt.add_row([k, v]) + print pt.get_string() def find_resource(manager, name_or_id): |
