From 054136576b7b340a8cf889e14d2e645be86908ad Mon Sep 17 00:00:00 2001 From: gordon chung Date: Mon, 31 Aug 2015 10:43:55 -0400 Subject: [PATCH] remove db2 nosql driver the db2 nosql product is not in development anymore as IBM has moved on to an alternate solution. the existing driver code is untested and is not actually used by IBM. this patch removes the db2nosql driver Change-Id: Ic3fa3cfcb612df544ca07741579af75a0b53f6ff --- MAINTAINERS | 5 -- aodh/storage/impl_db2.py | 76 -------------------- aodh/storage/mongo/utils.py | 2 +- aodh/storage/pymongo_base.py | 4 +- aodh/tests/db.py | 10 +-- aodh/tests/storage/test_impl_db2.py | 40 ----------- aodh/tests/storage/test_storage_scenarios.py | 2 +- doc/source/install/manual.rst | 16 +---- setup.cfg | 1 - 9 files changed, 7 insertions(+), 149 deletions(-) delete mode 100644 aodh/storage/impl_db2.py delete mode 100644 aodh/tests/storage/test_impl_db2.py diff --git a/MAINTAINERS b/MAINTAINERS index f62289c4c..ca9c16bd5 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -49,11 +49,6 @@ F: api/ == storage == --- DB2 -- -M: Tong Li (litong) -S: Maintained -F: storage/impl_db2.py - -- HBase -- M: S: Orphan diff --git a/aodh/storage/impl_db2.py b/aodh/storage/impl_db2.py deleted file mode 100644 index 307eabd02..000000000 --- a/aodh/storage/impl_db2.py +++ /dev/null @@ -1,76 +0,0 @@ -# Copyright 2012 New Dream Network, LLC (DreamHost) -# Copyright 2013 eNovance -# Copyright 2013 IBM Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. -"""DB2 storage backend -""" - -from __future__ import division - -from oslo_log import log -import pymongo - -from aodh import storage -from aodh.storage.mongo import utils as pymongo_utils -from aodh.storage import pymongo_base - -LOG = log.getLogger(__name__) - - -class Connection(pymongo_base.Connection): - """The db2 alarm storage for aodh.""" - - CONNECTION_POOL = pymongo_utils.ConnectionPool() - - def __init__(self, conf, url): - - # Since we are using pymongo, even though we are connecting to DB2 - # we still have to make sure that the scheme which used to distinguish - # db2 driver from mongodb driver be replaced so that pymongo will not - # produce an exception on the scheme. - url = url.replace('db2:', 'mongodb:', 1) - self.conn = self.CONNECTION_POOL.connect( - url, - conf.database.max_retries, - conf.database.retry_interval) - - # Require MongoDB 2.2 to use aggregate(), since we are using mongodb - # as backend for test, the following code is necessary to make sure - # that the test wont try aggregate on older mongodb during the test. - # For db2, the versionArray won't be part of the server_info, so there - # will not be exception when real db2 gets used as backend. - server_info = self.conn.server_info() - if server_info.get('sysInfo'): - self._using_mongodb = True - else: - self._using_mongodb = False - - if self._using_mongodb and server_info.get('versionArray') < [2, 2]: - raise storage.StorageBadVersion("Need at least MongoDB 2.2") - - connection_options = pymongo.uri_parser.parse_uri(url) - self.db = getattr(self.conn, connection_options['database']) - if connection_options.get('username'): - self.db.authenticate(connection_options['username'], - connection_options['password']) - - self.upgrade() - - def clear(self): - # drop_database command does nothing on db2 database since this has - # not been implemented. However calling this method is important for - # removal of all the empty dbs created during the test runs since - # test run is against mongodb on Jenkins - self.conn.drop_database(self.db.name) - self.conn.close() diff --git a/aodh/storage/mongo/utils.py b/aodh/storage/mongo/utils.py index 98dc547d8..f277edf75 100644 --- a/aodh/storage/mongo/utils.py +++ b/aodh/storage/mongo/utils.py @@ -13,7 +13,7 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. -"""Common functions for MongoDB and DB2 backends +"""Common functions for MongoDB backend """ import weakref diff --git a/aodh/storage/pymongo_base.py b/aodh/storage/pymongo_base.py index 5fc7fbf6b..2e21afe0b 100644 --- a/aodh/storage/pymongo_base.py +++ b/aodh/storage/pymongo_base.py @@ -15,7 +15,7 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. -"""Common functions for MongoDB and DB2 backends +"""Common functions for MongoDB backend """ from oslo_log import log @@ -44,7 +44,7 @@ AVAILABLE_STORAGE_CAPABILITIES = { class Connection(base.Connection): - """Base Alarm Connection class for MongoDB and DB2 drivers.""" + """Base Alarm Connection class for MongoDB driver.""" CAPABILITIES = utils.update_nested(base.Connection.CAPABILITIES, COMMON_AVAILABLE_CAPABILITIES) diff --git a/aodh/tests/db.py b/aodh/tests/db.py index e54b808ac..849abe8b9 100644 --- a/aodh/tests/db.py +++ b/aodh/tests/db.py @@ -127,7 +127,6 @@ class TestBase(testscenarios.testcase.WithScenarios, test_base.BaseTestCase): 'mysql': MySQLManager, 'mysql+pymysql': MySQLManager, 'postgresql': PgSQLManager, - 'db2': MongoDbManager, 'sqlite': SQLiteManager, } if mocks is not None: @@ -210,7 +209,7 @@ class MixinTestsWithBackendScenarios(object): ('sqlite', {'db_url': 'sqlite://'}), ] - for db in ('MONGODB', 'MYSQL', 'PGSQL', 'HBASE', 'DB2', 'ES'): + for db in ('MONGODB', 'MYSQL', 'PGSQL', 'HBASE'): if os.environ.get('AODH_TEST_%s_URL' % db): scenarios.append( (db.lower(), {'db_url': os.environ.get( @@ -222,10 +221,3 @@ class MixinTestsWithBackendScenarios(object): if 'hbase' not in scenarios_db: scenarios.append( ('hbase', {'db_url': 'hbase://__test__'})) - - # Insert default value for db2 test - if 'mongodb' in scenarios_db and 'db2' not in scenarios_db: - scenarios.append( - ('db2', {'db_url': os.environ.get('AODH_TEST_MONGODB_URL', - '').replace('mongodb://', - 'db2://')})) diff --git a/aodh/tests/storage/test_impl_db2.py b/aodh/tests/storage/test_impl_db2.py deleted file mode 100644 index b8e6c8602..000000000 --- a/aodh/tests/storage/test_impl_db2.py +++ /dev/null @@ -1,40 +0,0 @@ -# -# Copyright Ericsson AB 2014. All rights reserved -# -# Authors: Ildiko Vancsa -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. -"""Tests for aodh/storage/impl_db2.py - -.. note:: - In order to run the tests against another MongoDB server set the - environment variable aodh_TEST_DB2_URL to point to a DB2 - server before running the tests. - -""" - -from aodh.storage import impl_db2 -from aodh.tests import base as test_base - - -class CapabilitiesTest(test_base.BaseTestCase): - def test_alarm_capabilities(self): - expected_capabilities = { - 'alarms': {'query': {'simple': True, - 'complex': True}, - 'history': {'query': {'simple': True, - 'complex': True}}}, - } - - actual_capabilities = impl_db2.Connection.get_capabilities() - self.assertEqual(expected_capabilities, actual_capabilities) diff --git a/aodh/tests/storage/test_storage_scenarios.py b/aodh/tests/storage/test_storage_scenarios.py index 01d169eb2..a5e9be27b 100644 --- a/aodh/tests/storage/test_storage_scenarios.py +++ b/aodh/tests/storage/test_storage_scenarios.py @@ -253,7 +253,7 @@ class AlarmTest(AlarmTestBase, self.assertNotEqual(victim.name, s.name) -@tests_db.run_with('sqlite', 'mysql', 'pgsql', 'hbase', 'db2') +@tests_db.run_with('sqlite', 'mysql', 'pgsql', 'hbase') class AlarmHistoryTest(AlarmTestBase, tests_db.MixinTestsWithBackendScenarios): diff --git a/doc/source/install/manual.rst b/doc/source/install/manual.rst index 3968cb0cf..9ecdb5b0d 100644 --- a/doc/source/install/manual.rst +++ b/doc/source/install/manual.rst @@ -29,9 +29,8 @@ services. You may use one of the listed database backends below to store Aodh data. .. note:: - Please notice, MongoDB (and some other backends like DB2 and HBase) - require pymongo_ to be installed on the system. The required minimum - version of pymongo is 2.4. + Please notice, MongoDB requires pymongo_ to be installed on the system. The + required minimum version of pymongo is 2.4. .. @@ -105,17 +104,6 @@ HBase [database] connection = hbase://hbase-thrift-host:9090 -DB2 ---- - - DB2 installation should follow fresh IBM DB2 NoSQL installation docs. - - To use DB2 as the storage backend, change the 'database' section in - aodh.conf as follows:: - - [database] - connection = db2://username:password@host:27017/aodh - .. _HappyBase: http://happybase.readthedocs.org/en/latest/index.html# .. _MongoDB: http://www.mongodb.org/ diff --git a/setup.cfg b/setup.cfg index 51b71a68b..83029501a 100644 --- a/setup.cfg +++ b/setup.cfg @@ -34,7 +34,6 @@ aodh.storage = postgresql = aodh.storage.impl_sqlalchemy:Connection sqlite = aodh.storage.impl_sqlalchemy:Connection hbase = aodh.storage.impl_hbase:Connection - db2 = aodh.storage.impl_db2:Connection aodh.alarm.rule = threshold = aodh.api.controllers.v2.alarm_rules.threshold:AlarmThresholdRule