aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/discover/fetchers/db/db_access.py25
-rw-r--r--app/install/db/constants.json4
-rw-r--r--app/install/db/supported_environments.json12
-rw-r--r--app/test/fetch/test_fetch.py2
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()