summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxialinjuan <ljxiash@cn.ibm.com>2016-01-13 17:31:10 +0800
committerxialinjuan <ljxiash@cn.ibm.com>2016-01-14 18:00:33 +0800
commitd6560fb4986f43a2f2e64e14bb4effc969cc4ecd (patch)
tree58e8feedd09adee7206d9d35895b7c46788707c7
parent25517d0226e69bbabf9679c80445746a5cab846d (diff)
downloadpython-ceilometerclient-d6560fb4986f43a2f2e64e14bb4effc969cc4ecd.tar.gz
change the dict output format to make consistency under py27 and py34
For the command output in ceilometer cli, if it is a dict and it has items which is list type, originally it won't handle the items in the list. As to under py27, the string type in the list is unicode, the string always look like u"http://alarm", while under py34 the string is "http://alarm", this cause output inconsistency. This patch will handle this inconsistency. Change-Id: I5e7cf4052f68e5a434bcf86242b11365b34750a0
-rw-r--r--ceilometerclient/common/utils.py2
-rw-r--r--ceilometerclient/tests/unit/test_utils.py65
2 files changed, 49 insertions, 18 deletions
diff --git a/ceilometerclient/common/utils.py b/ceilometerclient/common/utils.py
index d1ac720..84dcac8 100644
--- a/ceilometerclient/common/utils.py
+++ b/ceilometerclient/common/utils.py
@@ -89,7 +89,7 @@ def print_dict(d, dict_property="Property", wrap=0):
pt.align = 'l'
for k, v in sorted(six.iteritems(d)):
# convert dict to str to check length
- if isinstance(v, dict):
+ if isinstance(v, (list, dict)):
v = jsonutils.dumps(v)
# if value has a newline, add in multiple rows
# e.g. fault with stacktrace
diff --git a/ceilometerclient/tests/unit/test_utils.py b/ceilometerclient/tests/unit/test_utils.py
index a7e7584..5ef35e9 100644
--- a/ceilometerclient/tests/unit/test_utils.py
+++ b/ceilometerclient/tests/unit/test_utils.py
@@ -50,6 +50,14 @@ class UtilsTest(test_utils.BaseTestCase):
'type': 'threshold',
'threshold': '1.0',
'statistic': 'avg',
+ 'alarm_actions': [u'http://something/alarm1',
+ u'http://something/alarm2'],
+ 'ok_actions': [{"get_attr1":
+ [u"web_server_scaleup_policy1",
+ u"alarm_url1"]},
+ {"get_attr2":
+ [u"web_server_scaleup_policy2",
+ u"alarm_url2"]}],
'time_constraints': '[{name: c1,'
'\\n description: test,'
'\\n start: 0 18 * * *,'
@@ -57,23 +65,46 @@ class UtilsTest(test_utils.BaseTestCase):
'\\n timezone: US}]'},
wrap=72)
expected = u'''\
-+------------------+----------------------------------+
-| Property | Value |
-+------------------+----------------------------------+
-| alarm_id | 262567fd-d79a-4bbb-a9d0-59d879b6 |
-| description | \u6d4b\u8bd5 |
-| name | \u6d4b\u8bd5 |
-| repeat_actions | False |
-| state | insufficient data |
-| statistic | avg |
-| threshold | 1.0 |
-| time_constraints | [{name: c1, |
-| | description: test, |
-| | start: 0 18 * * *, |
-| | duration: 1, |
-| | timezone: US}] |
-| type | threshold |
-+------------------+----------------------------------+
++------------------+-------------------------------------------------------\
+--------+
+| Property | Value \
+ |
++------------------+-------------------------------------------------------\
+--------+
+| alarm_actions | ["http://something/alarm1", "http://something/alarm2"]\
+ |
+| alarm_id | 262567fd-d79a-4bbb-a9d0-59d879b6 \
+ |
+| description | \u6d4b\u8bd5 \
+ |
+| name | \u6d4b\u8bd5 \
+ |
+| ok_actions | [{"get_attr1": ["web_server_scaleup_policy1", "alarm_u\
+rl1"]}, |
+| | {"get_attr2": ["web_server_scaleup_policy2", "alarm_ur\
+l2"]}] |
+| repeat_actions | False \
+ |
+| state | insufficient data \
+ |
+| statistic | avg \
+ |
+| threshold | 1.0 \
+ |
+| time_constraints | [{name: c1, \
+ |
+| | description: test, \
+ |
+| | start: 0 18 * * *, \
+ |
+| | duration: 1, \
+ |
+| | timezone: US}] \
+ |
+| type | threshold \
+ |
++------------------+-------------------------------------------------------\
+--------+
'''
# py2 prints str type, py3 prints unicode type
if six.PY2: