diff options
author | xialinjuan <ljxiash@cn.ibm.com> | 2016-01-13 17:31:10 +0800 |
---|---|---|
committer | xialinjuan <ljxiash@cn.ibm.com> | 2016-01-14 18:00:33 +0800 |
commit | d6560fb4986f43a2f2e64e14bb4effc969cc4ecd (patch) | |
tree | 58e8feedd09adee7206d9d35895b7c46788707c7 | |
parent | 25517d0226e69bbabf9679c80445746a5cab846d (diff) | |
download | python-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.py | 2 | ||||
-rw-r--r-- | ceilometerclient/tests/unit/test_utils.py | 65 |
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: |