Another important thing I missed in the previous email is the execution
order. Cartridge Agent is fully respect the order you specify in the
configuration file.

As an example; in the Initializing phase of the sample configuration,
*StartListenersExtensionExecutor
*will run before

*ScriptExtensionExecutor.*
Also, in the *ScriptExtensionExecutor *scripts will be executed in the
order you specify.


On Mon, Mar 10, 2014 at 2:20 PM, Nirmal Fernando <[email protected]>wrote:

> Hi All,
>
> Current Stratos Cartridge Agent is not truly extensible and it's not that
> easy to use it at the moment, with different different Cartridges
> (Cartridges have features that are specific to them and it's not correct to
> expect that every Cartridge opens up ports etc.).
>
> So, I've come up with following design for the Cartridge Agent.
>
> [image: Inline image 1]
>
> Cartridge Agent's flow is fully customizable now and it is simply a
> collection of user defined collection of Phases.
>
>    - A *Phase* corresponds to a period between two life cycle states of
>    the agent. eg: phase between started state to activated state would be
>    activating phase.
>    - A Phase consists of a collection of ExtensionExecutors.
>    - An *ExtensionExecutor* can be used to implement different functions
>    that agent should do within the Phase it belongs to.
>    - ExtensionExecutor can be a simple Java code, which is capable of
>    executing script files, checking connections to ports etc.
>    - *ScriptExtensionExecutor* is an implementation of the
>    ExtensionExecutor, which you can use to execute script files using Java's
>    Process.exec command.
>    - You can write custom Phases by extending
>    *org.apache.stratos.cartridge.agent.phase.Phase* abstract class and
>    also you can write custom ExtensionExecutors by extending
>    *org.apache.stratos.cartridge.agent.executor.ExtensionExecutor*abstract 
> class.
>
> *How to define the Agent's work-flow?*
>
> I've introduced a configuration file to define Agent's work-flow and its
> structure is like this;
>
> *[<id-of-the-phase>]=<full-qualified-class-name-of-phase>*
>
> *<full-qualified-class-name-of-extension-executor>*
>
>
> *<full-qualified-class-name-of-extension-executor>=<comma-separated-list-of-values>*
>
> *.....*
>
> *[<id-of-the-phase>]=<full-qualified-class-name-of-phase>*
>
> *.....*
>
> Path to the file should be set as a system property "
> *agent.flow.file.path*".
>
>
> *A sample is given below.*
>
>
> _______________________________________________________________________________________________
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> *[Initializing]=org.apache.stratos.cartridge.agent.phase.impl.InitializingPhaseorg.apache.stratos.cartridge.agent.executor.impl.StartListenersExtensionExecutororg.apache.stratos.cartridge.agent.executor.impl.ScriptExtensionExecutor=instance-started.sh,xxxxxxxxx.sh
> [Starting]=org.apache.stratos.cartridge.agent.phase.impl.StartingPhaseorg.apache.stratos.cartridge.agent.executor.impl.ScriptExtensionExecutor=start-servers.shorg.apache.stratos.cartridge.agent.executor.impl.WaitTillActivateExtensionExecutor
> org.apache.stratos.cartridge.agent.executor.impl.PersistenceVolumeExtensionExecutor[WorkingPhase]=org.apache.stratos.cartridge.agent.phase.impl.WorkingPhaseorg.apache.stratos.cartridge.agent.executor.impl.LogPublisherExtensionExecutor
> org.apache.stratos.cartridge.agent.executor.impl.KeepAgentLiveExtensionExecutor[CleanUpPhase]=org.apache.stratos.cartridge.agent.phase.impl.CleanUpPhase*
>
> ________________________________________________________________________________________________
>
>
> I'll be committing these changes soon.
>
> Let me know your thoughts too.
>
> --
> Best Regards,
> Nirmal
>
> Nirmal Fernando.
> PPMC Member & Committer of Apache Stratos,
> Senior Software Engineer, WSO2 Inc.
>
> Blog: http://nirmalfdo.blogspot.com/
>



-- 
Best Regards,
Nirmal

Nirmal Fernando.
PPMC Member & Committer of Apache Stratos,
Senior Software Engineer, WSO2 Inc.

Blog: http://nirmalfdo.blogspot.com/

<<inline: Cartridge Agent Design.png>>

Reply via email to