-
-
Notifications
You must be signed in to change notification settings - Fork 265
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Parameter 'outputs' from request object is not propagated to the manager execute_process and then to processor execute #1420
Comments
Hi @francescoingv, few comments on the formal aspects of the ticket:
Thanks, |
Description Steps to Reproduce
It is impossible to make the function Expected behavior If The specification also spells:
This is far more difficult to describe in Steps to Reproduce and then in Expected behavior, but to me it requires the Environment
Additional context |
This is a subset of #1285, which deals more generally with what is missing from pygeoapi in terms of fully supporting clause 7.11 (execute a process) of the OGC API - Processes v1.0.0 spec. TL; DR In my opinion it would be difficult to solve this problem while still ensuring backwards compatibility. The reasons being that in order to support the additional information that is being passed in the request, which is:
we need to add support for this in:
This is not to say that I do not support the change, I absolutely do, since it is required in order for pygeoapi to be compliant with the OAProc standard. But it seems to me that it implies a breaking change that will require existing deployments to modify their code. This also means that if there are any deployments out there that are living on the edge (i.e. depending on pygeoapi's Adding support for parsing an execute request's I'm not sure what would be the most appropriate course of action in this regard, so maybe we'd need some input from @tomkralidis here? |
I understand there is a backward compatibility issue, I wonder if a viable solution could be:
|
We did have a breaking change in Line 2076 in 6020212
Adding more parameters to Here's also the pull request for |
Add support for OGC API Processes Outputs
This Issue has been inactive for 90 days. As per RFC4, in order to manage maintenance burden, it will be automatically closed in 7 days. |
The issue is still open as a bug: There is an approved PR #1448 to solve the issue, but it was not merged. The solution needs to change two signatures and could be applied in two steps:
Accordingly, the proposed PR could be split in two separate PRs for smoother integration. |
* Solve issue #1420 Add support for OGC API Processes Outputs * Resolve Jan, 3 2024 totycro comments * Solve issue 1420 with full backward compatibility for Processors. * changed formattings * Some additional formatting changes * Update api.py missing line in api * Update base.py To resolve conflict with #1603 * Update base.py Added subscriber inline doc * After Ricardo Silva comments on 13 Apr. Included all the suggested changes on code format andparams name. * Changed line length * fixed trailing spaces. * Update formatting base.py * Update base.py --------- Co-authored-by: FrancescoIngv <FrancescoIngv@users.noreply.github.com>
In API.execute_process(),
the (optional) parameter 'outputs', if present in the request, is not passed on to BaseManager.execute_process() (or derived).
Even more, the parameter 'outputs' is not collected: only the parameter 'inputs' is collected.
To properly process a request the processor (i.e. "BaseProcessor" or derived) should get the requested outputs to know which outputs to produce.
I expect the manager (e.g. "BaseManager" or derived) to use this information, and also the property "transmitionMode" of each output, to prepare:
In case of "transmissionMode": "reference", I am not sure if either the processor or the manager should prepare the reference (possibly writing to a file the single output).
As far as I understand, the reference is not expected to be served by the API, therefore only the processor can prepare it (possibly on a different endpoint).
If the reference could be server by the API (but I do not understand the corresponding entrypoint), then the manager could be in charge of it.
I propose to add an additonal parameter (a dictionary with the content of outputs) to BaseManager.execute_process()
and the same additional parameter to BaseProcessor.execute()
The text was updated successfully, but these errors were encountered: