From 3b05272254fc4ac1ad4a9f6f7ea6f700c2845ceb Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Tue, 3 Mar 2020 15:22:51 +0100 Subject: [PATCH] Move code from gvaweb to webtasks This change allows celery to find its tasks under the expected webtasks namespace. --- gvaweb.sh | 2 +- gvaweb/gvaweb/webtasks/__init__.py | 4 --- gvaweb/webtasks/__init__.py | 10 +++++++ .../__init__.py => webtasks/celery.py} | 6 ++-- gvaweb/{gvaweb => webtasks}/settings.py | 22 +++++++------- gvaweb/{gvaweb => }/webtasks/tasks.py | 29 +++++++++---------- .../webtasks/templates/vhost.nginx | 0 7 files changed, 38 insertions(+), 35 deletions(-) delete mode 100644 gvaweb/gvaweb/webtasks/__init__.py create mode 100644 gvaweb/webtasks/__init__.py rename gvaweb/{gvaweb/__init__.py => webtasks/celery.py} (51%) rename gvaweb/{gvaweb => webtasks}/settings.py (59%) rename gvaweb/{gvaweb => }/webtasks/tasks.py (87%) rename gvaweb/{gvaweb => }/webtasks/templates/vhost.nginx (100%) diff --git a/gvaweb.sh b/gvaweb.sh index e08a334..50cfe48 100755 --- a/gvaweb.sh +++ b/gvaweb.sh @@ -4,4 +4,4 @@ set -e . /home/gvaweb/gvaweb-venv/bin/activate cd /srv/gvaweb/gvaweb -celery -A gvaweb worker -Q web -l info +celery -A webtasks worker -Q web -l info diff --git a/gvaweb/gvaweb/webtasks/__init__.py b/gvaweb/gvaweb/webtasks/__init__.py deleted file mode 100644 index 9e02bbf..0000000 --- a/gvaweb/gvaweb/webtasks/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -""" -This module contains :py:mod:`webtasks.tasks`. - -""" diff --git a/gvaweb/webtasks/__init__.py b/gvaweb/webtasks/__init__.py new file mode 100644 index 0000000..1ade301 --- /dev/null +++ b/gvaweb/webtasks/__init__.py @@ -0,0 +1,10 @@ +""" +This module contains :py:mod:`webtasks.tasks`. + +""" + +__version__ = "0.2.0" + +from webtasks.celery import app as celery_app + +__all__ = ("celery_app",) diff --git a/gvaweb/gvaweb/__init__.py b/gvaweb/webtasks/celery.py similarity index 51% rename from gvaweb/gvaweb/__init__.py rename to gvaweb/webtasks/celery.py index ebf6b6f..a38923f 100644 --- a/gvaweb/gvaweb/__init__.py +++ b/gvaweb/webtasks/celery.py @@ -7,7 +7,7 @@ This module defines the Celery_ app for gvaweb. from celery import Celery #: The Celery application -app = Celery('gvaweb') +app = Celery("webtasks") -app.config_from_object('gvaweb.settings') -app.autodiscover_tasks(['gvaweb.webtasks'], force=True) +app.config_from_object("webtasks.settings", namespace="CELERY") +app.autodiscover_tasks(["webtasks.tasks"], force=True) diff --git a/gvaweb/gvaweb/settings.py b/gvaweb/webtasks/settings.py similarity index 59% rename from gvaweb/gvaweb/settings.py rename to gvaweb/webtasks/settings.py index f31cf6c..1398dc8 100644 --- a/gvaweb/gvaweb/settings.py +++ b/gvaweb/webtasks/settings.py @@ -25,22 +25,20 @@ def get_env_setting(setting): ########## CELERY CONFIGURATION -CELERY_TIMEZONE = 'Europe/Berlin' +CELERY_TIMEZONE = "Europe/Berlin" CELERY_ENABLE_UTC = True -CELERY_RESULT_BACKEND = 'amqp' CELERY_RESULT_PERSISTENT = True CELERY_TASK_RESULT_EXPIRES = None -CELERY_ROUTES = ( - 'gvacommon.celeryrouters.GvaRouter', -) -CELERY_ACCEPT_CONTENT = ['json'] -CELERY_TASK_SERIALIZER = 'json' -CELERY_RESULT_SERIALIZER = 'json' -BROKER_URL = get_env_setting('GVAWEB_BROKER_URL') +CELERY_ROUTES = ("gvacommon.celeryrouters.GvaRouter",) +CELERY_ACCEPT_CONTENT = ["json"] +CELERY_TASK_SERIALIZER = "json" +CELERY_RESULT_SERIALIZER = "json" +CELERY_RESULT_BACKEND = get_env_setting("GVAWEB_RESULTS_REDIS_URL") +CELERY_BROKER_URL = get_env_setting("GVAWEB_BROKER_URL") ########## END CELERY CONFIGURATION ########## GVAWEB CONFIGURATION -GVAWEB_NGINX_SITES_AVAILABLE = get_env_setting('GVAWEB_NGINX_SITES_AVAILABLE') -GVAWEB_NGINX_SITES_ENABLED = get_env_setting('GVAWEB_NGINX_SITES_ENABLED') -GVAWEB_WWWUSER_MOUNT = get_env_setting('GVAWEB_WWWUSER_MOUNT') +GVAWEB_NGINX_SITES_AVAILABLE = get_env_setting("GVAWEB_NGINX_SITES_AVAILABLE") +GVAWEB_NGINX_SITES_ENABLED = get_env_setting("GVAWEB_NGINX_SITES_ENABLED") +GVAWEB_WWWUSER_MOUNT = get_env_setting("GVAWEB_WWWUSER_MOUNT") ########## END GVAWEB CONFIGURATION diff --git a/gvaweb/gvaweb/webtasks/tasks.py b/gvaweb/webtasks/tasks.py similarity index 87% rename from gvaweb/gvaweb/webtasks/tasks.py rename to gvaweb/webtasks/tasks.py index e36940a..e102f57 100644 --- a/gvaweb/gvaweb/webtasks/tasks.py +++ b/gvaweb/webtasks/tasks.py @@ -10,9 +10,7 @@ from jinja2 import Environment, PackageLoader from celery import shared_task from celery.utils.log import get_task_logger - -from gvaweb import settings - +from webtasks import settings _LOGGER = get_task_logger(__name__) @@ -22,14 +20,14 @@ LN_CMD = '/bin/ln' SERVICE_CMD = '/bin/systemctl' INSTALL_CMD = '/usr/bin/install' -JINJAENV = Environment(loader=PackageLoader('gvaweb.webtasks', 'templates')) +JINJA_ENV = Environment(loader=PackageLoader('webtasks', 'templates')) def _jinja_parentdomain(domain): return '.'.join(domain.split('.')[1:]) -JINJAENV.filters['parentdomain'] = _jinja_parentdomain +JINJA_ENV.filters['parentdomain'] = _jinja_parentdomain def log_and_raise(exception, message, *args): @@ -57,7 +55,7 @@ def _build_document_root_path(sitename, username): def _get_template(templatename): - return JINJAENV.get_template(templatename) + return JINJA_ENV.get_template(templatename) @shared_task @@ -74,16 +72,16 @@ def create_web_vhost_config(username, sitename, wildcard): :rtype: boolean """ - conftmpl = _get_template('vhost.nginx') - confdata = conftmpl.render(domain=sitename, wildcard=wildcard) - conffile = None + config_template = _get_template('vhost.nginx') + config_data = config_template.render(domain=sitename, wildcard=wildcard) + config_file = None try: - nginxtemp, filename = mkstemp() - conffile = os.fdopen(nginxtemp, 'w') - conffile.write(confdata.encode('utf8')) + nginx_temp_file, filename = mkstemp() + config_file = os.fdopen(nginx_temp_file, 'w') + config_file.write(config_data.encode('utf8')) finally: - if conffile: - conffile.close() + if config_file: + config_file.close() try: subprocess.check_output([ SUDO_CMD, INSTALL_CMD, '-o', 'root', '-g', 'root', '-m', '0640', @@ -176,7 +174,7 @@ def create_web_php_fpm_pool_config(username): :rtype: boolean """ - # TODO: implement PHP FPM docker management + # TODO: implement PHP FPM docker management setup return True @@ -190,4 +188,5 @@ def delete_web_php_fpm_pool_config(username): :rtype: boolean """ + # TODO: implement PHP FPM docker management removal return True diff --git a/gvaweb/gvaweb/webtasks/templates/vhost.nginx b/gvaweb/webtasks/templates/vhost.nginx similarity index 100% rename from gvaweb/gvaweb/webtasks/templates/vhost.nginx rename to gvaweb/webtasks/templates/vhost.nginx