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>>