Milimetric has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/73337


Change subject: changing configuration to yaml
......................................................................

changing configuration to yaml

Change-Id: I5641a09c779f47c2ee6069a7a890eb35f1ab3ec5
---
D wikimetrics/config/__init__.py
D wikimetrics/config/celery_config.py
A wikimetrics/config/celery_config.yaml
D wikimetrics/config/db_config.py
A wikimetrics/config/db_config.yaml
D wikimetrics/config/web_config.py
A wikimetrics/config/web_config.yaml
M wikimetrics/configurables.py
M wikimetrics/run.py
9 files changed, 55 insertions(+), 46 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/analytics/wikimetrics 
refs/changes/37/73337/1

diff --git a/wikimetrics/config/__init__.py b/wikimetrics/config/__init__.py
deleted file mode 100644
index cab12d5..0000000
--- a/wikimetrics/config/__init__.py
+++ /dev/null
@@ -1,3 +0,0 @@
-import db_config
-import web_config
-import celery_config
diff --git a/wikimetrics/config/celery_config.py 
b/wikimetrics/config/celery_config.py
deleted file mode 100644
index 578be36..0000000
--- a/wikimetrics/config/celery_config.py
+++ /dev/null
@@ -1,7 +0,0 @@
-# Celery configuration
-BROKER_URL = 'redis://localhost:6379/0'
-CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
-CELERY_TASK_RESULT_EXPIRES = 3600
-CELERY_DISABLE_RATE_LIMITS = True
-CELERY_STORE_ERRORS_EVEN_IF_IGNORED = True
-DEBUG = True
diff --git a/wikimetrics/config/celery_config.yaml 
b/wikimetrics/config/celery_config.yaml
new file mode 100644
index 0000000..1e11d6a
--- /dev/null
+++ b/wikimetrics/config/celery_config.yaml
@@ -0,0 +1,6 @@
+BROKER_URL                          : 'redis://localhost:6379/0'
+CELERY_RESULT_BACKEND               : 'redis://localhost:6379/0'
+CELERY_TASK_RESULT_EXPIRES          : 3600
+CELERY_DISABLE_RATE_LIMITS          : True
+CELERY_STORE_ERRORS_EVEN_IF_IGNORED : True
+DEBUG                               : True
diff --git a/wikimetrics/config/db_config.py b/wikimetrics/config/db_config.py
deleted file mode 100644
index 385df05..0000000
--- a/wikimetrics/config/db_config.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# SQLalchemy config
-SQL_ECHO = False
-
-# SQL databases
-WIKIMETRICS_ENGINE_URL = 'sqlite:///test.db'
-MEDIAWIKI_ENGINE_URL_TEMPLATE = 'sqlite:///{0}.db'
diff --git a/wikimetrics/config/db_config.yaml 
b/wikimetrics/config/db_config.yaml
new file mode 100644
index 0000000..c483730
--- /dev/null
+++ b/wikimetrics/config/db_config.yaml
@@ -0,0 +1,3 @@
+SQL_ECHO                        : False
+WIKIMETRICS_ENGINE_URL          : 'sqlite:///test.db'
+MEDIAWIKI_ENGINE_URL_TEMPLATE   : 'sqlite:///{0}.db'
diff --git a/wikimetrics/config/web_config.py b/wikimetrics/config/web_config.py
deleted file mode 100644
index 35bad24..0000000
--- a/wikimetrics/config/web_config.py
+++ /dev/null
@@ -1,19 +0,0 @@
-# Flask Config
-SECRET_KEY = 'sw3lo(*A98ijwl3i3n&&JEK MSL IESKU* WSkl#iIREJSslsijsle ssie'
-DEBUG = True
-
-# Google OAuth2 config (except GOOGLE_CLIENT_SECRET which must be set in 
config_secret.py)
-GOOGLE_CLIENT_SECRET                = 'zKv0Qg7Zr6L3Q3CaWnIuVX4B'
-GOOGLE_BASE_URL                     = 'https://www.google.com/accounts/'
-GOOGLE_AUTH_URI                     = 
'https://accounts.google.com/o/oauth2/auth'
-GOOGLE_TOKEN_URI                    = 
'https://accounts.google.com/o/oauth2/token'
-GOOGLE_CLIENT_EMAIL                 = 
'[email protected]'
-GOOGLE_CLIENT_ID                    = '133082872359.apps.googleusercontent.com'
-GOOGLE_AUTH_PROVIDER_X509_CERT_URL  = 
'https://www.googleapis.com/oauth2/v1/certs'
-GOOGLE_AUTH_SCOPE                   = 
'https://www.googleapis.com/auth/userinfo.email'
-GOOGLE_USERINFO_URI                 = 
'https://www.googleapis.com/oauth2/v1/userinfo'
-GOOGLE_REDIRECT_URI                 = 'http://localhost:5000/auth/google'
-GOOGLE_JAVASCRIPT_ORIGIN            = 'http://localhost:5000'
-
-# Twitter OAuth2 config
-TWITTER_AUTH_URI                    = 
'https://api.twitter.com/oauth/request_token'
diff --git a/wikimetrics/config/web_config.yaml 
b/wikimetrics/config/web_config.yaml
new file mode 100644
index 0000000..cdb9b41
--- /dev/null
+++ b/wikimetrics/config/web_config.yaml
@@ -0,0 +1,16 @@
+SECRET_KEY  : 'sw3lo(*A98ijwl3i3n&&JEK MSL IESKU* WSkl#iIREJSslsijsle ssie'
+DEBUG       : True
+
+GOOGLE_CLIENT_SECRET                : 'zKv0Qg7Zr6L3Q3CaWnIuVX4B'
+GOOGLE_BASE_URL                     : 'https://www.google.com/accounts/'
+GOOGLE_AUTH_URI                     : 
'https://accounts.google.com/o/oauth2/auth'
+GOOGLE_TOKEN_URI                    : 
'https://accounts.google.com/o/oauth2/token'
+GOOGLE_CLIENT_EMAIL                 : 
'[email protected]'
+GOOGLE_CLIENT_ID                    : '133082872359.apps.googleusercontent.com'
+GOOGLE_AUTH_PROVIDER_X509_CERT_URL  : 
'https://www.googleapis.com/oauth2/v1/certs'
+GOOGLE_AUTH_SCOPE                   : 
'https://www.googleapis.com/auth/userinfo.email'
+GOOGLE_USERINFO_URI                 : 
'https://www.googleapis.com/oauth2/v1/userinfo'
+GOOGLE_REDIRECT_URI                 : 'http://localhost:5000/auth/google'
+GOOGLE_JAVASCRIPT_ORIGIN            : 'http://localhost:5000'
+
+TWITTER_AUTH_URI                    : 
'https://api.twitter.com/oauth/request_token'
diff --git a/wikimetrics/configurables.py b/wikimetrics/configurables.py
index 0f35406..fc169e2 100644
--- a/wikimetrics/configurables.py
+++ b/wikimetrics/configurables.py
@@ -4,12 +4,30 @@
 import imp
 import os
 import logging
