For the initial implementation for persisting Service Group Definitions,
the functionality will cover:
1. Nested Service Groups
2. Validation of the availability of referred Service Groups and Cartridges
I have copy-pasted two sample Service Group definitions [1, 2] below. [2]
is a nested group.
[1].
{
"name": "group1",
"cartridges": [
"mysql", "mongoDB"
],
"dependencies": {
"killBehaviour": "kill-none"
}
}
[2].
{
"name": "group2",
"subGroups": [
"group1"
],
"cartridges": [
"php"
],
"dependencies": {
"startupOrder": [
{
"start": "group.group1",
"after": "cartridge.php"
}
],
"killBehaviour": "kill-dependents"
}
}
On Mon, Jun 2, 2014 at 10:52 AM, Isuru Haththotuwa <[email protected]>
wrote:
> Hi Devs,
>
> This is an addition to the discussion happened in the thread [1]. I have
> included a very basic sequence diagram to show the flow of how Service
> Grouping would happen for the initial implementation.
>
>
> composite_app_1.png
> <https://docs.google.com/a/wso2.com/file/d/0B4pCC9A49FwCRDhqQ0JDRl9tQjA/edit?usp=drive_web>
>
> Short description of the flow:.
>
> 1, 2 & 3. Deploy Components' Definitions that would be included in the top
> level Composite Application. Typically, a component would map to a single
> cartridge. For sample JSON definitions of a component, please refer [1].
>
> 4. Deploy a Group Definition, which would logically group the relevant
> components. This would include information on the Startup Order of each
> component, and how to handle the termination/error situations as well (Kill
> Behavior).
>
> 5. Deploy a Nested Group Definition, which would contain one/more of
> Components and Groups.
>
> 6. Deploy the Composite Application Definition. This would map to the
> operation 'Subscription' which we have currently, when spinning up a single
> cartridge instance. As per the discussion that took place in the above
> mentioned thread, this was decided to be called the 'Composite
> Application Definition' deployment, rather than a Subscription.
>
> For the initial version, we can restrict this Composite Application
> Definition only to contain information for each group/component, such as
> aliases, git repositories and relevant info as required, etc., and not
> allow further grouping at this level.
>
> A typical basic Composite Application Definition, in JSON format, would
> be as follows:
>
> {
> "name": "group2",
> "alias": "<group2_alias>",
> "components": [
> {
> "name": "component2",
> "alias": "<component2_alias>",
> "repoUrRL": "<repo_url>"
> }
> ],
> "groups": [
> {
> "name": "group1",
> "alias": "group1_alias",
> "components": [
> {
> "name": "component1",
> "alias": "<component1_alias>",
> "xxx": "<xxx>"
> },
> {
> "name": "component3",
> "alias": "<component3_alias>",
> "yyy": "<yyy>"
> }
> ]
> }
> ]
> }
>
> More information is available in the above mentioned mail thread and in
> [2]. Please share your feedback on this.
>
>
> [1]. [Discuss] Grouping of services (cartridges)
> [2].
> https://docs.google.com/a/wso2.com/document/d/1qnArxF8obhbjMLUbPAENQMn94fPSd3AVqO41mxhnJXE/edit#
>