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
This commit is contained in:
ZhiQiang Fan 2014-11-01 14:40:43 +08:00
parent 6eac318612
commit fa982d1bf5

View File

@ -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)