From f287715d7c1229fba8ec1cabec01d3195d093794 Mon Sep 17 00:00:00 2001 From: nchamo Date: Wed, 14 Aug 2019 13:24:07 -0300 Subject: [PATCH] Add posibility for multiple nodes --- .env | 1 + .../0029_rename_default_odm_node.py | 21 ++++++++++++++++++ docker-compose.nodeodm.yml | 7 +++--- nodeodm/external/NodeODM | 1 - start.sh | 4 ++-- webodm.sh | 22 ++++++++++++++----- 6 files changed, 44 insertions(+), 12 deletions(-) create mode 100644 app/migrations/0029_rename_default_odm_node.py delete mode 160000 nodeodm/external/NodeODM diff --git a/.env b/.env index c9c13e50..27b31eff 100644 --- a/.env +++ b/.env @@ -8,3 +8,4 @@ WO_SSL_INSECURE_PORT_REDIRECT=80 WO_DEBUG=NO WO_DEV=NO WO_BROKER=redis://broker +WO_DEFAULT_NODES=1 diff --git a/app/migrations/0029_rename_default_odm_node.py b/app/migrations/0029_rename_default_odm_node.py new file mode 100644 index 00000000..17b8a5f6 --- /dev/null +++ b/app/migrations/0029_rename_default_odm_node.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations +from nodeodm.models import ProcessingNode + +def rename_default_node(apps, schema_editor): + for default_node in ProcessingNode.objects.filter(hostname='node-odm-1'): + default_node.hostname = 'webodm_node-odm_1' + default_node.defaults = {'hostname': 'webodm_node-odm_1', 'port': 3000} + default_node.save() + +class Migration(migrations.Migration): + + dependencies = [ + ('app', '0028_task_partial'), + ] + + operations = [ + migrations.RunPython(rename_default_node), + ] diff --git a/docker-compose.nodeodm.yml b/docker-compose.nodeodm.yml index 7a178c46..960a5851 100644 --- a/docker-compose.nodeodm.yml +++ b/docker-compose.nodeodm.yml @@ -6,12 +6,11 @@ version: '2.1' services: webapp: depends_on: - - node-odm-1 + - node-odm environment: - - WO_CREATE_DEFAULT_PNODE=YES - node-odm-1: + - WO_DEFAULT_NODES + node-odm: image: opendronemap/nodeodm - container_name: node-odm-1 ports: - "3000" restart: on-failure:10 diff --git a/nodeodm/external/NodeODM b/nodeodm/external/NodeODM deleted file mode 160000 index 48cf7f01..00000000 --- a/nodeodm/external/NodeODM +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 48cf7f01b2ab96b6fdbdcb81d4ddc5828ae66c0e diff --git a/start.sh b/start.sh index 23e8a33d..763832ed 100755 --- a/start.sh +++ b/start.sh @@ -57,8 +57,8 @@ fi echo Running migrations python manage.py migrate -if [[ "$WO_CREATE_DEFAULT_PNODE" = "YES" ]]; then - echo "from nodeodm.models import ProcessingNode; ProcessingNode.objects.update_or_create(hostname='node-odm-1', defaults={'hostname': 'node-odm-1', 'port': 3000})" | python manage.py shell +if [[ "$WO_DEFAULT_NODES" > 0 ]]; then + echo -e "from nodeodm.models import ProcessingNode\nfor node_index in map(str, range(1, $WO_DEFAULT_NODES + 1)):\n\t ProcessingNode.objects.update_or_create(hostname='webodm_node-odm_' + node_index, defaults={'hostname': 'webodm_node-odm_' + node_index, 'port': 3000})" | python manage.py shell fi if [[ "$WO_CREATE_MICMAC_PNODE" = "YES" ]]; then diff --git a/webodm.sh b/webodm.sh index 12fa17af..6700482a 100755 --- a/webodm.sh +++ b/webodm.sh @@ -18,7 +18,7 @@ if [[ $platform = "Windows" ]]; then export COMPOSE_CONVERT_WINDOWS_PATHS=1 fi -load_default_node=true +default_nodes=1 dev_mode=false # Load default values @@ -87,7 +87,8 @@ case $key in shift # past value ;; --no-default-node) - load_default_node=false + default_nodes=0 + export WO_DEFAULT_NODES=0 shift # past argument ;; --with-micmac) @@ -98,6 +99,12 @@ case $key in detached=true shift # past argument ;; + --default-nodes) + default_nodes="$2" + export WO_DEFAULT_NODES="$2" + shift # past argument + shift # past value + ;; *) # unknown option POSITIONAL+=("$1") # save it in an array for later shift # past argument @@ -125,7 +132,8 @@ usage(){ echo " --port Set the port that WebODM should bind to (default: $DEFAULT_PORT)" echo " --hostname Set the hostname that WebODM will be accessible from (default: $DEFAULT_HOST)" echo " --media-dir Path where processing results will be stored to (default: $DEFAULT_MEDIA_DIR (docker named volume))" - echo " --no-default-node Do not create a default NodeODM node attached to WebODM on startup (default: disabled)" + echo " --no-default-node Do not create a default NodeODM node attached to WebODM on startup (default: disabled). DEPRECATED: please use the argument 'default-nodes'" + echo " --default-nodes The amount of default NodeODM nodes attached to WebODM on startup (default: 1)" echo " --with-micmac Create a NodeMICMAC node attached to WebODM on startup. Experimental! (default: disabled)" echo " --ssl Enable SSL and automatically request and install a certificate from letsencrypt.org. (default: $DEFAULT_SSL)" echo " --ssl-key Manually specify a path to the private key file (.pem) to use with nginx to enable SSL (default: None)" @@ -199,7 +207,7 @@ start(){ command="docker-compose -f docker-compose.yml" - if [[ $load_default_node = true ]]; then + if [[ $default_nodes > 0 ]]; then command+=" -f docker-compose.nodeodm.yml" fi @@ -255,6 +263,10 @@ start(){ command+=" -d" fi + if [[ $default_nodes > 0 ]]; then + command+=" --scale node-odm=$default_nodes" + fi + run "$command" } @@ -338,7 +350,7 @@ elif [[ $1 = "update" ]]; then command="docker-compose -f docker-compose.yml" - if [[ $load_default_node = true ]]; then + if [[ $default_nodes > 0 ]]; then command+=" -f docker-compose.nodeodm.yml" fi