[
https://issues.apache.org/jira/browse/STRATOS-505?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13951851#comment-13951851
]
Nirmal Fernando commented on STRATOS-505:
-----------------------------------------
Community has decided that we do not require this much of flexibility in agent.
So, I've reverted my above commit and committed a new implementation in
ae7f9062df5b08b8ab37fa34ddaa5cb15911cb92.
Now if you want to extend the Cartridge Agent, you should extend the
org.apache.stratos.cartridge.agent.CartridgeAgent class and provide it as an
argument to the CartridgeAgent's Main class.
> Make Stratos Cartridge Agent Truly Extensible
> ---------------------------------------------
>
> Key: STRATOS-505
> URL: https://issues.apache.org/jira/browse/STRATOS-505
> Project: Stratos
> Issue Type: Improvement
> Components: Cartridge Agent
> Affects Versions: 4.0.0 Alpha
> Reporter: Nirmal Fernando
> Assignee: Nirmal Fernando
> Priority: Critical
> Fix For: 4.0.0 RC1
>
> Attachments: Cartridge Agent Design.png
>
>
> 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.
> <please refer to the attached image>
> 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.InitializingPhase
> org.apache.stratos.cartridge.agent.executor.impl.StartListenersExtensionExecutor
> org.apache.stratos.cartridge.agent.executor.impl.ScriptExtensionExecutor=instance-started.sh,xxxxxxxxx.sh
> [Starting]=org.apache.stratos.cartridge.agent.phase.impl.StartingPhase
> org.apache.stratos.cartridge.agent.executor.impl.ScriptExtensionExecutor=start-servers.sh
> org.apache.stratos.cartridge.agent.executor.impl.WaitTillActivateExtensionExecutor
> org.apache.stratos.cartridge.agent.executor.impl.PersistenceVolumeExtensionExecutor
> [WorkingPhase]=org.apache.stratos.cartridge.agent.phase.impl.WorkingPhase
> org.apache.stratos.cartridge.agent.executor.impl.LogPublisherExtensionExecutor
> org.apache.stratos.cartridge.agent.executor.impl.KeepAgentLiveExtensionExecutor
> [CleanUpPhase]=org.apache.stratos.cartridge.agent.phase.impl.CleanUpPhase
> ________________________________________________________________________________________________
--
This message was sent by Atlassian JIRA
(v6.2#6252)