EOX GitLab Instance

Skip to content
Snippets Groups Projects
Commit 4b0cabaa authored by Fabian Schindler's avatar Fabian Schindler
Browse files

Merge branch 'cache-native-swift'

parents 6a214b24 84a7797c
No related branches found
No related tags found
No related merge requests found
......@@ -162,25 +162,34 @@ Initialize swarm & stack:
```bash
docker swarm init # initialize swarm
# build images
```
Build images:
```
docker build core/ --cache-from registry.gitlab.eox.at/esa/prism/vs/pvs_core -t registry.gitlab.eox.at/esa/prism/vs/pvs_core
docker build cache/ --cache-from registry.gitlab.eox.at/esa/prism/vs/pvs_cache -t registry.gitlab.eox.at/esa/prism/vs/pvs_cache
docker build preprocessor/ --cache-from registry.gitlab.eox.at/esa/prism/vs/pvs_preprocessor -t registry.gitlab.eox.at/esa/prism/vs/pvs_preprocessor
docker build client/ --cache-from registry.gitlab.eox.at/esa/prism/vs/pvs_client -t registry.gitlab.eox.at/esa/prism/vs/pvs_client
#or
docker login -u {DOCKER_USER} -p {DOCKER_PASSWORD} registry.gitlab.eox.at
docker pull registry.gitlab.eox.at/esa/prism/vs/pvs_core
docker pull registry.gitlab.eox.at/esa/prism/vs/pvs_cache
docker pull registry.gitlab.eox.at/esa/prism/vs/pvs_preprocessor
docker pull registry.gitlab.eox.at/esa/prism/vs/pvs_client
Or pull them from the registry:
```
docker login -u {DOCKER_USER} -p {DOCKER_PASSWORD} registry.gitlab.eox.at
docker pull registry.gitlab.eox.at/esa/prism/vs/pvs_core
docker pull registry.gitlab.eox.at/esa/prism/vs/pvs_cache
docker pull registry.gitlab.eox.at/esa/prism/vs/pvs_preprocessor
docker pull registry.gitlab.eox.at/esa/prism/vs/pvs_client
```
Deploy the stack:
```
docker stack deploy -c docker-compose.vhr18.yml -c docker-compose.vhr18.dev.yml vhr18-pvs # start VHR_IMAGE_2018 stack in dev mode, for example to use local sources
docker stack deploy -c docker-compose.emg.yml -c docker-compose.emg.dev.yml emg-pvs # start Emergency stack in dev mode, for example to use local sources
docker exec -it $(docker ps -qf "name=vhr18-pvs_renderer") /bin/bash
cd /var/www/pvs/dev/pvs_instance
python manage.py runserver 0.0.0.0:8080
```
Tear town stack including data:
```bash
......@@ -191,15 +200,3 @@ docker volume rm vhr18-pvs_traefik-data
docker volume rm vhr18-pvs_cache-db
docker volume rm vhr18-pvs_instance-data
```
Generate mapcache.sqlite
```bash
docker exec -it $(docker ps -qf "name=vhr18-pvs_renderer") python3 /var/www/pvs/dev/pvs_instance/manage.py mapcache sync -f
docker exec -it $(docker ps -qf "name=vhr18-pvs_renderer") mv VHR_IMAGE_2018.sqlite /cache-db/vhr18_mapcache_cache.sqlite
docker exec -it $(docker ps -qf "name=emg-pvs_renderer") python3 /var/www/pvs/dev/pvs_instance/manage.py mapcache sync -f
docker exec -it $(docker ps -qf "name=emg-pvs_renderer") mv Emergency.sqlite /cache-db/emg_mapcache_cache.sqlite
```
......@@ -52,6 +52,7 @@ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "pvs_instance.settings")
django.setup()
from eoxserver.backends import access
from eoxserver.backends import models as backends
from eoxserver.resources.coverages import models
from eoxserver.resources.coverages.registration.product import (
ProductRegistrator
......@@ -104,26 +105,39 @@ def add_mask(product):
)
def get_product_level(product):
def get_product_type_and_level(metadata_item):
with access.vsi_open(metadata_item) as f:
tree = lxml.etree.parse(f)
root = tree.getroot()
try:
metadata_item = product.metadata_items.all()[0]
with access.vsi_open(metadata_item) as f:
tree = lxml.etree.parse(f)
root = tree.getroot()
xp = '/gsc:report/gsc:opt_metadata/gml:metaDataProperty/gsc:EarthObservationMetaData/eop:parentIdentifier/text()'
xp = '//gml:using/eop:EarthObservationEquipment/eop:platform/eop:Platform/eop:shortName/text()'
product_type_name = tree.xpath(xp, namespaces=root.nsmap)[0]
if product_type_name.endswith('Level_1'):
return 'Level_1'
if product_type_name.endswith('Level_3'):
return 'Level_3'
except Exception as e:
logger.warning(
'Failed to determine product type of %s, error was %s'
% (metadata_item.location, e)
)
try:
xp = '//gml:metaDataProperty/gsc:EarthObservationMetaData/eop:parentIdentifier/text()'
parent_identifier = tree.xpath(xp, namespaces=root.nsmap)[0]
print("parent identifier --->", parent_identifier)
if parent_identifier.endswith('Level_1'):
level = 'Level_1'
if parent_identifier.endswith('Level_3'):
level = 'Level_3'
else:
raise Exception('Invalid product type name %s' % product_type_name)
raise Exception('Invalid parent identifier type name %s' % parent_identifier)
except Exception as e:
logger.warning(
'Failed to determine product level for product %s, error was %s'
% (product.identifier, e)
'Failed to determine product level of %s, error was %s'
% (metadata_item.location, e)
)
return product_type_name, level
class RegistrationError(Exception):
pass
......@@ -173,7 +187,10 @@ def registrar(
% objects_prefix
)
product_type = data_package.split("/")[2]
storage = backends.Storage.objects.get(name=upload_container)
metadata_item = models.MetaDataItem(storage=storage, location=metadata_package)
product_type, level = get_product_type_and_level(metadata_item)
product, replaced = ProductRegistrator().register(
metadata_locations=[[upload_container,
......@@ -185,12 +202,12 @@ def registrar(
package_path=None,
overrides={},
)
collection = models.Collection.objects.get(
identifier=collection
)
models.collection_insert_eo_object(collection, product)
level = get_product_level(product)
if level == 'Level_1':
collection_level_1 = models.Collection.objects.get(
identifier="%s_Level_1" % collection
......
......@@ -62,6 +62,7 @@ services:
target: /cache-db
env_file:
- env/emg.env
- env/emg_db.env
- env/emg_obs.env
environment:
INSTANCE_ID: "prism-view-server_cache"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment