You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by ad...@apache.org on 2014/06/29 20:00:07 UTC

svn commit: r1606546 - in /labs/panopticon/pan-ezmlm: bin/ezmlm.apache2.wsgi bin/ezmlm.uwsgi.wsgi src/asf/wsgi/ezmlm.py uwsgi.ini

Author: adc
Date: Sun Jun 29 18:00:06 2014
New Revision: 1606546

URL: http://svn.apache.org/r1606546
Log:
Can now run under either uWSGI and Apache Httpd

Added:
    labs/panopticon/pan-ezmlm/bin/ezmlm.apache2.wsgi   (with props)
    labs/panopticon/pan-ezmlm/bin/ezmlm.uwsgi.wsgi   (with props)
Modified:
    labs/panopticon/pan-ezmlm/src/asf/wsgi/ezmlm.py
    labs/panopticon/pan-ezmlm/uwsgi.ini

Added: labs/panopticon/pan-ezmlm/bin/ezmlm.apache2.wsgi
URL: http://svn.apache.org/viewvc/labs/panopticon/pan-ezmlm/bin/ezmlm.apache2.wsgi?rev=1606546&view=auto
==============================================================================
--- labs/panopticon/pan-ezmlm/bin/ezmlm.apache2.wsgi (added)
+++ labs/panopticon/pan-ezmlm/bin/ezmlm.apache2.wsgi Sun Jun 29 18:00:06 2014
@@ -0,0 +1,31 @@
+#!/usr/bin/env python
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+"""
+CGI based WSGI API to mailing lists.
+"""
+import os
+
+
+def application(environ, start_response):
+    if 'EZMLM_FLASK_CONFIG' not in os.environ:
+        os.environ['EZMLM_FLASK_CONFIG'] = environ['EZMLM_FLASK_CONFIG']
+
+    from asf.wsgi.ezmlm import app
+    return app.wsgi_app(environ, start_response)

Propchange: labs/panopticon/pan-ezmlm/bin/ezmlm.apache2.wsgi
------------------------------------------------------------------------------
    svn:executable = *

Added: labs/panopticon/pan-ezmlm/bin/ezmlm.uwsgi.wsgi
URL: http://svn.apache.org/viewvc/labs/panopticon/pan-ezmlm/bin/ezmlm.uwsgi.wsgi?rev=1606546&view=auto
==============================================================================
--- labs/panopticon/pan-ezmlm/bin/ezmlm.uwsgi.wsgi (added)
+++ labs/panopticon/pan-ezmlm/bin/ezmlm.uwsgi.wsgi Sun Jun 29 18:00:06 2014
@@ -0,0 +1,32 @@
+#!/usr/bin/env python
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+"""
+CGI based WSGI API to mailing lists.
+"""
+import os
+
+from asf.wsgi.ezmlm import app
+
+
+def application(environ, start_response):
+    if 'EZMLM_FLASK_CONFIG' not in os.environ:
+        os.environ['EZMLM_FLASK_CONFIG'] = environ['EZMLM_FLASK_CONFIG']
+
+    return app.wsgi_app(environ, start_response)

Propchange: labs/panopticon/pan-ezmlm/bin/ezmlm.uwsgi.wsgi
------------------------------------------------------------------------------
    svn:executable = *

