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'