-
Notifications
You must be signed in to change notification settings - Fork 45
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
Proposal OGC API - Processs - Part4: Job Management #437
base: master
Are you sure you want to change the base?
Conversation
Use a different OpenEO JSON Schema
Add the job-locked exception requirement
…arting an execution
extensions/job_management/.DS_Store
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
remove and add .DS_Store
to .gitignore
to not worry about it anymore
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done in df465c5.
extensions/job_management/README.md
Outdated
The repo is organized as follows: | ||
|
||
* standard - the main standard document content | ||
- organized in multiple sections and directories (openapi, requirements, etc.) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is outdated since they are now at the root openapi/schemas/processes-job-management
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should be fixed in df465c5
1. Construct a path for each "rel=http://www.opengis.net/def/rel/ogc/1.0/job-list" link on the landing page as well as for the {root}/jobs path. | ||
2. Issue an HTTP POST request for each path. | ||
3. Validate that the response header does not contain `405 Method not allowed` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I believe an OAP Core could report job-list
on its landing page while only supporting the "normal" /processes/{jobId}/execution
. This AST should only validate that POST /jobs
is supported, since the other endpoint does not "need" to support the additional capabilities of this extension, and POST /processes/{jobId}/execution
should already be handled by the AST of core.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think you're right, so I applied the modification and removed the reference to the job-list
.
I think that the /job
url relation type is still job-list
on the landing page. I thought the ATS would check for the job-list
relation type to know where to send the POST request (and used the {root}/jobs
following other tests from part 1 and part 2).
@@ -0,0 +1,2 @@ | |||
OGC API - Processes - Part 2: Transactions recommendations. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
wrong title
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should be fixed in df465c5
:received-date: yyyy-mm-dd | ||
:issued-date: yyyy-mm-dd | ||
:external-id: http://www.opengis.net/doc/IS/ogcapi-processes-4/1.0 | ||
:keywords: process, collection, instance, spatial, data, openapi, transactions, insert, update, delete, add, remove, deploy, undeploy, REST, PUT, POST, DELETE |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"transactions" does not seem relevant. Add "jobs" instead? not sure about "collection" either.
type: object | ||
additionalProperties: | ||
$ref: "input.yaml" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I suggest using an alternate representation:
inputs:
type: object
additionalProperties:
$ref: "input.yaml"
outputs:
type: object
additionalProperties:
$ref: "output.yaml"
Reasons:
-
Although "
outputs
" are shown, those represent the requested outputs (i.e.: transmission mode, format, or any other alternate content negotiation parameters) submitted during the job creation request, in order to eventually produce the desired results. Often, the requestedoutputs
depend on whicheverinputs
were submitted. Therefore, viewing them separately on different endpoints is not really convenient or useful. -
The
/jobs/{jobId}/outputs
endpoint can easily be confused with/jobs/{jobId}/results
. The "request outputs" in this case are "parameter descriptions of eventual outputs", which are provided upstream of the execution workflow. In a way, those are parametrization "inputs" of the processing pipeline. -
Because OGC API - Processes core defines specific response combinations and requirements for
/jobs/{jobId}/results
, the/jobs/{jobId}/outputs
is a convenient and natural endpoint name that an API can use to provide alternate response handling and representations conflicting with OGC API - Processes definitions. CRIM's implementation does exactly that. I would appreciate keeping that option available. -
As a matter of fact, older OGC API - Processes implementations (start of ADES/EMS days) actually used
/jobs/{jobId}/outputs
instead of/jobs/{jobId}/results
. Adding/jobs/{jobId}/outputs
would break those implementations. -
Having
inputs
andoutputs
nested under those fields (rather than at the root) allows providing even further contents that could be relevant along the inputs/outputs. For example, additionallinks
,metadata
or definitions to describe those parameters.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
see other comment about inputs
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we use a $ref
to openEO's definition, to avoid maintaining duplicate definitions?
enum: | ||
- process | ||
- openeo |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should this be made a simple string with examples?
Do we want to create the same situation as statusCode
needing an override because of the new created
status?
If the long term use is to have job management available for an OGC API, maybe it would be better to define a Requirements class that say for openEO, type: openeo
MUST be used, and process
for OGC API - Processes. A "long" Coverage processing could then easily define their own requirement class with type: coverage
, without causing invalid JSON schema definitions.
id: | ||
type: string | ||
processID: | ||
type: string |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The requirements need to be revised. They used the alternate name jobID
when referring to the GET /jobs
responses.
Similarly, process
was mentioned during the meeting.
I'm not sure if processID
remains relevant however, because process
would be the URI, not just the processID
from GET /processes/{processID}
.
extensions/job_management/standard/sections/annex_bibliography.adoc
Outdated
Show resolved
Hide resolved
@gfenoy |
Following the discussions during today's GDC / OGC API—Processes SWG meeting, I created this PR.
It contains a proposal for an additional part to the OGC API - Processes family: "OGC API - Processes - Part 4: Job Management" extension.
This extension was initially discussed here:
The document identifier 24-051 was registered.