jenkins-bot has submitted this change and it was merged.

Change subject: Allow public dbs to be ignored
......................................................................


Allow public dbs to be ignored

Useful for running against  sanitarium

Change-Id: I6d54c70590e8d7f1a51b8f0003c301124f7e3fb1
---
M labsdb/auditor/audit.py
M labsdb/auditor/models.py
M labsdb/auditor/runner.py
3 files changed, 33 insertions(+), 38 deletions(-)

Approvals:
  Yuvipanda: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/labsdb/auditor/audit.py b/labsdb/auditor/audit.py
index d49fa5a..5335952 100644
--- a/labsdb/auditor/audit.py
+++ b/labsdb/auditor/audit.py
@@ -27,11 +27,14 @@
 """
 import argparse
 import logging
+import os
 
 import yaml
 from runner import ReportRunner
 from reports.databases import databases_report
 from labsdb.auditor.reports.tables import extra_tables_report
+from labsdb.auditor.utils import diff_iters
+from labsdb.auditor.models import Model, Table
 from reports.viewdiffs import views_schema_diff_report
 
 
@@ -41,6 +44,8 @@
 argparser.add_argument('--output-file-path', help='Path to report output 
file', default='report.yaml')
 argparser.add_argument('--log-file-path', help='Path to log file', 
default='audit.log')
 argparser.add_argument('--debug', action='store_true', help='Turn on debug 
logging')
+argparser.add_argument('--ignore-public-dbs', action='store_true',
+                       help='Ignore public dbs (useful for running against 
sanitarium)')
 
 args = argparser.parse_args()
 
@@ -53,7 +58,29 @@
                     format='%(asctime)s: %(message)s'
                     )
 
-rr = ReportRunner(config)
+# Load up the model
+tables = {}
+for ts_path in config['tableschema-files']:
+    with open(ts_path) as ts:
+        tableschema = yaml.load(ts)
+    for tablename, tabledict in tableschema.items():
+        tables[tablename] = Table.from_dict(tablename, tabledict)
+
+mwconf_path = config['mediawiki-config-path']
+all_dblist_path = os.path.join(mwconf_path, 'all.dblist')
+private_dblist_path = os.path.join(mwconf_path, 'private.dblist')
+
+with open(all_dblist_path) as all_file, open(private_dblist_path) as priv_file:
+    all_wiki_dbs = [l.strip() for l in all_file.readlines()]
+    priv_wiki_dbs = [l.strip() for l in priv_file.readlines()]
+    dbs, _ = diff_iters(all_wiki_dbs, priv_wiki_dbs)
+
+private_dbs = dbs
+public_dbs = [db + '_p' for db in private_dbs] if not args.ignore_public_dbs 
else []
+
+model = Model(private_dbs, public_dbs, tables)
+
+rr = ReportRunner(config, model)
 
 rr.register_report(databases_report)
 rr.register_report(extra_tables_report)
diff --git a/labsdb/auditor/models.py b/labsdb/auditor/models.py
index 7dd4720..af728cb 100644
--- a/labsdb/auditor/models.py
+++ b/labsdb/auditor/models.py
@@ -14,10 +14,6 @@
 """
 Contains classes that Model how LabsDB should be
 """
-import yaml
-import os
-
-from labsdb.auditor.utils import diff_iters
 
 
 class Column(object):
@@ -98,34 +94,7 @@
         - List of dbs that should exist (list)
         - List of tables that can exist in any db (dict with tablename as key)
     """
-    def __init__(self, dblist, tables):
-        self.private_dbs = dblist
-        self.public_dbs = [db + '_p' for db in dblist]
+    def __init__(self, private_dbs, public_dbs, tables):
+        self.private_dbs = private_dbs
+        self.public_dbs = public_dbs
         self.tables = tables
-
-    @classmethod
-    def from_config(cls, tableschema_files, mwconf_path):
-        """
-        Creates a Model from a given config
-
-        Reads table schema from schema files and sets up appropriate tables.
-        Reads dblists from mediawiki-config repo
-        :param tableschema_files: List of files to read table schema from
-        :param mwconf_path: Path to check out of mediawiki-config repository
-        """
-        tables = {}
-        for ts_path in tableschema_files:
-            with open(ts_path) as ts:
-                tableschema = yaml.load(ts)
-            for tablename, tabledict in tableschema.items():
-                tables[tablename] = Table.from_dict(tablename, tabledict)
-
-        all_dblist_path = os.path.join(mwconf_path, 'all.dblist')
-        private_dblist_path = os.path.join(mwconf_path, 'private.dblist')
-
-        with open(all_dblist_path) as all_file, open(private_dblist_path) as 
priv_file:
-            all_dbs = [l.strip() for l in all_file.readlines()]
-            priv_dbs = [l.strip() for l in priv_file.readlines()]
-            dbs, _ = diff_iters(all_dbs, priv_dbs)
-
-        return cls(dbs, tables)
diff --git a/labsdb/auditor/runner.py b/labsdb/auditor/runner.py
index 3354de3..53d9ba9 100644
--- a/labsdb/auditor/runner.py
+++ b/labsdb/auditor/runner.py
@@ -15,15 +15,14 @@
 import time
 
 import MySQLdb
-from labsdb.auditor.models import Model
 
 
 class ReportRunner(object):
     """
     Runs a set of reports!
     """
-    def __init__(self, config):
-        self.model = Model.from_config(config['tableschema-files'], 
config['mediawiki-config-path'])
+    def __init__(self, config, model):
+        self.model = model
         self.config = config
         self._reporters = {}
 

-- 
To view, visit https://gerrit.wikimedia.org/r/185914
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I6d54c70590e8d7f1a51b8f0003c301124f7e3fb1
Gerrit-PatchSet: 4
Gerrit-Project: operations/software/labsdb-auditor
Gerrit-Branch: master
Gerrit-Owner: Yuvipanda <[email protected]>
Gerrit-Reviewer: Yuvipanda <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to