From 71c92ded22509e96f8a24867f36acddcda0b460e Mon Sep 17 00:00:00 2001 From: Francesco Siddi <francesco.siddi@gmail.com> Date: Sat, 28 Nov 2015 21:45:29 +0100 Subject: [PATCH] Manager: fix for server registration --- docker/dashboard/dev/Dockerfile | 2 + docker/dashboard/dev/manage.sh | 3 ++ docker/dashboard/dev/runserver.sh | 2 +- docker/dashboard/pro/Dockerfile | 2 + docker/dashboard/pro/manage.sh | 3 ++ docker/manager/dev/runserver.sh | 4 ++ docker/manager/pro/runserver.sh | 3 ++ flamenco/dashboard/application/__init__.py | 17 +++++--- .../dashboard/application/config.py.example | 6 --- flamenco/dashboard/application/config_base.py | 6 +++ .../dashboard/application/config_docker.py | 2 + flamenco/manager/application/__init__.py | 1 + flamenco/manager/application/config_base.py | 4 +- flamenco/manager/manage.py | 41 ++++++++----------- 14 files changed, 56 insertions(+), 40 deletions(-) create mode 100644 docker/dashboard/dev/manage.sh create mode 100644 docker/dashboard/pro/manage.sh delete mode 100644 flamenco/dashboard/application/config.py.example create mode 100644 flamenco/dashboard/application/config_base.py create mode 100644 flamenco/dashboard/application/config_docker.py diff --git a/docker/dashboard/dev/Dockerfile b/docker/dashboard/dev/Dockerfile index 6f825304..b75ee39b 100644 --- a/docker/dashboard/dev/Dockerfile +++ b/docker/dashboard/dev/Dockerfile @@ -36,6 +36,8 @@ VOLUME /data/config VOLUME /data/storage/shared VOLUME /data/storage/dashboard +ENV IS_DOCKER True + EXPOSE 8888 ADD runserver.sh /runserver.sh diff --git a/docker/dashboard/dev/manage.sh b/docker/dashboard/dev/manage.sh new file mode 100644 index 00000000..b26d9f14 --- /dev/null +++ b/docker/dashboard/dev/manage.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +. /data/venv/bin/activate && python /data/git/dashboard/manage.py $1 $2 $3 diff --git a/docker/dashboard/dev/runserver.sh b/docker/dashboard/dev/runserver.sh index da7b88ca..6858c841 100644 --- a/docker/dashboard/dev/runserver.sh +++ b/docker/dashboard/dev/runserver.sh @@ -4,5 +4,5 @@ if [ ! -d /data/git/dashboard/node_modules ]; then bash setup.sh fi -# Enable virtual evnvironment and start server +# Enable virtual evnvironment and start dashboard . /data/venv/bin/activate && cd /data/git/dashboard && python manage.py runserver diff --git a/docker/dashboard/pro/Dockerfile b/docker/dashboard/pro/Dockerfile index eb6fa58b..bd19f8ea 100644 --- a/docker/dashboard/pro/Dockerfile +++ b/docker/dashboard/pro/Dockerfile @@ -48,6 +48,8 @@ VOLUME /data/config VOLUME /data/storage/shared VOLUME /data/storage/dashboard +ENV IS_DOCKER True + EXPOSE 8888 ADD 000-default.conf /etc/apache2/sites-available/000-default.conf diff --git a/docker/dashboard/pro/manage.sh b/docker/dashboard/pro/manage.sh new file mode 100644 index 00000000..b26d9f14 --- /dev/null +++ b/docker/dashboard/pro/manage.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +. /data/venv/bin/activate && python /data/git/dashboard/manage.py $1 $2 $3 diff --git a/docker/manager/dev/runserver.sh b/docker/manager/dev/runserver.sh index e9e90113..f56b1293 100644 --- a/docker/manager/dev/runserver.sh +++ b/docker/manager/dev/runserver.sh @@ -7,4 +7,8 @@ if [ ! -e /installed ]; then touch /installed fi +# Enable virtual evnvironment and register manager +. /data/venv/bin/activate && cd /data/git/manager && python manage.py setup_register_manager + +# Run development server . /data/venv/bin/activate && cd /data/git/manager && python manage.py runserver diff --git a/docker/manager/pro/runserver.sh b/docker/manager/pro/runserver.sh index edfce469..9e0004f0 100644 --- a/docker/manager/pro/runserver.sh +++ b/docker/manager/pro/runserver.sh @@ -7,5 +7,8 @@ if [ ! -e /installed ]; then touch /installed fi +# Enable virtual evnvironment and register manager +. /data/venv/bin/activate && cd /data/git/manager && python manage.py setup_register_manager + # Run Apache /usr/sbin/apache2 -D FOREGROUND diff --git a/flamenco/dashboard/application/__init__.py b/flamenco/dashboard/application/__init__.py index 086bf7c9..1a618dcb 100644 --- a/flamenco/dashboard/application/__init__.py +++ b/flamenco/dashboard/application/__init__.py @@ -10,11 +10,18 @@ app.config.update( SECRET_KEY='A0Zr98j/3yX R~XHH!jmN]LWX/,?RT', ) -try: - from application import config - app.config['FLAMENCO_SERVER'] = config.Config.FLAMENCO_SERVER -except ImportError: - app.config['FLAMENCO_SERVER'] = 'localhost:9999' +# Initial configuration +from application import config_base +app.config.from_object(config_base.Config) + +# If we are in a Docker container, override with some new defaults +if os.environ.get('IS_DOCKER'): + from application import config_docker + app.config.from_object(config_docker.Config) + +# If a custom config file is specified, further override the config +if os.environ.get('FLAMENCO_DASHBOARD_CONFIG'): + app.config.from_envvar('FLAMENCO_DASHBOARD_CONFIG') def check_connection(): try: diff --git a/flamenco/dashboard/application/config.py.example b/flamenco/dashboard/application/config.py.example deleted file mode 100644 index b70c0c76..00000000 --- a/flamenco/dashboard/application/config.py.example +++ /dev/null @@ -1,6 +0,0 @@ -class Config(object): - DEBUG=True - FLAMENCO_SERVER='localhost:9999' - - PORT=8888 - HOST='0.0.0.0' diff --git a/flamenco/dashboard/application/config_base.py b/flamenco/dashboard/application/config_base.py new file mode 100644 index 00000000..41effe90 --- /dev/null +++ b/flamenco/dashboard/application/config_base.py @@ -0,0 +1,6 @@ +class Config(object): + DEBUG = True + FLAMENCO_SERVER = 'localhost:9999' + PORT = 8888 + HOST = '0.0.0.0' + diff --git a/flamenco/dashboard/application/config_docker.py b/flamenco/dashboard/application/config_docker.py new file mode 100644 index 00000000..d90f0c71 --- /dev/null +++ b/flamenco/dashboard/application/config_docker.py @@ -0,0 +1,2 @@ +class Config(object): + FLAMENCO_SERVER = 'flamenco_server:9999' diff --git a/flamenco/manager/application/__init__.py b/flamenco/manager/application/__init__.py index 8623e3c5..bd5abdfc 100644 --- a/flamenco/manager/application/__init__.py +++ b/flamenco/manager/application/__init__.py @@ -99,6 +99,7 @@ def register_manager(host, name, has_virtual_workers): r = http_request(app.config['FLAMENCO_SERVER'], '/managers', 'post', params=params) # If we don't find one, we proceed to create it, using the server reponse + # TODO handle case when token exists on the manager, but not on the server if not token: token = Setting(name='token', value=r['token']) db.session.add(token) diff --git a/flamenco/manager/application/config_base.py b/flamenco/manager/application/config_base.py index 88246b27..fa639813 100644 --- a/flamenco/manager/application/config_base.py +++ b/flamenco/manager/application/config_base.py @@ -6,7 +6,7 @@ class Config(object): DEBUG = True PORT = 7777 HOST = '0.0.0.0' # or 'localhost' - HOSTNAME = 'My Manager' # or use socket.gethostname() + NAME = 'My Manager' # or use socket.gethostname() FLAMENCO_SERVER = 'localhost:9999' DATABASE_URI = 'sqlite:///' + os.path.join(os.path.dirname(__file__), '../') @@ -20,7 +20,5 @@ class Config(object): TMP_FOLDER = tempfile.gettempdir() THUMBNAIL_EXTENSIONS = set(['png']) - # Don't change this variable until the worker's code will have costant declaration of this path - # see controllers.py line 243 to understand MANAGER_STORAGE = '{0}/static/storage'.format( os.path.join(os.path.dirname(__file__))) diff --git a/flamenco/manager/manage.py b/flamenco/manager/manage.py index 770309f0..13acbac6 100755 --- a/flamenco/manager/manage.py +++ b/flamenco/manager/manage.py @@ -76,38 +76,29 @@ def setup_db(): @manager.command -def runserver(): - """This command is meant for development. If no configuration is found, - we start the app listening from all hosts, from port 7777.""" - setup_db() - - try: - from application import config - PORT = config.Config.PORT - DEBUG = config.Config.DEBUG - HOST = config.Config.HOST - HOSTNAME = config.Config.HOSTNAME - VIRTUAL_WORKERS = config.Config.VIRTUAL_WORKERS - except ImportError: - DEBUG = False - PORT = 7777 - HOST = '0.0.0.0' - VIRTUAL_WORKERS = False - HOSTNAME = socket.gethostname() - +def setup_register_manager(): # Register the manager to the server if os.environ.get('WERKZEUG_RUN_MAIN') != 'true': - if VIRTUAL_WORKERS: + if app.config['VIRTUAL_WORKERS']: has_virtual_worker = 1 else: has_virtual_worker = 0 - full_host = "{0}:{1}".format(HOST, PORT) - register_manager(full_host, HOSTNAME, has_virtual_worker) + full_host = "http://{0}:{1}".format( + app.config['HOST'], app.config['PORT']) + register_manager(full_host, app.config['NAME'], has_virtual_worker) + + +@manager.command +def runserver(): + """This command is meant for development. If no configuration is found, + we start the app listening from all hosts, from port 7777.""" + setup_db() + setup_register_manager() app.run( - port=PORT, - debug=DEBUG, - host=HOST, + port=app.config['PORT'], + debug=app.config['DEBUG'], + host=app.config['HOST'], threaded=True) -- GitLab