[Oslc-Automation] Advertising actions on the Result from the Plan
John Arwe
johnarwe at us.ibm.com
Thu Oct 17 08:26:54 EDT 2013
> > Looking at http://open-services.net/wiki/automation/Exposing-
> arbitrary-actions-on-RDF-resources/#Advertising-actions-on-the-
> Result-from-the-Plan , some comments.
>
> > Without the parameterised plan:
>
> > - there's not enough here for a client to know it is capable of
knowing
> > how to invoke the future Action. Automation would have to add that
> > requirement; i.e. that the action on the result MUST at least support
> > the Automation Plan implementation type, using the current terms. If
we
> > do so, not much practical difference between these two options that I
> > can see.
>
> The automation wiki page says "If a provider is providing Actions
> for consumption by Automation consumers.... It MUST include one
> AutomationPlan implementation of each action." - so we already have
> that requirement.
> Having said that, replying on the spec for this information is
> subject to the same problems as if the actions spec said "it's
> always POST" rather than encoding that in the data - namely, lack of
> extensibility.
Martin, the page text you cited (the MUST) is equivalent to saying that
the example given under
> > Without the parameterised plan:
is non-compliant as it stands. I'm content to not pursue that subtree
further if you're happy with the MUST. The presence of the "without"
example I assumed was either (a) already consistent with the proposal as
it exists or (b) an implicit assertion that it (the without example)
should be Made Valid by changing the rest of the proposal, if needed, or
(c) any inconsistency was a mistake I introduced in the process of
separating "core to be" content from automation content, which is
equivalent to (b).
> > - the Result might offer multiple Actions, with duplicate rdf:type
sets,
> > some supporting the Automation Plan implementation type and others not
> > supporting it. I'm allowing, for example, that the Plan and Result are
> > owned by different providers, which is a case I remember at least one
> > implementation saying they had; the Result provider could offer a stop
> > action (that the Plan provider somehow knows about - how, I don't
care)
> > and a second stop action implemented by a third provider. This seems
> > like a stretch, but if the Result provider allows updates (put/patch)
> > that add actions, there you are. We don't have to solve that, but if
> > there's an option that clearly does/not it would be useful to keep in
> > mind.
>
> If those duplicate actions are semantically equivalent, they should
> be multiple requests on a single action.
I was not assuming that multiple providers MUST patch at the "add request"
level, although they MAY. The current "if you have multiple requests,
then they MUST be equivalent" structure is a one-way implication, not a
bidi equivalence relation, so it allows what I had in mind (for good or
ill ;-) ). The simplest implementation for that case is to just Patch in
another Action; depending upon the Patch format, and whether or not the
existing Action resource to be extended is a blank node (as currently
allowed) or not, patching to add a request might not be possible (some
proposed patch formats cannot handle blank nodes).
> Then as long as one of
> those Requests uses the AutoPlan impl type, we're fine - the
> minimal-implementation consumers just identify and use the AutoPlan
> one.
agree
> The PUT/PATCH to add actions is interesting - using the spec
> as-is they would have to identify if any of the existing actions are
> semantically equivalent, which would be difficult.
I attempted to cover this base by saying that the types were identical.
The type set is the only I know of to decide equivalence; I went for the
trivially equivalent case (equality).
> But if they're
> adding an action onto an AutoResult, then they ought to be subject
> to the Automation profile of Actions anyway, which would require an
> AutoPlan implementation of the Action.
All the "normal" cases, I'd agree.
I do have other cases in mind, where (because a new provider arrives to
manage an "environment" - imprecise general sense of that word) a set of
commands "suddenly" becomes available for entire classes (types) of
resources. Basically, the provider can add its actions to any resource
meeting its criteria (which boils down to a query + put/patch loop over
The World)... whatever it considers "under management".
We'll just have to be sure that spec text constrains it as you desire. I
don't see any special need to help the case above by complicating the very
Automation-specific case of a Plan advertising (future) actions on
Results.
> > With the parameterised plan:
>
> > - the "orchestration composition time" problem I think is that the
> > requestURI value is unknown on the Plan. Reusing core:Action with
> > requestURI 0:1 (or 0:0) seems right to solve that.
>
> I don't understand what you mean. It sounds like you're talking
> about "without the parameterised plan". Are you saying we don't need
> to allow for a parameterised plan? I'm happy to leave it out of the
> spec, as long as we think we have a reasonable chance of adding it
> in later if someone comes up with the need later (which feels very
> unlikely at this point).
I was forgetting the context that this usage is fully constrained by
Automation to Require an automation plan implementation, so I wandered
into the CM-style.
Your response does make me think that you have assigned a very specific
meaning to 'parameterised' in your mind that I do not share. I just read
past that, treating "with" == (a), "without" == (b), i.e. just treated
those as differentiation between two alternatives, so maybe I missed some
deeper meaning.
Given that we agreed that the first example is inconsistent with the
proposal though (the MUST not being satisfied), I'm surprised that you say
it's ok to drop "With the parameterised plan". As you can probably tell
from the preceding, I thought you meant simply that "without" would be
dropped as inconsistent with the spec.
> If you're saying that we don't know the requestURI for the
> parameterised plan, my intention of allowing parameterised
> actionOnResult plans is to allow clients with provider-specific
> knowledge to insert the context for the action as an AutoRequest
> parameter value. In other words, instead of giving the context-
> specific requestURI and AutoPlan URI that will be in the Result's
> Action, we provide a contextless requestURI and AutoPlan URI, with
> the context provided by the parameter. The provider-specific
> knowledge is required to know how to find the value of that
> "context" parameter, and which parameter it should be the value of.
> As I said, I'm happy to leave this out of the spec, especially due
> to this provider-specific knowledge being required.
Feels like a weak form of violent agreement.
But at this point I'm wary of false agreement, so perhaps today's call is
a better venue to synch up.
> There is a separate case for when the action has required parameters
other
> than the context... that's a whole other problem. That's not the
> problem I was trying to address here.
>
> > - dcterms:identifier is only going to be useful if both Plan-Action
and
> > Result-Action are somehow known to come from the same Provider, which
> > Automation does not guarantee (tolerable) but also does not give the
> > client any iron-clad always-available way to know (less attractive - I
> > don't think we Require oslc:serviceProvider links).
>
> Does the same dcterms:identifier value explicitly mean different
> things from different providers?
http://dublincore.org/documents/dcmi-terms/#terms-identifier says
Definition:
An unambiguous reference to the resource within a given context.
Has Range:
http://www.w3.org/2000/01/rdf-schema#Literal
The "given context" is usually interpreted as "service provider" in OSLC
specs, although I'm not sure that is explicitly rendered anywhere.
So while the value MAY be the same across multiple providers, there are no
guarantees. Absent a guarantee, I don't see how it can be useful for
Automation clients in general.
> As the provider of the Result
> really should know about the Plan, it can perhaps pull those
> identifiers from the Plan provider.
Again: we had 2.0 discussions about implementations where the Results were
created by separate providers through delegation (imagine an orchestrator
queueing up Requests, and a separate pool of workers pulling them off and
creating the Results), IIRC. I believe this is what led to the Result >
Request linkage instead of the other direction, in fact.
So "can", yes. "must", no.
> This would likely need provider-
> specific logic to know which identifier to use, but if the Plan
> provider is advertising actionOnResult in this case then it would
> have to have Result-provider specific knowledge to know that the
> actions will be available anyway. So as long as it doesn't
> contradict dcterms' definition of dcterms:identifier to say that
> they can be used to match actions even across providers (ONLY
> between a Result and its Plan when they are on different providers),
> I don't believe there's a problem here. They would check the
> identifier between the Plan and the Result, and not have to know if
> they are on the same provider or not.
Plan (provider A) semantic Stop, identifier= 2314
Result (provider B) semantic FreeTheWhales, identifer= 2314
Result (provider C) semantic Stop, identifier= 2314
Since identifiers are used by each provider without coordination, this is
a valid state.
Reading your criteria, it sounds like both Results match A's Plan, but the
semantic of B is wrong.
If you try use Result > reportsOnAutomationPlan (since that's required)
and say that if the identifier *and* the provider URIs match then you've
found what you're after, then Maybe you have something reliable. Given
that I cannot be sure that the Action on the Result comes from the same
provider as the Result itself, it's not clear. Given the earlier
discussion about patching, it's not even the Action identifier but a (not
spec'd, today) Request identifier you'd need.
Which all sounds kind of ornate given how simple it sounds in natural
language.
Last night I concluded what we're really struggling after here is a search
key; to be unique across providers, a URI. Maybe we add a(n optional)
link to Requests, and just search on that?
>
> > It really wants to
> > be a URI, but it seems likely that (ala requestURI) the correct URI
(to
> > the Result-Action of interest, which is inherently scoped to 1
request)
> > cannot be reliably known from the Plan (which is scoped to 0:n
Results).
> > In cases where the resource context is supplied outside the request
URI
> > (e.g. in a fixed body), I can see a URI working.
>
> My feeling on this is that we have a URI - it's the value(s) of
rdf:type.
> So one option would be to say that separate actions on the
> AutoResult MUST have distinct value sets for rdf:type (possibly only
> applying this requirement in the case of the action being advertised
> through actionOnResult). If the provider has two actions that map to
> core:StopAction, then they must define their own type for each of
> them (in addition to Action and StopAction) to differentiate them.
> In other words, they give this action a URL that applies to both its
> parameterised and non-parameterised forms, and include that in the
> rdf:type values.
Certainly works, modulo that I'm fairly certain I don't understand the
final sentence given my ambiguity as to your intended meaning for
"parameterised". But the rest is perfectly reasonable, so I'm betting
they're equivalent as "In other words," suggests.
> Do either of my comments about dcterms:identifier or rdf:type above
> help give robustness/reliability to this case?
>
> > I wonder out loud: if the Result-Actions (as in the "with" option,
fully
> > fleshed out with the final requestURI) were linked via actionOnResult
from
> > the Request, would that satisfy the scenario? ....
>
> No, as even the Request is not created when the orchestration Plan
> is authored. And as the orchestration Plan may be executed multiple
> times (possible even concurrently in different environments managed
> by the same provider) there may be multiple Requests existing over
> time, so even fixing the "don't execute on Request creation"
> 'problem' wouldn't make this work.
This is useful, since it eliminates possibilities. Do make sure it's
captured in the scenarios if you would. I know I won't remember it 6
months from now.
I will be updating the automation/core drafts in the hour preceding the
meeting, unless that will cause contention with someone else.
Best Regards, John
Voice US 845-435-9470 BluePages
Tivoli OSLC Lead - Show me the Scenario
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://open-services.net/pipermail/oslc-automation_open-services.net/attachments/20131017/6223aa75/attachment-0003.html>
More information about the Oslc-Automation
mailing list