diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/discover/fetchers/db/db_access.py | 25 | ||||
-rw-r--r-- | app/install/db/constants.json | 4 | ||||
-rw-r--r-- | app/install/db/supported_environments.json | 12 | ||||
-rw-r--r-- | app/test/fetch/test_fetch.py | 2 |
4 files changed, 34 insertions, 9 deletions
diff --git a/app/discover/fetchers/db/db_access.py b/app/discover/fetchers/db/db_access.py index 0174c4b..49fdb5e 100644 --- a/app/discover/fetchers/db/db_access.py +++ b/app/discover/fetchers/db/db_access.py @@ -11,6 +11,7 @@ import mysql.connector from discover.configuration import Configuration from discover.fetcher import Fetcher +from discover.scan_error import ScanError from utils.string_utils import jsonify @@ -27,15 +28,7 @@ class DbAccess(Fetcher): self.config = Configuration() self.conf = self.config.get("mysql") self.connect_to_db() - cursor = DbAccess.conn.cursor(dictionary=True) - try: - # check if DB schema 'neutron' exists - cursor.execute("SELECT COUNT(*) FROM neutron.agents") - for row in cursor: - pass - self.neutron_db = "neutron" - except (AttributeError, mysql.connector.errors.ProgrammingError): - self.neutron_db = "ml2_neutron" + self.neutron_db = self.get_neutron_db_name() def db_connect(self, _host, _port, _user, _pwd, _database): if DbAccess.conn: @@ -54,6 +47,20 @@ class DbAccess(Fetcher): return DbAccess.query_count_per_con = 0 + @staticmethod + def get_neutron_db_name(): + # check if DB schema 'neutron' exists + cursor = DbAccess.conn.cursor(dictionary=True) + cursor.execute('SHOW DATABASES') + matches = [row.get('Database', '') for row in cursor + if 'neutron' in row.get('Database', '')] + if not matches: + raise ScanError('Unable to find Neutron schema in OpenStack DB') + if len(matches) > 1: + raise ScanError('Found multiple possible names for Neutron schema ' + 'in OpenStack DB') + return matches[0] + def connect_to_db(self, force=False): if DbAccess.conn: if not force: diff --git a/app/install/db/constants.json b/app/install/db/constants.json index 4aba092..e456873 100644 --- a/app/install/db/constants.json +++ b/app/install/db/constants.json @@ -494,6 +494,10 @@ { "value" : "Mirantis-10.0", "label" : "Mirantis-10.0" + }, + { + "value" : "Apex-Euphrates", + "label" : "Apex-Euphrates" } ], "name" : "distributions" diff --git a/app/install/db/supported_environments.json b/app/install/db/supported_environments.json index 987d96d..606f5ef 100644 --- a/app/install/db/supported_environments.json +++ b/app/install/db/supported_environments.json @@ -11,6 +11,18 @@ "listening" : true } }, +{ + "environment" : { + "distribution" : "Apex-Euphrates", + "type_drivers" : "vxlan", + "mechanism_drivers" : "OVS" + }, + "features" : { + "scanning" : true, + "monitoring" : true, + "listening" : true + } +}, { "environment" : { "distribution" : "Stratoscale-v2.1.6", diff --git a/app/test/fetch/test_fetch.py b/app/test/fetch/test_fetch.py index 55d7d4c..d40a52c 100644 --- a/app/test/fetch/test_fetch.py +++ b/app/test/fetch/test_fetch.py @@ -59,6 +59,8 @@ class TestFetch(unittest.TestCase): self.inv = InventoryMgr() self.inv.set_collections(self.inventory_collection) DbAccess.conn = MagicMock() + DbAccess.get_neutron_db_name = MagicMock() + DbAccess.get_neutron_db_name.return_value = "neutron" SshConnection.connect = MagicMock() SshConnection.check_definitions = MagicMock() SshConn.check_definitions = MagicMock() |