+import yaml
 logger = logging.getLogger(__name__)
 
 
+# TODO: does not work in labs environment
 def create_object_from_config_file(path):
     dir, fname = os.path.split(path)
     return imp.load_source(os.path.splitext(fname)[0], path)
+
+
+def create_dict_from_text_config_file(path):
+    yaml_string = open(path).read()
+    return yaml.load(yaml_string)
+
+
+class FromDictionary(object):
+    def __init__(self, **entries):
+        self.__dict__.update(entries)
+
+
+def create_object_from_text_config_file(path):
+    yaml_string = open(path).read()
+    yaml_dict = yaml.load(yaml_string)
+    return FromDictionary(**yaml_dict)
 
 
 def config_web(args):
@@ -19,9 +37,11 @@
     
     global app
     app = Flask('wikimetrics')
-    app.config.from_pyfile(args.web_config)
+    web_config = create_object_from_text_config_file(args.web_config)
+    app.config.from_object(web_config)
     if args.override_config:
-        app.config.from_pyfile(args.override_config)
+        web_config = create_object_from_text_config_file(args.override_config)
+        app.config.from_object(web_config)
     
     global login_manager
     login_manager = LoginManager()
@@ -54,11 +74,10 @@
     
     global db
     db = Database()
-    db_config_obj = create_object_from_config_file(args.db_config)
-    db.config = db_config_obj.__dict__
+    db.config = create_dict_from_text_config_file(args.db_config)
     if args.override_config:
-        config_override = create_object_from_config_file(args.override_config)
-        db.config.__dict__.update(config_override.__dict__)
+        config_override = 
create_dict_from_text_config_file(args.override_config)
+        db.config.__dict__.update(config_override)
 
 
 def config_celery(args):
@@ -69,7 +88,7 @@
     
     global queue
     queue = Celery('wikimetrics', include=['wikimetrics'])
-    config_object = create_object_from_config_file(args.celery_config)
-    queue.config_from_object(config_object)
+    celery_config = create_dict_from_text_config_file(args.celery_config)
+    queue.config_from_object(celery_config)
     if args.override_config:
         queue.config_from_object(args.override_config)
diff --git a/wikimetrics/run.py b/wikimetrics/run.py
index 5e47ada..58f8f67 100644
--- a/wikimetrics/run.py
+++ b/wikimetrics/run.py
@@ -59,19 +59,19 @@
     )
     parser.add_argument(
         '--web-config', '-w',
-        default='config/web_config.py',
+        default='wikimetrics/config/web_config.yaml',
         help='Flask config file',
         dest='web_config',
     )
     parser.add_argument(
         '--db-config', '-d',
-        default='wikimetrics/config/db_config.py',
+        default='wikimetrics/config/db_config.yaml',
         help='Database config file',
         dest='db_config',
     )
     parser.add_argument(
         '--celery-config', '-c',
-        default='wikimetrics/config/celery_config.py',
+        default='wikimetrics/config/celery_config.yaml',
         help='Celery config file',
         dest='celery_config',
     )

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I5641a09c779f47c2ee6069a7a890eb35f1ab3ec5
Gerrit-PatchSet: 1
Gerrit-Project: analytics/wikimetrics
Gerrit-Branch: master
Gerrit-Owner: Milimetric <[email protected]>

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

Reply via email to