Nirmal,
Have you already implemented the new Cartridge agent? If not how about
writing it in Python?

Damitha


On Mon, Mar 10, 2014 at 2:25 PM, Nirmal Fernando <nirmal070...@gmail.com>wrote:

> 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 
> <nirmal070...@gmail.com>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/
>



-- 
__________________________________________________________________
Damitha Kumarage
http://people.apache.org/
__________________________________________________________________

<<inline: Cartridge Agent Design.png>>

Reply via email to