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