Modified: labs/panopticon/pan-ezmlm/src/asf/wsgi/ezmlm.py
URL: http://svn.apache.org/viewvc/labs/panopticon/pan-ezmlm/src/asf/wsgi/ezmlm.py?rev=1606546&r1=1606545&r2=1606546&view=diff
==============================================================================
--- labs/panopticon/pan-ezmlm/src/asf/wsgi/ezmlm.py (original)
+++ labs/panopticon/pan-ezmlm/src/asf/wsgi/ezmlm.py Sun Jun 29 18:00:06 2014
@@ -20,7 +20,7 @@
 CGI based WSGI API to mailing lists.
 """
 import hashlib
-from logging import getLogger
+import logging
 import os
 import time
 
@@ -30,7 +30,8 @@ from asf.utils.ezmlm import Ezmlm
 from asf.utils.wsgi import json_result, supports_etag
 
 
-log = getLogger(__name__)
+log = logging.getLogger(__name__)
+logging.basicConfig()
 
 app = flask.Flask(__name__)
 app.config.from_envvar('EZMLM_FLASK_CONFIG')
@@ -75,10 +76,14 @@ def asf_lists():
     if not os.path.exists(list_root_path):
         flask.abort(500)
 
-    modification_time = time.ctime(os.path.getmtime(list_root_path))
-    etag = hashlib.sha1(modification_time).hexdigest()
+    try:
+        modification_time = time.ctime(os.path.getmtime(list_root_path))
+        etag = hashlib.sha1(modification_time).hexdigest()
 
-    return ezmlm_list_groups(list_root_path), etag
+        return ezmlm_list_groups(list_root_path), etag
+    except Exception:
+        log.exception('Unable to provide list of mailing lists')
+        flask.abort(500)
 
 
 # noinspection PyUnusedLocal
@@ -102,10 +107,14 @@ def asf_list_subscribers(mailing_list):
     if not os.path.exists(list_path):
         flask.abort(500)
 
-    modification_time = time.ctime(os.path.getmtime(os.path.join(list_path, 'subscribers')))
-    etag = hashlib.sha1(modification_time).hexdigest()
+    try:
+        modification_time = time.ctime(os.path.getmtime(os.path.join(list_path, 'subscribers')))
+        etag = hashlib.sha1(modification_time).hexdigest()
 
-    return ezmlm_list_subscribers(list_path), etag
+        return ezmlm_list_subscribers(list_path), etag
+    except Exception:
+        log.exception('Unable to provide list of mailing subscribers of ' + mailing_list)
+        flask.abort(500)
 
 
 # noinspection PyUnusedLocal
@@ -128,7 +137,11 @@ def asf_list_moderators(mailing_list):
     if not os.path.exists(list_path):
         flask.abort(500)
 
-    return ezmlm_list_moderators(list_path)
+    try:
+        return ezmlm_list_moderators(list_path)
+    except Exception:
+        log.exception('Unable to provide list of mailing moderators of ' + mailing_list)
+        flask.abort(500)
 
 
 # noinspection PyUnusedLocal
@@ -151,7 +164,11 @@ def asf_add_subscriber(mailing_list, sub
     if not os.path.exists(list_path):
         flask.abort(500)
 
-    return ezmlm_add_subscriber(list_path, subscriber)
+    try:
+        return ezmlm_add_subscriber(list_path, subscriber)
+    except Exception:
+        log.exception('Unable to add subscriber %s to %s' % (subscriber, mailing_list))
+        flask.abort(500)
 
 
 @app.route('/v1/asf/lists/<mailing_list>/subscribers/<subscriber>', methods=['DELETE'])
@@ -162,7 +179,11 @@ def asf_remove_subscriber(mailing_list, 
     if not os.path.exists(list_path):
         flask.abort(500)
 
-    return ezmlm_remove_subscriber(list_path, subscriber)
+    try:
+        return ezmlm_remove_subscriber(list_path, subscriber)
+    except Exception:
+        log.exception('Unable to remove subscriber %s from %s' % (subscriber, mailing_list))
+        flask.abort(500)
 
 
 # noinspection PyUnusedLocal
@@ -185,7 +206,11 @@ def asf_add_moderator(mailing_list, mode
     if not os.path.exists(list_path):
         flask.abort(500)
 
-    return ezmlm_add_moderator(list_path, moderator)
+    try:
+        return ezmlm_add_moderator(list_path, moderator)
+    except Exception:
+        log.exception('Unable to add moderator %s to %s' % (moderator, mailing_list))
+        flask.abort(500)
 
 
 @app.route('/v1/asf/lists/<mailing_list>/moderators/<moderator>', methods=['DELETE'])
@@ -196,7 +221,11 @@ def asf_remove_moderator(mailing_list, m
     if not os.path.exists(list_path):
         flask.abort(500)
 
-    return ezmlm_remove_moderator(list_path, moderator)
+    try:
+        return ezmlm_remove_moderator(list_path, moderator)
+    except Exception:
+        log.exception('Unable to remove moderator %s from %s' % (moderator, mailing_list))
+        flask.abort(500)
 
 
 # noinspection PyUnusedLocal

Modified: labs/panopticon/pan-ezmlm/uwsgi.ini
URL: http://svn.apache.org/viewvc/labs/panopticon/pan-ezmlm/uwsgi.ini?rev=1606546&r1=1606545&r2=1606546&view=diff
==============================================================================
--- labs/panopticon/pan-ezmlm/uwsgi.ini (original)
+++ labs/panopticon/pan-ezmlm/uwsgi.ini Sun Jun 29 18:00:06 2014
@@ -1,7 +1,7 @@
 [uwsgi]
 http = 127.0.0.1:8081
 env = EZMLM_FLASK_CONFIG=../../../tests/data/ezmlm-flask.properties
-wsgi-file = ./bin/ezmlm.wsgi
+wsgi-file = ./bin/ezmlm.uwsgi.wsgi
 callable = app
 pythonpath = src
 processes = 4



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org