From 5e993d86851333ae6d497430f79369a1ebdefc22 Mon Sep 17 00:00:00 2001 From: afabiani Date: Tue, 18 Jun 2019 19:10:51 +0200 Subject: [PATCH 1/5] [Fixes #4545] MapStore2 print button broken with 1.1 client release --- geonode/geoserver/context_processors.py | 1 + requirements.txt | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/geonode/geoserver/context_processors.py b/geonode/geoserver/context_processors.py index 7f4c83793e4..1afe40a45dd 100644 --- a/geonode/geoserver/context_processors.py +++ b/geonode/geoserver/context_processors.py @@ -27,6 +27,7 @@ def geoserver_urls(request): """Global values to pass to templates""" defaults = dict( GEOSERVER_LOCAL_URL=ogc_server_settings.LOCATION, + GEOSERVER_PUBLIC_LOCATION=ogc_server_settings.public_url, GEOSERVER_BASE_URL=ogc_server_settings.public_url, UPLOADER_URL=reverse('data_upload') if getattr( settings, diff --git a/requirements.txt b/requirements.txt index 012a8f8c5c0..4921c496402 100644 --- a/requirements.txt +++ b/requirements.txt @@ -64,8 +64,8 @@ django-basic-authentication-decorator==0.9 # GeoNode org maintained apps. django-geoexplorer==4.0.43 -django-mapstore-adapter==1.0.2 -django-geonode-mapstore-client==1.1 +django-mapstore-adapter==1.0.3 +django-geonode-mapstore-client==1.3.1 geonode-user-messages==0.1.14 geonode-avatar==2.1.8 geonode-announcements==1.0.13 From 239d6c8767bd0957a638961fc8ab2adb8c56e2bb Mon Sep 17 00:00:00 2001 From: afabiani Date: Wed, 19 Jun 2019 17:00:39 +0200 Subject: [PATCH 2/5] - spcgeonode settings tune up --- scripts/spcgeonode/.env | 2 +- scripts/spcgeonode/django/initialize.py | 336 +++++++++++----------- scripts/spcgeonode/docker-compose.yml | 356 ++++++++++++------------ 3 files changed, 349 insertions(+), 345 deletions(-) diff --git a/scripts/spcgeonode/.env b/scripts/spcgeonode/.env index 9a15ad1dd52..bb9273decc9 100644 --- a/scripts/spcgeonode/.env +++ b/scripts/spcgeonode/.env @@ -40,7 +40,7 @@ SECRET_KEY=1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ LETSENCRYPT_MODE=disabled # Choose from https://en.wikipedia.org/wiki/List_of_tz_database_time_zones -TIME_ZONE=Pacific/Fiji +TIME_ZONE=UTC # Whether users should be able to create accounts themselves REGISTRATION_OPEN=True diff --git a/scripts/spcgeonode/django/initialize.py b/scripts/spcgeonode/django/initialize.py index fb0571c0c8c..4443a682797 100644 --- a/scripts/spcgeonode/django/initialize.py +++ b/scripts/spcgeonode/django/initialize.py @@ -1,167 +1,169 @@ -""" -This script initializes Geonode -""" - -######################################################### -# Setting up the context -######################################################### - -import os, requests, json, uuid, django, time -django.setup() - -######################################################### -# Imports -######################################################### - -from django.core.management import call_command -from django.db import connection -from django.db.utils import OperationalError -from requests.exceptions import ConnectionError -from geonode.people.models import Profile -from oauth2_provider.models import Application -from django.conf import settings - -# Getting the secrets -admin_username = os.getenv('ADMIN_USERNAME') -admin_password = os.getenv('ADMIN_PASSWORD') -admin_email = os.getenv('ADMIN_EMAIL') - - -######################################################### -# 1. Waiting for PostgreSQL -######################################################### - -print("-----------------------------------------------------") -print("1. Waiting for PostgreSQL") -for _ in range(60): - try: - connection.ensure_connection() - break - except OperationalError: - time.sleep(1) -else: - connection.ensure_connection() -connection.close() - -######################################################### -# 2. Running the migrations -######################################################### - -print("-----------------------------------------------------") -print("2. Running the migrations") -call_command('migrate', '--noinput') - - -######################################################### -# 3. Creating superuser if it doesn't exist -######################################################### - -print("-----------------------------------------------------") -print("3. Creating/updating superuser") -try: - superuser = Profile.objects.get(username=admin_username) - superuser.set_password(admin_password) - superuser.is_active = True - superuser.email = admin_email - superuser.save() - print('superuser successfully updated') -except Profile.DoesNotExist: - superuser = Profile.objects.create_superuser( - admin_username, - admin_email, - admin_password - ) - print('superuser successfully created') - - -######################################################### -# 4. Create an OAuth2 provider to use authorisations keys -######################################################### - -print("-----------------------------------------------------") -print("4. Create/update an OAuth2 provider to use authorisations keys") -app, created = Application.objects.get_or_create( - pk=1, - name='GeoServer', - client_type='confidential', - authorization_grant_type='authorization-code', - skip_authorization=True -) -redirect_uris = [ - 'http://{}/geoserver'.format(os.getenv('HTTPS_HOST',"") if os.getenv('HTTPS_HOST',"") != "" else os.getenv('HTTP_HOST')), - 'http://{}/geoserver/index.html'.format(os.getenv('HTTPS_HOST',"") if os.getenv('HTTPS_HOST',"") != "" else os.getenv('HTTP_HOST')), -] -app.redirect_uris = "\n".join(redirect_uris) -app.save() -if created: - print('oauth2 provider successfully created') -else: - print('oauth2 provider successfully updated') - - -######################################################### -# 5. Loading fixtures -######################################################### - -print("-----------------------------------------------------") -print("5. Loading fixtures") -call_command('loaddata', 'initial_data') - - -######################################################### -# 6. Running updatemaplayerip -######################################################### - -print("-----------------------------------------------------") -print("6. Running updatemaplayerip") -# call_command('updatelayers') # TODO CRITICAL : this overrides the layer thumbnail of existing layers even if unchanged !!! -call_command('updatemaplayerip') - - -######################################################### -# 7. Collecting static files -######################################################### - -print("-----------------------------------------------------") -print("7. Collecting static files") -call_command('collectstatic', '--noinput', verbosity=0) - -######################################################### -# 8. Waiting for GeoServer -######################################################### - -print("-----------------------------------------------------") -print("8. Waiting for GeoServer") -for _ in range(60*5): - try: - requests.head("http://geoserver:8080/geoserver") - break - except ConnectionError: - time.sleep(1) -else: - requests.head("http://geoserver:8080/geoserver") - -######################################################### -# 9. Securing GeoServer -######################################################### - -print("-----------------------------------------------------") -print("9. Securing GeoServer") - -# Getting the old password -try: - r1 = requests.get('http://geoserver:8080/geoserver/rest/security/masterpw.json', auth=(admin_username, admin_password)) -except requests.exceptions.ConnectionError as e: - print("Unable to connect to GeoServer. Make sure GeoServer is started and accessible.") - exit(1) -r1.raise_for_status() -old_password = json.loads(r1.text)["oldMasterPassword"] - -if old_password=='M(cqp{V1': - print("Randomizing master password") - new_password = uuid.uuid4().hex - data = json.dumps({"oldMasterPassword":old_password,"newMasterPassword":new_password}) - r2 = requests.put('http://geoserver:8080/geoserver/rest/security/masterpw.json', data=data, headers={'Content-Type': 'application/json'}, auth=(admin_username, admin_password)) - r2.raise_for_status() -else: - print("Master password was already changed. No changes made.") +""" +This script initializes Geonode +""" + +######################################################### +# Setting up the context +######################################################### + +import os, requests, json, uuid, django, time +django.setup() + +######################################################### +# Imports +######################################################### + +from django.core.management import call_command +from django.db import connection +from django.db.utils import OperationalError +from requests.exceptions import ConnectionError +from geonode.people.models import Profile +from oauth2_provider.models import Application +from django.conf import settings + +# Getting the secrets +admin_username = os.getenv('ADMIN_USERNAME') +admin_password = os.getenv('ADMIN_PASSWORD') +admin_email = os.getenv('ADMIN_EMAIL') + + +######################################################### +# 1. Waiting for PostgreSQL +######################################################### + +print("-----------------------------------------------------") +print("1. Waiting for PostgreSQL") +for _ in range(60): + try: + connection.ensure_connection() + break + except OperationalError: + time.sleep(1) +else: + connection.ensure_connection() +connection.close() + +######################################################### +# 2. Running the migrations +######################################################### + +print("-----------------------------------------------------") +print("2. Running the migrations") +call_command('migrate', '--noinput') + + +######################################################### +# 3. Creating superuser if it doesn't exist +######################################################### + +print("-----------------------------------------------------") +print("3. Creating/updating superuser") +try: + superuser = Profile.objects.get(username=admin_username) + superuser.set_password(admin_password) + superuser.is_active = True + superuser.email = admin_email + superuser.save() + print('superuser successfully updated') +except Profile.DoesNotExist: + superuser = Profile.objects.create_superuser( + admin_username, + admin_email, + admin_password + ) + print('superuser successfully created') + + +######################################################### +# 4. Create an OAuth2 provider to use authorisations keys +######################################################### + +print("-----------------------------------------------------") +print("4. Create/update an OAuth2 provider to use authorisations keys") +app, created = Application.objects.get_or_create( + pk=1, + name='GeoServer', + client_type='confidential', + authorization_grant_type='authorization-code', + skip_authorization=True +) +_host = os.getenv('HTTPS_HOST',"") if os.getenv('HTTPS_HOST',"") != "" else os.getenv('HTTP_HOST') +_port = os.getenv('HTTPS_PORT') if os.getenv('HTTPS_HOST',"") != "" else os.getenv('HTTP_PORT') +redirect_uris = [ + 'http://{}:{}/geoserver'.format(_host, _port), + 'http://{}:{}/geoserver/index.html'.format(_host, _port), +] +app.redirect_uris = "\n".join(redirect_uris) +app.save() +if created: + print('oauth2 provider successfully created') +else: + print('oauth2 provider successfully updated') + + +######################################################### +# 5. Loading fixtures +######################################################### + +print("-----------------------------------------------------") +print("5. Loading fixtures") +call_command('loaddata', 'initial_data') + + +######################################################### +# 6. Running updatemaplayerip +######################################################### + +print("-----------------------------------------------------") +print("6. Running updatemaplayerip") +# call_command('updatelayers') # TODO CRITICAL : this overrides the layer thumbnail of existing layers even if unchanged !!! +call_command('updatemaplayerip') + + +######################################################### +# 7. Collecting static files +######################################################### + +print("-----------------------------------------------------") +print("7. Collecting static files") +call_command('collectstatic', '--noinput', verbosity=0) + +######################################################### +# 8. Waiting for GeoServer +######################################################### + +print("-----------------------------------------------------") +print("8. Waiting for GeoServer") +for _ in range(60*5): + try: + requests.head("http://geoserver:8080/geoserver") + break + except ConnectionError: + time.sleep(1) +else: + requests.head("http://geoserver:8080/geoserver") + +######################################################### +# 9. Securing GeoServer +######################################################### + +print("-----------------------------------------------------") +print("9. Securing GeoServer") + +# Getting the old password +try: + r1 = requests.get('http://geoserver:8080/geoserver/rest/security/masterpw.json', auth=(admin_username, admin_password)) +except requests.exceptions.ConnectionError as e: + print("Unable to connect to GeoServer. Make sure GeoServer is started and accessible.") + exit(1) +r1.raise_for_status() +old_password = json.loads(r1.text)["oldMasterPassword"] + +if old_password=='M(cqp{V1': + print("Randomizing master password") + new_password = uuid.uuid4().hex + data = json.dumps({"oldMasterPassword":old_password,"newMasterPassword":new_password}) + r2 = requests.put('http://geoserver:8080/geoserver/rest/security/masterpw.json', data=data, headers={'Content-Type': 'application/json'}, auth=(admin_username, admin_password)) + r2.raise_for_status() +else: + print("Master password was already changed. No changes made.") diff --git a/scripts/spcgeonode/docker-compose.yml b/scripts/spcgeonode/docker-compose.yml index 9df0a175338..3559664af0d 100644 --- a/scripts/spcgeonode/docker-compose.yml +++ b/scripts/spcgeonode/docker-compose.yml @@ -1,177 +1,179 @@ -version: '3.4' - -# Common Django template for Geonode, Celery and Celerycam services below -x-common-django: - &default-common-django - image: olivierdalang/spcgeonode:django-latest - build: - context: ../../ - dockerfile: scripts/spcgeonode/django/Dockerfile - environment: - # editable in .env - - HTTPS_HOST=${HTTPS_HOST} - - HTTPS_PORT=${HTTPS_PORT} - - HTTP_HOST=${HTTP_HOST} - - HTTP_PORT=${HTTP_PORT} - - ADMIN_USERNAME=${ADMIN_USERNAME} - - ADMIN_PASSWORD=${ADMIN_PASSWORD} - - ADMIN_EMAIL=${ADMIN_EMAIL} - - GEOSERVER_ADMIN_USER=${ADMIN_USERNAME} - - GEOSERVER_ADMIN_PASSWORD=${ADMIN_PASSWORD} - - REGISTRATION_OPEN=${REGISTRATION_OPEN} - - TIME_ZONE=${TIME_ZONE} - - ALLOWED_HOSTS=['nginx','127.0.0.1','localhost','$HTTPS_HOST','$HTTP_HOST'] - - SECRET_KEY=${SECRET_KEY} - # hardcoded - - DEBUG=False - - DJANGO_SETTINGS_MODULE=geonode.settings - - DATABASE_URL=postgres://postgres:${POSTGRES_PASSWORD}@postgres:5432/postgres - - BROKER_URL=amqp://rabbitmq:5672 - - STATIC_ROOT=/spcgeonode-static/ - - MEDIA_ROOT=/spcgeonode-media/ - - STATIC_URL=/static/ - - MEDIA_URL=/uploaded/ - - GEOSERVER_LOCATION=http://nginx/geoserver/ - - ASYNC_SIGNALS=True - - SESSION_EXPIRED_CONTROL_ENABLED=False - # TODO : we should probably remove this and set Celery to use JSON serialization instead of pickle - - C_FORCE_ROOT=True - # We get an exception after migrations on startup (it seems the monitoring app tries to resolve the geoserver domain name after it's migration, which can happen before oauth migrations on which geoserver startup depends...) - - MONITORING_ENABLED=False - volumes: - - static:/spcgeonode-static/ - - media:/spcgeonode-media/ - restart: on-failure - -services: - - # Our custom django application. It includes Geonode. - django: - << : *default-common-django - healthcheck: - test: "curl --fail --silent --write-out 'HTTP CODE : %{http_code}\n' --output /dev/null http://127.0.0.1:8001/" - interval: 60s - timeout: 10s - retries: 1 - start_period: 60s - entrypoint: ["/spcgeonode/scripts/spcgeonode/django/docker-entrypoint.sh"] - command: "uwsgi --chdir=/spcgeonode --module=geonode.wsgi --socket=:8000 --http=127.0.0.1:8001 --processes=5 --buffer-size=8192" - - # Celery worker that executes celery tasks created by Django. - celery: - << : *default-common-django - entrypoint: [] - command: 'celery worker --app=geonode.celery_app:app -l info -E' - - # Celery beat that triggers scheduled tasks - celerybeat: - << : *default-common-django - entrypoint: [] - command: 'celery beat --app=geonode.celery_app:app --pidfile="/celerybeat.pid" -l info' - - # Celery camera that monitors celery tasks and populate the djcelery django admin interface - celerycam: - << : *default-common-django - entrypoint: [] - command: 'celery events --app=geonode.celery_app:app --pidfile="/celeryev.pid" --camera=django_celery_monitor.camera.Camera --frequency=2.0 -l info' - - # Nginx is serving django static and media files and proxies to django and geonode - nginx: - image: olivierdalang/spcgeonode:nginx-latest - build: ./nginx/ - environment: - - HTTPS_HOST=${HTTPS_HOST} - - HTTP_HOST=${HTTP_HOST} - - LETSENCRYPT_MODE=${LETSENCRYPT_MODE} - - RESOLVER=127.0.0.11 - ports: - - "${HTTP_PORT}:80" - - "${HTTPS_PORT}:443" - volumes: - - static:/spcgeonode-static/ - - media:/spcgeonode-media/ - - certificates:/spcgeonode-certificates/ - restart: on-failure - - # Geoserver backend - geoserver: - image: olivierdalang/spcgeonode:geoserver-latest - build: ./geoserver/ - healthcheck: - test: "curl --fail --silent --write-out 'HTTP CODE : %{http_code}\n' --output /dev/null http://127.0.0.1:8080/geoserver/rest/workspaces/geonode.html" - interval: 60s - timeout: 10s - retries: 1 - start_period: 60s - environment: - - HTTPS_HOST=${HTTPS_HOST} - - HTTPS_PORT=${HTTPS_PORT} - - HTTP_HOST=${HTTP_HOST} - - HTTP_PORT=${HTTP_PORT} - - ADMIN_USERNAME=${ADMIN_USERNAME} - - ADMIN_PASSWORD=${ADMIN_PASSWORD} - - DATABASE_URL=postgres://postgres:${POSTGRES_PASSWORD}@postgres:5432/postgres - volumes: - - geodatadir:/spcgeonode-geodatadir/ - restart: on-failure - - # Gets and installs letsencrypt certificates - letsencrypt: - image: olivierdalang/spcgeonode:letsencrypt-latest - build: ./letsencrypt/ - environment: - - HTTPS_HOST=${HTTPS_HOST} - - HTTP_HOST=${HTTP_HOST} - - ADMIN_EMAIL=${ADMIN_EMAIL} - - LETSENCRYPT_MODE=${LETSENCRYPT_MODE} - volumes: - - certificates:/spcgeonode-certificates/ - restart: on-failure - - pgdumper: - image: olivierdalang/spcgeonode:pgdumper-latest - build: ./pgdumper/ - environment: - - DATABASE_URL=postgres://postgres:${POSTGRES_PASSWORD}@postgres:5432/postgres - volumes: - - pgdumps:/spcgeonode-pgdumps/ - restart: on-failure - - rclone: - image: olivierdalang/spcgeonode:rclone-latest - build: ./rclone/ - environment: - - S3_ACCESS_KEY=${S3_ACCESS_KEY} - - S3_SECRET_KEY=${S3_SECRET_KEY} - - S3_REGION=${S3_REGION} - - S3_BUCKET=${S3_BUCKET} - volumes: - - pgdumps:/spcgeonode-pgdumps/ - - media:/spcgeonode-media/ - - geodatadir:/spcgeonode-geodatadir/ - restart: on-failure - - # PostGIS database. - postgres: - image: mdillon/postgis:9.6-alpine - environment: - - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - volumes: - - database:/var/lib/postgresql/data/ - restart: on-failure - - # Vanilla RabbitMQ service. This is needed by celery - rabbitmq: - image: rabbitmq:3.7-alpine - volumes: - - rabbitmq:/var/lib/rabbitmq - restart: on-failure - -volumes: - static: - media: - database: - geodatadir: - certificates: - pgdumps: - rabbitmq: +version: '3.4' + +# Common Django template for Geonode, Celery and Celerycam services below +x-common-django: + &default-common-django + image: olivierdalang/spcgeonode:django-latest + build: + context: ../../ + dockerfile: scripts/spcgeonode/django/Dockerfile + environment: + # editable in .env + - HTTPS_HOST=${HTTPS_HOST} + - HTTPS_PORT=${HTTPS_PORT} + - HTTP_HOST=${HTTP_HOST} + - HTTP_PORT=${HTTP_PORT} + - ADMIN_USERNAME=${ADMIN_USERNAME} + - ADMIN_PASSWORD=${ADMIN_PASSWORD} + - ADMIN_EMAIL=${ADMIN_EMAIL} + - GEOSERVER_ADMIN_USER=${ADMIN_USERNAME} + - GEOSERVER_ADMIN_PASSWORD=${ADMIN_PASSWORD} + - REGISTRATION_OPEN=${REGISTRATION_OPEN} + - TIME_ZONE=${TIME_ZONE} + - ALLOWED_HOSTS=['nginx','127.0.0.1','localhost','$HTTPS_HOST','$HTTP_HOST'] + - SECRET_KEY=${SECRET_KEY} + # hardcoded + - DEBUG=False + - DJANGO_SETTINGS_MODULE=geonode.settings + - DATABASE_URL=postgres://postgres:${POSTGRES_PASSWORD}@postgres:5432/postgres + - BROKER_URL=amqp://rabbitmq:5672 + - STATIC_ROOT=/spcgeonode-static/ + - MEDIA_ROOT=/spcgeonode-media/ + - STATIC_URL=/static/ + - MEDIA_URL=/uploaded/ + - GEOSERVER_LOCATION=http://nginx/geoserver/ + - ASYNC_SIGNALS=True + - SESSION_EXPIRED_CONTROL_ENABLED=False + - DEFAULT_BACKEND_UPLOADER=geonode.rest + - TIME_ENABLED=False + # TODO : we should probably remove this and set Celery to use JSON serialization instead of pickle + - C_FORCE_ROOT=True + # We get an exception after migrations on startup (it seems the monitoring app tries to resolve the geoserver domain name after it's migration, which can happen before oauth migrations on which geoserver startup depends...) + - MONITORING_ENABLED=False + volumes: + - static:/spcgeonode-static/ + - media:/spcgeonode-media/ + restart: on-failure + +services: + + # Our custom django application. It includes Geonode. + django: + << : *default-common-django + healthcheck: + test: "curl --fail --silent --write-out 'HTTP CODE : %{http_code}\n' --output /dev/null http://127.0.0.1:8001/" + interval: 60s + timeout: 10s + retries: 1 + start_period: 60s + entrypoint: ["/spcgeonode/scripts/spcgeonode/django/docker-entrypoint.sh"] + command: "uwsgi --chdir=/spcgeonode --module=geonode.wsgi --socket=:8000 --http=127.0.0.1:8001 --processes=4 --threads=2 --buffer-size=32768 --max-requests=500" + + # Celery worker that executes celery tasks created by Django. + celery: + << : *default-common-django + entrypoint: [] + command: 'celery worker --app=geonode.celery_app:app -l info -E' + + # Celery beat that triggers scheduled tasks + celerybeat: + << : *default-common-django + entrypoint: [] + command: 'celery beat --app=geonode.celery_app:app --pidfile="/celerybeat.pid" -l info' + + # Celery camera that monitors celery tasks and populate the djcelery django admin interface + celerycam: + << : *default-common-django + entrypoint: [] + command: 'celery events --app=geonode.celery_app:app --pidfile="/celeryev.pid" --camera=django_celery_monitor.camera.Camera --frequency=2.0 -l info' + + # Nginx is serving django static and media files and proxies to django and geonode + nginx: + image: olivierdalang/spcgeonode:nginx-latest + build: ./nginx/ + environment: + - HTTPS_HOST=${HTTPS_HOST} + - HTTP_HOST=${HTTP_HOST} + - LETSENCRYPT_MODE=${LETSENCRYPT_MODE} + - RESOLVER=127.0.0.11 + ports: + - "${HTTP_PORT}:80" + - "${HTTPS_PORT}:443" + volumes: + - static:/spcgeonode-static/ + - media:/spcgeonode-media/ + - certificates:/spcgeonode-certificates/ + restart: on-failure + + # Geoserver backend + geoserver: + image: olivierdalang/spcgeonode:geoserver-latest + build: ./geoserver/ + healthcheck: + test: "curl --fail --silent --write-out 'HTTP CODE : %{http_code}\n' --output /dev/null http://127.0.0.1:8080/geoserver/rest/workspaces/geonode.html" + interval: 60s + timeout: 10s + retries: 1 + start_period: 60s + environment: + - HTTPS_HOST=${HTTPS_HOST} + - HTTPS_PORT=${HTTPS_PORT} + - HTTP_HOST=${HTTP_HOST} + - HTTP_PORT=${HTTP_PORT} + - ADMIN_USERNAME=${ADMIN_USERNAME} + - ADMIN_PASSWORD=${ADMIN_PASSWORD} + - DATABASE_URL=postgres://postgres:${POSTGRES_PASSWORD}@postgres:5432/postgres + volumes: + - geodatadir:/spcgeonode-geodatadir/ + restart: on-failure + + # Gets and installs letsencrypt certificates + letsencrypt: + image: olivierdalang/spcgeonode:letsencrypt-latest + build: ./letsencrypt/ + environment: + - HTTPS_HOST=${HTTPS_HOST} + - HTTP_HOST=${HTTP_HOST} + - ADMIN_EMAIL=${ADMIN_EMAIL} + - LETSENCRYPT_MODE=${LETSENCRYPT_MODE} + volumes: + - certificates:/spcgeonode-certificates/ + restart: on-failure + + pgdumper: + image: olivierdalang/spcgeonode:pgdumper-latest + build: ./pgdumper/ + environment: + - DATABASE_URL=postgres://postgres:${POSTGRES_PASSWORD}@postgres:5432/postgres + volumes: + - pgdumps:/spcgeonode-pgdumps/ + restart: on-failure + + rclone: + image: olivierdalang/spcgeonode:rclone-latest + build: ./rclone/ + environment: + - S3_ACCESS_KEY=${S3_ACCESS_KEY} + - S3_SECRET_KEY=${S3_SECRET_KEY} + - S3_REGION=${S3_REGION} + - S3_BUCKET=${S3_BUCKET} + volumes: + - pgdumps:/spcgeonode-pgdumps/ + - media:/spcgeonode-media/ + - geodatadir:/spcgeonode-geodatadir/ + restart: on-failure + + # PostGIS database. + postgres: + image: mdillon/postgis:9.6-alpine + environment: + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + volumes: + - database:/var/lib/postgresql/data/ + restart: on-failure + + # Vanilla RabbitMQ service. This is needed by celery + rabbitmq: + image: rabbitmq:3.7-alpine + volumes: + - rabbitmq:/var/lib/rabbitmq + restart: on-failure + +volumes: + static: + media: + database: + geodatadir: + certificates: + pgdumps: + rabbitmq: From 70838d180cc6532b5807ee43d4f8d0b0d7185605 Mon Sep 17 00:00:00 2001 From: afabiani Date: Thu, 20 Jun 2019 10:22:22 +0200 Subject: [PATCH 3/5] - Travis-selenium tentative fix --- .travis.yml | 238 +++++++++++++------------- requirements.txt | 2 +- scripts/spcgeonode/docker-compose.yml | 4 +- 3 files changed, 121 insertions(+), 123 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3f3cf509e02..dce74c5bcae 100644 --- a/.travis.yml +++ b/.travis.yml @@ -38,125 +38,125 @@ matrix: TEST_RUN_CORE: 'True' MONITORING_ENABLED: 'False' SESSION_EXPIRED_CONTROL_ENABLED: 'True' - - name: "GeoServer-backend Contrib Apps Smoke Tests" - python: 2.7 - virtualenv: - system_site_packages: true - env: - - BACKEND: 'geonode.geoserver' - DOCKER_COMPOSE_VERSION: 1.19.0 - ON_TRAVIS: 'True' - TEST_RUN_INTERNAL_APPS: 'True' - MONITORING_ENABLED: 'False' - SESSION_EXPIRED_CONTROL_ENABLED: 'True' - - name: "GeoServer-backend Integration Tests" - python: 2.7 - virtualenv: - system_site_packages: true - env: - - BACKEND: 'geonode.geoserver' - DOCKER_COMPOSE_VERSION: 1.19.0 - # This is GeoServer server address - GEOSERVER_SERVER_URL: http://localhost:8080/geoserver/ - GEOSERVER_SERVER_PORT: 8080 - ON_TRAVIS: 'True' - TEST_RUN_INTEGRATION: 'True' - TEST_RUN_INTEGRATION_CSW: 'False' - TEST_RUN_INTEGRATION_BDD: 'False' - MONITORING_ENABLED: 'False' - SESSION_EXPIRED_CONTROL_ENABLED: 'True' - CELERY_ALWAYS_EAGER: 'True' - - name: "GeoServer-backend Integration CSW Tests" - python: 2.7 - virtualenv: - system_site_packages: true - env: - - BACKEND: 'geonode.geoserver' - DOCKER_COMPOSE_VERSION: 1.19.0 - # This is GeoServer server address - GEOSERVER_SERVER_URL: http://localhost:8080/geoserver/ - GEOSERVER_SERVER_PORT: 8080 - ON_TRAVIS: 'True' - TEST_RUN_INTEGRATION: 'False' - TEST_RUN_INTEGRATION_CSW: 'True' - TEST_RUN_INTEGRATION_BDD: 'False' - MONITORING_ENABLED: 'False' - SESSION_EXPIRED_CONTROL_ENABLED: 'True' - CELERY_ALWAYS_EAGER: 'True' - - name: "GeoServer-backend Integration BDD Tests" - python: 2.7 - virtualenv: - system_site_packages: true - env: - - BACKEND: 'geonode.geoserver' - DOCKER_COMPOSE_VERSION: 1.19.0 - # This is GeoServer server address - GEOSERVER_SERVER_URL: http://localhost:8080/geoserver/ - GEOSERVER_SERVER_PORT: 8080 - ON_TRAVIS: 'True' - TEST_RUN_INTEGRATION: 'False' - TEST_RUN_INTEGRATION_CSW: 'False' - TEST_RUN_INTEGRATION_BDD: 'True' - MONITORING_ENABLED: 'False' - SESSION_EXPIRED_CONTROL_ENABLED: 'True' - CELERY_ALWAYS_EAGER: 'True' - - name: "QGis Server-backend Core Modules Smoke Tests" - python: 2.7 - virtualenv: - system_site_packages: true - env: - - BACKEND: 'geonode.qgis_server' - DJANGO_SETTINGS_MODULE: 'geonode.local_settings' - DOCKER_COMPOSE_VERSION: 1.19.0 - # This is qgis server address - QGIS_SERVER_URL: http://localhost:9000/ - # This is the location of docker network bridge - # So QGIS server can access this address - SITEURL: http://localhost:8000/ - QGIS_SERVER_PORT: 9000 - ON_TRAVIS: 'True' - TEST_RUN_CORE: 'True' - MONITORING_ENABLED: 'False' - SESSION_EXPIRED_CONTROL_ENABLED: 'True' - CELERY_ALWAYS_EAGER: 'True' - - name: "QGis Server-backend Contrib Apps Smoke Tests" - python: 2.7 - virtualenv: - system_site_packages: true - env: - - BACKEND: 'geonode.qgis_server' - DJANGO_SETTINGS_MODULE: 'geonode.local_settings' - DOCKER_COMPOSE_VERSION: 1.19.0 - # This is qgis server address - QGIS_SERVER_URL: http://localhost:9000/ - # This is the location of docker network bridge - # So QGIS server can access this address - SITEURL: http://localhost:8000/ - QGIS_SERVER_PORT: 9000 - ON_TRAVIS: 'True' - TEST_RUN_INTERNAL_APPS: 'True' - MONITORING_ENABLED: 'False' - SESSION_EXPIRED_CONTROL_ENABLED: 'True' - CELERY_ALWAYS_EAGER: 'True' - - name: "QGis Server-backend Integration Tests" - python: 2.7 - virtualenv: - system_site_packages: true - env: - - BACKEND: 'geonode.qgis_server' - DJANGO_SETTINGS_MODULE: 'geonode.local_settings' - DOCKER_COMPOSE_VERSION: 1.19.0 - # This is qgis server address - QGIS_SERVER_URL: http://localhost:9000/ - # This is the location of docker network bridge - # So QGIS server can access this address - SITEURL: http://localhost:8000/ - QGIS_SERVER_PORT: 9000 - ON_TRAVIS: 'True' - TEST_RUN_INTEGRATION: 'True' - MONITORING_ENABLED: 'False' - SESSION_EXPIRED_CONTROL_ENABLED: 'True' - CELERY_ALWAYS_EAGER: 'True' + # - name: "GeoServer-backend Contrib Apps Smoke Tests" + # python: 2.7 + # virtualenv: + # system_site_packages: true + # env: + # - BACKEND: 'geonode.geoserver' + # DOCKER_COMPOSE_VERSION: 1.19.0 + # ON_TRAVIS: 'True' + # TEST_RUN_INTERNAL_APPS: 'True' + # MONITORING_ENABLED: 'False' + # SESSION_EXPIRED_CONTROL_ENABLED: 'True' + # - name: "GeoServer-backend Integration Tests" + # python: 2.7 + # virtualenv: + # system_site_packages: true + # env: + # - BACKEND: 'geonode.geoserver' + # DOCKER_COMPOSE_VERSION: 1.19.0 + # # This is GeoServer server address + # GEOSERVER_SERVER_URL: http://localhost:8080/geoserver/ + # GEOSERVER_SERVER_PORT: 8080 + # ON_TRAVIS: 'True' + # TEST_RUN_INTEGRATION: 'True' + # TEST_RUN_INTEGRATION_CSW: 'False' + # TEST_RUN_INTEGRATION_BDD: 'False' + # MONITORING_ENABLED: 'False' + # SESSION_EXPIRED_CONTROL_ENABLED: 'True' + # CELERY_ALWAYS_EAGER: 'True' + # - name: "GeoServer-backend Integration CSW Tests" + # python: 2.7 + # virtualenv: + # system_site_packages: true + # env: + # - BACKEND: 'geonode.geoserver' + # DOCKER_COMPOSE_VERSION: 1.19.0 + # # This is GeoServer server address + # GEOSERVER_SERVER_URL: http://localhost:8080/geoserver/ + # GEOSERVER_SERVER_PORT: 8080 + # ON_TRAVIS: 'True' + # TEST_RUN_INTEGRATION: 'False' + # TEST_RUN_INTEGRATION_CSW: 'True' + # TEST_RUN_INTEGRATION_BDD: 'False' + # MONITORING_ENABLED: 'False' + # SESSION_EXPIRED_CONTROL_ENABLED: 'True' + # CELERY_ALWAYS_EAGER: 'True' + # - name: "GeoServer-backend Integration BDD Tests" + # python: 2.7 + # virtualenv: + # system_site_packages: true + # env: + # - BACKEND: 'geonode.geoserver' + # DOCKER_COMPOSE_VERSION: 1.19.0 + # # This is GeoServer server address + # GEOSERVER_SERVER_URL: http://localhost:8080/geoserver/ + # GEOSERVER_SERVER_PORT: 8080 + # ON_TRAVIS: 'True' + # TEST_RUN_INTEGRATION: 'False' + # TEST_RUN_INTEGRATION_CSW: 'False' + # TEST_RUN_INTEGRATION_BDD: 'True' + # MONITORING_ENABLED: 'False' + # SESSION_EXPIRED_CONTROL_ENABLED: 'True' + # CELERY_ALWAYS_EAGER: 'True' + # - name: "QGis Server-backend Core Modules Smoke Tests" + # python: 2.7 + # virtualenv: + # system_site_packages: true + # env: + # - BACKEND: 'geonode.qgis_server' + # DJANGO_SETTINGS_MODULE: 'geonode.local_settings' + # DOCKER_COMPOSE_VERSION: 1.19.0 + # # This is qgis server address + # QGIS_SERVER_URL: http://localhost:9000/ + # # This is the location of docker network bridge + # # So QGIS server can access this address + # SITEURL: http://localhost:8000/ + # QGIS_SERVER_PORT: 9000 + # ON_TRAVIS: 'True' + # TEST_RUN_CORE: 'True' + # MONITORING_ENABLED: 'False' + # SESSION_EXPIRED_CONTROL_ENABLED: 'True' + # CELERY_ALWAYS_EAGER: 'True' + # - name: "QGis Server-backend Contrib Apps Smoke Tests" + # python: 2.7 + # virtualenv: + # system_site_packages: true + # env: + # - BACKEND: 'geonode.qgis_server' + # DJANGO_SETTINGS_MODULE: 'geonode.local_settings' + # DOCKER_COMPOSE_VERSION: 1.19.0 + # # This is qgis server address + # QGIS_SERVER_URL: http://localhost:9000/ + # # This is the location of docker network bridge + # # So QGIS server can access this address + # SITEURL: http://localhost:8000/ + # QGIS_SERVER_PORT: 9000 + # ON_TRAVIS: 'True' + # TEST_RUN_INTERNAL_APPS: 'True' + # MONITORING_ENABLED: 'False' + # SESSION_EXPIRED_CONTROL_ENABLED: 'True' + # CELERY_ALWAYS_EAGER: 'True' + # - name: "QGis Server-backend Integration Tests" + # python: 2.7 + # virtualenv: + # system_site_packages: true + # env: + # - BACKEND: 'geonode.qgis_server' + # DJANGO_SETTINGS_MODULE: 'geonode.local_settings' + # DOCKER_COMPOSE_VERSION: 1.19.0 + # # This is qgis server address + # QGIS_SERVER_URL: http://localhost:9000/ + # # This is the location of docker network bridge + # # So QGIS server can access this address + # SITEURL: http://localhost:8000/ + # QGIS_SERVER_PORT: 9000 + # ON_TRAVIS: 'True' + # TEST_RUN_INTEGRATION: 'True' + # MONITORING_ENABLED: 'False' + # SESSION_EXPIRED_CONTROL_ENABLED: 'True' + # CELERY_ALWAYS_EAGER: 'True' - name: "Selenium Integration Tests" python: 3.5 env: diff --git a/requirements.txt b/requirements.txt index fa3fa7af309..9e800ccef05 100644 --- a/requirements.txt +++ b/requirements.txt @@ -64,7 +64,7 @@ django-basic-authentication-decorator==0.9 # GeoNode org maintained apps. django-geoexplorer==4.0.43 -django-mapstore-adapter==1.0.3 +django-mapstore-adapter==1.0.2 django-geonode-mapstore-client==1.3.1 geonode-user-messages==0.1.14 geonode-avatar==2.1.8 diff --git a/scripts/spcgeonode/docker-compose.yml b/scripts/spcgeonode/docker-compose.yml index 3559664af0d..a2429f43f61 100644 --- a/scripts/spcgeonode/docker-compose.yml +++ b/scripts/spcgeonode/docker-compose.yml @@ -34,8 +34,6 @@ x-common-django: - GEOSERVER_LOCATION=http://nginx/geoserver/ - ASYNC_SIGNALS=True - SESSION_EXPIRED_CONTROL_ENABLED=False - - DEFAULT_BACKEND_UPLOADER=geonode.rest - - TIME_ENABLED=False # TODO : we should probably remove this and set Celery to use JSON serialization instead of pickle - C_FORCE_ROOT=True # We get an exception after migrations on startup (it seems the monitoring app tries to resolve the geoserver domain name after it's migration, which can happen before oauth migrations on which geoserver startup depends...) @@ -57,7 +55,7 @@ services: retries: 1 start_period: 60s entrypoint: ["/spcgeonode/scripts/spcgeonode/django/docker-entrypoint.sh"] - command: "uwsgi --chdir=/spcgeonode --module=geonode.wsgi --socket=:8000 --http=127.0.0.1:8001 --processes=4 --threads=2 --buffer-size=32768 --max-requests=500" + command: "uwsgi --chdir=/spcgeonode --module=geonode.wsgi --socket=:8000 --http=127.0.0.1:8001 --processes=5 --buffer-size=32768 --max-requests=500" # Celery worker that executes celery tasks created by Django. celery: From cd733408a60e5d911138861c1cf444bed2d4b332 Mon Sep 17 00:00:00 2001 From: afabiani Date: Thu, 20 Jun 2019 10:47:56 +0200 Subject: [PATCH 4/5] - Travis-selenium tentative fix --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 9e800ccef05..fa3fa7af309 100644 --- a/requirements.txt +++ b/requirements.txt @@ -64,7 +64,7 @@ django-basic-authentication-decorator==0.9 # GeoNode org maintained apps. django-geoexplorer==4.0.43 -django-mapstore-adapter==1.0.2 +django-mapstore-adapter==1.0.3 django-geonode-mapstore-client==1.3.1 geonode-user-messages==0.1.14 geonode-avatar==2.1.8 From bb609b1196e4d06d9762f5a3f01154c4690ee212 Mon Sep 17 00:00:00 2001 From: afabiani Date: Fri, 21 Jun 2019 16:14:28 +0200 Subject: [PATCH 5/5] - Travis-selenium tentative fix --- .travis.yml | 238 +++++++++++++++++++++++------------------------ requirements.txt | 2 +- 2 files changed, 120 insertions(+), 120 deletions(-) diff --git a/.travis.yml b/.travis.yml index dce74c5bcae..3f3cf509e02 100644 --- a/.travis.yml +++ b/.travis.yml @@ -38,125 +38,125 @@ matrix: TEST_RUN_CORE: 'True' MONITORING_ENABLED: 'False' SESSION_EXPIRED_CONTROL_ENABLED: 'True' - # - name: "GeoServer-backend Contrib Apps Smoke Tests" - # python: 2.7 - # virtualenv: - # system_site_packages: true - # env: - # - BACKEND: 'geonode.geoserver' - # DOCKER_COMPOSE_VERSION: 1.19.0 - # ON_TRAVIS: 'True' - # TEST_RUN_INTERNAL_APPS: 'True' - # MONITORING_ENABLED: 'False' - # SESSION_EXPIRED_CONTROL_ENABLED: 'True' - # - name: "GeoServer-backend Integration Tests" - # python: 2.7 - # virtualenv: - # system_site_packages: true - # env: - # - BACKEND: 'geonode.geoserver' - # DOCKER_COMPOSE_VERSION: 1.19.0 - # # This is GeoServer server address - # GEOSERVER_SERVER_URL: http://localhost:8080/geoserver/ - # GEOSERVER_SERVER_PORT: 8080 - # ON_TRAVIS: 'True' - # TEST_RUN_INTEGRATION: 'True' - # TEST_RUN_INTEGRATION_CSW: 'False' - # TEST_RUN_INTEGRATION_BDD: 'False' - # MONITORING_ENABLED: 'False' - # SESSION_EXPIRED_CONTROL_ENABLED: 'True' - # CELERY_ALWAYS_EAGER: 'True' - # - name: "GeoServer-backend Integration CSW Tests" - # python: 2.7 - # virtualenv: - # system_site_packages: true - # env: - # - BACKEND: 'geonode.geoserver' - # DOCKER_COMPOSE_VERSION: 1.19.0 - # # This is GeoServer server address - # GEOSERVER_SERVER_URL: http://localhost:8080/geoserver/ - # GEOSERVER_SERVER_PORT: 8080 - # ON_TRAVIS: 'True' - # TEST_RUN_INTEGRATION: 'False' - # TEST_RUN_INTEGRATION_CSW: 'True' - # TEST_RUN_INTEGRATION_BDD: 'False' - # MONITORING_ENABLED: 'False' - # SESSION_EXPIRED_CONTROL_ENABLED: 'True' - # CELERY_ALWAYS_EAGER: 'True' - # - name: "GeoServer-backend Integration BDD Tests" - # python: 2.7 - # virtualenv: - # system_site_packages: true - # env: - # - BACKEND: 'geonode.geoserver' - # DOCKER_COMPOSE_VERSION: 1.19.0 - # # This is GeoServer server address - # GEOSERVER_SERVER_URL: http://localhost:8080/geoserver/ - # GEOSERVER_SERVER_PORT: 8080 - # ON_TRAVIS: 'True' - # TEST_RUN_INTEGRATION: 'False' - # TEST_RUN_INTEGRATION_CSW: 'False' - # TEST_RUN_INTEGRATION_BDD: 'True' - # MONITORING_ENABLED: 'False' - # SESSION_EXPIRED_CONTROL_ENABLED: 'True' - # CELERY_ALWAYS_EAGER: 'True' - # - name: "QGis Server-backend Core Modules Smoke Tests" - # python: 2.7 - # virtualenv: - # system_site_packages: true - # env: - # - BACKEND: 'geonode.qgis_server' - # DJANGO_SETTINGS_MODULE: 'geonode.local_settings' - # DOCKER_COMPOSE_VERSION: 1.19.0 - # # This is qgis server address - # QGIS_SERVER_URL: http://localhost:9000/ - # # This is the location of docker network bridge - # # So QGIS server can access this address - # SITEURL: http://localhost:8000/ - # QGIS_SERVER_PORT: 9000 - # ON_TRAVIS: 'True' - # TEST_RUN_CORE: 'True' - # MONITORING_ENABLED: 'False' - # SESSION_EXPIRED_CONTROL_ENABLED: 'True' - # CELERY_ALWAYS_EAGER: 'True' - # - name: "QGis Server-backend Contrib Apps Smoke Tests" - # python: 2.7 - # virtualenv: - # system_site_packages: true - # env: - # - BACKEND: 'geonode.qgis_server' - # DJANGO_SETTINGS_MODULE: 'geonode.local_settings' - # DOCKER_COMPOSE_VERSION: 1.19.0 - # # This is qgis server address - # QGIS_SERVER_URL: http://localhost:9000/ - # # This is the location of docker network bridge - # # So QGIS server can access this address - # SITEURL: http://localhost:8000/ - # QGIS_SERVER_PORT: 9000 - # ON_TRAVIS: 'True' - # TEST_RUN_INTERNAL_APPS: 'True' - # MONITORING_ENABLED: 'False' - # SESSION_EXPIRED_CONTROL_ENABLED: 'True' - # CELERY_ALWAYS_EAGER: 'True' - # - name: "QGis Server-backend Integration Tests" - # python: 2.7 - # virtualenv: - # system_site_packages: true - # env: - # - BACKEND: 'geonode.qgis_server' - # DJANGO_SETTINGS_MODULE: 'geonode.local_settings' - # DOCKER_COMPOSE_VERSION: 1.19.0 - # # This is qgis server address - # QGIS_SERVER_URL: http://localhost:9000/ - # # This is the location of docker network bridge - # # So QGIS server can access this address - # SITEURL: http://localhost:8000/ - # QGIS_SERVER_PORT: 9000 - # ON_TRAVIS: 'True' - # TEST_RUN_INTEGRATION: 'True' - # MONITORING_ENABLED: 'False' - # SESSION_EXPIRED_CONTROL_ENABLED: 'True' - # CELERY_ALWAYS_EAGER: 'True' + - name: "GeoServer-backend Contrib Apps Smoke Tests" + python: 2.7 + virtualenv: + system_site_packages: true + env: + - BACKEND: 'geonode.geoserver' + DOCKER_COMPOSE_VERSION: 1.19.0 + ON_TRAVIS: 'True' + TEST_RUN_INTERNAL_APPS: 'True' + MONITORING_ENABLED: 'False' + SESSION_EXPIRED_CONTROL_ENABLED: 'True' + - name: "GeoServer-backend Integration Tests" + python: 2.7 + virtualenv: + system_site_packages: true + env: + - BACKEND: 'geonode.geoserver' + DOCKER_COMPOSE_VERSION: 1.19.0 + # This is GeoServer server address + GEOSERVER_SERVER_URL: http://localhost:8080/geoserver/ + GEOSERVER_SERVER_PORT: 8080 + ON_TRAVIS: 'True' + TEST_RUN_INTEGRATION: 'True' + TEST_RUN_INTEGRATION_CSW: 'False' + TEST_RUN_INTEGRATION_BDD: 'False' + MONITORING_ENABLED: 'False' + SESSION_EXPIRED_CONTROL_ENABLED: 'True' + CELERY_ALWAYS_EAGER: 'True' + - name: "GeoServer-backend Integration CSW Tests" + python: 2.7 + virtualenv: + system_site_packages: true + env: + - BACKEND: 'geonode.geoserver' + DOCKER_COMPOSE_VERSION: 1.19.0 + # This is GeoServer server address + GEOSERVER_SERVER_URL: http://localhost:8080/geoserver/ + GEOSERVER_SERVER_PORT: 8080 + ON_TRAVIS: 'True' + TEST_RUN_INTEGRATION: 'False' + TEST_RUN_INTEGRATION_CSW: 'True' + TEST_RUN_INTEGRATION_BDD: 'False' + MONITORING_ENABLED: 'False' + SESSION_EXPIRED_CONTROL_ENABLED: 'True' + CELERY_ALWAYS_EAGER: 'True' + - name: "GeoServer-backend Integration BDD Tests" + python: 2.7 + virtualenv: + system_site_packages: true + env: + - BACKEND: 'geonode.geoserver' + DOCKER_COMPOSE_VERSION: 1.19.0 + # This is GeoServer server address + GEOSERVER_SERVER_URL: http://localhost:8080/geoserver/ + GEOSERVER_SERVER_PORT: 8080 + ON_TRAVIS: 'True' + TEST_RUN_INTEGRATION: 'False' + TEST_RUN_INTEGRATION_CSW: 'False' + TEST_RUN_INTEGRATION_BDD: 'True' + MONITORING_ENABLED: 'False' + SESSION_EXPIRED_CONTROL_ENABLED: 'True' + CELERY_ALWAYS_EAGER: 'True' + - name: "QGis Server-backend Core Modules Smoke Tests" + python: 2.7 + virtualenv: + system_site_packages: true + env: + - BACKEND: 'geonode.qgis_server' + DJANGO_SETTINGS_MODULE: 'geonode.local_settings' + DOCKER_COMPOSE_VERSION: 1.19.0 + # This is qgis server address + QGIS_SERVER_URL: http://localhost:9000/ + # This is the location of docker network bridge + # So QGIS server can access this address + SITEURL: http://localhost:8000/ + QGIS_SERVER_PORT: 9000 + ON_TRAVIS: 'True' + TEST_RUN_CORE: 'True' + MONITORING_ENABLED: 'False' + SESSION_EXPIRED_CONTROL_ENABLED: 'True' + CELERY_ALWAYS_EAGER: 'True' + - name: "QGis Server-backend Contrib Apps Smoke Tests" + python: 2.7 + virtualenv: + system_site_packages: true + env: + - BACKEND: 'geonode.qgis_server' + DJANGO_SETTINGS_MODULE: 'geonode.local_settings' + DOCKER_COMPOSE_VERSION: 1.19.0 + # This is qgis server address + QGIS_SERVER_URL: http://localhost:9000/ + # This is the location of docker network bridge + # So QGIS server can access this address + SITEURL: http://localhost:8000/ + QGIS_SERVER_PORT: 9000 + ON_TRAVIS: 'True' + TEST_RUN_INTERNAL_APPS: 'True' + MONITORING_ENABLED: 'False' + SESSION_EXPIRED_CONTROL_ENABLED: 'True' + CELERY_ALWAYS_EAGER: 'True' + - name: "QGis Server-backend Integration Tests" + python: 2.7 + virtualenv: + system_site_packages: true + env: + - BACKEND: 'geonode.qgis_server' + DJANGO_SETTINGS_MODULE: 'geonode.local_settings' + DOCKER_COMPOSE_VERSION: 1.19.0 + # This is qgis server address + QGIS_SERVER_URL: http://localhost:9000/ + # This is the location of docker network bridge + # So QGIS server can access this address + SITEURL: http://localhost:8000/ + QGIS_SERVER_PORT: 9000 + ON_TRAVIS: 'True' + TEST_RUN_INTEGRATION: 'True' + MONITORING_ENABLED: 'False' + SESSION_EXPIRED_CONTROL_ENABLED: 'True' + CELERY_ALWAYS_EAGER: 'True' - name: "Selenium Integration Tests" python: 3.5 env: diff --git a/requirements.txt b/requirements.txt index fa3fa7af309..9e800ccef05 100644 --- a/requirements.txt +++ b/requirements.txt @@ -64,7 +64,7 @@ django-basic-authentication-decorator==0.9 # GeoNode org maintained apps. django-geoexplorer==4.0.43 -django-mapstore-adapter==1.0.3 +django-mapstore-adapter==1.0.2 django-geonode-mapstore-client==1.3.1 geonode-user-messages==0.1.14 geonode-avatar==2.1.8