From fa982d1bf5fe6c9657fe4a2c5eb48c65bdac26da Mon Sep 17 00:00:00 2001 From: ZhiQiang Fan Date: Sat, 1 Nov 2014 14:40:43 +0800 Subject: [PATCH] Fix storage.hbase.util.prepare_key() for 32-bits system storage.hbase.utils.timestamp() will return long type object on 32-bits system, which will cause exception in ceilometer/alarm/storage/impl_hbase.py: 'long' object has no attribute 'encode'. Then developers on 32-bits system will never get local test passed. This patch changes type check in prepare_keys() from int to six.integer_types, which will work for both 32-bits and 64-bits system, python2 and python3 environment. Note: no test code is added, because jenkins runs on 64-bits system. Reviewers can download code and verify it on 32-bits system. Change-Id: I57729ff67efe6d6036fe698e3d86491f9ed4600c Closes-Bug: #1388181 --- ceilometer/storage/hbase/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ceilometer/storage/hbase/utils.py b/ceilometer/storage/hbase/utils.py index a3ae826c4b..b36714e5a7 100644 --- a/ceilometer/storage/hbase/utils.py +++ b/ceilometer/storage/hbase/utils.py @@ -329,7 +329,7 @@ def prepare_key(*args): """ key_quote = [] for key in args: - if isinstance(key, int): + if isinstance(key, six.integer_types): key = str(key) key_quote.append(quote(key)) return ":".join(key_quote)