[Oslc-Automation] Scenario for automation server/automation tool (worker, agent, etc) interaction

Charles Rankin rankinc at us.ibm.com
Wed Oct 12 17:34:00 EDT 2011


oslc-automation-bounces at open-services.net wrote on 10/12/2011 11:10:45 AM:

> As discussed at the end of the last workgroup meeting, Pramod Chandoria 
has
> provided a proposed scenario [1] for how automation providers or servers
> interact with automation tools/agents/workers.

Thanks to Pramod for posting the scenario. 

> [1] -
> 
http://open-services.net/bin/view/Main/AutomationScenarios#AutomationTools

[CVR: Note, I've inlined the scenario for easier comments]

> 1. Automation Tool registers with Automation Server with the type of 
Automation Tool. Automation Server responds back with a URL to look for 
further work

I'm still of the opinion that "agents" (that's the term I'll use for this 
discussion) should be out of scope for the first spec.  For sake of 
discussion though, we would need to determine what "registers" means here. 
 Is this the creation of an, as yet undefined, AutomationAgent resource? 
That would normally be a one-time operation.  I seem to recall from 
previous discussion that in the specific tool that Pramod was working 
on/with that this was done each time the agent was started.  In that case, 
I'm guessing we would want an error if the same AutomationAgent resource 
was being created again (as opposed to getting duplicates created).  This 
could then trigger the agent to update the AutomationAgent with current 
information (e.g., last start time).  I would expect the creation request 
to come back with the URL to the newly created AutomationAgent on success. 
 In either case, the agent will likely need to obtain the URL used to 
query for work via another means.  This may be straightforward, since it 
already has the ServiceProvider for doing the initial AutomationAgent 
creation.

> 2. Automation Server User (manual or scheduling facility) initiates 
Execution of a Automation plan. 
>(Either user can choose one of the registered tool for execution or 
Automation Server can decides itselt to dynamically 
> allocate Execution to one of the Registered Automation tool.)
>
> 3. An Automation Task is created to track this request.

At present, we had been talking about the creation of an AutomationRequest 
resource (containing parameters) which references an AutomationPlan (which 
will be executed with the provided parameters).  It's a separate 
discussion (that really needs to happen soon, <grin>) of how all that will 
actually work, but I'm going to assume that there is traceability from the 
resultant AutomationRequest resource that is returned to the 
AutomationResult object that actually tracks the progress of automation as 
it runs.  However, I'm unclear if the "Automation Task" that you reference 
is one of these three resources, or if it is a new resource that hasn't 
been discussed yet.

> 4. Automation Tool polls periodically to Automation Server on provided 
URL for any work assigned

This should be viable given normal OSLC query capabilities.  Granted, we 
would need to figure exactly what resource(s) is/are being queried and 
what properties differentiate work for one agent from another.

> 5. Automation Tool, upon finding an Automation Task, follows the link to 
get more information about the request 
So, from the query in #4, the agent follows the link to the specific 
resource that it needs to operate on.  It would be useful to get a few 
examples of what "information" the agent will be looking for.  I'm mostly 
interested in whether this is information that is passed in via the 
AutomationRequest (which will be defined at some point), or if there is 
other "information" that might be needed as well.  In the latter case, I'm 
wondering if that is something that we'll want to standardize, or if it is 
assume that will be custom extensions on a tool by tool basis.
> 6. Automation Tool picks up the work and updates the Automation Server 
about the work it has taken

What does this really mean?  Is this simply an update of whatever resource 
represents the "Automation Task" referenced earlier?
I'll interject here that I'm skeptical that someone could use the OSLC 
Automation specification to create a generic agent that could work with 
any arbitrary OSLC Automation spec provider to perform work for it.  I 
strongly believe that we'll find that specific tools need specific agents 
with custom knowledge carried between them.  I would love to be wrong 
here.  And perhaps there is something that could be done if you can 
scope/type the agents.  I'm not sure we want to go there though 
(particularly in the first version of the spec).
> 7. Automation tool continues to work and keeps on updating Automation 
Server with progress and any other status messages.

Just to be clear, what resource is being updated here?  I had hoped this 
would be the AutomationResult, but I suspect this is still the "Automation 
Task" referenced in #3.  After that we need to determine how we would 
represent progress (states, percentage indicator, or something more 
sophisticated) and "status messages".
> 8. Optionally an user can Cancel the Automation task. Automation tool 
upon receiving such instruction cancel further execution and update 
Automation Task

This likely goes back to the AutomationRequest mechanism.  However, there 
does seem to be an implication that the agent will be polling some 
resource on a regular basis to determine if the "Automation Task" is still 
"live".  Is that what we want?  Maybe this is another case where an 
eventing/notification system would prove useful?
> 9. Automation Tool upon completion of the work, Creates Automation 
Result back to Automation Server.

And, this is why I assumed that "Automation Task" wasn't really 
referencing the AutomationResult.  :)  I think that the creation of the 
AutomationResult should happen by the underlying OSLC Automation spec 
provider during initial "execution".  I could see the agent updating the 
AutomationResult, but I'm not sold on it doing the creation.  In fact, I 
think I'd go so far as to say that AutomationResults are not externally 
createable at all.  Thoughts?

> 10. Automation tool updates Automation task to link with the result 
created and and mark Automation task as complete with 100% progress. 

This just continues my disconnect.  As an AutomationResult was intended to 
be the result of an ("executed") instance of an AutomationPlan.  This 
seems to indicate that the AutomationResult links to the "Automation 
Task".  Is simply reusing the same AutomationResult resource definition in 
multiple places, or is there a separate resource definition associated 
with AutomationPlans and with "Automation Tasks"?
Thanks again, Pramod, for posting the scenario.  There are lots of 
interesting things in this scenario, hence all my questions.  I've also 
got a lot of questions about presumed semantics of the various different 
tools that will be looking to implement the OSLC Automation Spec.  I'll 
wait on those until we can get some more clarity on how we would want this 
scenario to work.

Charles Rankin
Rational CTO Team -- Mobile Development Strategy
101/4L-002 T/L 966-2386
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://open-services.net/pipermail/oslc-automation_open-services.net/attachments/20111012/aaa2d952/attachment-0003.html>


More information about the Oslc-Automation mailing list