I will update the wiki! Regards, Mariangela
*--* Mariangela Hills Senior Technical Writer *WSO2, Inc.*lean.enterprise.middleware. m: +94 773 500185 w: http://wso2.com <http://wso2.com/events/> On Thu, Dec 11, 2014 at 10:59 AM, Imesh Gunaratne <im...@apache.org> wrote: > Great work Shiro! We might need to update the Wiki with this. > > Thanks > > On Wed, Dec 10, 2014 at 4:29 PM, Nirmal Fernando <nirmal070...@gmail.com> > wrote: > >> Great work Shiro on seeing this through !! >> >> On Wed, Dec 10, 2014 at 3:14 PM, Shiroshica Kulatilake <sh...@wso2.com> >> wrote: >> >>> Hi, >>> >>> The Stratos REST api has been modified as follows. >>> >>> *1. Autoscaling Policies* >>> >>> Resource pathDescriptionPOST/autoscalingPoliciesCreates a new >>> autoscaling policyGET/autoscalingPoliciesGets all created autoscaling >>> policiesGET/autoscalingPolicies/{autoscalePolicyId}Gets a specific >>> autoscaling policyPUT/autoscalingPoliciesUpdates an existing >>> autoscaling policy >>> >>> *2. Cartridges* >>> >>> Resource pathDescriptionPOST/cartridgesCreate a new cartridge definition >>> GET/cartridgesGet all available cartridgesGET >>> /cartridges/{filter}?criteria=criteriaGet all available cartridges for >>> a particular filter valueGET/cartridges/{filter}/{cartrdigeType}Get a >>> specific cartridge within a filter valueDELETE >>> /cartridges/{cartridgeType}Delete a specific cartridge definition >>> - The filter methods in cartridge are to filter cartridges by specifc >>> values. >>> e.g. /cartridges/multiTenant would give a list of all multitenant >>> cartridges >>> Similar values which can be used are - "singleTenant", "loadBalancer" >>> and "provider" >>> - In the case of filtering cartridges by provider it is also needed to >>> specify the provider name - so in this case you would need to specify that >>> using the query parameter criteria >>> e.g. /cartridges/provider?criteria=<value> >>> >>> *3. Groups* >>> >>> Resource pathDescriptionPOST/groupsCreate a new group definitionGET >>> /groupsGet all created group definitionsGET/groups/{groupDefinitionName}Gets >>> a specific group definitionDELETE/groups/{groupDefinitionName}Delete a >>> group definition >>> >>> *4. Applications* >>> >>> Resource pathDescriptionGET/applicationsGets all applications createdGET >>> /applications/{applicationId}Gets a specific applicationPOST >>> /applicationsCreate an application definitionDELETE >>> /applications/{applicationId}Delete an application definition >>> >>> *5. Application Deployments* >>> >>> Resource pathDescriptionPOST/applicationDeploymentsDeploys an >>> application for a deployment policyDELETE >>> /applicationDeployments/{applicationId}Undeploys a specific application >>> based on application id >>> - The resource ApplicationDeployments were introduced to identify the >>> deployment of a particular application according to a deployment policy >>> - The deplolyment policy json is sent with the POST command >>> >>> *6. Deployment Policies* >>> >>> Resource pathDescriptionGET/deploymentPoliciesGet all deployment >>> policiesGET/deploymentPolicies/{deploymentPolicyId}Gets a specific >>> deployment policyGET >>> /deploymentPolicies/{deploymentPolicyId}/partitionGroupGets partition >>> groups for a specific deployment policy >>> - Deployment policies are not created separately - instead when a POST >>> /applicationDepoyment with the deployment policy json is sent that >>> deployment policy is created. >>> >>> *7. Subscriptions* >>> >>> Resource pathDescriptionGET/subscriptions/{applicationId}Gets >>> subscriptions for an applicationGET >>> /subscriptions/cartridges/groups/{serviceGroupId}Gets subscribed >>> cartridges for a service group >>> >>> *8. Clusters * >>> >>> Resource pathDescriptionGET/clustersGet Clusters for a tenantGET >>> /clusters/{cartridgeType}Get clusters for a specific cartridge typeGET >>> /clusters/{clusterId}Get a specifc cluster >>> >>> *9. Kubernetes clusters* >>> >>> Resource pathDescriptionPOST/kubernetesClustersDeploy a Kubernetes >>> cluster groupPUT/kubernetesClusters/{kubernetesClusterId}/minionDeploy >>> a Kubernetes Host within a cluster groupPUT >>> /kubernetesClusters/{kubernetesClusterId}/masterDeploy a Kubernetes >>> Master within a cluster groupPATCH >>> /kubernetesClusters/{kubernetesClusterId}/minion/{minionId} >>> GET/kubernetesClustersGets all Kubernetes cluster groups createdGET >>> /kubernetesClusters/{kubernetesClusterId}Gets a specific Kubernetes >>> clusterGET/kubernetesClusters/{kubernetesClusterId}/hostsGets hosts of >>> a specific Kubernetes clusterGET >>> /kubernetesClusters/{kubernetesClusterId}/masterGet master of a >>> specific Kubernetes clusterDELETE >>> /kubernetesClusters/{kubernetesClusterId}Undeploy a kubernetes cluster >>> groupDELETE/kubernetesClusters/{kubernetesClusterId}/hosts/{hostId}Undeploy >>> a specific host within a Kubernetes cluster group >>> - the PATCH command is still in discussion hence it has not been changed >>> yet. It is still the old path "/kubernetes/update/host" - a TODO. >>> >>> *10. Tenants* >>> >>> Resource pathDescriptionPOST/tenantsAdd a new tenantGET/tenantsGet all >>> tenantsGET/tenants/{tenantDomain}Get a specific tenantGET >>> /tenants/search/{tenantDomain}Search for a tenantsPUT/tenantsUpdate a >>> tenantPUT/tenants/activate/{tenantDomain}Activate a tenantPUT >>> /tenants/deactivate/{tenantDomain}Deactivate a tenantDELETE >>> /tenants/{tenantDomain}Delete a tenant >>> >>> *11. Users* >>> >>> Resource pathDescriptionPOST/usersAdd a new userGET/usersGet all users >>> PUT/usersUpdate a userDELETE/users/{userName}Delete a user >>> >>> >>> *Example* : To create a single group application where the cartridges >>> are vms (I'm reusing the script used to test grouping) using the rest api >>> is as follows. >>> >>> 1. Create an autoscaling policy >>> - curl -X POST -H "Content-Type: application/json" -d @<AS policy >>> json file> -k -v -u admin:admin >>> https://localhost:9443/api/autoscalingPolicies >>> 2. Create cartridges >>> - curl -X POST -H "Content-Type: application/json" -d @<cartridge >>> json file> -k -v -u admin:admin https://localhost:9443/api/cartridges >>> 3. Create group >>> - curl -X POST -H "Content-Type: application/json" -d @<group json >>> file> -k -v -u admin:admin https://localhost:9443/api/groups >>> 4. Create application >>> - curl -X POST -H "Content-Type: application/json" -d @<application >>> json file> -k -v -u admin:admin https://localhost:9443/api/applications >>> 5. Deploy the application >>> - curl -X POST -H "Content-Type: application/json" -d@<deployment >>> policy json file> -k -v -u admin:admin >>> https://localhost:9443/api/applicationDeployments >>> >>> *Please note :-* Referring to the above email The separation between >>> creation of a deployment policy and deployment of an application is not >>> available in the alpha version of Stratos 4.1.0. >>> >>> >>> Thank you, >>> Shiro >>> >>> On Tue, Dec 9, 2014 at 1:29 AM, Shiroshica Kulatilake <sh...@wso2.com> >>> wrote: >>> >>>> Hi, >>>> >>>> In order to create a flow and to figure out the required minimal set of >>>> REST apis for application handling thought of breaking down the actions up >>>> to deploying and undeploying an application in Stratos as follows. >>>> >>>> 1. Create cartridges needed >>>> - POST /cartridges with cartridgeDefinition.json >>>> 2. View created cartridges or a specific cartridge >>>> - GET /cartridges, /cartridges/{category}/{criteria}, >>>> /cartridges/{category}/{cartrdigeType} >>>> 3. Create an autoscaling policy >>>> - POST /autoscalingPolicies with autoscalingPolicyDefinition.json >>>> 4. Viewing created Autoscaling policies >>>> - GET /autoscalingPolicies, /autoscalingPolicies/{autoscalePolicyId} >>>> 5. Create a service group definition >>>> - POST /groups with groupDefinition.json >>>> 6. View created groups >>>> - GET /groups, /groups/{groupDefinitionName} >>>> 7. Create an application >>>> - POST /applications >>>> 8. Viewing created application >>>> - GET /applications/, /applications/{applicationId} >>>> 9. Create a deployment policy for an application >>>> 10. View deployment policy >>>> - GET /deploymentPolicies/{deploymentPolicyId} >>>> 11. Deploy an application with the deployment policy >>>> 12. Undeploy an application >>>> 13. Delete deploymentPolicyDefinition >>>> 14. Delete an applicationDefinition >>>> >>>> >>>> Currently what's missing from the above is another entity which depicts >>>> an applicationDeployment. >>>> >>>> Then /applications will simply handle the definitions and >>>> /applicationDeployments should handle the actual deploy and undeployment of >>>> an application based on a deployment policy. >>>> >>>> Since a deployment policy is directly linked to an application it >>>> should be possible to get all deployment policies defined for a specific >>>> application and then pick one of these for the actual application >>>> deployment. >>>> >>>> Most of this is already there in the current rest api with different >>>> naming. I am working on getting the terminology correct and also add the >>>> few missing bits. >>>> >>>> Thank you, >>>> Shiro >>>> >>>> >>>> >>>> On Mon, Dec 8, 2014 at 7:08 PM, Imesh Gunaratne <im...@apache.org> >>>> wrote: >>>> >>>>> +1 We might need to clarify how we connect a deployment policy to an >>>>> application according to this model. >>>>> >>>>> On Mon, Dec 8, 2014 at 5:40 PM, Lakmal Warusawithana <lak...@wso2.com> >>>>> wrote: >>>>> >>>>>> >>>>>> >>>>>> On Mon, Dec 8, 2014 at 4:55 PM, Shiroshica Kulatilake <sh...@wso2.com >>>>>> > wrote: >>>>>> >>>>>>> Hi All, >>>>>>> >>>>>>> While cleaning up the REST API I noticed that we have used the word >>>>>>> "deploy" instead of 'create' in some places. >>>>>>> >>>>>>> We need to use these terms consistently IMO >>>>>>> >>>>>>> As a first start thought of renaming the api methods in the rest api >>>>>>> to reflect this. >>>>>>> >>>>>>> e.g. >>>>>>> Policies = create/delete instead of deploy/undelpoy >>>>>>> Cartridges = create/delete instead of deploy /undeploy >>>>>>> Groups = create/delete instead of deploy/undelpoy >>>>>>> Applications = create, deploy, undeploy and delete >>>>>>> >>>>>>> WDYT ? >>>>>>> >>>>>> >>>>>> +1 >>>>>> >>>>>> >>>>>>> >>>>>>> Thank you, >>>>>>> Shiro >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Lakmal Warusawithana >>>>>> Vice President, Apache Stratos >>>>>> Director - Cloud Architecture; WSO2 Inc. >>>>>> Mobile : +94714289692 >>>>>> Blog : http://lakmalsview.blogspot.com/ >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> Imesh Gunaratne >>>>> >>>>> Technical Lead, WSO2 >>>>> Committer & PMC Member, Apache Stratos >>>>> >>>> >>>> >>>> >>>> -- >>>> Shiroshica Kulatilake >>>> >>>> Architect, >>>> WSO2, Inc. http://wso2.com/ >>>> Phone: +94 776523867 >>>> >>> >>> >>> >>> -- >>> Shiroshica Kulatilake >>> >>> Architect, >>> WSO2, Inc. http://wso2.com/ >>> Phone: +94 776523867 >>> >> >> >> >> -- >> Best Regards, >> Nirmal >> >> Nirmal Fernando. >> PPMC Member & Committer of Apache Stratos, >> Senior Software Engineer, WSO2 Inc. >> >> Blog: http://nirmalfdo.blogspot.com/ >> > > > > -- > Imesh Gunaratne > > Technical Lead, WSO2 > Committer & PMC Member, Apache Stratos >