Hi Manula,

What is the reason that we change the application format – we used to define 
the cartridge subscription info in a separate section ("subscribableInfo": )  
instead inline?

See sample below:


  "applicationId": "test_app5",
  "alias": "myapp5",
  "components": {
    "groups": [
    ],
    "subscribables": [
      {
        "type": "cisco-sample-vm",
        "alias": "c1xxx"
      }
    ]
  },
  "subscribableInfo": [
    {
      "alias": "c1xxx",
      "deploymentPolicy": "static-1-Core",
      "autoscalingPolicy": "economyPolicy",
      "privateRepo": "true",
      "repoPassword": "password",
      "repoURL": "http://xxx:10080/git/default.git";,
      "repoUsername": "user"
    }
  ]
}

From: Manula Chathurika Thantriwatte [mailto:manu...@wso2.com]
Sent: Monday, December 01, 2014 4:20 AM
To: dev@stratos.apache.org
Subject: [Discuss] Groups and Application JSON formats in Stratos 4.1.0

Hi All,

I have started working on $subject. Here I have came up with the more readable 
way of the new groups definition JSON and the application JSON format. Both of 
this support nested group definitions. Below I have listed the high level 
format of the application and group JSON format.

Application JSON format;


· applicationId

· alias

· components

· groups

· name

· alias

· min/max

· group scaling enable/disable

· cartridges

· min/max

· subscribable info

· groups

· alias

· min/max

· group scaling enable/disable

· cartridges

· min/max

· subscribable info

· cartridges

· min/max

· subscribable info

· dependencies

· startup order

· termination behavior
· dependent scaling

Group JSON format;


· name

· groups

· name

· cartridges

· dependencies

· cartridges

· dependencies

Below I have listed the sample JSON files as well.

Application JSON :

{
   "applicationId":"test_app5",
   "alias":"myapp5",
   "components":{
      "groups":[
         {
            "name":"group2",
            "alias":"group2alias",
            "groupMinInstances":1,
            "groupMaxInstances":2,
            "isGroupScalingEnabled":"false",
            "cartridges":[
               {
                  "type":"tomcat",
                  "cartridgeMin":1,
                  "cartridgeMax":2,
                  "subscribableInfo":{
                     "alias":"alias2",
                     "autoscalingPolicy":"autoscale_policy_1",
                     "privateRepo":"true",
                     "repoPassword":"password",
                     "repoURL":"http://xxx:10080/git/default.git";,
                     "repoUsername":"user"
                  }
               }
            ],
            "groups":[
               {
                  "name":"group1",
                  "alias":"group1alias",
                  "groupMinInstances":2,
                  "groupMaxInstances":5,
                  "isGroupScalingEnabled":"true",
                  "cartridges":[
                     {
                        "type":"tomcat1",
                        "cartridgeMin":1,
                        "cartridgeMax":2,
                        "subscribableInfo":{
                           "alias":"alias3",
                           "autoscalingPolicy":"autoscale_policy_1",
                           "privateRepo":"true",
                           "repoPassword":"password",
                           "repoURL":"http://xxx:10080/git/default.git";,
                           "repoUsername":"user"
                        }
                     }
                  ]
               }
            ]
         }
      ],
      "cartridges":[
         {
            "type":"tomcat",
            "cartridgeMin":1,
            "cartridgeMax":2,
            "subscribableInfo":{
               "alias":"alias1",
               "autoscalingPolicy":"autoscale_policy_1",
               "privateRepo":"true",
               "repoPassword":"password",
               "repoURL":"http://xxx:10080/git/default.git";,
               "repoUsername":"user"
            }
         }
      ]
   }
}

Group JSON :

{
   "name":"group2",
   "groups":[
      {
         "name":"group1",
         "cartridges":[
            "tomcat1"
         ],
         "dependencies":{
            "terminationBehaviour":"terminate-none"
         }
      }
   ],
   "cartridges":[
      "tomcat"
   ],
   "dependencies":{
      "startupOrders":[
         "group1,tomcat"
      ],
      "terminationBehaviour":"terminate-dependents",
      "scalingDependents":[
         "group1,tomcat"
      ]
   }
}

Please share your thoughts.

Thanks !

--
Regards,
Manula Chathurika Thantriwatte
Software Engineer
WSO2 Inc. : http://wso2.com
lean . enterprise . middleware
email : manu...@wso2.com<mailto:manu...@wso2.com> / 
man...@apache.org<mailto:man...@apache.org>
phone : +94 772492511
blog : http://manulachathurika.blogspot.com/


Reply via email to