[Oslc-Automation] Changes I have made to Actions specs based on Actions issues list

John Arwe johnarwe at us.ibm.com
Fri Mar 14 08:35:36 EDT 2014


> appropriate in 2.1 ... saying that if it returns a verdict other than 
"passed" (or perhaps "warning") that it returns a 5xx or 4xx status code? 
(I believe they all permit a response body). 

The Automation-level "problem" with doing that is that the synch execution 
style is something that the provider is permitted to select on a request 
by request basis.  Some providers are simpler today, but that's the 
general case.  What you're suggesting is certainly allowed: when the 
provider knows "early enough", here's an additional case it can optimize.

The fundamental problem though is that (in the Auto Request asynch case) 
the failure may not be known until *after* the create response has been 
sent.  So the AR IP could inherit from the FB IP *only* if the request is 
always synch-style; since not all AR flows are synch style, the AR IP 
(which encompasses both synch and asynch styles) cannot inherit from FB in 
the general case.  We could spec it such that *when the provider 
guarantees that the AR-synch style will always be used* that the provider 
can expose a binding recognized as FB whose body happens to be a AR, and 
otherwise it Must Not do so.  That's tugging at my "overly complex" meter, 
but if "hidden" inside the Automation spec where the synch/asynch 
dichotomy is already exposed it's probably ok.

> WebDAV's 424 "Method Failure" [1] [2] might be appropriate. 
> (This would mean that those implementations that use 2.0 synchronous 
execution would not be compliant to 2.1 - so this might be more 
appropriate for 3.0 than 2.1). 

"Method failure" is a string I only see in the MSFT doc; all the normative 
references like RFC4918 say "Failed Dependency".  Reading the RFC's 
section on 424 and PROPFIND, it wouldn't be my first (or fourteenth) 
choice.

> Or do you think it would be more appropriate to split the FB and AR 
interaction patterns? 

I convinced myself above (...*only* if...) that they must be split; 
they're just incompatible (wrt how the client detects failures) in the 
asynch execution style.

> Any individual provider would still be free, I believe, to use a 4xx/5xx 
return code in the synchronous AR case, as in the paragraph above, and so 
use an AR as a fixed body, but it would have to explicitly make it 
recognizable as both, rather than the spec doing so. 

Agree

> I guess we can always suggest it, or even make it a best practice, to 
support FB when using AR (which should work fine with asynchronous 
execution, and the change above can make it work with synchronous 
execution). 

So far, n-1 of the 5ish implementations I have using or planning to use 
Automation are in the "my requests are 'always' long-running, I'll always 
use the asynch style, and keep things consistent for clients" camp.  The 
other is, so far I think, the polar opposite (always synch; I just don't 
know how long that will actually fly for them).  Offering multiple 
bindings, one FB and one AR, is something I see only when we have multiple 
products able to manage a single resource (which they each represent 
independently, and then we have to link together later in 'third party' 
code)... the "link them together" code might well merge actions if the 
types are compatible.  Maybe other cases will emerge over time, but I 
don't see *any* current implementations saying that it's a best practice 
to offer both.

> The only question for that approach is what is the recognition rule for 
AR? 

Just remove the oslc:ContentFromRepresentation resource , so it works like 
resource shape? 
oslc:binding [
        a       http:Request
        http:body       [
                a       oslc-automation:AutomationRequest
                ...
        ]
]


> I feel like we should go with splitting the patterns, 

agree

> and documenting in what cases you can use them together 

I'm closer to 'on the fence' about this.  If it's "true but not commonly 
used" consequence of the spec, I'd be tempted to relegate it to a 
companion document.  We considered doing that for synch/asynch "styles" in 
2.0 but ran out of energy.

> (I probably can't make a convincing enough argument for making it a best 
practice - we can discuss whether any profile should require both from 
providers), 

my views above.

> then propose for 3.0 that synchronous execution returns a non-2xx code 
for failure. 

This seems like an option (consequence of the current spec), so I wonder 
if it belongs in a companion document.... perhaps along with the whole 
synch execution style.


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/20140314/bca7ac49/attachment-0003.html>


More information about the Oslc-Automation mailing list