geoservercloud 0.8.12.dev5__tar.gz → 0.8.13.dev1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/PKG-INFO +1 -1
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/test_ogcapi_features.py +117 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/services/restclient.py +21 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/pyproject.toml +1 -1
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/LICENSE +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/README.md +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/.gitignore +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/README.md +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/__init__.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/ci.config.yaml +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/cli.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/compose/ci.compose.yaml +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/compose/example.compose.yaml +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/compose/geodatabase/001_create_schemas.sql +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/config.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/data/sampledata.tgz +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/example.config.yaml +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/__init__.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/conftest.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/resources/__init__.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/resources/i18n/__init__.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/resources/i18n/labels/default_locale/default_value/language_None_expected.png +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/resources/i18n/labels/default_locale/default_value/language__expected.png +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/resources/i18n/labels/default_locale/default_value/language_de_expected.png +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/resources/i18n/labels/default_locale/default_value/language_fr_expected.png +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/resources/i18n/labels/default_locale/default_value/language_it_expected.png +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/resources/i18n/labels/default_locale/no_default_value/language_None_expected.png +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/resources/i18n/labels/default_locale/no_default_value/language__expected.png +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/resources/i18n/labels/default_locale/no_default_value/language_it_expected.png +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/resources/i18n/labels/no_default_locale/default_value/language_None_expected.png +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/resources/i18n/labels/no_default_locale/default_value/language__expected.png +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/resources/i18n/labels/no_default_locale/default_value/language_de_expected.png +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/resources/i18n/labels/no_default_locale/default_value/language_fr_expected.png +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/resources/i18n/labels/no_default_locale/default_value/language_it_expected.png +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/resources/i18n/labels/no_default_locale/no_default_value/language_None_expected.png +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/resources/i18n/labels/no_default_locale/no_default_value/language__expected.png +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/resources/i18n/labels/no_default_locale/no_default_value/language_it_expected.png +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/resources/i18n/localized_labels.sld +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/resources/i18n/localized_no_default.sld +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/resources/i18n/localized_with_default.sld +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/resources/wfs/__init__.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/resources/wfs/wfs_delete_payload.xml +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/resources/wfs/wfs_insert_payload.xml +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/resources/wms/__init__.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/resources/wms/getmap_expected.png +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/test_cascaded_stores.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/test_cog.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/test_datastore.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/test_get_version.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/test_gwc.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/test_i18n.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/test_imagemosaic.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/test_imagemosaic_cog.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/test_installed_fonts.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/test_rest_resource.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/test_s3_credentials_chain.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/test_wfs.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/test_wms.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/test_workspace.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/utils.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/__init__.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/geoservercloud.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/geoservercloudsync.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/gridsets/2056.xml +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/gridsets/21781.xml +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/gridsets/3857.xml +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/__init__.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/abstractlayer.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/common.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/coverage.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/coverages.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/coveragestore.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/datastore.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/datastores.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/featuretype.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/featuretypes.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/gwclayer.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/layer.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/layergroup.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/layergroups.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/resourcedirectory.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/s3blobstore.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/style.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/styles.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/wmslayer.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/wmssettings.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/wmsstore.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/wmtsstore.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/workspace.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/workspaces.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/services/__init__.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/services/owsservice.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/services/restlogger.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/services/restservice.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/templates.py +0 -0
- {geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/utils.py +0 -0
|
@@ -14,6 +14,7 @@ Tests verify compliance with OGC API Features Core specification:
|
|
|
14
14
|
|
|
15
15
|
import json
|
|
16
16
|
from collections.abc import Generator
|
|
17
|
+
from xml.etree import ElementTree
|
|
17
18
|
|
|
18
19
|
import pytest
|
|
19
20
|
from sqlalchemy import Connection
|
|
@@ -21,6 +22,37 @@ from sqlalchemy.sql import text
|
|
|
21
22
|
|
|
22
23
|
from geoservercloud import GeoServerCloud
|
|
23
24
|
|
|
25
|
+
WFS_SETTINGS_PATH = "/rest/services/wfs/settings"
|
|
26
|
+
|
|
27
|
+
PROPERTY_SELECTION_CONFORMANCE = (
|
|
28
|
+
"http://www.opengis.net/spec/ogcapi-features-6/1.0/conf/properties-features"
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
XML_HEADERS = {"Content-Type": "application/xml"}
|
|
32
|
+
|
|
33
|
+
CONFORMANCE_SETTINGS = """
|
|
34
|
+
<wfs>
|
|
35
|
+
<metadata>
|
|
36
|
+
<entry key="ogcapiFeatures">
|
|
37
|
+
<ogcapiFeatures>
|
|
38
|
+
<core>true</core>
|
|
39
|
+
<propertySelection>true</propertySelection>
|
|
40
|
+
</ogcapiFeatures>
|
|
41
|
+
</entry>
|
|
42
|
+
</metadata>
|
|
43
|
+
</wfs>
|
|
44
|
+
"""
|
|
45
|
+
|
|
46
|
+
DEFAULT_CONFORMANCE_SETTINGS = """
|
|
47
|
+
<wfs>
|
|
48
|
+
<metadata>
|
|
49
|
+
<entry key="ogcapiFeatures">
|
|
50
|
+
<ogcapiFeatures/>
|
|
51
|
+
</entry>
|
|
52
|
+
</metadata>
|
|
53
|
+
</wfs>
|
|
54
|
+
"""
|
|
55
|
+
|
|
24
56
|
|
|
25
57
|
@pytest.fixture()
|
|
26
58
|
def ogcapi_workspace() -> str:
|
|
@@ -399,3 +431,88 @@ def test_ogcapi_conformance(ogcapi_workspace: str, geoserver_ogcapi_workspace):
|
|
|
399
431
|
assert any(
|
|
400
432
|
"ogcapi-features" in cc or "features/core" in cc for cc in conformance_classes
|
|
401
433
|
)
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
@pytest.fixture()
|
|
437
|
+
def wfs_ogcapi_conformance(geoserver: GeoServerCloud) -> Generator[None, None, None]:
|
|
438
|
+
"""Leaves the OGC API Features conformance settings back at their defaults."""
|
|
439
|
+
yield
|
|
440
|
+
geoserver.rest_service.rest_client.put(
|
|
441
|
+
f"{WFS_SETTINGS_PATH}.xml",
|
|
442
|
+
headers=XML_HEADERS,
|
|
443
|
+
data=DEFAULT_CONFORMANCE_SETTINGS,
|
|
444
|
+
)
|
|
445
|
+
|
|
446
|
+
|
|
447
|
+
def read_conformance_settings(geoserver: GeoServerCloud) -> ElementTree.Element:
|
|
448
|
+
"""
|
|
449
|
+
Returns the ogcapiFeatures conformance element of the WFS settings, failing if
|
|
450
|
+
the REST API answered with the object rendered as a string instead.
|
|
451
|
+
"""
|
|
452
|
+
response = geoserver.rest_service.rest_client.get(f"{WFS_SETTINGS_PATH}.xml")
|
|
453
|
+
assert response.status_code == 200
|
|
454
|
+
|
|
455
|
+
settings = ElementTree.fromstring(response.content)
|
|
456
|
+
entry = settings.find("./metadata/entry[@key='ogcapiFeatures']")
|
|
457
|
+
assert entry is not None, "the ogcapiFeatures metadata entry is missing"
|
|
458
|
+
assert not (entry.text or "").strip(), (
|
|
459
|
+
"the conformance object was stored as a string instead of an object: "
|
|
460
|
+
f"{entry.text!r}"
|
|
461
|
+
)
|
|
462
|
+
|
|
463
|
+
conformance = entry.find("ogcapiFeatures")
|
|
464
|
+
assert conformance is not None, "the ogcapiFeatures metadata entry has no object"
|
|
465
|
+
return conformance
|
|
466
|
+
|
|
467
|
+
|
|
468
|
+
def test_wfs_settings_rest_roundtrip_preserves_ogcapi_conformance(
|
|
469
|
+
geoserver: GeoServerCloud, wfs_ogcapi_conformance: None
|
|
470
|
+
):
|
|
471
|
+
"""
|
|
472
|
+
Reading the WFS settings and writing the same document back must not replace the OGC API Features conformance
|
|
473
|
+
object with the string returned by its toString(), which later breaks the service with a ClassCastException.
|
|
474
|
+
|
|
475
|
+
See https://github.com/geoserver/geoserver-cloud/issues/872
|
|
476
|
+
"""
|
|
477
|
+
geoserver.rest_service.rest_client.put(
|
|
478
|
+
f"{WFS_SETTINGS_PATH}.xml", headers=XML_HEADERS, data=CONFORMANCE_SETTINGS
|
|
479
|
+
)
|
|
480
|
+
|
|
481
|
+
conformance = read_conformance_settings(geoserver)
|
|
482
|
+
assert conformance.findtext("core") == "true"
|
|
483
|
+
assert conformance.findtext("propertySelection") == "true"
|
|
484
|
+
|
|
485
|
+
# the round trip from the issue: read the settings and write them back unchanged
|
|
486
|
+
settings = geoserver.rest_service.rest_client.get(f"{WFS_SETTINGS_PATH}.xml")
|
|
487
|
+
geoserver.rest_service.rest_client.put(
|
|
488
|
+
f"{WFS_SETTINGS_PATH}.xml", headers=XML_HEADERS, data=settings.content
|
|
489
|
+
)
|
|
490
|
+
|
|
491
|
+
conformance = read_conformance_settings(geoserver)
|
|
492
|
+
assert conformance.findtext("core") == "true"
|
|
493
|
+
assert conformance.findtext("propertySelection") == "true"
|
|
494
|
+
|
|
495
|
+
|
|
496
|
+
def test_ogcapi_conformance_after_wfs_settings_rest_roundtrip(
|
|
497
|
+
geoserver: GeoServerCloud, wfs_ogcapi_conformance: None
|
|
498
|
+
):
|
|
499
|
+
"""
|
|
500
|
+
The OGC API Features service must still answer after the WFS settings went through a REST round trip.
|
|
501
|
+
|
|
502
|
+
See https://github.com/geoserver/geoserver-cloud/issues/872
|
|
503
|
+
"""
|
|
504
|
+
geoserver.rest_service.rest_client.put(
|
|
505
|
+
f"{WFS_SETTINGS_PATH}.xml", headers=XML_HEADERS, data=CONFORMANCE_SETTINGS
|
|
506
|
+
)
|
|
507
|
+
settings = geoserver.rest_service.rest_client.get(f"{WFS_SETTINGS_PATH}.xml")
|
|
508
|
+
geoserver.rest_service.rest_client.put(
|
|
509
|
+
f"{WFS_SETTINGS_PATH}.xml", headers=XML_HEADERS, data=settings.content
|
|
510
|
+
)
|
|
511
|
+
|
|
512
|
+
response = geoserver.rest_service.rest_client.get(
|
|
513
|
+
"/ogc/features/v1/conformance", params={"f": "application/json"}
|
|
514
|
+
)
|
|
515
|
+
assert response.status_code == 200
|
|
516
|
+
|
|
517
|
+
conformance_classes = json.loads(response.content.decode("utf-8"))["conformsTo"]
|
|
518
|
+
assert PROPERTY_SELECTION_CONFORMANCE in conformance_classes
|
{geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/services/restclient.py
RENAMED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import re
|
|
1
2
|
from typing import Any
|
|
2
3
|
|
|
3
4
|
import requests
|
|
@@ -6,6 +7,13 @@ from .restlogger import gs_logger
|
|
|
6
7
|
|
|
7
8
|
TIMEOUT = 120
|
|
8
9
|
|
|
10
|
+
# Depending on the order of the jars in WEB-INF/lib, vanilla GeoServer answers these
|
|
11
|
+
# GWC "not found" errors with 500 instead of 404, keeping GWC's message as the
|
|
12
|
+
# text/plain body.
|
|
13
|
+
GWC_NOT_FOUND_MESSAGE = re.compile(
|
|
14
|
+
r'Unknown layer: .+|Failed to get GridSet\. A GridSet with name ".+" does not exist\.'
|
|
15
|
+
)
|
|
16
|
+
|
|
9
17
|
|
|
10
18
|
class RestClient:
|
|
11
19
|
"""
|
|
@@ -46,6 +54,7 @@ class RestClient:
|
|
|
46
54
|
full_url,
|
|
47
55
|
extra={"response": response},
|
|
48
56
|
)
|
|
57
|
+
self.restore_gwc_not_found_status(response)
|
|
49
58
|
if response.status_code != 404:
|
|
50
59
|
response.raise_for_status()
|
|
51
60
|
return response
|
|
@@ -130,10 +139,22 @@ class RestClient:
|
|
|
130
139
|
full_url,
|
|
131
140
|
extra={"response": response},
|
|
132
141
|
)
|
|
142
|
+
self.restore_gwc_not_found_status(response)
|
|
133
143
|
if response.status_code != 404:
|
|
134
144
|
response.raise_for_status()
|
|
135
145
|
return response
|
|
136
146
|
|
|
147
|
+
def restore_gwc_not_found_status(self, response: requests.Response) -> None:
|
|
148
|
+
if response.status_code != 500:
|
|
149
|
+
return
|
|
150
|
+
if not GWC_NOT_FOUND_MESSAGE.fullmatch(response.text.strip()):
|
|
151
|
+
return
|
|
152
|
+
gs_logger.warning(
|
|
153
|
+
"GeoServer answered a GWC not found error with 500, treating it as 404: %s",
|
|
154
|
+
response.url,
|
|
155
|
+
)
|
|
156
|
+
response.status_code = 404
|
|
157
|
+
|
|
137
158
|
def log_payload(
|
|
138
159
|
self, method: str, json: dict | None, data: bytes | str | None
|
|
139
160
|
) -> None:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "geoservercloud"
|
|
3
|
-
version = "0.8.
|
|
3
|
+
version = "0.8.13.dev1"
|
|
4
4
|
description = "Lightweight Python client to interact with GeoServer Cloud REST API, GeoServer ACL and OGC services"
|
|
5
5
|
authors = ["Camptocamp <info@camptocamp.com>"]
|
|
6
6
|
license = "BSD-2-Clause"
|
|
File without changes
|
|
File without changes
|
{geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/.gitignore
RENAMED
|
File without changes
|
{geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/README.md
RENAMED
|
File without changes
|
{geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/__init__.py
RENAMED
|
File without changes
|
{geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/ci.config.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/config.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoserver_acceptance_tests/tests/utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/geoservercloudsync.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/abstractlayer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/coverages.py
RENAMED
|
File without changes
|
{geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/coveragestore.py
RENAMED
|
File without changes
|
{geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/datastore.py
RENAMED
|
File without changes
|
{geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/datastores.py
RENAMED
|
File without changes
|
{geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/featuretype.py
RENAMED
|
File without changes
|
{geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/featuretypes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/layergroup.py
RENAMED
|
File without changes
|
{geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/layergroups.py
RENAMED
|
File without changes
|
{geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/resourcedirectory.py
RENAMED
|
File without changes
|
{geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/s3blobstore.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/wmssettings.py
RENAMED
|
File without changes
|
|
File without changes
|
{geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/wmtsstore.py
RENAMED
|
File without changes
|
{geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/workspace.py
RENAMED
|
File without changes
|
{geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/models/workspaces.py
RENAMED
|
File without changes
|
{geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/services/__init__.py
RENAMED
|
File without changes
|
{geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/services/owsservice.py
RENAMED
|
File without changes
|
{geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/services/restlogger.py
RENAMED
|
File without changes
|
{geoservercloud-0.8.12.dev5 → geoservercloud-0.8.13.dev1}/geoservercloud/services/restservice.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|