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 / man...@apache.org
phone : +94 772492511
blog : http://manulachathurika.blogspot.com/

Reply via email to