diff options
author | Jenkins <jenkins@review.openstack.org> | 2014-09-20 23:03:04 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2014-09-20 23:03:04 +0000 |
commit | 22a8654c5cc68599bee0e2a884dbb192939199a7 (patch) | |
tree | 2ee20f11c47eea643bbfabeebf7d405b5e617fbd | |
parent | 0f4147723eebae61311e0c4a3fcbac8f51a214bc (diff) | |
parent | 5e8fb13dbb357bdb0be4500f5e65217c5ba9b881 (diff) | |
download | ceilometer-22a8654c5cc68599bee0e2a884dbb192939199a7.tar.gz |
Merge "[HBase] Catch AlreadyExists error in Connection upgrade"
-rw-r--r-- | ceilometer/alarm/storage/impl_hbase.py | 5 | ||||
-rw-r--r-- | ceilometer/storage/hbase/utils.py | 23 | ||||
-rw-r--r-- | ceilometer/storage/impl_hbase.py | 6 |
3 files changed, 29 insertions, 5 deletions
diff --git a/ceilometer/alarm/storage/impl_hbase.py b/ceilometer/alarm/storage/impl_hbase.py index 27311c66..8a50bcae 100644 --- a/ceilometer/alarm/storage/impl_hbase.py +++ b/ceilometer/alarm/storage/impl_hbase.py @@ -98,9 +98,10 @@ class Connection(base.Connection): self.conn_pool = self._get_connection_pool(opts) def upgrade(self): + tables = [self.ALARM_HISTORY_TABLE, self.ALARM_TABLE] + column_families = {'f': dict()} with self.conn_pool.connection() as conn: - conn.create_table(self.ALARM_TABLE, {'f': dict()}) - conn.create_table(self.ALARM_HISTORY_TABLE, {'f': dict()}) + hbase_utils.create_tables(conn, tables, column_families) def clear(self): LOG.debug(_('Dropping HBase schema...')) diff --git a/ceilometer/storage/hbase/utils.py b/ceilometer/storage/hbase/utils.py index 4a2a0b08..1fe4a3a4 100644 --- a/ceilometer/storage/hbase/utils.py +++ b/ceilometer/storage/hbase/utils.py @@ -17,9 +17,14 @@ import datetime import json import bson.json_util +from happybase.hbase import ttypes +from ceilometer.openstack.common.gettextutils import _ +from ceilometer.openstack.common import log from ceilometer import utils +LOG = log.getLogger(__name__) + EVENT_TRAIT_TYPES = {'none': 0, 'string': 1, 'integer': 2, 'float': 3, 'datetime': 4} OP_SIGN = {'eq': '=', 'lt': '<', 'le': '<=', 'ne': '!=', 'gt': '>', 'ge': '>='} @@ -416,3 +421,21 @@ def object_hook(dct): dt = bson.json_util.object_hook(dct) return dt.replace(tzinfo=None) return bson.json_util.object_hook(dct) + + +def create_tables(conn, tables, column_families): + for table in tables: + try: + conn.create_table(table, column_families) + except ttypes.AlreadyExists: + if conn.table_prefix: + table = ("%(table_prefix)s" + "%(separator)s" + "%(table_name)s" % + dict(table_prefix=conn.table_prefix, + separator=conn.table_prefix_separator, + table_name=table)) + + LOG.warn(_("Cannot create table %(table_name)s " + "it already exists. Ignoring error") + % {'table_name': table})
\ No newline at end of file diff --git a/ceilometer/storage/impl_hbase.py b/ceilometer/storage/impl_hbase.py index 3899f482..4a3a4e6f 100644 --- a/ceilometer/storage/impl_hbase.py +++ b/ceilometer/storage/impl_hbase.py @@ -161,10 +161,10 @@ class Connection(base.Connection): self.conn_pool = self._get_connection_pool(opts) def upgrade(self): + tables = [self.RESOURCE_TABLE, self.METER_TABLE, self.EVENT_TABLE] + column_families = {'f': dict(max_versions=1)} with self.conn_pool.connection() as conn: - conn.create_table(self.RESOURCE_TABLE, {'f': dict(max_versions=1)}) - conn.create_table(self.METER_TABLE, {'f': dict(max_versions=1)}) - conn.create_table(self.EVENT_TABLE, {'f': dict(max_versions=1)}) + hbase_utils.create_tables(conn, tables, column_families) def clear(self): LOG.debug(_('Dropping HBase schema...')) |