Unreleased (latest)
- No change.
- No change.
6.10.0 (2026-03-17)
Add support for Key-Value Pair (KVP) encoded Process execution using HTTP GET requests on
/processes/{processID}/executionendpoint (resolves #607 and #445).Supported features include:
- Simple literal inputs (strings, numbers, booleans) via direct parameter values
- Complex inputs via URL-encoded JSON objects and arrays
- Input arrays using comma-separated values
- Input by-reference using
{inputID}[href]and{inputID}[type]qualifiers - Bounding box inputs with optional
{inputID}[crs]coordinate reference system - Binary inputs with base64 encoding using
{inputID}[value]and format qualifiers - Output selection using
{outputID}[include] - Output specification with
{outputID}[mediaType],{outputID}[encoding]and{outputID}[schema]qualifiers - Response format control via
response[f]orresponse[format](maps toAcceptheader) - Execution preference control via
response[prefer](maps toPreferheader) - Case-insensitive parameter qualifiers and reserved parameters
- Full OGC API - Processes
kvp-executeconformance class support
The implementation converts KVP parameters to equivalent JSON execution format internally, ensuring consistent behavior with POST-based executions. All existing validation, execution modes, and result formats are supported identically for both GET and POST methods after query parameter parsing.
Add documentation for new KVP execution parameters and functionalities.
Add conformance classes for KVP execution support.
Update
weaver/wps_restapi/colander_extras.pyto allow additional parameter options (style,explode, etc.) defined by OpenAPI. These are employed in this context to support the representation of KVP query parameters.Update
weaver.utils.parse_kvpwith additionaldeep_objectcapability required by KVP execution parameters.Update
swagger-ui@5.32.0scripts to handle rendering of advanced KVP query parameter definitions.Replace generic
PermissiveMappingSchemaemployed under I/Oschemaby the more explicitOASdefinition.
- Fix GET endpoints documenting a
Content-Typeheader although no content body applies to them.
6.9.1 (2026-03-09)
- Add
--inputs-ignore-errorsoption to CLIexecuteoperation and correspondinginputs_ignore_errorsparameter toWeaverClient.execute()method. When enabled, missing or unresolved local file references in input definitions will be skipped with warnings rather than causing immediate failure. By default (when disabled), missing files cause the operation to fail with a detailed error message listing all problematic file references. - Improve CLI
executeoperation error handling for multiple input files. When multiple input JSON/YAML files are provided via multiple-Ioptions, the operation now fails with a clear error message explaining that only a single input file is supported, rather than producing a cryptic attribute error.
- Fix multi-token Vault authentication header parsing to support both single and multiple file access tokens.
The
parse_vault_tokenfunction now handles plain token strings (e.g., from WPS process context) and full header formats (e.g.,token <value>; id=<uuid>), and correctly validates token presence for the requested file UUID. The mismatch detection logic was updated to properly check if the requested file ID exists in the parsed tokens rather than only validating against the first token key (fixes #897).
6.9.0 (2026-03-02)
- Adjust the resolution order priority of CWL
formatfields based on preferred ontologies. The IANA Media-Types will be considered first if they can be directly mapped, followed by OGC-based references that are contextually more relevant and easier to interpret by name, and finally the EDAM ontology that offers some additional references, but is harder to interpret due to its unifiedformat_####naming convention. - Add documentation to provide better guidance about installation, configuration and example references.
- Add
weaver.cwl_no_match_userconfiguration setting to avoid--userparameter on Docker-based CWL execution. This can be desirable when relying on docker rootless mode and/or user namespaces to handle the actual user/group ID mapping. The parameter can also be configured using theWEAVER_CWL_NO_MATCH_USERenvironment variable. - Add
WEAVER_CWL_EUIDandWEAVER_CWL_EGIDenvironment variables to control the CWL execution user/group ID as alternative to corresponding configuration options.
- Fix
cwltoolmapping of output files to staging directory ofpywpswhen multiple nested output directories contain files of matching names leading to conflicting extension errors from flat-list mapping in staging directory. These conflicts are dealt with bycwltoolusing_<index>. However, those led to side-effect errors when Weaver attempts to enforce strict extension validation between the CWL definition and resultformatvalues. A customPathMapperis applied to theRuntimeContextto preserve the original structure of the CWL results and avoid these conflicts entirely. - Fix PyWPS
("server", "sethomedir", "false")configuration to avoid settingHOMEdirectory within the Process worker instance (weaver.processes.wps_package.WpsPackage), which causes docker rootless mode to fail its docker-daemon context resolution due to the modified location. - Fix CWL
euid/geidresolution using0:0which can be desired to let docker rootless mode and/or user namespaces handle the actual user/group ID mapping themselves based on/etc/subuidand/etc/subgid(depends on common-workflow-language/cwltool#2207). - Fix CWL
formatresolution against multiple ontologies (IANA, OGC, EDAM) referring to equivalent media-type definitions to ensure that resolved Job input references match the underlying CWL package execution. - Fix CWL
formatresolution against media-types that support alternative extensions, such as.yamland.yml. These are cross-resolved against their multiple media-type combinations asapplication/yaml(official) and legacyapplication/x-yaml,text/yamlandtext/x-yaml. - Fix ambiguous resolution between
application/netcdfandapplication/x-netcdfmedia-types and their resultingComplexInput/ComplexOutputvalidators depending on Weaver orpywpsbased mapping. The official IANAapplication/netcdfvariant will now be used by default when auto-resolved by file extension to ensure consistency between the validation methods. - Fix CLI
uploadoperation not forwarding thetypemedia-type property extracted from an input definition. This could occur either when invoking the operation directly, or directly fromexecuteoperation which pre-resolved a local file path subject to the Vault upload feature. - Fix CLI
executeoperation not resolving embedded input file references relatively to a specified Job file. If a Job file is provided this way, paths relative to it will be considered for behaviour alignment with CWL. If the files references still cannot be resolved after relative Job path lookup, they will fall back to theCWD, as previously done by the CLI/WeaverClient(fixes #879). - Fix CLI
executeoperation not forwardingformat.mediaType(OLD style) andtype(OGC style) information correctly when parsing input values from a CWL-style Job structure withclassandformatdefinitions (fixes #884). - Fix CLI
executeoperation not properly handling CWL-style Job structures withFilearray values. - Fix missing documentation of the Vault volume mount configuration in the Docker Compose example.
- Fix missing documentation of the CWL+YAML deployment Media-Type support in the OpenAPI schema.
6.8.3 (2026-02-12)
- No change.
- Remove duplicate
Content-Typeheader in response of Job status endpoint. - Pin
cryptography>=46.0.5for security fix.
6.8.2 (2026-02-11)
- Support CLI parsing of CWL
Directoryinput value if provided usingpathwith a remote reference URL. Only remote references are supported since the Vault feature cannot be used to upload multiple files in a directory. - Emit a
WeaverConfigurationWarningifweaver.wps_output_dirandweaver.wps_output_url(or its value resolved fromweaver.wps_output_path) are detected to contain unbalanced trailing slashes. If detected, these erroneous values will be automatically adjusted bymap_wps_output_locationto avoid invalid reference mapping.
- Remove duplicate
Content-Typeheader in response of Job results leading to errors on certain clients/proxies. - Remove embedded
profile="http://www.opengis.net/def/profile/OGC/0/ogc-results"fromContent-Typeheader in response of Job results to avoid header buffer overflows from server deployments. Instead, clients should rely on theLink: rel=profileorContent-Profileheaders to determine if this profile was applied. - Fix CLI using nesting of argument groups deprecated since Python 3.11 and removed in Python 3.14.
- Pin
setuptools<82to resolve itspkg_resourcesdependency still required bypyramid`(relates to Pylons/pyramid#3731 and pypa/setuptools#5007).
6.8.1 (2026-01-09)
- No change.
- Pin
urllib3>=2.6.3for security fix. - Pin
werkzeug>=3.1.5for security fix. - Pin
xmltodict>=1.0.2for security fix.
6.8.0 (2025-12-18)
- Update docker with Python 3.13.
- Add Python 3.13 to CI and project setup. Python 3.14 tentatively added to CI but unsupported from by dependencies.
- Unpin
cwltool==3.1.20241217163858to provide future Python 3.14 support and adjust ranges for last Python 3.9. - Pin
pywps==4.7.0. - Use Mongo v7 in CI and tests.
- Update security dependencies for
pip,pyyaml,requests,urllibandwerkzeug.
- No change.
6.7.0 (2025-12-12)
- Add links and breadcrumbs including the Process ID within HTML pages of Job responses if referenced by the request.
- Add the full URI definitions for
Accept-Profileheader that correspond to equivalent shorthand notation usingprofileorschemaquery parameter for valuesogc,openeo, andwps. - Add additional
rel="http://www.opengis.net/def/rel/ogc/1.0/log"(i.e.:rel="[ogc-rel:log]") to Job status response links to respecthttp://www.opengis.net/spec/ogcapi-processes-1/2.0/rec/core/job-links. - Add Profile details in headers of
/processes/{processID}/packageresponse describing CWL contents. - Add YAML support for ProcessDescription
/processes/{processID}endpoint withAccept: application/x-yaml, header and any query parameter combination?f=yaml,?f=yml,?format=yamland?format=yml(fixes #456). - Add YAML support for CWL
/processes/{processID}/packageendpoint with multiple Media-Type variations (relates to #754). - Changed CWL
/processes/{processID}/packageresponse to beapplication/cwl+jsonby default (previously plainapplication/json) to better represent the returned contents with registered IANA Media-Type. Other variants (CWL+YAML or plain JSON) can be requested using theAcceptheader orf/formatquery. - Update new requirement definitions to align with OGC API - Processes: Core v2.0 integrating the Collection Inputs/Outputs originally from Part 3: Workflows and Chaining (fixes #841).
- Allow
profilecontent negotiation for single result Job to be represented using the multi-output JSON results representation instead of the default raw/direct value representation (relates to #754, fixes #815). - Return
Linkheader withrel: profileand a corresponding definition in JSONlinksfor responses of Job status, Job listing, Process description and Process listing endpoints when applicable. - Return Content-Profile header for responses with corresponding
Link: rel="profile". - Validate that, if provided during Job creation for Process execution, a
Content-Schemaheader different than supported representations will return HTTP 422 Unprocessable Content. At this point, only the OGC API - Processeshttps://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/schemas/execute.yamlis allowed for JSON content. If other representations are needed and supported at a later point,Content-Schemacan be omitted to avoid this additional verification.
- Fix HTML links when requesting Process listing that could fail schema validation due to additional media-types injected by the web browser.
- Fix HTML pages main header link referring to the current page instead of the intended landing page (fixes #855).
- Fix Job listing not returning adequate paging links when Weaver is running behind a proxied URL prefix (fixes #854).
- Fix missing HTML CSS styles for Job status responses using openEO profile.
- Fix Process deployment using an
hrefassuming response contents to be one of the supported formats. For example,/processes/{processID}was assumed to return JSON by default, but it is often HTML if no format specifier or acceptable media-type is specified. - Fix setup of
pywpspotentially failing due to emptyweaver.wps_workdirconfiguration setting.
6.6.2 (2025-06-27)
- Add
mongodb.prefix parsing of configuration settings defined in Weaver INI file to provide additional parameters that could be required to setup the MongoDB connection.
- Fix automatic
paste-deployresolution from legacy INI configuration usingegg:weaverpackage name instead of the newcrim-weaverdistribution name to ensurepserveandceleryapplications always resolve within Docker runtime regardless of the variant employed (fixes #847).
6.6.1 (2025-06-24)
- Update
urllib3>=2.5.0andrequests>=2.32.4to address security vulnerabilities. - Update package distribution name to
crim-weaverfor (eventual) release on PyPI. The Python package is still imported asweaver, butpserveandcelerylooking for the package egg need to point ategg:crim-weaver. For backward compatibility, provided Docker images create a system link that make this change transparent, but users need to update the INI configuration if running Weaver locally. Note that given the explicit GitHub URI dependencies defined for certain packages with fixes not yet released on PyPI, and for which direct dependency link are forbidden,crim-weavercannot be released at this time (see #838).
- Fix misconfigured
/providers/{providerID}/processes/{processID}/jobs/{jobID}endpoint for the HTML response (fixes #840). - Fix CLI bug where overly quoted URL from input arguments would not be handled correctly.
- Fix CLI bug where
/providersURL from input arguments would not be handled correctly. - Fix missing link in Job status HTML page for
inputsandlinksreferences. - Fix invalid link in Job status HTML page for
logsreference. - Fix consistency between link names between Job status and Process description HTML pages.
- Remove additional software dependency in worker Docker image leading to outdated Python 3.11 and its insecure dependencies to be installed along updated Python 3.12 with specific Weaver requirements.
- Reduce all Docker image sizes by approximately 1/3 with post-install removal of build dependencies.
- Fix build of Worker image missing
-yflags to upgrade relevant packages non-interactively.
6.6.0 (2025-05-08)
- Update Docker builds and CI tests to use Python 3.12 by default.
- Add
f=xmlsupport for Job status endpoints to directly retrieve the corresponding WPS XML status content. - Add
schema=wpsandprofile=wpsquery parameter support for Job status endpoints. If used by themselves, these query parameter values will return the same WPS XML content as when usingf=xml. If combined with JSON format (i.e.:?f=json&profile=wps), the OGC API - Processes Job status information will be returned instead, but using the corresponding WPSstatusvalues. Specifically, this allows returning the previous WPSsucceededandstartedstatus values instead of the OGC API - Processessuccessfulandrunningvalues respectively. This is provided to help clients that have to deal with the mixture of properties until the standard is properly stabilized and released. However, the default status values returned byprofile=ogcshould be preferred and employed whenever possible. - Enable Docker Provenance
and Software Bill of Materials (SBOM)
within the CI to release pavics/weaver images including this tracking information by default for
improved security and trust toward the software runtime, as observed through
the Docker Scout Health Score.
Running
make docker-buildwithout arguments will build the images without these features by default. They can be enabled usingDOCKER_PROV=true make docker-build. Building the images with these features requires an intermediate step to setup a builder with the docker-container driver.
- Add missing
fandformatquery parameters for Job status endpoints in OpenAPI schema.
6.5.0 (2025-05-02)
- Add Job status HTML response (resolves #779).
- Add the
processproperty to Job status response when requestingprofile=openEO, with a direct reference to the underlying CWL Application Package of the main Process ran by the Job.
- Fix W3C PROV endpoints not returning contents in appropriate type when using
forformatquery parameter. On top of the supported explicitAcceptheader, the endpoints will now also allow either explicitContent-Typepassed byf/formatquery parameter, their shorthand representations (e.g.:jsonforapplication/jsonand their more verbosePROV-specific representation (e.g.:f=prov-n), all case-insensitive. - Fix
/provendpoint not correctly allowing the YAML equivalent representation ofPROV-JSONcontents. - Fix reported
$schemato point at the openEO Batch Job OenAPI definition when requestingprofile=openEO. - Fix reported
typeof the openEO Batch Job OenAPI definition as alternate to OGC API - Processes Job status using newweaver.processes.constants.JobStatusTypedefinition that includes previous theprocessandprovidervalues applied byweaver.datatype.Job.type. - Fix Job statistics not reported by the API in case of execution failure, although they might be partially available.
6.4.1 (2025-03-14)
- No change.
- Fix resolution of the static endpoint when requesting CSS styles and favicon for HTML rendering
to employ the configured
weaver.wps_restapi_url(or other settings to obtain it) instead of the potentially unresolvable request URI, such as when behind a proxy. - Pin
cryptography>=44.0.1to address vulnerabilities CVE-2023-50782, CVE-2024-6119, CVE-2024-26130, CVE-2023-49083.
6.4.0 (2025-03-04)
- Add resilient handling of I/O literal
defaultvalues when parsing remote OGC API - Processes descriptions. Due to varying definitions from the standard revisions, some implementations could indicate a single literal default value as an array representation (e.g.:default: [1.23]), leading to parsing "errors" in Weaver that expects a strict match between thedefaultvalue and itstype.
- Fix resolution of Process revisions by
{processID}:{version}when queried on the WPS endpoint. - Fix resolution of Process revisions when queried by multiple ID and/or version combinations on the WPS endpoint.
- Fix resolution of Process revisions by
{processID}:{version}for execution by OGC API - Processes endpoint (fixes #799). - Fix
jobControlOptionsnot respected in cases where resolution occurs against a restricted set of capabilities for a given Process when the submitted Job requests an invalid combination by executionmodebody parameter. - Fix
remoteandlocaltags incorrectly applied to Job definition.
6.3.0 (2025-02-18)
- Update
owslib==0.32.1for parameters fixes employed by Collection Input withformat=ogc-coverage-collection. - Drop support of Python 3.9 (required for
owslib==0.32.1dependency).
- Fix parsing of Collection Input
format=ogc-coverage-collectionandformat=ogc-map-collectionto provide additional parameters to the remote collection request. - Update
pygeofilter>=0.3.1to resolvefilter-lang=FESparser as per other filters (relates to geopython/pygeofilter#102).
6.2.0 (2025-02-06)
- Replace
succeededstatus bysuccessfuleverywhere where applicable (as originally defined by OGC API v1), to align with reversal of the proposed draft name, aligning between both v1 and v2 of OGC API - Processes (relates to opengeospatial/ogcapi-processes#483). - Modify Job
subscribersdefinition to employ the normalizedweaver.status.StatusCategoryinstead ofweaver.status.Statusas mapping keys, such that email and callback notifications are unified under a common naming convention regardless of the resolvedweaver.status.StatusCompliantrepresentation.
- Fix
weaver.cli.RequestAuthHandlerand its derived classes erroneously invokingrequest_authmethod when both theurlandtokenare omitted, leading to invalidrequestscall underweaver.utils.request_extra.
6.1.1 (2024-12-20)
- Update Docker image Python from 3.10 to 3.11 for performance improvements.
- Fix
PROVendpoints returning multipleContent-Typeheaders (defaulttext/htmlinserted bywebob.response.Responseclass onto top of the explicit one specified) leading to inconsistent responses parsing and rendering across clients.
6.1.0 (2024-12-18)
- Add support of Python 3.13.
- Drop support of Python 3.8.
- Add support of OGC API - Processes - Part 4: Job Management related to
PROVrequirement and conformance classes. - Add support of W3C PROV to provide
GET /jobs/{jobId}/provendpoints and all underlying paths (/info,/who,/run,/inputs,/outputs, and../{runId}variants) to retrieve provenance metadata from a Job execution and its corresponding Process and Workflow definitions, as processed bycwltool/cwlprovand extended by Weaver-specific server metadata. SupportedPROVrepresentations arePROV-N,PROV-NT,PROV-JSON,PROV-JSONLD,PROV-XMLandPROV-TURTLE, each of which can be obtained by providing the correspondingAcceptheaders. - Add
weaver.cwl_provconfiguration option to control the newPROVmetadata collection feature. - Add
provandprovenanceCLI andWeaverClientoperations. - Extend
weaver.cli.WeaverArgumentParser"rules" to allow returning an error message providing better case-by-case details about the specific cause of failure handled by the rule callable. - Update certain
corniceservice definitions that were using "prov" as referencing to Providers to avoid confusion with the multiplePROV/Provenance related terminology and services added for the new feature. - Pin
cwltool==3.1.20241217163858to employ the official release includingPROVconfiguration provided to easily configured Weaver (relates to common-workflow-language/cwltool#2082 <https://github.com/common-workflow-language/cwltool/pull/2082>_) and integrate previously provided fixes (relates to `common-workflow-language/cwltool#2082 <https://github.com/common-workflow-language/cwltool/pull/2036>_) that were applied by a forked backport ``https://github.com/fmigneault/cwltool` repository.
- Fix missing documentation about certain
WeaverClientoperations. - Fix
weaver.cli.OperationResultnot setting itstextproperty when a valid non-JSON response is obtained. - Fix the API frontpage HTML rendering to returning enabled features and corresponding
doc/url/apiendpoints for quick referencing the capabilities activated for a Weaver instance.
6.0.0 (2024-12-03)
- Add support of OGC API - Processes - Part 3: Workflows and Chaining with Nested Process ad-hoc workflow definitions directly submitted for execution (fixes #747, relates to #412).
- Add support of OGC API - Processes - Part 4: Job Management endpoints for Job creation and execution (fixes #716).
- Add
format: stac-itemssupport to theExecuteCollectionInputdefinition allowing acollectioninput explicitly requesting for the STAC Items themselves rather than contained Assets. This avoids the ambiguity between Items and Assets that could both represent the sameapplication/geo+jsonmedia-type. - Add CLI operations
info,versionandconformanceto retrieve the metadata details of the server. - Add CLI operations
update_job,trigger_jobandinputscorresponding to the required Job operations defined by OGC API - Processes - Part 4: Job Management. - Add CLI support of the
collectionandprocessinputs respectively for Collection Input and Nested Process submission within the execution body of another Process. Only forwarding of the input parameters is performed by the CLI. Validation is performed server-side. - Add
headers,modeandresponseparameters along theinputsandoutputsreturned by theGET /jobs/{jobID}/inputsendpoint to better describe the expected resolution strategy of the multiple Job execution options according to submitted request parameters. - Increase flexible auto-resolution of synchronous vs asynchronous Job execution when no explicit strategy
is specified by
modebody parameter orPreferheader. Situations where such flexible resolution can occur will be reflected by amode: autoand the absence ofwait/respond-asyncin thePreferheader within the response of theGET /jobs/{jobID}/inputsendpoint. - Add support "on-trigger" Job submission using the
status: createrequest body parameter. Such a Job will be pending, and can be modified byPATCH /jobs/{jobID}requests, until execution is triggered by a subsequentPOST /jobs/{jobID}/resultsrequest. - Align
GET /jobs/{jobID}/outputswith requirements of OGC API - Processes - Part 4: Job Management endpoints such that omitting theschemaquery parameter will automatically apply the OGC mapping representation by default. Previous behavior was to return whichever representation that was used by the internal Process interface. - Align Job status and update operations with some of the openEO behaviors, such as supporting a Job
titleand allowingstatusto return openEO values when usingprofile=openeoin theContent-Typeor using the query parameterprofile/schema. TheContent-Schemawill also reflect the resolved representation in the Job status response. - Add support of
response: rawexecution request body parameter as alternative toresponse: document, which allows directly returning the result contents orLinkheaders rather then embedding them in a JSON response (fixes #376). - Add support of
Prefer: return=minimalandPrefer: return=representationheader as alternative method to request theresponse: documentandresponse: rawparameters (fixes #414). Minor differences exist according to suppliedtransmissionModeand the original data/link results. See Process Execution documentation for details. - Add support of
outputsexecution request body parameter to filter returned outputs from theGET /jobs/{jobId}/results(async) or returned directly (sync) fromPOST /processes/{processId}/execution(fixes #380 <https://github.com/crim-ca/weaver/issues/380>_). - Add support of
Accept: multipart/*andAccept: multipart/mixedwhen submitting an execution to obtain the results as multiple parts embedded within the response contents. Parts are represented with their default data/link representation, unless overridden by correspondingtransmissionModeper output ID. - Add
output_links/-oL/--output-linkparameter to Python client and CLI to retrieveLinkheaders as Job results. Due to the multipleLinkheaders returned by Job results, this cannot be performed automatically without the assumption of whichrellinks correspond to actual output IDs to extract. - Add
output_filter/--oF/--output-filterparameter to Python client and CLI to indicate anyoutputsto be filtered when submitting the Process execution. - Update
Preference-Appliedheader reported by execution responses to includereturn=minimalorreturn=representationas applicable by the requestedPreferheader. - Update documentation with a mapping of Process Execution Results according to
submitted
responsebody parameter (OGC API - Processes v1.0), thePrefer: returnheader (OGC API - Processes v2.0), the requestedAcceptheader, and any relevanttransmissionModerequest body overrides per filteredoutputs. - Modify the mapping and generation of WPS/OGC API metadata against CWL corresponding fields using
the namespaced
schema.orgto always employ the full URI asrelorroleaccording to the provided metadata link or value to allow explicit identification of theschema.orgconcept origin. - Add mapping of metadata from CWL to WPS/OGC API
metadatafield for additionalschema.orgconcepts.
- Fix CLI failing to parse additional
Linkheaders when they are all combined into a single comma-separated value. - Fix STAC
collectionincorrectly resolving the API endpoint to perform the Item Search operation. - Fix resolution of input/output media-types against the unspecified defaults to allow more descriptive results.
- Fix race condition between workflow step early input staging cleanup on successful step status update.
Due to the
_update_statusmethod ofpywpsperforming cleanup when propagating a successful completion of a step within a workflow, the parent workflow was marked as succeeded (XML status document), and any step executed after the successful one that were depending on the workflow inputs could result in not-found file references if it was staged by the previous step. - Fix optional
titlein metadata causing failing HTML rendering of the Process description if omitted. - Fix HTML
Content-Typeheader erroneously set for JSON-only (for now)GET /jobs/{jobId}as similar endpoints. - Fix CWL
enumtype mishandlingsymbolscontaining a colon (:) character (e.g.: a list of allowed times) leading to their invalid interpretation as namespaced strings (i.e.:<ns>:<value>), in turn failing validation and breaking the resulting CWL. Suchenumwill be patched with updatedsymbolsprefixed by#to respect the expected URI representation ofenumvalues by the CWL parser (relates to common-workflow-language/cwltool#2071). - Fix CWL conversion from a OGC API - Processes definition specifying an I/O with
schemaexplicitly indicating atype: arrayand nestedenum, even ifminOccurs: 1is omitted or explicitly set. - Fix
urlparameter to override the CLI internalurlwhen passed explicitly to the invoked operation. - Fix
hrefdetection when provided directly as mapping within theexecutionUnitof the deployment body. - Fix definition of CWL
schema.orgnamespaced fields (i.e.:s:authorands:dateCreated) causing schema deserialization error when validating the submitted request body against typical examples provided in CWL Metadata and Authorship. - Fix mapping of CWL
schema.orgmetadata to WPS/OGC API equivalent metadata defining invalidrolenot respecting the URI schema validation constraint. - Fix
GET /jobs/{jobId}/inputscontents to correctly return the submittedoutputsdefinition for Process execution (fixes #715). - Fix missing
Linkheader withrel: monitorrelationship in the created Job responses (fixes #596). - Fix missing
/rec/core/link-headerdefinition inGET /conformanceresponse reporting thatLinkheaders are returned for corresponding references of a given request (fixes #378). - Fix
transmissionMode: valuethat was ignored forresponse: documentif the output was represented by default as a complex file URL, andtransmissionMode: referencethat was ignored if the output was literal data. ThetransmissionModewill now return the appropriate inline data or URL as requested. - Add missing conformance and requirement references for OGC API - Processes - Part 2: DRU (fixes ##620).
- Add the appropriate HTTP error type to respect
/conf/dru/deploy/unsupported-content-type(fixes #624). - Fix S3 bucket storage for result file missing the output ID in the path to match local WPS output storage structure.
- Fix rendering of the
deprecatedproperty in OpenAPI representation.
5.9.0 (2024-09-12)
- Add CWL schema definitions with
weavernamespace (see weaver/schemas/cwl) that provide explicit requirement classes forweaver:BuiltinRequirement,weaver:WPS1Requirement,weaver:OGCAPIRequirementandweaver:ESGF-CWTRequirementto avoid missing reference warnings that were previously raised bycwltooldue to Application Packages using their non-weavernamespaced classes inhints. These new CWL definitions can be reported directly in therequirementssection, better describing the required dependencies of the referenced Process and/or Provider in the workflow steps. - Add hosted CWL schema definitions for
weaveraccessible at thehttps://schemas.crim.ca/cwl/weaver#endpoint. - Add support of
weavernamespacedrequirementsto thecwltoolrunner. - Add better validation off well-known CWL
$namespacesas reserved keywords when deploying a Process to ensure better interoperability between implementations and adequate metadata resolution (relates to #463). - Add documentation about Jupyter Notebook to CWL conversion utility ipython2cwl and a sample crim-ca/ncml2stac repository making use of it with the Weaver CLI to generate a deployed OGC API - Processes definition (fixes #63).
- Add parsing of additional metadata from
schema.orgin CWL document to convert into process fields (fixes #463). - Add more metadata mapping details in documentation (fixes #613).
- Fix
VariableSchemaNoderesolution of child nodes with complex mixture ofStrictMappingSchemaor when using the equivalentunknown = "raise"parameter for acolander.Mappingschema type to disallowadditionalPropertiesthat cannot be mapped to a particular child JSON schema definition. - Fix
VariableSchemaNoderesolution to allow mapping against multiplevariablesub-nodes representing different nested JSON schema nodes permitted under theadditionalPropertiesmapping. - Fix
GET /jobsendpoint failing to return the rendered HTML listing whendetail=truewas omitted or set to any non-detailed value. Thedetailquery parameter is ignored for HTML since details are always required to populate the Job table. - Pin
pymongo>=4.3and removecelery[mongodb]extra requirement to avoid incompatible resolution ofpymongo[srv]>=4.8.0(relates to celery/celery#9254 and MongoDB PYTHON-4756).
5.8.0 (2024-09-05)
- Add support of OGC API - Processes: Part 3
collectionas input to a Process (fixes #682). - Add
AnyCRSschema definition with improved validation of allowed values. - Use
AnyCRSschema forSupportedCRS,XMLStringCRS,BoundingBoxValueandExecuteCollectionInputinstead of a genericURLschema definition for better reference validation, while allowing alternate short forms. - Add auto-resolution of media-type for cases where it can reasonably be inferred from a
schemareference, such as an URI referring to a.jsonor.xsdrespectively representing JSON and XML data. - Update
cwltoolwith fork fmigneault/cwltool @ fix-load-contents-array untilloadContentsbehavior is resolved fortype: File[](relates to common-workflow-language/cwltool#2036).
- Fix CWL I/O with
formatdefined as a JavaScript Expression to be incorrectly parsed by the convertion operations to extract applicable media-types. These cases will be ignored, since media-types cannot be inferred from them. The WPS or OAS I/O definitions should instead provide the applicable media-types (relates to common-workflow-language/cwl-v1.3#52). - Fix
formatparsing when trying to infer media-types from various I/O definition representations using a reference provided as an URI schema from an ontology. Parsing caused the URI to be split, causing an invalid resolution. If no appropriate media-type is provided, JSON will be used by default, while preserving the submitted schema URI. - Fix invalid resolution of
weaver.formats.ContentEncoding.open_parameters. - Fix minor resolution combinations or redundant checks for multiple
weaver.formatsutilities. - Fix CWL
formatresolution check against IANA media-types if the reference ontology happens to be temporarily/sporadically unresponsive to SSL handshake check, allowing temporary HTTP resolution of media-type.
5.7.0 (2024-07-16)
- Add support of HTML responses for OGC API - Processes endpoints (fixes #210).
- Add
weaver.wps_restapi_htmlconfiguration setting to control support of HTML responses. - Add
weaver.wps_restapi_html_override_user_agentconfiguration setting for control of default HTML or JSON rendering by requests from web browsers. - Refactor
pyramidconfiguration to employConfigurator.add_cornice_serviceutility instead ofConfigurator.add_routeandConfigurator.add_viewhandlers that were causing a lot of duplication between thecornice.Serviceparametrization and their corresponding view decorators. All metadata is now embedded within the same decorator operation. - Add missing documentation for
weaver.wps_restapi_docandweaver.wps_restapi_refconfiguration settings. - Modified the base path/URL resolution of the OpenAPI endpoint to be located at the application root instead of being
nested under
weaver.wps_restapi_pathorweaver.wps_restapi_url, since the OpenAPI JSON and HTML responses are employed for representing supported requests and responses of both the REST and the OWS WPS interfaces. - Update Swagger-UI version for latest rendering fixes of OpenAPI definitions.
- Add automatic redirect from
/api?f=jsonto/jsonresponse to allow OpenAPI schema access directly from the same endpoint as the Swagger-UI rendering of the schemas. TheAcceptheader forapplication/jsonor explicitlyapplication/vnd.oai.openapi+json; version=3.0are also supported (fixes #623) - Add OpenAPI response rendering as YAML using
/api?f=yamlorAccept: application/yaml(relates to #456).
- Fix
weaver.wps_restapi_pathincorrectly resolved when populating Process paging links. - Fix invalid resolution of reported API endpoints in the OpenAPI and frontpage response when
weaver.wps_restapi_path,weaver.wps_restapi_url,weaver.wps_pathorweaver.wps_urlwere set to other prefix path values than the default root base URL. - Fix
weaver.formats.OutputFormatto returnJSONby default when an invalid format could not be resolved.
5.6.1 (2024-06-14)
- No change.
- Fix invalid
defaultattribute resolution of an optional WPSComplexData(i.e.:minOccurs: 0) that also provides aDefault/Formatin the XML process description. When that input was omitted (as permitted) from the execution request, parsing of the XML would incorrectly inject the JSON representation of theDefault/Formatas a substitute for thedefaultvalue. Seeweaver.processes.convert.ows2json_ioimplementation for details.
5.6.0 (2024-06-11)
- Increase default
pywpsconfiguration values using new settingsweaver.wps_max_request_size = 30MBandweaver.wps_max_single_input_size = 3GB. Defaults are selected to allow larger files that are more in line with common occurrences when dealing with Earth Observation data.
- Fix resolution of
nullvalue explicitly provided or implicitly resolved by CWL betweenWorkflowsteps and the Process execution context transfer between OGC API - Processes and WPS, in the case ofComplexDataandBoundingBoxDatastructures. Inputs will now be omitted from execution request to obtain the intended behavior instead of submitting empty data structures, leading to inconsistent parsing results and behaviors. - Fix resolution of the CWL
outputBinding.globfor staging the output by ID within aWorkflowthat uses recurring Process references across steps. To disambiguate between common output ID between steps, CWL uses the step ID as prefix to the output long-name. This caused a mismatch with the output collection strategy for staging the Job result, as the expected directory location does not contain the nested step ID.
5.5.0 (2024-06-06)
- Add support of multiple-value array outputs to allow CWL Application Package that can make use of such definitions (fixes #25).
- Add
weaver.wps_restapi.colander_extras.AnyTypeandweaver.wps_restapi.colander_extras.NoneTypewith their corresponding JSON/OpenAPI schema converters to allow the definition ofnulland{}type definitions.
- Fix
weaver.wps_restapi.colander_extras.ExtendedSequenceSchemanot allowing other item types than a mapping.
5.4.2 (2024-06-05)
- Add
POST /processes/{processId}/executionas fallback endpoint forPOST /processes/{processId}/jobsto submit the Job execution within a CWLWorkflowusing a remote OGC API - Processes step to accommodate for varying versions of the standard and implementations. - Add error status update of the response from a failed step
Jobrequest to allow investigating the cause from logs.
- Fix
Cookieheader not propagated to every underlying CWLWorkflowstep causing authorization failure midway during an authorized Process execution.
5.4.1 (2024-06-03)
- No change.
- Fix Process ID resolution from CWL
Workflowstep package from long-form URL reference included as fragment.
5.4.0 (2024-05-27)
- Use
requests.auth.AuthBasetype forauthparameter ofweaver.cli.WeaverClientmethods to allow anyrequestscompatible package to use their own implementation of the authentication mechanism without explicitly deriving fromweaver.cli.AuthHandler(fixes #628). - Add CWL
MultipleInputFeatureRequirementsupport. - Add CWL
SubworkflowFeatureRequirementsupport. - Add CWL
Workflowexplicit schema validation of itssteps. - Remove "unknown" definitions in CWL
requirements. Only fully defined and resolved definitions will be allowed. If an unsupported CWL requirement by Weaver must be provided (but is a valid definition supported bycwltool), it must now be provided throughhintsto succeed schema validation. - Improve support of CWL output definition using
loadContentsto anoutputBinding.globreference to load theFilecontents into astringoutput. - Improve support of CWL JavaScript expressions within intermediate steps of a
Workflowto collect output results from relevant sources with better data manipulation flexibility. - Modify signature of
weaver.processes.wps_process_base.WpsProcessInterfaceto allow better reuse of the common operations shared by derived CWLWorkflowsteps implemented byESGFProcess,Wps1Process,Wps3ProcessandOGCAPIRemoteProcessBase. - Refactor
ESGFProcessto use the common operations of CWLWorkflowsteps defined byWpsProcessInterface.
- Fix
pywps.inout.basic.BasicComplexusing defaultemptyvalidatorwhen the expected output format does not provide an explicit implementation, leading to failure of the Job due toMODE.SIMPLEvalidation level being set. A basic validator will instead be set to check that the expected file extension minimally matches the expected type. - Fix CLI incorrectly parsing inputs when provided directly as OGC style mapping with
href. - Fix invalid CWL schema definition for
ScatterFeatureRequirementthat directly contained the corresponding fieldsscatterandscatterMethod, instead of the expected definition within a Workflow Step. - Fix CWL
requirementsschema definition usingOneOfand thediscriminatorproperty that could sometime drop a definition when it only contained an empty mapping{}, and that the corresponding requirement allows it. - Fix
weaver.wps_restapi.colander_extras.AnyOfKeywordSchemanot allowing distinct JSON structuretypeto be combined simultaneously. - Fix CWL
Workflownot retrieving output results when returned directly as literal data from a remote Process. - Fix CWL
Workflowpotentially failing tool resolution for a local step Process ifhintswhere omitted. - Fix CWL
Workflowresolution of steprequirementsfrom one of the Weaver application types (i.e.:builtin,docker,ESGF-CWT,OGCAPI,WPS1) due tocwltoolnamespace adding a prefixed URI. - Pin
requests>=2.32anddocker>=7.1(Python Package) to address CVE-2024-35195 to avoid inconsistentverifyoption over multiple requests when using a session (relates to psf/requests#6710 and docker/docker-py#3257).
5.3.0 (2024-05-13)
- Add CWL
cwltool:Secretssupport (fixes #511). - Add CWL
StepInputExpressionRequirementsupport.
- Pin
json2xml==4.1.0to fix major release breaking older Python typings without any actual change to functionality.
5.2.0 (2024-05-08)
- Add multiple missing OGC API - Processes conformance references.
- Modify default query parameter value
links=truefor/processessummary listing to conform with conformance class/conf/core/process-summary-linksas default behavior (relates to opengeospatial/ogcapi-processes#406, fixes crim-ca/weaver#622).
- Adjust
weaver.utils.get_caller_nameto better handle decorated functions, and apply more precise warning messages to hunt down places wereweaver.utils.get_request_optionsmight still be causing inconsistent HTTP requests due to missing request options for certain use cases. - Fix passing down of application settings for WPS requests of Provider/Service operations potentially making use of request options, which could not obtain the relevant configuration.
- Fix CLI failing to resolve a CWL Workflow step local reference to a Process using
run: {process}.cwldefinition due to the local CLI context not having the same URL resolution as the remote Weaver server (fixes #630). - Fix CWL JSON schema reference pointing at older
1.2.1_proposedbranch in favor ofv1.2.1tag (relates to common-workflow-language/cwl-v1.2#278). - Pin
gunicorn>=22to address CVE-2024-1135. - Pin
werkzeug>=3.0.3,<3.1to address CVE-2024-34069.
5.1.1 (2024-03-19)
- No change.
- Use
typing_extensions.Unpackto correctly represent expected types for respectiverequest-optionskeywords parameters. - Fix
linkcheckfailing due to inconsistent HTTP responses (relates to sphinx-doc/sphinx#12030).
5.1.0 (2024-03-19)
- Add
weaver.wps_client_headers_filtersetting that allows filtering of specific WPS request headers from the incoming request to be passed down to the WPS client employed to interact with the WPS provider (fixes #600). - Add
tokenoptional argument to theweaver.cli.RequestAuthHandlerclass. If specified, the handler will use this token instead of making an authentication request to obtain the token.
- Fix
moto>=5used in tests to mock AWS S3 operations that replacedmock_s3context manager bymock_aws.
5.0.0 (2023-12-12)
- Add
weaver.formats.ContentEncodingwith handlers for common encoding manipulation from input values. - Add
EchoProcessto the list ofweaver.processes.builtindefinitions with its CWL representation and complementary OGC API - Processes reference implementation details. This Process will be automatically deployed at API startup, and is employed to validate multiple parsing combinations of execution I/O values and encodings (fixes #379). - Add support of OGC BoundingBox definition (
bboxandcrsfields) as Process execution input value with appropriate schema validation (fixes #51). - Add support of Unit of Measure (UoM) definition (
measurementanduomfields) as Process execution input value with appropriate schema validation (fixes #430). - Add
create_metalinkutility function to facilitate generation of a.meta4or.metalinkfile definition from a list of file link references (relates to #25).
- Fix
weaver.wps_restapi.swagger_definitions.ExecuteInputValuesdeserialization that sometimes silently dropped invalid JSON-formatted inputs that did not fulfill schema validation. This was caused by a side effect regarding howweaver.wps_restapi.colander_extras.VariableSchemaNodehandled "unknown" JSONpropertiesfrom submitted content. In cases where required Process inputs were causing the invalid schema, Job execution would be aborted and the error would be reported due to "missing" inputs. However, if the JSON failing schema validation happened to be nested under an optional input definition, the Job execution could have resumed silently by omitting this input's value propagation to the downstream CWL, WPS or OGC API - Processes implementation, which could make it use an alternative default value than the real input that was submitted for the Job. - Fix schema name representation employed in generated
colander.Invaliderror when a schema validation failed, in order to better represent deeply nested schema using multipleoneOf,anyOf,allOfschema nodes. Usingcolander.Invalid.asdict, each dictionary key now properly indicates the specific path of sub-nodes with their relevant schema validation error. - Fix
variableschema node names to provide a{SchemaName}<{VariableName}>representation, such that it can be more easily identified. Schema nodes with avariable(i.e.: schema underadditionalProperties) previously only indicated{VariableName}, which made it complicated to follow reference schema classes that formed the error path. Each of the evaluated fields against each possiblevariableschema will now report their corresponding nested schema validation error as{SchemaName}<{VariableName}>({field})such that results can be understood. - Fix execution input reference (i.e.: using
href) dropping aschemaURL reference if provided explicitly. This parameter now remains within the produced content passed to the Job, and forwarded to a remote Process if applicable, but no further schema validation is accomplished with the value inschemafor the moment. - Fix
ContentType.IMAGE_OGC_GEOTIFFusing invalid media-type name (missingiinimage). - Fix Job input validation stripping additional parameters from provided Media-Type, potentially causing mismatching Content-Type validation against the corresponding Process description inputs. Types should now match exactly the original Process definition, including any additional parameters and sub-types.
- Fix resolution of
anyOfschema raisingcolander.Invalideven when the property was marked as optional usingmissing=colander.drop. - Fix
$schemaof OGCnameReferenceTypebeing reported under everydataTypeofliteralDataDomainsfor literal I/O of Process descriptions. The reference is not only included in the OpenAPI definition as intended. - Fix override of CWL
stderrandstdoutdefinitions if specified by the original Application Package for its own implementation. These stream handles are added to the CWL by Weaver to provide more contextual debugging and traceability details of the internal application executed by the Process. However, a package making use of this functionality of CWL to capture an output file would be broken unless naming the file exactly asstderr.logandstdout.log. Weaver will now employ the parameters provided by the Application Package if specified.
4.38.0 (2023-11-24)
- Add Python 3.12 support (fixes #587).
- Depends on
PasteDeploy==3.1.0(relates to Pylons/pastedeploy#43). - Depends on
pyramid_celery==5.0.0a[crim-ca/pyramid_celery fork] (relates to sontek/pyramid_celery#102).
- Depends on
- No change.
4.37.0 (2023-11-22)
- No change.
- Fix default XML format resolution for WPS endpoint when no
Acceptheader orformat/fquery parameter is provided and that the request is submitted from a Web Browser, which involves additional control logic to select the applicableContent-Typefor the response. - Fix pre-forked
celeryworker process inconsistently resolving thepyramidregistry applied bypyramid_celeryafter worker restart.
4.36.0 (2023-11-06)
- Drop Python 3.7 support.
- Add Python 3.12 to GitHub CI experimental builds.
- Bump
werkzeug>=3.0.1to resolve security vulnerability from the package.
- No change.
4.35.0 (2023-11-03)
- Add more secure path validations steps before fetching contents.
- Disallow
builtinprocesses expecting a user-provided input path to run with local file references such that they must respect any configured server-side remote file access rules instead of bypassing security validations through resolved local paths. - Add multiple validation checks for more secure file paths handling when retrieving contents from remote locations.
- Add more tests to validate core code paths of
builtinProcessjsonarray2netcdf,metalink2netcdfandfile_index_selectorwith validation of happy path and error handling conditions.
- Fix invalid parsing of XML Metalink files in
metalink2netcdf. Metalink V3 and V4 will now properly consider the namespace and specific content structure to extract the NetCDF URL reference, and the Process will validate that the extracted reference respects the NetCDF extension.
4.34.0 (2023-10-16)
- Add
alternatereferences, asLinkheader and within the JSON contentlinksproperty when applicable, in the returned Process description response to refer between the XML and the corresponding JSON representations. - Support alternative representations from OGC API - Processes schemas for
executionUnitdefinition during Process deployment. The unit does not need to be nested underunitor a list anymore, and can instead be directly provided as JSON mapping. For backward compatibility, the previous list representation is still allowed (fixes #507). - Support an additional
typeproperty along aunititem describing anexecutionUnitto specify an IANA Media-Type that categories theunitcontents, similarly to how it could be provided for itshrefcounterpart. For the moment, only CWL-basedunitare supported, but this could allow future extensions to provide alternate representations of an Application Package. - Add schema validation and reference to the API landing page, with additional parameters to respect OGC schema.
- Add multiple JSON schema references for schema classes that are represented by corresponding OGC definitions.
- Add Job
subscriberssupport to define OGC-compliant callback URLs where HTTP(S) requests will be sent upon reaching certain Job status milestones (resolves #230). - Add email notification support to the new
subscribersdefinition (extension over OGC minimal requirements). - Deprecate Job
notification_emailin the OpenAPI specification in favor ofsubscribers, but preserve parsing of its value if provided in the JSON body during Job submission for backward compatibility support of existing servers. TheJob.notification_emailattribute is removed to avoid duplicate references. - Add notification email for Job
startedstatus, only available through thesubscribersproperty. - Add CLI and
WeaverClientoptions to supportsubscribersspecification for submitted Job execution. - Add
{PROCESS_ID}/{STATUS}.makotemplate detection under theweaver.wps_email_notify_template_dirlocation to allow per-Process and per-Job status email customization. - Refactor
weaver/notify.pyandweaver/processes/execution.pyto avoid mixed references to the encryption/decryption logic employed for notification emails. All notifications including emails and callback requests are now completely handled and contained in theweaver/notify.pymodule. - Remove partially duplicate Mako Template definition as hardcoded string and separate file for email notification.
- Fix inconsistent or missing schema references to updated OGC schema locations, and align their based URL locations
for corresponding
/conformanceendpoint reporting. - Fix auto-insertion of
$schemaand$idURI references into JSON schema and their data content representation. When in OpenAPI context, schemas now correctly report their$idas the reference schema they represent (usually from external OGC schema references), and$schemaas the JSON meta-schema. When representing JSON data contents validated against a JSON schema, the$schemaproperty is used instead to refer to that schema. All auto-insertions of these references can be enabled or disabled with options depending on what is more sensible for presenting results from various API responses. - Fix
weaver.clilogger not properly configured when executed from CLI causing log messages to not be reported.
4.33.0 (2023-10-06)
- Add utility methods for Job to easily retrieve its various URLs.
- Add
weaver.wps_email_notify_timeoutsetting (default 10s) to avoid SMTP server deadlock on failing connection. - Modify the
encrypt_emailfunction to use an alternate strategy allowingdecrypt_emailon Job completed. - Remove
notification_emailfromGET /jobsquery parameters. Due to the nature of the encryption strategy, this cannot be supported anymore. - Add CLI
executeoptions--output-public/-oPand--output-context/-oC OUTPUT_CONTEXTthat add the specifiedX-WPS-Output-Contextheader to request the relevant output storage location of Job results.
- Fix Job submitted with a
notification_emailnot reversible from its encrypted value to retrieve the original email on Job completion to send the notification (fixes #568). - Fix example Mako Template for email notification using an unavailable property
${logs}. Instead, the new utility methodsjob.[...]_urlshould be used to retrieve relevant locations.
4.32.0 (2023-09-25)
- Add
GET /providers/{provider_id}/processes/{process_id}/packageendpoint that allows retrieval of the CWL Application Package definition generated for the specific Provider's Process definition. - Add CLI
packageoperation to request the remote Provider or local Process CWL Application Package. - Add CLI output reporting of performed HTTP requests details when using the
--debug/-doption. - Modify default behavior of
visibilityfield (underprocessDescriptionorprocessDescription.process) to employ the expected functionality by native OGC API - Processes clients that do not support this option (i.e.:publicby default), and to align resolution strategy with deployments by direct CWL payload which do not include this feature either. A Process deployment that desires to employ this feature (visibility: private) will have to provide the value explicitly, or update the deployed Process definition afterwards with the relevantPUTrequest. Sincepublicwill now be used by default, the CLI will not automatically inject the value in the payload anymore when omitted. - Remove attribute
WpsProcessInterface.stage_output_id_nestedand enforce the behavior of nesting output by ID under corresponding directories for all remote Process execution when resolving CWL Workflow steps. This ensures a more consistent file and directory resolution between steps of different nature (CWL, WPS, OGC based) using multiple combinations ofglobpatterns and expected media-types.
- Fix missing Node.js requirement in built Docker image in order to evaluate definitions that employ
CWL
InlineJavascriptRequirement, such asvalueFromemployed for numericEnuminput type validation. - Fix
processes.wps_package.WpsPackage.make_inputsunable to parse multi-type CWL definitions due parsing as single-type element withparse_cwl_array_type. Functionget_cwl_io_typeis used instead to resolve any CWL type combination properly. - Fix
get_cwl_io_typefunction that would modify the I/O definition passed as argument, which could lead to failing CWLclassreference resolutions later on due to differenttypewithorg.w3id.cwl.cwlprefix simplified beforecwltoolhad the chance to resolve them. - Fix
linkslisting duplicated in response from Process deployment. Links will only be listed within the returnedprocessSummaryto respect the OGC API - Processes schema. - Fix CLI not removing embedded
linksinprocessSummaryfromdeployoperation response when-nL/--no-linksoption is specified. - Fix CWL definitions combining nested
enumtypes as["null", <enum>, {type: array, items: <enum>]without an explicitnameorSchemaDefRequirementcausing failingschema_saladresolution undercwltool. A patch is applied for the moment to inject a temporarynameto let the CWL engine succeed schema validation (relates to common-workflow-language/cwltool#1908).
4.31.0 (2023-09-14)
- Add the official CWL JSON schema reference
(common-workflow-language/cwl-v1.2#256)
as
$schemaparameter returned in under the OpenAPI schema for the CWL component employed by Weaver (fixes #547). - Add
$schemafield auto-insertion into the generated OpenAPI schema definition byCorniceSwaggerwhen correspondingcolander.SchemaNodedefinitions contain a_schema = "<URL>"attribute (fixes #157). - Drop Python 3.6 support.
- Fix broken OpenAPI schema link references to OGC API - Processes repository.
- Fix
GET /providers/{provider_id}response using$schemainstead of$idto provide its content schema. - Fix Job creation failing when submitting an empty string as input for a Process that allows it due to schema validation incorrectly preventing it.
- Fix human-readable JSON-like content cleanup to preserve sequences of quotes corresponding to valid empty strings.
- Fix WPS I/O
integerliteral data conversion to OpenAPI I/Oschemadefinition injecting an invalidformat: doubleproperty due to type checking withfloatsucceeding againstintvalues. - Fix CWL I/O value validation for
enum-like definitions from corresponding OpenAPI and WPS I/O. Since CWL I/O do not allowEnumtype for values other than basicstringtype,valueFromattribute is used to handleint,floatandbooltypes, using an embedded JavaScript validation against allowed values. Because of this validation strategy, CWL packages must now includeInlineJavascriptRequirementwhen allowed values for these basic types must be performed in order for the CWL engine to parse I/O contents ofvalueFrom(relates to cwl-v1.2#267, common-workflow-language#764 and common-workflow-language#907). - Fix typing definitions for certain
Literalreferences for proper resolution involving values stored in constants. - Fix
get_sane_namechecks performed on Process ID and Service name to usemin_len=1in order to allow valid WPS process definition on existing servers to resolve references that are shorter than the previous default of 3 characters.
4.30.1 (2023-07-07)
- No change.
- Fix broken Docker build of
weaver-workerimage due to unresolveddocker-ce-clipackage. Installation is updated according to the reference documentation (https://docs.docker.com/engine/install/debian/). - Fix incorrect stream reader type (
bytesinstead ofstr) for some handlers inopen_module_resource_file. - Fix invalid
jsonschema.validators.RefResolverreference injsonschema>=4.18.0caused by refactor (see https://github.com/python-jsonschema/jsonschema/blob/main/CHANGELOG.rst#v4180, https://python-jsonschema.readthedocs.io/en/v4.18.0/api/jsonschema/validators/#jsonschema.validators._RefResolver and python-jsonschema/jsonschema#1049). - Fix multiple linting checks, documentation dependencies and link references.
4.30.0 (2023-03-24)
- Add
weaver.quotation = true|falsesetting that allows control over the activation of all endpoints and operations related to the OGC API - Processes Billing and Quotation extensions. - Add support to configure a quotation estimation algorithm for each respective Process with new requests
using
GET,PUT,DELETEmethods on/processes/{processID}/estimatorendpoint. The configured algorithm is provided by a reference Docker image defined byweaver.quotation_docker_[...]settings. The algorithm itself expects a highly customizable configuration to estimate quotation parameters based on conceptual categories, as defined by the Quote Estimator Configuration schema optionally using versatile ONNX definitions. The Docker operation should return a JSON matching the Quote Estimation Result schema, which is parsed and included in the produced Quote based on provided Process execution parameters. - Add Process execution I/O pre-validation against the Process description before submitting the Job to avoid unnecessary allocation of computing resources for erroneous cases that can easily be detected in advance.
- Add
$schemareferences to source OGC API - Processes or other schema registries for applicable content definitions in responses. - Add missing OGC API - Processes schema references with published definitions
under
https://schemas.opengis.net/ogcapi/processes/part1/1.0/when applicable. - Add
linksrequest query parameter to/processesand/providers/{providerID}/processeslisting to provide control over reporting oflinksfor each Process summary item. By default,link=trueand automatically disable it whendetail=falseis specified. - Add missing
405response schema for all OpenAPI endpoints as handled by the API when the requested HTTP method is not applicable for the given path. - Renamed
weaver.quote_sync_max_waittoweaver.quotation_sync_max_waitto better align with new configuration settings for the Quotation extension. Old value will still be checked for backward compatibility. - Renamed
weaver.exec_sync_max_waittoweaver.execute_sync_max_waitto better align with the corresponding parameter for quotation. Old value will still be checked for backward compatibility. - Add
Lazifyutility class for holding a string with delayed computation and caching that returns its representation on-demand during formatting or other string operations to reduce the impact of its long generation. This can be used with a callable returning a string representation that can be discarded without invocation on inactive logging levels. - Add
countfield to JSON output of endpoints that support paging to provide the number of items returned within the paged result. Adjust the/quotationsendpoint that was using it instead oftotallike it was done on other listing endpoints. - Add
detailquery parameter for the/quotationsendpoint to allow listing of Quote summary details instead of only IDs by default, similarly to the/jobsendpoint.
- Fix schema meta fields (
title,summary,description, etc.) not being rendered in OpenAPI output for keyword schemas (allOf,anyOf,oneOf,not). - Fix schema definitions not being rendered in OpenAPI into the requested order
by
_sort_firstand_sort_aftercontrol attributes. - Fix request cache always invalidated when no explicit
allowed_codeswhere provided inrequest_extra, although the request succeeded, causing caching optimization to never actually be used on following requests in this case. - Fix cached requests misbehaving when combined with
stream=Trueargument due to contents not being stored in the object for following requests, causing them to raiseStreamConsumedErrorwhen calling the chunk iterator again. - Fix execution payloads for functional tests using
WorkflowRESTScatterCopyNetCDF,WorkflowRESTSelectCopyNetCDF,WorkflowWPS1ScatterCopyNetCDFand``WorkflowWPS1SelectCopyNetCDF`` processes, which requested invalid output identifiers. Those erroneous definitions were detected using the new Process execution I/O pre-validation against the corresponding Process descriptions on Job submission.
4.29.0 (2023-03-07)
- Replace deprecated
best_matchmethods forAcceptandAccept-LanguageHTTP headers by their respective implementation withacceptable_offersandlookupmethods better aligned with RFC 7231 specification.
- Fix missing
sphinx_autodoc_typehints[type_comment]extras due to renamed definition without leadingsby pinning1.19as the minimum version (relates to tox-dev/sphinx-autodoc-typehints#263). - Fix dynamic regex definitions for schema validation with
colander>=2that modifiesURL_REGEXpattern (relates to Pylons/colander#352). - Fix invalid default results from
colanderschemas withmissing=drop|requiredanddefaultparameters when combined withcorniceOpenAPI schemas. Pincolander<2to avoid problems with latest changes. - Fix
secure_filenamecausing valid names with leading or trailing underscores to be incorrectly unresolved because they get stripped out by the operation. - Fix
input-locationdefinition forPACKAGE_DIRECTORY_TYPEinput inweaver.processes.wps_package.WpsPackage.make_location_input, which caused the wrong directory being given to the CWL application. - Fix
httpdirectory download to match implemented AWS S3 directory download inweaver.utils.fetch_directory, so both types replicate the input directory's top level folder, which is necessary when downloading multiple directories for the same input source. - Fix deprecation warnings from
webobandowslib. - Fix filtered warnings for expected cases during tests.
- Fix a problem with
convert_input_values_schemaunder the OGC schema, that caused the conversion to malfunction when the function built lists for repeated input IDs of more than two elements. - Fix XML security vulnerability from
owslib<0.28.1.
4.28.0 (2022-12-06)
- Update Docker images to use more recent Python 3.10 by default instead of Python 3.7. All CI pipeline, tests and validation checks are also performed with Python 3.10. Unit and functional tests remain evaluated for all Python versions since 3.6 (legacy) up to 3.11 (experimental).
- Update to latest
cwltool==3.1.20221201130942to providev1.2extension definitions. - Add CWL extensions activation for specific features supported by Weaver for more adequate schema validation.
- Add Job log message size checks to better control what gets logged during the Application Package execution to avoid large documents causing problems when attempting save them to storage database.
- Update documentation with examples for
cwltool:CUDARequirement,ResourceRequirementandNetworkAccess. - Improve schema definition of
ResourceRequirement. - Deprecate
DockerGpuRequirement, with attempts to auto-convert it into correspondingDockerRequirementcombined withcwltool:CUDARequirementdefinitions. If this conversion does not work transparently for the user, explicit CWL updates with those definitions should be made. - Ensure that validation check finds exactly one provided CWL requirement or hint to represent the application type. In case of missing requirement, the Process deployment will fail with a reported error that contains a documentation link to guide the user in adjusting its Application Package accordingly.
- Fix CI failing setup of Python 3.6 not available on Ubuntu 22.04 (latest).
- Fix
distutils.version.LooseVersionmarked for deprecation for upcoming versions. Usepackaging.version.Versionsubstitute whenever possible, but preserve backward compatibility withdistutilsin case of older Python not supporting it. - Fix
cli._update_filesso there are no attempts to upload remote references to the Vault.
4.27.0 (2022-11-22)
- Support CWL
InlineJavascriptRequirementfor Process deployment to allow successful schema validation. - Support CWL
Directorytype references (resolves #466). Those references correspond to WPS and OGC API - Processeshrefusing theContent-Type: application/directoryMedia-Type and must hava a trailing slash (/) character. - Support S3 file or directory references using Access Point, Virtual-hosted–style and Outposts URLs (see AWS documentation Methods for accessing a bucket).
- Apply more validation rules against expected S3 file or directory reference formats.
- Update documentation regarding handling of S3 references (more formats supported) and
Directorytype references. - Support
weaver.wps_output_contextsetting andX-WPS-Output-Contextrequest header resolution in combination with S3 bucket location employed for storing Job outputs. - Nest every complex Job output (regardless if stored on local WPS outputs or on S3, and whether the output is
of
FileorDirectorytype) under its corresponding output ID collected from the Process definition to avoid potential name conflicts in storage location, especially in the case of multiple output IDs that could be aggregated with various files and listing of directory contents. - Allow
colander.SchemaNode(with extensions for OpenAPI schema converters) to provide validationpatternfield directly with a compiledre.Patternobject. - Support CWL definition for
cwltool:CUDARequirementto request the use of a GPU, including support for using Docker with a GPU (resolves #104). - Support CWL definition for
NetworkAccessto indicate whether a process requires outgoing IPv4/IPv6 network access.
- Fix
cli._update_filesso there are no attempts to upload remote references to the vault.
4.26.0 (2022-10-31)
- Add more explicit
PackageExceptionerror messages with contextual details when a CWL file reference cannot be resolved correctly. - Return
Content-Type: application/vnd.oai.openapi+json; version=3.0for OpenAPI endpoint response referenced byservice-descin the API conformance details, as specified by OGC API - Processes - OpenAPI 3.0 requirement class. - Support the generation of external schema references (
$ref) using theschema_refattribute if provided in acolander.SchemaNodethat does not provide an explicit object schema definition with properties. - Add Python typing definitions related to OpenAPI specification.
- Add more validation of request arguments for improved security.
- Fix invalid generation of OpenAPI 3.0 specification for Weaver API using
cornice_swagger. The generated schema structure used to return a mix of Swagger 2.0 and OpenAPI 3.0 definitions. The provided contents are now defined completely with OpenAPI 3.0 specification format. - Remove hard requirement
shapely==1.8.2to obtain latest fixes. - Update
json2xml>=3.20.0requirement to allow more recentcertifi,requestsandurllib3dependencies to be used by all packages (relates to vinitkumar/json2xml#157). - Fix resolution of CWL file from references that do not provide a known
Content-Typethat can represent CWL contents. This can occur when deploying abuiltinProcess from the local file reference, which does not generate a request and, therefore, noContent-Type. This can occur also for servers that incorrectly or simply do not report their responseContent-Typeheader. - Fix resolution of file reference with explicit CWL or YAML extensions when
Content-Typeis not reported or is indicated asplain/text. - Fix invalid resolution of
builtinProcess that could load the optional JSON or YAML payload file intended to provide additional Process definition details, instead of the expected CWL for the package definition. - Fix
kombupackage requirement to employcelery>=5.2withpymongo>=4(fixes #386, relates to celery/celery#7834, relates to celery/kombu#1536). - Fix deprecated
Cursor.count()call forQuoteandBillsearch withpymongo>=4. - Fix unsupported Process-related queries including a tagged version when searching for Job items.
4.25.0 (2022-10-05)
- Refactor
weaver.processes.wps_workflowdefinitions to delegate implementation tocwltoolcore classes, removing code duplication and allowing update to latest revisions (resolves #154).
- No change.
4.24.0 (2022-09-29)
- Support deployment of a local Process using a remote OGC API - Processes reference (resolves #11).
- Support CWL definition for
ScatterFeatureRequirementfor Workflow parallel step distribution of an input array (resolves #105 and relates to #462). - Add formatter and better logging details when executing
builtinProcessjsonarray2netcdf. - Add OGC Media-Type ontology for
Fileformat references within CWL definition. - Replace EDAM NetCDF format reference by OGC NetCDF Media-Type with expected ontology definitions by processes For backward compatibility, corresponding EDAM references will be converted to OGC Media-Type whenever possible.
- Adjust
builtinprocessjsonarray2netcdf(version2.0) to employ OGC Media-Type for NetCDF. - Adjust
schemainput ofjsonarray2netcdfto avoid erroneous definition exposing a JSONobjectstructure as a valid format, although a JSONarraytype is directly expected in the submitted JSON file. - Add support of
builtinProcess description overrides if provided along their CWL package definition. Overrides can be specified as JSON or YAML, and follow the same merging strategies of fields as normal deployments. - Refactor
weaver.processes.wps_[...]definitions to reuse operations for communicating with OGC API - Processes servers across implementation for monitored Job with a remote Process type of OGC API, ADES and Workflow with other step Process references.
- Fix implementation of various functional test cases for Workflow execution.
- Fix
owslibversion with enforcedpyprojdependency failing in Python 3.10 (resolves #459).
4.23.0 (2022-09-12)
- Add CLI and WeaverClient support of
logs,exceptionsandstatisticsretrieval. - Add CLI and WeaverClient support of Job search filtered by
tags,processandprovidersqueries. - Add CLI, WeaverClient and API support of Job search filtered by multiple
statusvalues. - Adjust OpenAPI schema definitions for Process deployment to allow
owsContextby itself without duplicated information that was required by mandatoryexecutionUnitdefinition.
- Fix
tagsquery parameter not applied to filter Job search requests. - Fix implementation of functional
DockerRequirementtest cases for Process deployment when references are provided byhrefwithin theexecutionUnitorowsContext(relates to #11). - Fix
weaver.wps_output_contextsub-directory resolved from default settings orX-WPS-Output-Contextrequest header not employed for storing the XML status location and Job log files next to the Job outputs directory.
4.22.0 (2022-08-18)
- Add WPS remote Provider retry conditions to handle known problematic cases during Process execution (on remote) that can lead to sporadic failures of the monitored Job. When possible, retried submission leading to successful execution will result in the monitored Job to complete successfully and transparently to the user. Relevant errors and retry attempts are provided in the Job logs.
- Add WPS remote Provider status exception response as XML message from the failed remote execution within the monitored local Job logs to help users understand how to resolve any encountered issue on the remote service.
- Bump version
OWSLib==0.26.0to fixprocessVersionattribute resolution from WPS remote Provider definition to populateProcess.versionproperty employed in converted Process description to OGC API - Process schema (relates to geopython/OWSLib#794). - Fixes and improvements for typing definitions.
4.21.0 (2022-08-15)
- Add CLI support for Process listing, Job execution, service registration and un-registration in the context of a Process offered by a remote Provider reference.
- Add CLI options for Process listing with detailed descriptions, paging, limit and sorting queries.
- Add CLI options for HTTP request timeout and retry control when required for specific use cases. For example, a Weaver instance with many registered Provider references could take longer than default timeout of 5s to populate the full list of remotely accessible processes retrieved from each WPS service.
- Add CLI output of most recently retrieved Job status during
executeoperation in combination of monitoring flag to report the produced Job reference ID and URL in case monitoring timeout is reached before its completion. - Add support of XML content for Process description response from the REST API endpoint based on the WPS
definition when any query between
schema=WPS,f=xml,format=xmlor theAcceptheader referring to XML Media-Type is identified in the request (resolves #125). - Add support of
fandformatquery parameters to describe a Process with JSON when requested from the WPS endpoint with redirect to REST API URL (resolves #125). - Add support of Job submission with WPS-like XML content and HTTP
POSTrequest directly submitted through the OGC APi - Processes REST endpoint. Response is returned in JSON regardless of WPS-like Job submission in order to provide the status response (resolves #125).
- Fix invalid
POST /providers/{provider_id}/processes/{process_id}/executionendpoint that was missing the Process portion to mimic the OGC API - Processes execution endpoint of a Job for a remote Provider. - Fix result file names resolution for staging outputs retrieved from the Job execution on a remote Provider where the Process outputs files are not generated using the same glob naming convention as expected by the CWL outputs of the corresponding Process.
- Fix Job submission response generation potentially duplicating
Content-TypeandContent-Lengthheaders.
4.20.0 (2022-07-15)
- Add support of Process revisions (resolves #107).
- Add
PATCH /processes/{processID}request, allowingMINORandPATCHlevel modifications that can be applied to an existing Process in order to revise non-execution critical information. LevelPATCHis used to identify changes with no impact on execution whatsoever, only affecting metadata such as its documented description. LevelMINORis used to update components that affect only execution methodology (e.g.: sync/async) or Process retrieval, but that do not directly impact what is executed (i.e.: the Application Package does not change). - Add
PUT /processes/{processID}request, allowingMAJORrevision to essentially redeploy a new Process, but leaving some form of relationship with older versions by reusing the same Process ID. ThisMAJORupdate level implies a relatively critical change to execute the Process, such as the addition, removal or modification of an input or output, directly impacting the Application Package definition and parameters the Process offers. - Add support of
{processID}:{version}representation in request path andprocessIDof the Job definition to reference the specific Process revisions when fetching a Process description or a Job status. - Add search query
versionandrevisionsparameters to allow description of a specific Process revision, or listing all its versions history. - Add more entries in
linksreferring to Process revisions whenever applicable.
- Fix CLI not allowing expected combination of
--usernameand--passwordfor Docker authentication when deploying a Process that needs it to retrieve the referenced repository and image in its CWL definition. - Fix invalid
minimumandmaximumOpenAPI fields that were defined asminLengthandmaxLength(duplicates definitions) for Process description and deployment schema validation.
4.19.0 (2022-07-05)
- Add support of official CWL IANA types to allow Process deployment with the relevant
Content-Typeheader for the submitted payload (see common-workflow-language/common-workflow-language#421 (comment), relates to opengeospatial/NamingAuthority#169, resolves #434). - Support Process deployment using only CWL content provided it contains an
idfield representing the target Process ID as per recommendation in OGC Best Practice for Earth Observation Application Package, CWL Document (resolves #434). - Support Process deployment with a payload using
YAMLcontent instead ofJSON. ThisYAMLcontent MUST be submitted in the request with aContent-Typeheader either equal toapplication/x-yamlorapplication/ogcapppkg+yamlfor the OGC Application Package schema, or usingapplication/cwl+yamlfor a CWL-only definition. The definition will be loaded and converted toJSONfor schema validation. Otherwise,JSONcontents is assumed to be directly provided in the request payload for validation as previously accomplished. - Add partial support of CWL with
$graphrepresentation for the special case where the graph is composed of a list of exactly one Application Package. Multi/nested-CWL definitions are NOT supported (relates to #56). - Add
weaver.cwl_processes_dirconfiguration setting for preloading, registering or updating a set of known Process definitions from CWL files stored in a nested directory structure. This allows a service provider that uses Weaver to offer their Processes to directly maintain their definitions from the set of CWL files and upload changes in the web application at startup without need to manually undeploy and redeploy each Process. - Add
weaver.cwl_processes_register_errorto fail fast any Process registration error from CWL when loading files at startup.
- Fix Process deployment using a WPS-1/2 URL reference defining a
GetCapabilitiesrequest to resolve the correspondingDescribeProcessrequest if the Process ID can be inferred from other known locations (relates to #11). - Move
WpsPackageproperties to instance level to avoid potential referencing of attributes across same class used by distinct running Process.
4.18.0 (2022-06-09)
- Add CLI Authentication Handler parameters and corresponding
authargument of instantiated classes forWeaverClientmethods that allows inline request authentication and authorization resolution to access a protected service. Any Authentication Handler implementation can be used to fulfill required server functionalities. - Add CLI handling of uncaught exceptions to gracefully report message and error instead of exception traceback.
- Replaced CLI option
-tby-T(Docker token) duringdeployoperation to match naming convention of other options (resolves #400). - Replaced CLI option
-HbynH(--no-headers) andwH(--with-headers) to respectively enable or (explicitly) disable return of headers from response of the executed operation. - Replaced CLI option
-LbynL(--no-links) andwL(--with-links) to respectively enable (explicitly) or disable return of links from response of the executed operation. - Replaced previously defined
-Hoption by new-H/--headerargument allowing insertion of explicitly provided request headers for relevant requests called by the executed operation. - Add case insensitive support of values for common API, CLI, and
WeaverClientparameter choices. - Add all missing CLI and
WeaverClientexamples in the documentation.
- Fix
Process.payloadimproperly encoded in case of special characters where allowed such as in CWL definition. - Fix CLI operations assuming valid JSON response to instead return error response content and status code.
- Fix CLI rendering of various optional arguments and groups when displaying help messages.
- Fix invalid handling of
Constantsdefinitions mixed withclasspropertysuch as inOutputFormatcausing returned value to be theclasspropertyitself instead of the retrieved value from its getter definition. - Fix minor typing definitions that were incorrect.
4.17.0 (2022-05-30)
- Add statistics collection at the end of Job execution to obtain used memory from
celeryprocess and spaced used by produced results. - Add
/jobs/{jobID}/statisticsendpoint (and corresponding locations for/providersand/processes) to report any collected statistics following a Job execution.
- Fix Job
Locationheader injected twice inget_job_submission_responsecausing header to have comma-separated list of URI values failing retrieval by CLI when attempting to perform auto-monitoring of the submitted Job. - Fix CWL runtime context setup to return monitored maximum RAM used by application under the Process if possible.
- Fix failing Service provider summary response in case of unresponsive (not accessible or parsable) URL endpoint
contents due to different errors raised by distinct versions of
requestspackage.
4.16.1 (2022-05-12)
- Add OpenGIS as a potential
namespace resolver for common geospatial Media-Types such as
image/tiff; subtype=geotiffthat must be distinguished from generic IANA formats.
- Fix invalid interpretation of stored Process I/O with
schemawith Media-Type reference not representing a pre-resolved OpenAPI schema object, but rather an expected URIcontentSchemareference for default format. - Fix CLI combination of user-provided Process description and inserted Process ID by option argument considering
alternative
OGC/OLDrepresentations. - Fix OAS
formatfield dropped for literal type when resolvingschemaprovided during Process deployment. - Fix Media-Type resolution dropping important sub-type parameters to distinguish between specific
type context (e.g.
image/tiffvsimage/tiff; subtype=geotiff).
4.16.0 (2022-05-11)
- Add support of OpenAPI
schemafield for I/O definitions within Process description responses as required by OGC API - Processes specification (resolves #245). Existing and deployed processes using legacy I/O definitions will be parsed for corresponding fields employed in OpenAPI to generate the missingschemafield. Inversely, processes directly deployed withschemadefinitions are ported back to legacy I/O representation by padding them with corresponding fields. Conversion between the two representations is unidirectional according to whetherschemais specified or not. Nevertheless, the final I/O definitions can try to make use of both representations simultaneously and in combination with I/O definitions extracted from the CWL Application Package to resolve additional details during I/O merging strategy. - Add support of
Acceptheader,fandformatrequest queries forGET /jobs/{jobID}/logsretrieval usingtext,json,yamlandxml(and their corresponding Media-Type definitions) to list Job logs. - Add partial support of literals with unit of measure (
UoM) specified during Process deployment using the I/Oschemafield (relates to #430). - Add partial support of bounding box parsing specified during Process deployment using the
I/O
schemafield (relates to #51). - Add encoding/decoding of JSON I/O definitions for saving to database in order to support OpenAPI
schemathat can contain conflicting key names with MongoDB functionalities (e.g.:$ref). - Add parsing of CLI inputs with
@parameter=valueadditional properties to be passed for the Process execution. This can be used for specifying themediaTypeandencodingof aFilereference input. - Remove
deploymentProfileNamerequirement during Process deployment. The correspondingdeploymentProfileproperty is instead automatically generated from resolved CWL package/reference or remote WPS reference. This further simplifies deployment using the CLI to its bare minimum components as only the CWL or WPS reference needs to be provided along the desired Process ID without any further details.
- Remove
VaultReferencefromReferenceURLschema employed to reference external resources that are not intended to be used with temporary Vault definitions. Only inputs for Process execution will allow Vault references. - Fix
LiteralOutputcreation not removingallowed_valuesnot available with PyWPS class. - Fix failing Process deployment caused by
linksif explicitly specified in the payload by the user. Additional links that don't conflict with dynamically generated ones are added to the deployed Process definition. - Fix missing
deploymentProfileproperty in Process description (resolves #319).
4.15.0 (2022-04-20)
In order to support synchronous execution, setting
RESULT_BACKENDMUST be specified in theweaver.iniconfiguration file. See Weaver INI Configuration Example in section[celery]for more details.With resolution and added support of
transmissionModehandling according to OGC API - Processes specification, requests that where submitted withreferenceoutputs will produce results in a different format than previously since this parameter was ignored and always returnedvaluerepresentation.Due to
celery>=5.2migration, any call toceleryCLI must be updated accordingly by moving the global options before the mode, namelyworker,inspectand so on. Specifically for Weaver, this means theweaver-workercommand line option -A must be moved beforeworkeras follows:celery -A pyramid_celery.celery_app worker -B -E --ini weaver.ini [...]
- Support
Preferheader withwaitorrespond-asyncdirectives to selectJobexecution mode either as synchronous or asynchronous task, according to supportedjobControlOptionsof the relevantProcessbeing executed (resolves #247). - Increase minor version of all
builtinprocesses that will now be executable in wither (a)synchronous modes. - Add
weaver.exec_sync_max_waitandweaver.quote_sync_max_waitsettings allowing custom definition for the maximum duration that can be specified to wait for a synchronous response from task workers. - Add
-B(celery beat) option to Docker command ofweaver-workerto run scheduled task in parallel tocelery workerin order to periodically cleanup task results introduced by synchronous execution. - Add support of
transmissionModehandling asreferenceto generate HTTPLinkreferences for results requested this way (resolves #377). - Updated every
Processto report that they supportoutputTransmissionboth asreferenceandvalue, since handling of results is accomplished by Weaver itself, regardless of the application being executed. - Add partial support of
response=rawparameter for execution request submission in order to handle results to be returned accordingly to specifiedoutputTransmissionbyreferenceorvalue. Multipart contents for multi-output results are not yet supported (relates to #376). - Add CLI option
-R/--ref/--referenceforexecuteoperation allowing to request correspondingoutputsby ID to be returned using thetransmissionMode: referencemethod, producing HTTPLinkheaders for those entries rather than inserting values in the response content body. - Add requested
outputsinto response ofGET /jobs/{jobId}/inputsto obtain submittedJobdefinitions. - Add query parameter
schemaforGET /jobs/{jobId}/inputs(and corresponding endpoints under/processesand/providers) allowing to retrieve submitted input values and requested outputs with eitherOGC/OLDformats. - Improve conformance for returned status codes and error messages when requesting results for an unfinished,
failed, or dismissed
Job. - Adjust conformance item references to correspond with OGC API - Processes: Part 2 renamed from Transactions to Deploy, Replace, Undeploy.
- Add
mutablefield toProcesssummary listing and detailed descriptions for conformance (resolves #180). - Improve
Processundeployment to consider runningJobto block its removal while in use. - Add
categoryquery parameter to/conformanceendpoint allowing to filter items byconf(conformance),rec(recommendation),req(requirement),per(permission) orallreferences. By default, return theconfrepresentation which is the expected definitions by OGC API conformance validators. - Add multiple conformance items related to CWL and OGC Best Practice for Earth Observation Application Package definitions (relates to #56, #103, #105, #294, #399).
- Phase out
Python 3.6support to better resolve package dependencies (could still work, but not explicitly supported nor officially guaranteed to work).
- Fix
outputspermitted to be completely omitted from the execution request (resolves #375). - Fix
outputspermitted as explicit empty mapping or list as equivalent to omitting them, defining by default that alloutputsshould be returned withtransmissionMode: valueforJobexecution. - Fix all instances of
outputTransmissionreported asreferenceinProcessdescriptions, although Weaver behaved with thevaluemethod, which is to return values and file references in content body, instead of HTTPLinkheader references. - Fix WPS 1/2 endpoint not reporting the appropriate instance URL (fixes #83).
- Fix CLI
deployoperation headers incorrectly passed down to the deployment request. - Fix many linting issues with latest
pylintdefinitions. - Fix temporary
pywpspatches that have been integrated (relates to #352 addressing issues geopython/pywps#578 and geopython/pywps#623). - Fix
celerysecurity vulnerability with update to latest recommended version (resolves #386).
4.14.0 (2022-03-14)
- Add CLI option
-L/--no-linksthat drops thelinkssection of any response to make the printed result more concise and specific to relevant details of the called operation. - Add CLI option
-F/--formatthat allows output of contents in an alternative format. Available formatters include JSON, YAML and XML representations, with either pretty indentation and newlines or not. This allows CLI calls that can return contents in the preferred format of a such that might need to parse the relevant details. Alternative until the API itself can return similar formatted responses (relates to #125). - Add CLI option
-H/--headersthat allows output of response headers as well as the response contents. This can be useful for endpoints that can return critical information, such asLocationheader for the Job status endpoint of an OGC compliant service, or thePreference-Appliedheader for services that support multiple execution modes (i.e.:waitforsync-executeorrespond-asyncforasync-executecontrol options). - Add CLI operation
jobsto obtain listing with some options similar to the corresponding API endpoint queries.
- No change.
4.13.0 (2022-03-09)
- Add
schemaquery parameter toGET /jobs/{jobID}/outputsrequest allowing to select betweenOGC,OLDOGC+strictandOLD+strictrepresentations (case insensitive), each with different combinations offormat.mimeType,format.mediaTypeand/or directlytypefield to provide the Content-Type of an output withhreffile. By default, both theformat(i.e.:OLDschema) and thetype(i.e.:OGCschema) are simultaneously reported for backward and forward compatibility, and for OGC compliance, to return the IANA Media-Type of the associated file reference (relates to #401). - Add support of
typeas alias to the Media-Type under theformatfor file references when submitted forJobexecution inputs, in accordance to the reported inputs/outputs endpoints, and for OGC compliance (resolves #401). - Drop
typefield formetadataitems in process description that correspond to avaluewith arole. - Enforce pattern validation of
typeas IANA Content-Type formetadataitems in process description that correspond to aLinkwithhref. Invalidtypeare now rejected to adhere to OGC requirement classes. - Clarify schema employed by Weaver to use naming that is as close as possible to OGC schemas to facilitate their comprehension and external references.
- Fix
GET /jobs/{jobID}/inputsendpoint failing to return submittedinputsforJobexecution when they were specified using the mapping representation (i.e.:OGCschema) instead of the listing representation (i.e.:OLDschema). - Fix Media-Type provided as
Jobfile reference input not forwarded to underlying WPS execution for validation against supported formats for corresponding inputs. Specified format handles both theOLDdefinition withformatfield (and nestedmimeTypeormediaType), and the more recentOGCformat withtypefield.
4.12.0 (2022-02-28)
- Updates related to OGC API - Processes: Quotation Extension.
- Move estimator portion of the quoting operation into separate files and bind them with Celery task to allow the same kind of dispatched processing as normal Process execution.
- Update Quote data type to contain status similarly to Job considering dispatched
asyncprocessing. - Define
LocalizedDateTimePropertyfor reuse by data types avoiding issues about handling datetime localization. - Update OpenAPI schemas regarding Quote (partial/complete) and other datetime related fields.
- Add parsing of
Preferheader allowingsyncprocessing (relates to #247). This is not yet integrated for Jobs execution themselves onprocesses/{id}/executionendpoint.
- No change.
4.11.0 (2022-02-24)
- Support Process deployment using OGC schema (i.e.: Process metadata can be provided directly under
processDescriptioninstead of being nested underprocessDescription.process). This aligns the deployment schema with reference OGC API - Processes: Deploy, Replace, Undeploy extension (see OGC Application Package schema). The previous schema for deployment with nestedprocessfield remains supported for backward compatibility.
- Fix resolution of the
defaultfield specifier under a list of supportedformatsduring deployment. For various combinations such as whendefault: Trueformat is omitted, or when the default is not ordered first, resolveddefaultspecifically foroutputsdefinitions would be incorrect.
4.10.0 (2022-02-22)
- Refactor all constants of similar concept into classes to facilitate reuse and avoid omitting entries when iterating over all members of a corresponding constant group (fixes #33).
- Fix resolution of common IANA Media-Types (e.g.:
text/plain,image/jpeg, etc.) that technically do not provide and explicit entry when accessing the namespace (i.e.:{IANA_NAMESPACE_URL}/{mediaType}), but are known in IANA registry through various RFC specifications. The missing endpoints caused many recurring and unnecessary HTTP 404 that needed a second validation against EDAM namespace each time. These common Media-Types, along with new definitions inweaver.formats, will immediately return a IANA/EDAM references without explicit validation on their registries.
4.9.1 (2022-02-21)
- Add encryption of stored Vault file contents until retrieved for usage by the executed
Processapplication.
- Fix auto-resolution of Vault file
Content-Typewhen not explicitly provided.
4.9.0 (2022-02-17)
- Add Vault endpoints providing a secured self-hosted file storage to upload local files for execution input.
- Add
uploadCLI operation for uploading local files to Vault. - Add CLI automatic detection of local files during
executecall to upload to Vault and retrieve them from it on the remote Weaver instance. - Add
-S/--schemaoption to CLIdescribeoperation. - Add more documentation examples and references related to CLI and
WeaverClientusage. - Improve Media-Type/Content-Type guesses based on known local definitions and extensions in
weaver.formats. - Extend
PyWPSWPSRequestto support more authorization header forwarding for inputs that could need it.
- Fix rendering of CLI required arguments under the appropriate argument group section when those arguments can be
specified using prefixed
-and--optional arguments format. - Fix CLI
urlparameter to be provided using-uor--urlwithout specific argument position needed. - Fix CLI parsing of
Fileinputs forexecuteoperation when provided with quotes to capture full paths. - Fix rendering of OpenAPI variable names (
additionalParameters) employed to represent for example{input-id}as the key within the mapping representation of inputs/outputs. The previous notation employed was incorrectly interpreted as HTML tags, making them partially hidden in Swagger UI. - Fix reload of
DockerAuthenticationreference from database failing due to mismatched parameter names. - Fix invalid generation and interpretation of timezone-aware datetime between local objects and loaded from database. Jobs created or reported without any timezone UTC offset were assumed as UTC+00:00 although corresponding datetimes were generated based on the local machine timezone information. Once reloaded from database, the missing timezone awareness made datetime stored in ISO-8601 format to be interpreted as already localized datetime.
- Fix invalid setup of generic CLI options headers for other operations than
dismiss. - Fix
weaver.request-optionshandling that always ignoredtimeoutandverifyentries from the configuration file by overriding them with default values.
4.8.0 (2022-01-11)
- Refactor Workflow operation flow to reuse shared input and output staging operations between implementations. Each new step process implementation now only requires to implement the specific operations related to deployment, execution, monitoring and result retrieval for their process, without need to consider Workflow intermediate staging operations to transfer files between steps.
- Refactor
Wps1ProcessandWps3Processstep processes to follow new workflow operation flow. - Add
builtinprocessfile_index_selectorthat allows the selection of a specific file within an array of files. - Add tests to validate chaining of Workflow steps using different combinations of process types
including WPS-1, OGC-API and
builtinimplementations. - Move CWL script examples in documentation to separate package files in order to directly reference them in tests validating their deployment and execution requests.
- Move all
tests/functional/application-packagesdefinitions into distinct directories to facilitate categorization of corresponding deployment, execution and package contents, and better support the various Workflow testing location of those files with backward compatibility. - Add logs final entry after retrieved internal CWL application logs to help highlight delimitation with following entries from the parent Process.
- Fix handling of CWL Workflow outputs between steps when nested glob output binding are employed (resolves #371).
- Fix resolution of
builtinprocess Python reference when executed locally within a Workflow step. - Fix resolution of process type WPS-1 from its package within a Workflow step executed as OGC-API process.
- Fix resolution of
WPS1Requirementdirectly provided as CWL execution unit within the deployment body. - Fix deployment body partially dropping invalid
executionUnitsub-fields causing potential misinterpretation of the intended application package. - Fix resolution of package or WPS-1 reference provided by
hrefwith erroneousContent-Typereported by the returned response. Attempts auto-resolution of detected CWL (as JSON or YAML) and WPS-1 (as XML) contents. - Fix resolution of
formatreference within CWL I/O record after interpretation of the loaded application package. - Fix missing WPS endpoint responses in generated OpenAPI for ReadTheDocs documentation.
- Fix reporting of WPS-1 status location as the XML file URL instead of the JSON OGC-API endpoint when Job was originally submitted through the WPS-1 interface.
- Fix and improve multiple typing definitions.
4.7.0 (2021-12-21)
- Add CLI
--bodyand--cwlarguments support of literal JSON string fordeployoperation.
- Fix help message of CLI arguments not properly grouped within intended sections.
- Fix handling of mutually exclusive CLI arguments in distinct operation sub-parsers.
- Fix CLI requirement of
--processand--jobarguments.
4.6.0 (2021-12-15)
- Add
WeaverClientandweaverCLI as new utilities to interact with Weaver instead of using the HTTP API. This provides both shell and Python script interfaces to run operations toward Weaver instances (or any other OGC API - Processes compliant instance except for deployment operations). It also facilitates new Process deployments by helping with the integration of a local CWL file into a full-fledgedDeployHTTP request, and other recurrent tasks such asExecuterequests followed by Job monitoring and results retrieval once completed successfully (resolves #363, resolves DAC-198, relates to DAC-203). - Added
weavercommand installation tosetup.pyscript. - Added auto-documentation utilities for new
weaverCLI (argparse parameter definitions) and provide relevant references in new chapter in Sphinx documentation. - Added
cwl2json_input_valuesfunction to help converting between CWL parameters and OGC API - Processes input value definitions for Job submission. - Added
weaver.datatype.AutoBasethat allows quick definition of data containers with fields accessible both as properties and dictionary keys, simply by detecting predefined class attributes, avoiding a lot of boilerplate code. - Split multiple file loading, remote validation and resolution procedures into distinct functions in order for the new CLI to make use of the same methodologies as needed.
- Updated documentation with new details relevant to the added CLI and corresponding references.
- Updated some tests utilities to facilitate definitions of new tests for
WeaverClientfeature validation. - Replaced literal string
"OGC"and"OLD"used for schema selection by properly defined constants. - Add database revision number for traceability of migration procedures as needed.
- Add first database revision with conversion of UUID-like strings to literal UUID objects.
- Add
linksto/processesand/providers/{id}/processeslistings (resolves #269). - Add
limit,pageandsortquery parameters for/processeslisting (resolves #269). - Add
ignoreparameter to/processeslisting when combined withproviders=trueto allow the similar behaviour supported byignoreon/providersendpoint, to effectively ignore services that cause parsing errors or failure to retrieve details from the remote reference. - Add schema validation of contents returned on
/processesendpoint. - Add more validation of paging applicable index ranges and produce
HTTPBadRequest [400]when values are invalid.
- Fix some typing definitions related to CWL function parameters.
- Fix multiple typing inconsistencies or ambiguities between
AnyValue(as Python typing for any literal value) against the actual classAnyValueofPyWPS. Typing definitions now all useAnyValueTypeinstead. - Fix resolution of
owsContextlocation in the payload of remote Process provided byhreflink in theexecutionUnitdue to OGC API - Processes ("OGC"schema) not nested underprocesskey (in contrast to"OLD"schema). - Fix resolution of
outputssubmitted as mapping (OGC API - Processes schema) during Job execution to provide desired filtered outputs in results and theirtransmissionMode. Note that filtering and handling of alltransmissionModevariants are themselves not yet supported (relates to #377 and #380). - Fix resolution of unspecified UUID representation format in MongoDB.
- Fix conformance with error type reporting of missing Job or Process (resolves #320).
- Fix sorting of text fields using alphabetical case-insensitive ordering.
- Fix search with paging reporting invalid
totalwhen out of range. - Pin
pymongo<4untilcelery>=5gets resolved (relates to #386).
4.5.0 (2021-11-25)
- Add support of
X-Auth-Dockerrequest header that can be specified during Process deployment as authentication token that Weaver can use to obtain access and retrieve the Docker image referenced by the Application Package (CWL) located on a private registry. - Add more documentation details about sample CWL definitions to execute script, Python and Dockerized applications.
- Fix parsing of inputs for OpenSearch parameters lookup that was assuming inputs were always provided as listing definition, not considering possible mapping definition.
- Fix incorrect documentation section
Package as External Execution Unit Referencewhere content was omitted and incorrectly anchored as followingESGF-CWTsection.
4.4.0 (2021-11-19)
- Add
map_wps_output_locationutility function to handle recurrent mapping ofweaver.wps_output_dirback and forth with resolvedweaver.wps_output_url. - Add more detection of map-able WPS output location to avoid fetching files unnecessarily. Common cases
are
Workflowrunning multiple steps on the same server or Application PackageProcessthat reuses an output produced by a previous execution. Relates to #183. - Add pre-validation of file accessibility using HTTP HEAD request when a subsequent
Workflowstep employs an automatically mapped WPS output location from a previous step to verify that the file would otherwise be downloadable if it could not have been mapped. This is to ensure consistency and security validation of the reference WPS output location, although the unnecessary file download operation can be avoided. - Add functional
Workflowtests to validate execution without the need of remote Weaver test application (relates to #141, relates to #281). - Add missing documentation details about Data Source and connect chapters with other relevant
documentation details and updated
Workflowtests. - Add handling of
Content-Dispositionheader providing preferredfilenameorfilename*parameters when fetching file references instead of the last URL fragment employed by default (resolves #364). - Add more security validation of the obtained file name from HTTP reference, whether generated from URL path fragment or other header specification.
- Fix incorrect resolution of
Processresults endpoint to pass contents from one step to another duringWorkflowexecution (resolves #358). - Fix logic of remotely and locally executed applications based on CWL requirements when attempting to resolve whether an input file reference should be fetched.
- Fix resolution of WPS I/O provided as mapping instead of listing during deployment in order to properly parse them and merge their metadata with corresponding CWL I/O definitions.
- Fix DataSource and OpenSearch typing definitions to more rapidly detect incorrect data structures during parsing.
4.3.0 (2021-11-16)
- Add support of
typeandprocessIDquery parameters forJoblisting (resolves some tasks in #268). - Add
typefield toJobstatus information (resolves #351). - Add OGC API - Processes conformance references regarding supported operations for
Joblisting and filtering. - Add
minDurationandmaxDurationparameters to queryJoblisting filtered by specific execution time range (resolves #268). Range duration parameters are limited to single values each (relates to opengeospatial/ogcapi-processes#261). - Require minimally
pymongo==3.12.0and corresponding MongoDB5.0instance to process new filtering queries ofminDurationandmaxDuration. Please refer to Database Migration and MongoDB official documentation for migration methods. - Refactor
Jobsearch method to facilitate its extension in the event of future filter parameters. - Support contextual WPS output location using
X-WPS-Output-Contextheader to storeJobresults. When aJobis executed by providing this header with a sub-directory, the resulting outputs of theJobwill be placed and reported under the corresponding location relative to WPS outputs (path and URL). - Add
weaver.wps_output_contextsetting as default contextual WPS output location when header is omitted. - Replace
Job.execute_asyncgetter/setter by simple property using more genericJob.execution_modefor storage in database. ProvideJob.execute_asyncandJob.execute_syncproperties based on stored mode. - Simplify
execute_processfunction executed by Celery task into sub-step functions where applicable. - Simplify forwarding of
Jobparameters betweenPyWPSserviceWorkerService.execute_jobmethod and Celery task instantiating it by reusing theJobobject. - Provide corresponding
Joblog URL along already reported log file path to facilitate retrieval from server side. - Avoid
Job.progressupdates followingfailedordismissedstatuses to keep track of the last real progress percentage that was reached when that status was set. - Improve typing of database and store getter functions to infer correct types and facilitate code auto-complete.
- Implement
Jobdismiss operation ensuring pending or running tasks are removed and output result artifacts are removed from disk. - Implement HTTP Gone (410) status from already dismissed
Jobwhen requested again or when fetching its artifacts.
- Removes the need for specific configuration to handle public/private output directory settings using
provided
X-WPS-Output-Contextheader (fixes #110). - Fix retrieval of Pyramid
Registryand application settings when available container is WerkzeugRequestinstead of PyramidRequest, as employed by underlying HTTP requests in PyWPS service. - Allow
groupquery parameter to handleJobcategory listing withproviderasservicealias. - Improve typing of database and store getter functions to infer correct types and facilitate code auto-complete.
- Fix incorrectly configured API views for batch
Jobdismiss operation withDELETE /jobsand corresponding endpoints forProcessandProviderpaths. - Fix invalid
Joblinks sometimes containing duplicate/occurrences. - Fix invalid
Joblink URL foralternaterelationship.
4.2.1 (2021-10-20)
- Add more frequent
Jobupdates of execution checkpoint pushed to database in order to avoid inconsistent statuses between the parentCelerytask and the underlying Application Package being executed, since both can update the sameJobentry at different moments. - Add a
Joblog entry as"accepted"on the API side before calling theCelerytask submission (Jobnot yet picked by a worker) in order to provide more detail between the submission time and initial execution time. This allows to have the first log entry not immediately set to"running"since both"started"and"running"statues are remapped to"running"within the task to be compliant with OGC status codes.
- Fix an inconsistency between the final
Jobstatus and the reported "completed" message in logs due to missing push of a newer state prior re-fetch of the latestJobfrom the database.
4.2.0 (2021-10-19)
- Add execution endpoint
POST /provider/{id}/process/{id}/executioncorresponding to the OGC-API compliant endpoint for localProcessdefinitions. - Add multiple additional relation
linksforProcessandJobresponses (resolves #234 and #267). - Add convenience
DELETE /jobsendpoint with input list ofJobUUIDs in order todismissmultiple entries simultaneously. This is useful for quickly removing a set ofJobreturned by filteredGET /jobscontents. - Update conformance link list for
dismissand relevant relationlinksdefinitions (relates to #53 and #267). - Add better support and reporting of
Jobstatusdismissedwhen operation is called from API on running task. - Use explicit
startedstatus whenJobhas been picked up by a Celery worker instead of leaving it toaccepted(same status that indicates theJob"pending", although a worker is processing it). Early modification of status is done in case setup operations (send WPS request, prepare files, etc.) take some time which would leave users under the impression theJobis not getting picked up. Report explicitrunningstatus inJobonce it has been sent to the remote WPS endpoint. The API will reportrunningin both cases in order to support OGC API - Processes naming conventions, but internalJobstatus will have more detail. - Add
updatedtimestamp toJobresponse to better track latest milestones saved to database (resolves #249). This avoids users having to compare many fields (created,started,finished) depending on latest status. - Apply stricter
Deploybody schema validation and employ deserialized result directly. This ensures that preserved fields in the submitted content for deployment contain only known data elements with expected structures for respective schemas. Existing deployment body that contain invalid formats could start to fail or might generate inconsistentProcessdescriptions if not adjusted. - Add improved reporting of erroneous inputs during
Processdeployment whenever possible to identify the cause. - Add more documentation details about missing features such as
EOImageinputs handled by OpenSearch requests. - Add
weaver.celeryflag to internal application settings when auto-detecting that current runner iscelery. This bypasses redundant API-only operations during application setup and startup not needed byceleryworker.
- Fix OGC-API compliant execution endpoint
POST /process/{id}/executionnot registered in API. - Fix missing status for cancelled
Jobsin order to properly supportdismissoperation (resolves #145 and #228). - Fix all known OGC-specific link relationships with URI prefix (resolves #266).
- Fix incorrect rendering of some table cells in the documentation.
4.1.2 (2021-10-13)
- No change.
- Add
celery workertask events flag (-E) to Docker command (weaver-worker) to help detect submitted delayed tasks when requesting job executions.
4.1.1 (2021-10-12)
- No change.
- Fix handling of default format field of WPS input definition incorrectly resolved as default data by
PyWPSfor Process that allows optional (minOccurs=0) inputs ofComplextype. Specific case is detected with relevant erroneous data and dropped silently because it should not be present (since omitted in WPS request) and should not generate a WPS input (relates to geopython/pywps#633). - Fix resolution of CWL field
defaultvalue erroneously inserted as"null"literal string for inputs generated from WPS definition to avoid potential confusion with valid"null"input or default string. Default behaviour to drop or ignore omitted inputs are handled by"null"withintypefield in CWL definitions. - Fix
Wps1Processjob runner for dispatched execution of WPS-1 Process assuming all provided inputs contain data or reference. Skip omitted optional inputs that are resolved withNonevalue following above fixes. - Resolve execution failure of WPS-1 Process
ncdumpunderhummingbirdProvider (fixes issue identified in output logs from notebook in PR pavics-sdi#230).
4.1.0 (2021-09-29)
- Improve reporting of mismatching Weaver configuration for Process and Application Package definitions that always require remote execution. Invalid combinations will be raised during execution with detailed problem.
- Forbid Provider and applicable Process definitions to be deployed, executed or queried when corresponding remote execution is not supported according to Weaver instance configuration since Provider must be accessed remotely.
- Refactor endpoint views and utilities referring to Provider operations into appropriate modules.
- Apply
weaver.configuration = HYBRIDby default in example INI configuration since it is the most common use case. Apply same configuration by default in tests. Default resolution still employsDEFAULTfor backward compatibility in case the setting was omitted completely from a custom INI file. - Add query parameter
ignoretoGET /providerslisting in order to obtain full validation of remote providers (including XML contents parsing) to return200. Invalid definitions will raise and return a[422] Unprocessable EntityHTTP error. - Add more explicit messages about the problem that produced an error (XML parsing, unreachable WPS, etc.) and which caused request failure when attempting registration of a remote Provider.
- Fix reported
linksby processes nested under a providerService. Generated URL references were omitting the/providers/{id}portion. - Fix documentation referring to incorrect setting name in some cases for WPS outputs configuration.
- Fix strict XML parsing failing resolution of some remote WPS providers with invalid characters such as
<,<=within process description fields. Although invalid, those easily recoverable errors will be handled by the parser. - Fix resolution and execution of WPS-1 remote Provider and validate it against end-to-end test procedure from scratch Service registration down to results retrieval (fixes #340).
- Fix resolution of applicable Provider listing schema validation when none have been registered (fixes #339).
- Fix incorrect schema definition of Process items for
GET /processesresponse that did not report the alternative identifier-only listing whendetail=falsequery is employed. - Fix incorrect reporting of documented OpenAPI reference definitions for
queryparameters with same names shared across multiple endpoints. Fix is directly applied on relevant reference repository that generates OpenAPI schemas (see fmigneault/cornice.ext.swagger@70eb702). - Fix
weaver.exceptiondefinitions such that raising them directly will employ the correspondingHTTPExceptioncode (if applicable) to generate the appropriate error response automatically when raising them directly without further handling. The order of class inheritance were always using500due toWeaverExceptiondefinition.
4.0.0 (2021-09-21)
- Apply conformance updates to better align with expected
ProcessDescriptionschema from OGC API - Processes v1.0-draft6. The principal change introduced in this case is that process description contents will be directly at the root of the object returned by/processes/{id}response instead of being nested under"process"field. Furthermore,inputsandoutputsdefinitions are reported as mapping of{"<id>": {<parameters>}}as specified by OGC-API instead of old listing format[{"id": "<id-value>", <key:val parameters>}]. The old nested and listing format can still be obtained using request query parameterschema=OLD, and will otherwise use OGC-API by default or whenschema=OGC. Note that some duplicated metadata fields are dropped regardless of selected format in favor of OGC-API names. Some examples areabstractthat becomesdescription,processVersionthat simply becomesversion,mimeTypethat becomesmediaType, etc. Some of those changes are also reflected byProcessSummaryduring listing of processes, as well as for corresponding provider-related endpoints (relates to #200). - Add backward compatibility support of some metadata fields (
abstract,mimeType, etc.) forDeployoperation of pre-existing processes. When those fields are detected, they are converted inplace in favor of their corresponding new names aligned with OGC-API. - Update
mimeTypetomediaTypeas format type representation according to OGC-API (relates to #211). - Add explicit pattern validation (
type/subtype) of format string definitions withMediaTypeschema. - Add sorting capability to generate mapping schemas for API responses using overrides of
properties
_sort_firstand_sort_afterusing lists of desired ordered field names. - Improved naming of many ambiguous and repeated words across schema definitions that did not necessarily interact with each other although making use of similar naming convention, making their interpretation and debugging much more complicated. A stricter naming convention has been applied for consistent Deploy/Describe/Execute-related and Input/Output-related references.
- Replace
list_remote_processesfunction by methodprocessesunder theServiceinstance. - Replace
get_capabilitiesfunction by reusing and extending methodsummaryunder theServiceinstance. - Improve generation of metadata and content validation of
Serviceprovider responses (relates to OGC #200 and #266). - Add query parameter
detailto providers listing request to allow listing of names instead of their summary (similarly to the processes endpoint query parameter). - Add query parameter
checkto providers listing request to retrieve all registeredServiceregardless of their URL endpoint availability at the moment the request is executed (less metadata is retrieved in that case). - Add
weaver.schema_urlconfiguration parameter andweaver.wps_restapi.utils.get_schema_reffunction to help generate$schemadefinition and return reference to expected/provided schema in responses (relates to #157) Only utilities are added, not all routes provide the information yet. - Add validation of
schemafield underFormatschema (as per opengeospatial/ogcapi-processes schema format.yml) such that only URL formatted strings are allowed, or alternatively an explicit JSON definition. Previous definitions that would indicate an empty string schema are dropped sinceschemais optional. - Block unknown and
builtinprocess types during deployment from the API (fixes #276). Typebuiltincan only be registered by Weaver itself at startup. Other unknown types that have no indication for mapping to an appropriateProcessimplementation are preemptively validated. - Add parsing and generation of additional
literalDataDomainsfor specification of WPS I/O data constrains and provide corresponding definitions in process description responses (fixes #41, #211, #297). - Add additional
maximumMegabytemetadata detail toformatsof WPS I/O ofcomplextype whenever available (requires geopython/OWSLib#796, futureOWSLIB==0.26.0release).
- Revert an incorrectly removed schema deserialization operation during generation of the
ProcessSummaryemployed for populating process listing. - Revert an incorrectly modified schema reference that erroneously replaced service provider
ProcessSummaryitems during their listing by a singleProcessInputDescriptionSchema(introduced since3.0.0). - Fix #203 with explicit validation test of
ProcessSummaryschema for providers response. - Fix failing
minOccursandmaxOccursgeneration from a remote providerProcessto support OGC-API format (relates to #263). - Fix schemas references and apply deserialization to providers listing request.
- Fix failing deserialization of
variablechildren schema under mapping when this variable element is allowed to be undefined (i.e.: defined withmissing=drop). Allows support of emptyinputsmapping of OGC-API representation ofProcessDescriptionthat permits such processes (constant or random output generator). - Fix some invalid definitions of execution inputs schemas under mapping with
valuesub-schema where key-based input IDs (usingadditionalProperties) where replaced by the variable<input-id>name instead of their original names in the request body (from #265 since3.4.0). - Fix parsing error raised from
wps_processes.ymlconfiguration file when it can be found but contains neither aprocessesnorproviderssection. Also, apply more validation of specifiednamevalues. - Fix parsing of
request_extrafunction/setting parameters for specifically zero values corresponding toretriesandbackoffoptions that were be ignored. - Fix incorrect parsing of
defaultfield within WPS input whenliteraldata type is present and was assumed ascomplex(fixes #297). - Fix and test various invalid schema deserialization validation issues, notably regarding
PermissiveMappingSchema, schema nodesExtendedFloat,ExtendedIntand their handling strategies when combined in mappings or keywords. - Fix resolution of similar values that could be implicitly converted between
ExtendedString,ExtendedFloat,ExtendedIntandExtendedBoolschema types to guarantee original data type explicitly defined are preserved. - Fix
runningSecondsfield reporting to be offloattype although implicitinttype conversion could occur. - Fix validation of
Executeinputs schemas to adequately distinguish between optional inputs and incorrect formats. - Fix resolution of
Accept-Languagenegotiation forwarded to local or remote WPS process execution. - Fix XML security issue flagged within dependencies to
PyWPSandOWSLibby pinning requirements to versionspywps==4.5.0andowslib==0.25.0, and apply the same fix in Weaver code (see following for details: geopython/pywps#616, geopython/pywps#618, geopython/pywps#624, CVE-2021-39371).
3.5.0 (2021-08-19)
- No change.
- Fix
weaver.datatypeobjects auto-resolution of fields using either attributes (accessed asdict) or properties (accessed asclass) to ensure correct handling of additional operations on them. - Fix
DuplicateKeyErrorthat could sporadically arise during initialprocessesstorage creation whenbuiltinprocesses get inserted/updated on launch by parallel worker/threads running the application. Operation is relaxed only for defaultbuiltinto allow equivalent process replacement (upsert) instead of only explicit inserts, as they should be pre-validated for duplicate entries, and only new definitions should be registered during this operation (fixes #246).
3.4.0 (2021-08-11)
- Add missing processID detail in job status info response (relates to #270).
- Add support for inputs under mapping for inline values and arrays in process execution (relates to #265).
- Fix copy of headers when generating the WPS clients created for listing providers capabilities and processes.
3.3.0 (2021-07-16)
- Add support for array type as job inputs (relates to #233).
- Remove automatic conversion of falsy/truthy
stringandintegertype definitions tobooleantype to align with OpenAPIbooleantype definitions. Non explicitbooleanvalues will not be automatically converted toboolanymore. They will require explicitfalse|truevalues.
- Fix
minOccursandmaxOccursrepresentation according to OGC-API (fixes #263). - Fixed the format of the output file URL. When the prefix
/was not present, URL was incorrectly handled by not prepending the required base URL location.
3.2.1 (2021-06-08)
- No change.
- Fix backward compatibility of pre-deployed processes that did not define
jobControlOptionsthat is now required. Missing definition are substituted in-place by default["execute-async"]mode.
3.2.0 (2021-06-08)
- Add reference link to ReadTheDocs URL of Weaver in API landing page.
- Add references to OGC-API Processes requirements and recommendations for eventual conformance listing (relates to #231).
- Add
datetimequery parameter for job searches queries (relates to #236). - Add
limitquery parameter validation and integration for jobs in retrieve queries (relates to #237).
- Pin
pywps==4.4.3and fix incompatibility introduced by its refactor of I/O base classes in geopython/pywps#602 (specifically commit 343d825), which broke theComplexInputwork-around to avoid useless of file URLs (see issue geopython/pywps#526). - Fix default execution mode specification in process job control options (fixes opengeospatial/ogcapi-processes#182).
- Fix old OGC-API WPS REST bindings link in landing page for the more recent OGC-API Processes specification.
- Fix invalid deserialization of schemas using
notkeyword that would result in all fields returned instead of limiting them to the expected fields from the schema definitions forLiteralInputTypein process description. - Adjust
InputTypeandOutputTypeschemas to useallOfinstead ofanyOfdefinition since all sub-schemas that define them must be combined, with their respectively required or optional fields.
3.1.0 (2021-04-23)
- Add caching of remote WPS requests according to
request-options.ymland request headerCache-Controlto allow reduced query of pre-fetched WPS client definition. - Add
POST /processes/{}/executionendpoint that mimics its jobs counterpart to respect OGC-API Processes updates (see issue opengeospatial/ogcapi-processes#124 and PR opengeospatial/ogcapi-processes#159, resolves #235). - Add OpenAPI schema examples for some of the most common responses.
- Add missing schema definitions for WPS XML requests and responses.
- Improve schema self-validation with their specified default values.
- Add explicit options usage and expected parsing results for all test variations of OpenAPI schemas generation and
colanderobject arguments for future reference intests.wps_restapi.test_colander_extras.
- Fix erroneous tags in job inputs schemas.
- Fix handling of deeply nested schema validator raising for invalid format within optional parent schema.
- Fix retrieval of database connection from registry reference.
- Fix test mock according to installed
pyramidversion to avoid error with modified mixin implementations.
3.0.0 (2021-03-16)
- Provide HTTP links to corresponding items of job in JSON body of status, inputs and outputs routes (#58, #86).
- Provide
Job.starteddatetime and calculateJob.durationfrom it to indicate the duration of the process execution instead of counting from the time the job was submitted (i.e.:Job.created). - Provide OGC compliant
<job-uri>/resultsresponse schema as well as some expectedcode/descriptionfields in case where the request fails. - Add
<job-uri>/outputsproviding thedata/hrefformatted job results as well as<job-uri>/inputsto retrieve the inputs that were provided during job submission (#86). - Deprecate
<job-uri>/resultpaths (indicated in OpenAPI schemas and UI) in favor of<job-uri>/outputswhich provides the same structure with additionallinksreferences (#58). Result path requests are redirected automatically to outputs. - Add more reference/documentation links to WPS-1/2 and update conformance references (#53).
- Add some minimal caching support of routes.
- Adjust job creation route to return
201(created) as it is now correctly defined by the OGC API specification (#14). - Add
Job.linkmethod that auto-generates all applicable links (inputs, outputs, logs, etc.). - Add
image/jpeg,image/png,image/tiffformats to supportedweaver.formats(relates to #100). - Handle additional trailing slash resulting in
HTTPNotFound [404]to automatically resolve to corresponding valid route without the slash when applicable. - Provide basic conda environment setup through
Makefilefor Windows bash-like shell (ie:MINGW/MINGW64). - Update documentation for minimal adjustments needed to run under Windows.
- Update OpenAPI template to not render the useless version selector since we only provide the current version.
- Update Swagger definitions to reflect changes and better reuse existing schemas.
- Update Swagger UI to provide the ReadTheDocs URL.
- Add crim-ca/cwltool@docker-gpu as
cwltoolrequirement to allow processing of GPU-enabled dockers with nvidia-docker. - Add fmigneault/cornice.ext.swagger@openapi-3
as
cornice_swaggerrequirement to allow OpenAPI-3 definitions support of schema generation and deserialization validation of JSON payloads. - Disable default auto-generation of
request-options.ymlandwps_processes.ymlconfiguration files from a copy of their respective.examplefiles as these have many demo (and invalid values) that fail real execution of tests when no actual file was provided. - Add per-request caching support when using
request_extrafunction, and caching control according to request headers andrequest-options.ymlconfiguration.
- Fix
weaver.config.get_weaver_config_filecalled with empty path to be resolved just as requesting the default file path explicitly instead of returning an invalid directory. - Fix CWL package path resolution under Windows incorrectly parsed partition as URL protocol.
- Fix
AttributeErrorofpywps.inout.formats.Formatequality check compared tonullobject (using getter patch onnullsince fix geopython/pywps#507 not released at this point). - Fix potential invalid database state that could have saved an invalid process although the following
ProcessSummaryschema validation would fail and returnHTTPBadRequest [400]. The process is now saved only after complete and successful schema validation.
2.2.0 (2021-03-03)
- Add
weaver.wps.utils.get_wps_clientfunction to handle the creation ofowslib.wps.WebProcessingServiceclient with appropriate request options configuration from application settings.
- Fix job percent progress reported in logs to be more consistent with actual execution of the process (fixes #90).
- Fix Job duration not stopped incrementing when its execution failed due to raised error (fixes #222).
- Improve race condition handling of
builtinprocess registration at application startup.
2.1.0 (2021-02-26)
- Ensure that configuration file definitions specified in
processesandproviderswill override older database definitions respectively matched byidandnamewhen starting Weaver if other parameters were modified. - Support dynamic instantiation of WPS-1/2 processes from remote WPS providers to accomplish job execution.
- Remove previously flagged duplicate code to handle
OWSLibprocesses conversion toJSONfor OGC-API. - Replace
GETHTTP request byHEADfor MIME-type check againstIANAdefinitions (speed up). - Improve handling of CWL input generation in combination with
minOccurs,maxOccurs,allowedValuesanddefaultempty ("null") value from WPS process from remote provider (fix #17). - Add
HYBRIDmode that allows Weaver to simultaneously run local Application Packages and remote WPS providers. - Rename
ows2json_outputtoows2json_output_datato emphasise its usage for parsing job result data rather than simple output definition as accomplished byows2json_io. - Remove function duplicating operations accomplished by
ows2json_io(previously marked with FIXME). - Improve typing definitions for CWL elements to help identify invalid parsing methods during development.
- Improve listing speed of remote providers that require data fetch when some of them might have become unreachable.
- Avoid failing WPS-1/2 processes conversion to corresponding OGC-API process if metadata fields are omitted.
- Fix invalid function employed for
GET /providers/{prov}/processes/{proc}route (some error handling was bypassed).
2.0.0 (2021-02-22)
- Add support of YAML format for loading
weaver.data_sourcesdefinition. - Pre-install
DockerCLI inworkerimage to avoid bad practice of mounting it from the host. - Adjust WPS request dispatching such that process jobs get executed by
Celeryworker as intended (see #21 and #126). - Move WPS XML endpoint functions under separate
weaver.wps.utilsandweaver.wps.viewsto remove the need to constantly handle circular imports issues due to processing related operations that share some code. - Move core processing of job operation by
Celeryworker underweaver.processes.executionin order to separate those components from functions specific for producing WPS-REST API responses. - Handle WPS-1/2 requests submitted by GET KVP or POST XML request with
application/jsoninAcceptheader to return the same body content as if directly calling their corresponding WPS-REST endpoints. - Remove
requestparameter of every database store methods since they were not used nor provided most of the time. - Changed all forbidden access responses related to visibility status to return
403instead of401. - Add more tests for Docker applications and test suite execution with Github Actions.
- Add more details in sample configurations and provide an example
docker-compose.ymlconfiguration that defines a typical Weaver API / Worker combination withdocker-proxyfor sibling container execution. - Add captured
stdoutandstderrdetails in job log following CWL execution error when retrievable. - Document the WPS KVP/XML endpoint within the generated OpenAPI specification.
- Disable auto-generation of
request_options.ymlfile from corresponding empty example file and allow application to start if no such configuration was provided. - Remove every Python 2 backward compatibility references and operations.
- Drop Python 2 and Python 3.5 support.
- Target
PyWPS-4.4to resolve multiple invalid dependency requirements breaking installed packages over builtin Python packages and other compatibility fixes (see geopython/pywps #568). - Fix retrieval of database connexion to avoid warning of
MongoClientopened before fork of processes. - Fix indirect dependency
oauthlibmissing fromesgf-compute-api(cwt) package. - Fix inconsistent
pythonreference resolution ofbuiltinapplications when executed locally and in tests (using virtual/conda environment) compared to within Weaver Docker image (using OS python). - Fix many typing definitions.
1.14.0 (2021-01-11)
- Add
datainput support for CWL Workflow step referring to WPS-3 Process. - Add documentation example references to Application Package and Process
Deploy/Executerepositories. - Add parsing of
providersinwps_processes.ymlto directly register remote WPS providers that will dynamically fetch underlying WPS processes, instead of static per-service processes stored locally. - Add field
visibletowps_processes.ymlentries to allow directly defining the registered processes visibility. - Adjust response of remote provider processes to return the same format as local processes.
- Fix
stdout/stderrlog file not permitted directly within CWL Workflow (must be inside intermediate steps). - Fix missing S3 bucket location constraint within unittests.
1.13.1 (2020-07-17)
- No change.
- Create an
stdout.logorstderr.logfile in casecwltoolhasn't created it.
1.13.0 (2020-07-15)
- Add AWS S3 bucket support for process input reference files.
- Add
weaver.wps_output_s3_bucketsetting to upload results to AWS S3 bucket instead of local directory. - Add
weaver.wps_output_s3_regionsetting to allow override parameter extracted from AWS profile otherwise. - Add more documentation about supported file reference schemes.
- Add documentation references to ESGF-CWT Compute API.
- Add conditional input file reference fetching (depending on ADES/EMS, process type from CWL
hints) to take advantage of request-options and all supported scheme formats by Weaver, instead of relying on PyWPS and/or CWL wherever how far downstream the URL reference was reaching.
- Adjust some docstrings to better indicate raised errors.
- Adjust
weaver.processes.wps_package.WpsPackageto use its internal logger when running the process in order to preserve log entries under its job execution. They were otherwise lost over time across all process executions.
1.12.0 (2020-07-03)
- Add multiple CWL ESGF processes and workflows, namely
SubsetNASAESGF,SubsetNASAESGFand many more. - Add tests for ESGF processes and workflows.
- Add documentation for
ESGF-CWTRequirementprocesses. - Add
file2string_arrayandmetalink2netcdfbuiltins. - Add
esgf_processWps1Processextension, to handleESGF-CWTRequirementprocesses and workflows.
- Reset
MongoDatabaseconnection when we are in a forked process.
1.11.0 (2020-07-02)
- Generate Weaver OpenAPI specification for ReadTheDocs publication.
- Add some sections for documentation (#61).
- Add support of documentation RST file redirection to generated HTML for reference resolution in both Github source and ReadTheDocs served pages.
- Improve documentation links, ReadTheDocs format and TOC references.
- Avoid logging
stdout/stderrin workflows. - Add tests to make sure processes
stdout/stderrare logged. - Remove Python 2.7 version as not officially supported.
- Move and update WPS status location and status check functions into
weaver.wpsmodule.
- Fix reported WPS status location to handle when starting with
/although not representing an absolute path.
1.10.1 (2020-06-03)
- No change.
- Pin
celery==4.4.2to avoid import error on missingfutures.utilscalled internally in following versions.
1.10.0 (2020-06-03)
- Add support of value-typed metadata fields for process description.
- Enforce
relfield when specifying anhrefJSON link to match corresponding XML requirement.
- Add more examples of supported WPS endpoint metadata (fixes #84).
1.9.0 (2020-06-01)
- Add
weaver.wps_workdirconfiguration setting to define the location where the underlyingcwltoolapplication should be executed under. This can allow more control over the scope of the mounted volumes for Application Package running a docker image. - Add mapping of WPS results from the
Job's UUID to generated PyWPS UUID for outputs, status and log locations. - Add experimental configuration settings
weaver.cwl_euidandweaver.cwl_egidto provide effective user/group identifiers to employ when running the CWL Application Package. Using these require good control of the directory and process I/O locations as invalid permissions could break a previously working job execution. - Add more logging configuration and apply them to
cwltoolbefore execution of Application Package. - Enforce
no_match_user=Falseandno_read_only=Falseofcwltool'sRuntimeContextto ensure that docker application is executed with same user asweaverand that process input files are not modified inplace (readonly) where potentially inaccessible (according to settings). Definition of CWL package will need to add InitialWorkDirRequirement as per defined by reference specification to stage those files if they need to be accessed with write permissions (see: example). Addresses some issues listed in #155. - Enforce removal of some invalid CWL hints/requirements that would break the behaviour offered by
Weaver. - Use
weaver.request_optionsfor WPS GetCapabilities and WPS Check Status requests under the running job. - Change default
DOCKER_REPOvalue defined inMakefileto point to reference mentioned inREADME.mdand considered as official deployment location. - Add
application/x-cwlMIME-type supported with updatedEDAM 1.24ontology. - Add
application/x-yamlMIME-type to known formats. - Add
application/x-tarandapplication/tar+gzipMIME-type (not official) but resolved as synonymapplication/gzip(official) to preserve compressed file support during CWL format validation.
- Set
get_cwl_file_formatdefault argumentmust_exist=Trueinstead ofFalseto retrieve original default behaviour of the function. Since CWL usually doesn't need to addFile.formatfield when no corresponding reference actually exists, this default also makes more sense.
1.8.1 (2020-05-22)
- Add Travis-CI smoke test of built docker images for early detection of invalid setup or breaking code to boot them.
- Add Travis-CI checks for imports. This check was not validated previously although available.
- Adjust
weaver.ini.exampleto reflect working demo server configuration (employed by smoke test). - Move
weaverweb application toweaver.appto reduce chances of breakingsetup.pyinstallation from import errors due toweaverdependencies not yet installed. Redirect to new location makes this change transparent when loaded with the usualweaver.iniconfiguration.
- Fix base docker image to install Python 3 development dependencies in order to compile requirements with expected
environment Python version. Package
python-devfor Python 2 was being installed instead. - Fix failing docker image boot due to incorrectly placed
yamlimport during setup installation. - Fix imports according to
Makefiletargetscheck-importsandfix-imports. - Fix parsing of
PyWPSmetadata to correctly employ values provided byweaver.ini.
1.8.0 (2020-05-21)
- Modify
weaver.utils.request_retrytoweaver.utils.request_extrato include more requests functionality and reuse it across the whole code base. - Add
requests_extraSSL verification option using specific URL regex(es) matches from configuration settings. - Add
file://transport scheme support directly to utilityrequests_extrato handle local file paths. - Add file
weaver.request_optionsINI configuration setting to specify per-request method/URL options. - Add
requests_extrasupport ofRetry-Afterresponse header (if any available on429status) which indicates how long to wait until next request to avoid automatically defined response right after. - Add
weaver.wps_workdirconfiguration setting with allow setting correspondingpywps.workdirdirectory.
- Modify
Dockerfile-managerto run web application usingpserveasgunicorndoesn't correctly handles worker options anymore when loaded formweaver.iniwith--pasteargument. Also simplifies the command which already required multiple patches such as reapplying the host/port binding from INI file. - Fix handling of Literal Data I/O
typewhen retrieved fromOWSLib.wpsobject with remote WPS XML body. - Adjust
make starttarget to use newmake install-runtarget which installs the dependencies and package in edition mode so that configuration files present locally can be employed for running the application. Previously, one would have to move their configurations to thesite-packageinstall location of the active Python. - Fix
celery>4.2not found because of application path modification. - Fix invalid handling of
wps_processes.ymlreference inweaver.iniwhen specified as relative path to configuration directory. - Fix handling of
WPS<->CWLI/O merge ofdata_formatfield againstsupported_formatswithpywps>=4.2.4. - Fix installation of
yaml-related packages for Python 2 backward compatibility.
1.7.0 (2020-05-15)
- Add additional status log for
EOImageinput modification with OpenSearch during process execution. - Add captured
stderr/stdoutlogging of underlying CWL application being executed to resultingJoblogs (addresses first step of #131). - Use
weaver.utils.request_retryin even more places and extend convenience arguments offered by it to adapt it to specific use cases.
- Fix handling of WPS-REST output matching a JSON file for multiple-output format specified with a relative local path as specified by job output location. Only remote HTTP references where correctly parsed. Also avoid failing the job if the reference JSON parsing fails. It will simply return the original reference URL in this case without expanded data (relates to #25).
- Fix CWL job logs to be timezone aware, just like most other logs that will report UTC time.
- Fix JSON response parsing of remote provider processes.
- Fix parsing of CWL ordered parsing when I/O is specified as shorthand
"<id>":"<type>"directly under theinputsoroutputsdictionary instead of extended JSON object variant such as{"input": {"type:" "<type>", "format": [...]}}(fixes #137).
1.6.0 (2020-05-07)
- Reuse
weaver.utils.request_retryfunction across a few locations that where essentially reimplementing the core functionality. - Add even more failure-permissive request attempts when validating a MIME-type against IANA website.
- Add auto-resolution of common extensions known under PyWPS as well as employing their specific encoding.
- Add
geotiffformat type support via PyWPS (#100). - Make WPS status check more resilient to failing WPS outputs location not found in case the directory path can be resolved to a valid local file representing the XML status (i.e.: don't depend as much on the HTTP WPS output route).
- Ensure backward support of generic/default
text/plainI/O when extracted from a referenced WPS-1/2 XML remote process which provides insufficient format details. For CWL output generated from it, replace the glob pattern to match anything (<id>.*) instead of<id>.txtextracted fromtext/plainto simulate MIME-type as*/*. Issue log warning message for future use cases.
- Fix invalid
AllowedValueparsing when usingLiteralDatainputs that resulted inAnyValuebeing parsed as a"None"string. This was transparent in case of string inputs and breaking for other types like integer when they attempted conversion. - Fix erroneous
Metadatakeywords passed down toowslib.wps.Metadataobjects in case of more verbose detailed not allowed by this implementation. - Fix parsing of explicitly-typed optional array CWL I/O notation that was not considered
(i.e.: using
typeas list with additional"null"instead oftype: "<type>?"shorthand). - Fix parsing of MIME-type from
formatfield to exclude additional parameters (e.g.:; charset=UTF-8for remote IANA validation.
1.5.1 (2020-03-26)
- Add unittest of utility function
fetch_file. - Split some unittest utility functions to allow more reuse.
- Fix invalid
retryparameter not handled automatically by request.
1.5.0 (2020-03-25)
- Adjust incorrectly parsed href file reference as WPS complex input which resulted in failing location retrieval.
- Partially address unnecessary fetch of file that has to be passed down to CWL, which will in turn request the file as required. Need update from PyWPS to resolve completely (#91, geopython/pywps#526).
- Adjust WPS output results to use relative HTTP path in order to recompose the output URL if server settings change.
- Support WPS output results as value (WPS literal data). Everything was considered an href file beforehand.
- Add additional
timeoutandretryduring fetching of remote file for processjsonarray2netcdfto avoid unnecessary failures during edge case connexion problems. - Add support of
titleandversionfield ofbuiltinprocesses.
- Patch
builtinprocess execution failing sincecwltool 2.xupdate. - Avoid long fetch operation using streamed request that defaulted to chuck size of 1. Now, we use an appropriate size according to available memory.
1.4.0 (2020-03-18)
- Update owslib to 0.19.2
- Drop support for python 3.5
1.3.0 (2020-03-10)
- Provide a way to override the external URL reported by WPS-1/2 and WPS-REST via configuration settings allowing for more advanced server-side results in response bodies.
1.2.0 (2020-03-06)
- Add WPS languages for other wps requests types:
DescribeProcessandGetCapabilities.
- Fix a bug where the validation of
OneOfitems was casting the value to the first valid possibility.
1.1.0 (2020-02-17)
- Simplify docker image generation and make base/manager/worker variants all available under the same docker repo docker-registry.crim.ca/ogc/weaver with different tags (#5).
- Add planned future support of
Accept-Languageheader for WPS-1/2 (geopython/OWSLib 0.20.0) (#74). - Improved job logs update with message and progress to allow better tracking of internal operations and/or problems.
- Allow WPS builtin process
jsonarray2netcdfto fetch a remote file. - Change doc to point to DockerHub pavics/weaver images.
- Adjust CI rule long-lasting failures until it gets patched by original reference (gitleaks-actions#3).
- Fix ReadTheDocs documentation generation.
- Fix
.travisdocker image build condition. - Fix
geopython/OWSLib>=0.19.1requirement for Python 3.8 support (#62). - Fix job update filling due to status location incorrectly resolved according to configured PyWPS output path.
1.0.0 (2020-01-28)
- Add
notification_emailfield toJobdatatype that stores an encrypted email (according to settings) when provided in the job submission body (#44). - Add ability to filter jobs with
notification_emailquery parameter (#44). - Add jobs statistics grouping by specific fields using comma-separated list
groupsquery parameter (#46). - Add some tests to evaluate new job search methods / grouping results and responses (#44, #46).
- Add handling of multiple CWL field
formatforFiletype. - Add missing ontology reference support for CWL field
formatby defaulting to IANA namespace. - Add support for I/O
arrayofenum(ie: multiple values ofAllowedValuesfor a given input) (#30). - Add support of
labelsynonym astitlefor inputs and process description (CWL specifying alabelwill set it in WPS process) (#31) - Add support of input
minOccursandmaxOccursasintwhile maintainingstrsupport (#14). - Add conformance route with implementation links (#53).
- Add additional landing page link details (#54).
- Add
weaver.wps_restapi.colander_extras.DropableNoneSchemato auto-handle some schema JSON deserialization. - Add
weaver.wps_restapi.colander_extras.VariableMappingSchemato auto-handle some schema JSON deserialization. - Add more functional tests (#11, #17).
- Use
bump2versionand move all config undersetup.cfg. - Remove enforced
text/plainfor CWLFilewhen missingformatfield. - Replace bubbling up of too verbose unhandled exceptions (500 Internal Server Error) by summary message and additional internal logging for debugging the cause using an utility exception log decorator.
- Use the same exception log decorator to simplify function definitions when HTTP exceptions are already handled.
- Make
nullreference a singleton so that multiple instantiation calls all refer to the same instance and produce the expected behaviour of<x> is nullinstead of hard-to-identify errors because of english syntax. - Remove unused function
weaver.utils.replace_caps_urland corresponding tests. - Remove
weaver.processes.utils.jsonify_valueduplicated byweaver.processes.wps_package.complex2json. - Use more JSON body schema validation using API schema definitions deserialization defined by
weaver.datatype. - Enforce
builtinprocesses registration on startup to receive applicable updates. - Provide 2 separate docker images for Weaver manager and worker, corresponding to the EMS/ADES API and the
celeryjob runner respectively. - Update Apache license.
- Adjust some typing definitions incorrectly specified.
- Fix some failing functionality tests (#11, #17).
- Fix I/O field ordering preserved as specified in payload or loaded reference file.
- Fix setting
minOccurs=0when adefaultis specified in the corresponding CWL I/O (#17, #25). - Fix incorrectly overridden
maxOccurs="unbounded"bymaxOccurs="1"when a partial array input definition is specified without explicitmaxOccursin WPS payload (#17, #25). - Fix case where omitted
format[s]in both CWL and WPS deploy bodies generated a process description with complex I/O (file) without requiredformatsfield. Defaulttext/plainformat is now automatically added. - Fix case where
format[s]lists between CWL and WPS where incorrectly merged. - Fix
metadatafield within a WPS I/O incorrectly parsed when provided by a WPS-1/2 XML process definition. - Fix invalid JSON response formatting on failing schema validation of process deployment body.
- Fix docker images to support
pservewhen usinggunicorn>=20.xdropping support of--pasteconfig feature. - Fix multiple Python 2/3 compatibility issues.
0.2.2 (2019-05-31)
- Support notification email subject template.
0.2.1 (2019-05-29)
- Add per-process email notification template.
0.2.0 (2019-03-26)
- Fixes to handle invalid key characters
"$"and"."during CWL package read/write operations to database. - Fixes some invalid CWL package generation from WPS-1 references.
- More cases handled for WPS-1 to CWL
WPS1Requirementconversion (AllowedValues,Default,SupportedFormats,minOccurs,maxOccurs). - Add file format validation to generated CWL package from WPS-1 MIME-types.
- Allow auto-deployment of WPS-REST processes from WPS-1 references specified by configuration.
- Add many deployment and execution validation tests for
WPS1Requirement. - Add
builtinapplication packages support for common operations.
0.1.3 (2019-03-07)
- Add useful Makefile targets for deployment.
- Add badges indications in
README.rstfor tracking from repo landing page. - Fix security issue of PyYAML requirement.
- Fix some execution issues for
Wps1Process. - Fix some API schema erroneous definitions.
- Additional logging of unhandled errors.
- Improve some typing definitions.
0.1.2 (2019-03-05)
- Introduce
WPS1Requirementand correspondingWps1Processto run a WPS-1 process under CWL. - Remove mongodb requirement, assume it is running on an external service or docker image.
- Add some typing definitions.
- Fix some problematic imports.
- Fix some PEP8 issues and PyCharm warnings.
0.1.1 (2019-03-04)
- Modify Dockerfile to use lighter
debian:latestinstead ofbirdhouse/bird-base:latest. - Modify Dockerfile to reduce build time by reusing built image layers (requirements installation mostly).
- Make some buildout dependencies optional to also reduce build time and image size.
- Some additional striping of deprecated or invalid items from Twitcher.
0.1.0 (2019-02-26)
- Initial Release. Based off Twitcher tag ogc-0.4.7.