-
Notifications
You must be signed in to change notification settings - Fork 12
Clarify federation extension fields #564
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
base: draft
Are you sure you want to change the base?
Conversation
From the standpoint of the federation component, I find the concepts "temporary"/"permanent" hard to work with. In the aggregator I can only observe that a backend is not available now, but I have no idea if it will be back online within 1 minute, 1 day, 1 month or never. Wouldn't it be better to express "missing" in terms of (un)expected or (un)intended? |
Fair, is pretty similar, but we can also rephrase it. |
Thanks for plunging forwards Matthias and revising this extension spec -- working with it over the past weeks I had several moments where I misunderstood things or they were not clear to me until you pointed out how they were meant originally, so I'm appreciating an overhaul! I think it would help to restructure the document by switching the order of explaining
To me this order makes more sense logically, and it would prevent implementers/learners from going "ahhh, if it's missing [for any reason] I have to put it in Regarding "only observing that a backend So yes, maybe expected/intended is a more fitting concept than time-based ones, but yeah they are quite similar, and I would mention "temporarily" anyway as often this will be the case. And as I did in the 1-2-3 list, I would also mention the words "in general"/"exception" to bring the point across.
|
Co-authored-by: Christoph Friedrich <[email protected]>
Yeah, I agree. I actually was about to change the order of the sections, but then didn't do it to keep the git changelog clean. It would've been hard to check changes when the section order would have changed. So I'll do that now, after we have initially reviewed the general content... |
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.
So to make sure I understand what is being aimed for here:
Say we have this federation and we're looking at the GET /jobs
endpoint:
- backend A is online and support everything
- backend B is temporarily offline (for some definition of "temporarily")
- backend C is offline for weeks (so not temporarily) but might come online soon (or not)
- backend D is online but does not support batch jobs
- backend E is online (partially), but its batch jobs subservice is down "temporarily"
What should go under GET /jobs
of the federated response?
If I understand the current PR:
federation:backends
: A, B and Efederation:missing
: B, and E
is that correct?
## Resources supported only by a subset of back-ends | ||
|
||
Every discoverable resource that is defined as an object and allows to contain additional properties, can list the subset of back-ends that support or host the exposed resource/functionality. | ||
Every discoverable resource that is defined as an object and allows to contain additional properties, can list the subset of back-ends that permanently support or host the exposed resource/functionality. |
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.
... back-ends that permanently support ...
from the standpoint of the aggregator or another federation component, I find it hard to implement this label "permanent".
I understand that you want to ignore temporary unavailability or other unintended glitches, but it still seems to imply that there is some kind of contract (outside the scope of the basic openEO API between the aggregator and each backend that expresses some kind of SLA about the resources.
I'm fine with this contract being out-of-band of this specification, but that means that the value of the "permanent" label is very fuzzy and might cause confusion.
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.
Permanently means that it's listed in the endpoints list or is returned by another list that's relevant in the context of the endpoint (e.g. the collection list).
Given the clarification in #564 (comment), maybe we can write something that doesn't depend on "temporary"/"permanently"?
I don't really think about much magic here ;-)
Co-authored-by: Stefaan Lippens <[email protected]>
@soxofaan The backends in a federation are listed in With regards to your example, I'm assuming that B and C are supporting jobs, this is not clear from your bullet points. So the lists would be filled as follows:
Means the aggregator only responds with data from backend A currently. Might be a good idea to add these examples to the extension and potentially also define permanent/temporary as listed above. |
If there is no differentiation, isn't it better in the specification/description to avoid terminology that suggests such differentiation, like "permanent" or "temporary"? I guess I'm fully aligned with your underlying intent, but these words "permanent"/"temporary" throw me off in a different direction. |
My problem is that a federation component (like openeo-aggregator) might be too "dumb" to make the call if unavailability is temporary or permanent. Or put differently: the decision to remove a backend from the federation's So you can't rule out the situation that a "permanently" unavailable backend is listed by a federation, because no human action was done yet for some reason. |
How would you phrase it?
Yes, that's what I meant. |
Fixes Open-EO/openeo-vue-components#110
cc @christophfriedrich