diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml
index 02db741..35ac53d 100644
--- a/.github/workflows/pytest.yml
+++ b/.github/workflows/pytest.yml
@@ -12,6 +12,10 @@ jobs:
matrix:
python-version: [3.9, '3.10', '3.11', '3.12']
runs-on: ubuntu-latest
+ env:
+ PYTHON_VERSION: ${{ matrix.python-version }}
+ OS: ${{ matrix.os }}
+
steps:
- name: Python Setup
uses: actions/setup-python@v2
@@ -20,16 +24,35 @@ jobs:
architecture: x64
- name: Checkout Source
uses: actions/checkout@v2
- - name: Install Dependencies
+ - name: Setup Conda Environment
+ uses: conda-incubator/setup-miniconda@v3
+ with:
+ miniforge-version: latest
+ python-version: ${{ matrix.python-version }}
+ activate-environment: test-environment
+ channels: conda-forge
+ conda-remove-defaults: true
+ channel-priority: strict
+ - name: Set cache environment variables
+ shell: bash -l {0}
run: |
- pip install --upgrade pip
- pip install -r requirements.txt
- pip install pytest-timeout
- pip install pytest-cov
+ echo "DATE=$(date +'%Y%m%d')" >> $GITHUB_ENV
+ CONDA_PREFIX=$(python -c "import sys; print(sys.prefix)")
+ echo "CONDA_PREFIX=$CONDA_PREFIX" >> $GITHUB_ENV
+ - name: Update environment
+ run: mamba env update -n test-environment -f continuous_integration/environment.yaml
+ if: steps.cache.outputs.cache-hit != 'true'
+
+ - name: Install mapgen
+ shell: bash -l {0}
+ run: |
+ python -m pip install --no-deps -e .;
- name: Run Tests
- run: python -m pytest -v --cov=./ --cov-report=xml --timeout=60
+ shell: bash -l {0}
+ run: |
+ pytest -v --cov=./ --cov-report=xml --timeout=60
- name: Upload to Codecov
- uses: codecov/codecov-action@v2
+ uses: codecov/codecov-action@v4
with:
- fail_ci_if_error: true
- token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos
\ No newline at end of file
+ file: ./coverage.xml
+ token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos
diff --git a/continuous_integration/environment.yaml b/continuous_integration/environment.yaml
new file mode 100644
index 0000000..3c4598c
--- /dev/null
+++ b/continuous_integration/environment.yaml
@@ -0,0 +1,28 @@
+name: test-environment
+channels:
+ - conda-forge
+dependencies:
+ - jinja2
+ - pyyaml
+ - pytest-mock
+ - uvicorn
+ - requests
+ - boto3
+ - rasterio
+ - satpy
+ - mapserver
+ - gdal
+ - libgdal
+ - cmocean
+ - lxml
+ - cartopy
+ - metpy
+ - pandas
+ - pip
+ - pip:
+ - pytest-lazy-fixtures
+ - pytest-timeout
+ - pytest
+ - pytest-cov
+ - WebTest
+
\ No newline at end of file
diff --git a/favicon.ico b/favicon.ico
new file mode 100644
index 0000000..0a6d376
Binary files /dev/null and b/favicon.ico differ
diff --git a/mapgen/modules/helpers.py b/mapgen/modules/helpers.py
index da2418e..28b6f7c 100644
--- a/mapgen/modules/helpers.py
+++ b/mapgen/modules/helpers.py
@@ -160,6 +160,7 @@ def handle_request(map_object, full_request):
logger.debug("STYLES not in the request. Nothing to reset.")
pass
try:
+ logger.debug(f"PWD {os.getcwd()}")
map_object.OWSDispatch( ows_req )
except Exception as e:
logger.error(f"status_code=500, mapscript fails to parse query parameters: {str(full_request)}, with error: {str(e)}")
diff --git a/robots.txt b/robots.txt
new file mode 100644
index 0000000..1f53798
--- /dev/null
+++ b/robots.txt
@@ -0,0 +1,2 @@
+User-agent: *
+Disallow: /
diff --git a/tests/test_arome_arctic.py b/tests/test_arome_arctic.py
index 96392cf..15fc795 100644
--- a/tests/test_arome_arctic.py
+++ b/tests/test_arome_arctic.py
@@ -31,12 +31,14 @@ def _create_arome_arctic_dataset_from_orig_data_without_reference_time():
ds_trimmed.to_netcdf("test_arome_arctic_without_forecast_time_20241111T06Z.nc")
@patch('mapgen.modules.get_quicklook.find_config_for_this_netcdf')
-def test_read_dataset(mock_read_config, tmpdir, caplog):
+@patch('mapgen.modules.helpers._find_summary_from_csw')
+def test_read_dataset(mock_csw, mock_read_config, tmpdir, caplog):
"""Test reading the dataset"""
netcdf_path = "tests/data/test_arome_arctic.nc"
query_string = ""
http_host = "localhost"
url_scheme = "http"
+ mock_csw.return_value = "TEST_CSW"
mock_read_config.return_value = {'pattern': '^(.*data/test_arome_arctic.nc)$',
'base_netcdf_directory': '.',
'module': 'mapgen.modules.arome_arctic_quicklook',
@@ -63,12 +65,14 @@ def test_read_dataset(mock_read_config, tmpdir, caplog):
tmpdir.remove()
@patch('mapgen.modules.get_quicklook.find_config_for_this_netcdf')
-def test_get_quicklook_arome_arctic_no_reference_time(mock_read_config, tmpdir, caplog):
+@patch('mapgen.modules.helpers._find_summary_from_csw')
+def test_get_quicklook_arome_arctic_no_reference_time(mock_csw, mock_read_config, tmpdir, caplog):
"""Test for a none existing netcdf file"""
netcdf_path = "tests/data/test_arome_arctic_without_forecast_time_20241111T06Z.nc"
query_string = ""
http_host = "localhost"
url_scheme = "http"
+ mock_csw.return_value = "TEST CSW"
mock_read_config.return_value = {'pattern': '^(.*data/test_arome_arctic_without_forecast_time_(\d{8}T\d{2})Z.nc)$',
'base_netcdf_directory': '.',
'module': 'mapgen.modules.arome_arctic_quicklook',
@@ -133,7 +137,8 @@ def test_read_dataset_base_path_missing_base(mock_read_config, tmpdir):
tmpdir.remove()
@patch('mapgen.modules.get_quicklook.find_config_for_this_netcdf')
-def test_read_dataset_request_getmap(mock_read_config, tmpdir, caplog):
+@patch('mapgen.modules.helpers._find_summary_from_csw')
+def test_read_dataset_request_getmap(mock_csw, mock_read_config, tmpdir, caplog):
"""Test reading the dataset"""
netcdf_path = "tests/data/test_arome_arctic.nc"
query_string = ("?&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&LAYERS=air_temperature_2m&WIDTH=767&HEIGHT=880&CRS=EPSG%3A3857&"
@@ -141,8 +146,9 @@ def test_read_dataset_request_getmap(mock_read_config, tmpdir, caplog):
"TRANSPARENT=TRUE&&TIME=2024-11-11T07%3A00%3A00Z")
http_host = "localhost"
url_scheme = "http"
+ mock_csw.return_value = "TEST CSW"
mock_read_config.return_value = {'pattern': '^(.*data/test_arome_arctic.nc)$',
- 'base_netcdf_directory': '.',
+ 'base_netcdf_directory': os.getcwd(),
'module': 'mapgen.modules.arome_arctic_quicklook',
'module_function': 'arome_arctic_quicklook',
'mapfile_template': os.path.join(tmpdir, 'test.map'),
@@ -171,7 +177,8 @@ def test_read_dataset_request_getmap(mock_read_config, tmpdir, caplog):
tmpdir.remove()
@patch('mapgen.modules.get_quicklook.find_config_for_this_netcdf')
-def test_read_dataset_request_getmap_contour_style(mock_read_config, tmpdir, caplog):
+@patch('mapgen.modules.helpers._find_summary_from_csw')
+def test_read_dataset_request_getmap_contour_style(mock_csw, mock_read_config, tmpdir, caplog):
"""Test reading the dataset"""
netcdf_path = "tests/data/test_arome_arctic.nc"
query_string = ("?&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&LAYERS=air_temperature_2m&WIDTH=767&HEIGHT=880&CRS=EPSG%3A3857&"
@@ -179,6 +186,7 @@ def test_read_dataset_request_getmap_contour_style(mock_read_config, tmpdir, cap
"TRANSPARENT=TRUE&&TIME=2024-11-11T07%3A00%3A00Z")
http_host = "localhost"
url_scheme = "http"
+ mock_csw.return_value = "TEST CSW"
mock_read_config.return_value = {'pattern': '^(.*data/test_arome_arctic.nc)$',
'base_netcdf_directory': '.',
'module': 'mapgen.modules.arome_arctic_quicklook',
@@ -199,7 +207,8 @@ def test_read_dataset_request_getmap_contour_style(mock_read_config, tmpdir, cap
assert "STYLES: contour" in caplog.text
@patch('mapgen.modules.get_quicklook.find_config_for_this_netcdf')
-def test_read_dataset_request_getmap_vector_barbs(mock_read_config, tmpdir, caplog):
+@patch('mapgen.modules.helpers._find_summary_from_csw')
+def test_read_dataset_request_getmap_vector_barbs(mock_csw, mock_read_config, tmpdir, caplog):
"""Test reading the dataset"""
netcdf_path = "tests/data/test_arome_arctic.nc"
query_string = ("?&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&LAYERS=wind_10m_vector&WIDTH=767&HEIGHT=880&CRS=EPSG%3A3857&"
@@ -207,6 +216,7 @@ def test_read_dataset_request_getmap_vector_barbs(mock_read_config, tmpdir, capl
"FORMAT=image/png&TRANSPARENT=TRUE&&TIME=2024-11-11T07%3A00%3A00Z&DIM_SPACING=32&DIM_COLOUR=light-green")
http_host = "localhost"
url_scheme = "http"
+ mock_csw.return_value = "TEST CSW"
mock_read_config.return_value = {'pattern': '^(.*data/test_arome_arctic.nc)$',
'base_netcdf_directory': '.',
'module': 'mapgen.modules.arome_arctic_quicklook',
@@ -225,7 +235,8 @@ def test_read_dataset_request_getmap_vector_barbs(mock_read_config, tmpdir, capl
assert 'VECTOR wind_10m_vector x_wind_10m y_wind_10m' in caplog.text
@patch('mapgen.modules.get_quicklook.find_config_for_this_netcdf')
-def test_read_dataset_request_getmap_vector_vector(mock_read_config, tmpdir, caplog):
+@patch('mapgen.modules.helpers._find_summary_from_csw')
+def test_read_dataset_request_getmap_vector_vector(mock_csw, mock_read_config, tmpdir, caplog):
"""Test reading the dataset"""
netcdf_path = "tests/data/test_arome_arctic.nc"
query_string = ("?&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&LAYERS=wind_10m_vector&WIDTH=767&HEIGHT=880&CRS=EPSG%3A3857&"
@@ -233,6 +244,7 @@ def test_read_dataset_request_getmap_vector_vector(mock_read_config, tmpdir, cap
"FORMAT=image/png&TRANSPARENT=TRUE&&TIME=2024-11-11T07%3A00%3A00Z&DIM_SPACING=32&DIM_COLOUR=light-green")
http_host = "localhost"
url_scheme = "http"
+ mock_csw.return_value = "TEST CSW"
mock_read_config.return_value = {'pattern': '^(.*data/test_arome_arctic.nc)$',
'base_netcdf_directory': '.',
'module': 'mapgen.modules.arome_arctic_quicklook',
diff --git a/tests/test_wsgi_app.py b/tests/test_wsgi_app.py
index 5bf82d3..90cb919 100644
--- a/tests/test_wsgi_app.py
+++ b/tests/test_wsgi_app.py
@@ -82,10 +82,11 @@ def test_options():
assert res.status == '200 OK'
assert res.body == b""
-def test_get_quicklook_test1():
+def test_get_quicklook_test1(caplog):
"""Test for a none existing netcdf file"""
test_app = TestApp(app)
+ caplog.set_level(logging.DEBUG)
res = test_app.get('/api/get_quicklook/test1.nc', status='*')
sys.stderr.write(res.status)
print(res.status)
@@ -108,7 +109,8 @@ def test_get_quicklook_satpy_ordinary(rasterio_open, generate_satpy_geotiff):
url_scheme = "http"
response_code, result, content_type = get_quicklook(netcdf_path, query_string, http_host, url_scheme, products=[])
assert response_code == '200 OK'
- expected_result = b'\n\n WMS\n WMS senda fastapi\n \n \n \n 4096\n 4096\n\n\n\n \n \n text/xml\n \n \n \n \n \n \n \n \n image/png\n image/jpeg\n image/png; mode=8bit\n image/vnd.jpeg-png\n image/vnd.jpeg-png8\n application/x-pdf\n image/svg+xml\n image/tiff\n application/vnd.mapbox-vector-tile\n application/x-protobuf\n application/json\n \n \n \n \n \n \n \n \n text/plain\n application/vnd.ogc.gml\n \n \n \n \n \n \n \n \n text/xml\n \n \n \n \n \n \n \n \n image/png\n image/jpeg\n image/png; mode=8bit\n image/vnd.jpeg-png\n image/vnd.jpeg-png8\n \n \n \n \n \n \n \n \n text/xml\n \n \n \n \n \n \n \n \n \n XML\n INIMAGE\n BLANK\n \n \n \n MS\n WMS senda fastapi\n MS\n EPSG:3857\n EPSG:3978\n EPSG:4269\n EPSG:4326\n EPSG:25832\n EPSG:25833\n EPSG:25835\n EPSG:32632\n EPSG:32633\n EPSG:32635\n EPSG:32661\n \n -90.000000\n 90.000000\n -35.000000\n 145.000000\n \n \n hr_overview\n hr_overview\n EPSG:4326\n \n 1.000000\n 3.000000\n 2.000000\n 4.000000\n \n \n 2024-01-17T14:47:43Z/2024-01-17T14:47:43Z\n \n text/xml\n \n \n \n \n\n'
+ expected_result = b'\n\n WMS\n WMS senda fastapi\n \n \n \n 4096\n 4096\n\n\n\n \n \n text/xml\n \n \n \n \n \n \n \n \n image/png\n image/jpeg\n image/png; mode=8bit\n image/vnd.jpeg-png\n image/vnd.jpeg-png8\n application/x-pdf\n image/svg+xml\n image/tiff\n application/vnd.mapbox-vector-tile\n application/x-protobuf\n application/json\n \n \n \n \n \n \n \n \n text/plain\n application/vnd.ogc.gml\n \n \n \n \n \n \n \n \n text/xml\n \n \n \n \n \n \n \n \n image/png\n image/jpeg\n image/png; mode=8bit\n image/vnd.jpeg-png\n image/vnd.jpeg-png8\n \n \n \n \n \n \n \n \n text/xml\n \n \n \n \n \n \n \n \n \n XML\n INIMAGE\n BLANK\n \n \n \n MS\n WMS senda fastapi\n MS\n EPSG:3857\n EPSG:3978\n EPSG:4269\n EPSG:4326\n EPSG:25832\n EPSG:25833\n EPSG:25835\n EPSG:32632\n EPSG:32633\n EPSG:32635\n EPSG:32661\n \n -90.000000\n 90.000000\n -35.000000\n 145.000000\n \n \n hr_overview\n hr_overview\n \n 1.000000\n 3.000000\n 2.000000\n 4.000000\n \n 2024-01-17T14:47:43Z/2024-01-17T14:47:43Z\n \n text/xml\n \n \n \n \n\n'
+ #\n\n WMS\n WMS senda fastapi\n \n \n \n 4096\n 4096\n\n\n\n \n \n text/xml\n \n \n \n \n \n \n \n \n image/png\n image/jpeg\n image/png; mode=8bit\n image/vnd.jpeg-png\n image/vnd.jpeg-png8\n application/x-pdf\n image/svg+xml\n image/tiff\n application/vnd.mapbox-vector-tile\n application/x-protobuf\n application/json\n \n \n \n \n \n \n \n \n text/plain\n application/vnd.ogc.gml\n \n \n \n \n \n \n \n \n text/xml\n \n \n \n \n \n \n \n \n image/png\n image/jpeg\n image/png; mode=8bit\n image/vnd.jpeg-png\n image/vnd.jpeg-png8\n \n \n \n \n \n \n \n \n text/xml\n \n \n \n \n \n \n \n \n \n XML\n INIMAGE\n BLANK\n \n \n \n MS\n WMS senda fastapi\n MS\n EPSG:3857\n EPSG:3978\n EPSG:4269\n EPSG:4326\n EPSG:25832\n EPSG:25833\n EPSG:25835\n EPSG:32632\n EPSG:32633\n EPSG:32635\n EPSG:32661\n \n -90.000000\n 90.000000\n -35.000000\n 145.000000\n \n \n hr_overview\n hr_overview\n EPSG:4326\n \n 1.000000\n 3.000000\n 2.000000\n 4.000000\n \n \n 2024-01-17T14:47:43Z/2024-01-17T14:47:43Z\n \n text/xml\n \n \n \n \n\n'
assert result == expected_result
assert content_type == "text/xml; charset=UTF-8"
@@ -139,7 +141,8 @@ def test_get_quicklook_satpy_ordinary_base(read_config, rasterio_open, generate_
caplog.set_level(logging.DEBUG)
response_code, result, content_type = get_quicklook(netcdf_path, query_string, http_host, url_scheme, products=[])
assert response_code == '200 OK'
- expected_result = b'\n\n WMS\n WMS senda fastapi\n \n \n \n 4096\n 4096\n\n\n\n \n \n text/xml\n \n \n \n \n \n \n \n \n image/png\n image/jpeg\n image/png; mode=8bit\n image/vnd.jpeg-png\n image/vnd.jpeg-png8\n application/x-pdf\n image/svg+xml\n image/tiff\n application/vnd.mapbox-vector-tile\n application/x-protobuf\n application/json\n \n \n \n \n \n \n \n \n text/plain\n application/vnd.ogc.gml\n \n \n \n \n \n \n \n \n text/xml\n \n \n \n \n \n \n \n \n image/png\n image/jpeg\n image/png; mode=8bit\n image/vnd.jpeg-png\n image/vnd.jpeg-png8\n \n \n \n \n \n \n \n \n text/xml\n \n \n \n \n \n \n \n \n \n XML\n INIMAGE\n BLANK\n \n \n \n MS\n WMS senda fastapi\n MS\n EPSG:3857\n EPSG:3978\n EPSG:4269\n EPSG:4326\n EPSG:25832\n EPSG:25833\n EPSG:25835\n EPSG:32632\n EPSG:32633\n EPSG:32635\n EPSG:32661\n \n -90.000000\n 90.000000\n -35.000000\n 145.000000\n \n \n hr_overview\n hr_overview\n EPSG:4326\n \n 1.000000\n 3.000000\n 2.000000\n 4.000000\n \n \n 2024-01-17T14:47:43Z/2024-01-17T14:47:43Z\n \n text/xml\n \n \n \n \n\n'
+ expected_result = b'\n\n WMS\n WMS senda fastapi\n \n \n \n 4096\n 4096\n\n\n\n \n \n text/xml\n \n \n \n \n \n \n \n \n image/png\n image/jpeg\n image/png; mode=8bit\n image/vnd.jpeg-png\n image/vnd.jpeg-png8\n application/x-pdf\n image/svg+xml\n image/tiff\n application/vnd.mapbox-vector-tile\n application/x-protobuf\n application/json\n \n \n \n \n \n \n \n \n text/plain\n application/vnd.ogc.gml\n \n \n \n \n \n \n \n \n text/xml\n \n \n \n \n \n \n \n \n image/png\n image/jpeg\n image/png; mode=8bit\n image/vnd.jpeg-png\n image/vnd.jpeg-png8\n \n \n \n \n \n \n \n \n text/xml\n \n \n \n \n \n \n \n \n \n XML\n INIMAGE\n BLANK\n \n \n \n MS\n WMS senda fastapi\n MS\n EPSG:3857\n EPSG:3978\n EPSG:4269\n EPSG:4326\n EPSG:25832\n EPSG:25833\n EPSG:25835\n EPSG:32632\n EPSG:32633\n EPSG:32635\n EPSG:32661\n \n -90.000000\n 90.000000\n -35.000000\n 145.000000\n \n \n hr_overview\n hr_overview\n \n 1.000000\n 3.000000\n 2.000000\n 4.000000\n \n 2024-01-17T14:47:43Z/2024-01-17T14:47:43Z\n \n text/xml\n \n \n \n \n\n'
+ #\n\n WMS\n WMS senda fastapi\n \n \n \n 4096\n 4096\n\n\n\n \n \n text/xml\n \n \n \n \n \n \n \n \n image/png\n image/jpeg\n image/png; mode=8bit\n image/vnd.jpeg-png\n image/vnd.jpeg-png8\n application/x-pdf\n image/svg+xml\n image/tiff\n application/vnd.mapbox-vector-tile\n application/x-protobuf\n application/json\n \n \n \n \n \n \n \n \n text/plain\n application/vnd.ogc.gml\n \n \n \n \n \n \n \n \n text/xml\n \n \n \n \n \n \n \n \n image/png\n image/jpeg\n image/png; mode=8bit\n image/vnd.jpeg-png\n image/vnd.jpeg-png8\n \n \n \n \n \n \n \n \n text/xml\n \n \n \n \n \n \n \n \n \n XML\n INIMAGE\n BLANK\n \n \n \n MS\n WMS senda fastapi\n MS\n EPSG:3857\n EPSG:3978\n EPSG:4269\n EPSG:4326\n EPSG:25832\n EPSG:25833\n EPSG:25835\n EPSG:32632\n EPSG:32633\n EPSG:32635\n EPSG:32661\n \n -90.000000\n 90.000000\n -35.000000\n 145.000000\n \n \n hr_overview\n hr_overview\n EPSG:4326\n \n 1.000000\n 3.000000\n 2.000000\n 4.000000\n \n \n 2024-01-17T14:47:43Z/2024-01-17T14:47:43Z\n \n text/xml\n \n \n \n \n\n'
assert result == expected_result
assert content_type == "text/xml; charset=UTF-8"
diff --git a/url-path-regexp-patterns.yaml b/url-path-regexp-patterns.yaml
new file mode 100644
index 0000000..ad0d5ec
--- /dev/null
+++ b/url-path-regexp-patterns.yaml
@@ -0,0 +1,114 @@
+---
+ - 'pattern': '^(.*satellite-thredds/polar-swath/\d{4}/\d{2}/\d{2}/)(metopa|metopb|metopc|noaa18|noaa19|noaa20|noaa21|npp|aqua|terra|fy3d)-(avhrr|viirs-mband|modis-1km|mersi2-1k)-(\d{14})-(\d{14})\.nc$'
+ 'base_netcdf_directory': '/lustre/storeB/immutable/archive/projects/remotesensing'
+ 'module': 'mapgen.modules.satellite_satpy_quicklook'
+ 'module_function': 'generate_satpy_quicklook'
+ 'mapfile_template': '/mapfile-templates/mapfile.map'
+ 'map_file_bucket': 's-enda-mapfiles'
+ 'geotiff_bucket': 'geotiff-products-for-senda'
+ 'mapfiles_path': '/tmp'
+ 'geotiff_tmp': '/tmp'
+ 'default_dataset': 'overview'
+ - 'pattern': '^(.*satellite-thredds/polar-swath/\d{4}/\d{2}/\d{2}/)(noaa21|noaa20|npp)-(viirs-iband)-(\d{14})-(\d{14})\.nc$'
+ 'base_netcdf_directory': '/lustre/storeB/immutable/archive/projects/remotesensing'
+ 'module': 'mapgen.modules.satellite_satpy_quicklook'
+ 'module_function': 'generate_satpy_quicklook'
+ 'mapfile_template': '/mapfile-templates/mapfile.map'
+ 'map_file_bucket': 's-enda-mapfiles'
+ 'geotiff_bucket': 'geotiff-products-for-senda-iband'
+ 'mapfiles_path': '/tmp'
+ 'geotiff_tmp': '/tmp'
+ 'default_dataset': 'hr_overview'
+ - 'pattern': '^(.*satellite-thredds/polar-swath/\d{4}/\d{2}/\d{2}/)(noaa20|npp)-(viirs-dnb)-(\d{14})-(\d{14})\.nc$'
+ 'base_netcdf_directory': '/lustre/storeB/immutable/archive/projects/remotesensing'
+ 'module': 'mapgen.modules.satellite_satpy_quicklook'
+ 'module_function': 'generate_satpy_quicklook'
+ 'mapfile_template': '/mapfile-templates/mapfile.map'
+ 'map_file_bucket': 's-enda-mapfiles'
+ 'geotiff_bucket': 'geotiff-products-for-senda-dnb'
+ 'mapfiles_path': '.'
+ 'geotiff_tmp': '.'
+ 'default_dataset': 'adaptive_dnb'
+ - 'pattern': '^(.*satellite-thredds/polar-swath/\d{4}/\d{2}/\d{2}/)(aqua|terra)-(modis-hkm)-(\d{14})-(\d{14})\.nc$'
+ 'base_netcdf_directory': '/lustre/storeB/immutable/archive/projects/remotesensing'
+ 'module': 'mapgen.modules.satellite_satpy_quicklook'
+ 'module_function': 'generate_satpy_quicklook'
+ 'mapfile_template': '/mapfile-templates/mapfile.map'
+ 'map_file_bucket': 's-enda-mapfiles'
+ 'geotiff_bucket': 'geotiff-products-for-senda-modis-hkm'
+ 'mapfiles_path': '.'
+ 'geotiff_tmp': '.'
+ 'default_dataset': 'true_color'
+ - 'pattern': '^(.*satellite-thredds/polar-swath/\d{4}/\d{2}/\d{2}/)(aqua|terra)-(modis-qkm)-(\d{14})-(\d{14})\.nc$'
+ 'module': 'mapgen.modules.satellite_thredds_module'
+ 'mapfile_template': '/mapfile-templates/mapfile.map'
+ 'map_file_bucket': 's-enda-mapfiles'
+ 'geotiff_bucket': 'geotiff-products-for-senda-modis-qkm'
+ 'mapfiles_path': '.'
+ 'geotiff_tmp': '.'
+ 'default_dataset': 'overview_qkm'
+ - 'pattern': '^(.*satellite-thredds/polar-swath/\d{4}/\d{2}/\d{2}/)(fy3d)-(mersi2-qk)-(\d{14})-(\d{14})\.nc$'
+ 'module': 'mapgen.modules.satellite_thredds_module'
+ 'mapfile_template': '/mapfile-templates/mapfile.map'
+ 'map_file_bucket': 's-enda-mapfiles'
+ 'geotiff_bucket': 'geotiff-products-for-senda-mersi2-qk'
+ 'mapfiles_path': '.'
+ 'geotiff_tmp': '.'
+ 'default_dataset': 'overview_qk'
+ - 'pattern': '^(.*arome_arctic_det_2_5km_(\d{8}T\d{2})Z.nc$)'
+ #'base_netcdf_directory': '/lustre/storeB/project/metproduction/products/arome_arctic'
+ 'base_netcdf_directory': '/lustre/storeB/immutable/archive/projects/metproduction/DNMI_AROME_ARCTIC'
+ #'base_netcdf_directory': '/home/trygveas/testdata'
+ 'module': 'mapgen.modules.arome_arctic_quicklook'
+ 'module_function': 'arome_arctic_quicklook'
+ # 'module': 'mapgen.modules.generic_quicklook'
+ # 'module_function': 'generic_quicklook'
+ 'default_dataset': 'air_temperature'
+ 'mapfiles_path': '/tmp'
+ - 'pattern': '^(.*arome_arctic_lagged_12_h_tracking_2_5km_(\d{8}T\d{2})Z.nc$)'
+ 'base_netcdf_directory': '/lustre/storeB/immutable/archive/projects/metproduction/DNMI_AROME_ARCTIC'
+ 'module': 'mapgen.modules.arome_arctic_quicklook'
+ 'module_function': 'arome_arctic_quicklook'
+ 'default_dataset': 'air_temperature'
+ 'mapfiles_path': '/tmp'
+ - 'pattern': '^(.*arome_arctic_lagged_12_h_subset_2_5km_(\d{8}T\d{2})Z.nc$)'
+ 'base_netcdf_directory': '/lustre/storeB/immutable/archive/projects/metproduction/DNMI_AROME_ARCTIC'
+ 'module': 'mapgen.modules.arome_arctic_quicklook'
+ 'module_function': 'arome_arctic_quicklook'
+ 'default_dataset': 'air_temperature'
+ 'mapfiles_path': '/tmp'
+ - 'pattern': '^(.*meps_pl_.*_(\d{8}T\d{2})Z.nc$)'
+ 'base_netcdf_directory': '/lustre/storeB/immutable/archive/projects/metproduction/MEPS'
+ 'module': 'mapgen.modules.generic_quicklook'
+ 'module_function': 'generic_quicklook'
+ 'default_dataset': 'air_temperature'
+ 'mapfiles_path': '/tmp'
+ - 'pattern': '^(.*meps_det_2_5km_(\d{8}T\d{2})Z.ncml$)'
+ 'base_netcdf_directory': '/lustre/storeB/project/metproduction/products/meps'
+ #'base_netcdf_directory': '/home/trygveas/testdata/ncml'
+ 'module': 'mapgen.modules.generic_quicklook'
+ 'module_function': 'generic_quicklook'
+ 'default_dataset': 'air_temperature'
+ 'mapfiles_path': '/tmp'
+ - 'pattern': '^(.*meps_\w{2,3}_\d{2}_(\d{8}T\d{2})Z.nc$)'
+ 'base_netcdf_directory': '/lustre/storeB/immutable/archive/projects/metproduction/MEPS'
+ 'module': 'mapgen.modules.generic_quicklook'
+ 'module_function': 'generic_quicklook'
+ 'mapfiles_path': '/tmp'
+ - 'pattern': '^(.*meps_.*_(\d{8}T\d{2})Z.nc$)'
+ 'base_netcdf_directory': '/lustre/storeB/project/metproduction/products/meps'
+ 'module': 'mapgen.modules.generic_quicklook'
+ 'module_function': 'generic_quicklook'
+ 'mapfiles_path': '/tmp'
+ - 'pattern': '^(.*S1._(IW|EW)_(GRDM|GRDH)_1(SDV|SDH)_.*(AROMEARCTIC|MEPS).nc$)' # usikker her...
+ 'base_netcdf_directory': '/lustre/storeB/project/metproduction/products/satellite_prod/sar_wind/projected'
+ 'module': 'mapgen.modules.generic_quicklook'
+ 'module_function': 'generic_quicklook'
+ 'mapfiles_path': '/tmp'
+ - 'pattern': '^(.*.nc$)'
+ #'base_netcdf_directory': '/lustre/storeB/project/fou/fd/project/sar-doppler/products/sar_doppler/merged'
+ 'base_netcdf_directory': '/lustre/storeB/project/fou/hi/roms_hindcast/barents2500_2010/daily_average'
+ #'base_netcdf_directory': '/home/trygveas/testdata'
+ 'module': 'mapgen.modules.generic_quicklook'
+ 'module_function': 'generic_quicklook'
+ 'mapfiles_path': '/tmp'