Hi Shiro, I found a problem with GET cartridges method: Now it is not possible to get cartridges for a given cartridge type:
GET /cartridges/{cartridgeType} Thanks On Thu, Dec 11, 2014 at 12:19 PM, Shiroshica Kulatilake <sh...@wso2.com> wrote: > > This was actually an effort from many contributers - so should thank > everyone ! :) > > We still have to do some more work to make this perfect > 1. Make the responses also consistent - > https://issues.apache.org/jira/browse/STRATOS-1028 > 2. We also should consider what to do with the v4.0 REST api - most of the > operations are not valid anymore > 3. CLI needs to be updated > > On Thu, Dec 11, 2014 at 12:14 PM, Lakmal Warusawithana <lak...@wso2.com> > wrote: > >> Yes, this is great, very clear now. Thanks Shiro. >> >> On Thu, Dec 11, 2014 at 11:54 AM, Reka Thirunavukkarasu <r...@wso2.com> >> wrote: >> >>> Great work Shiro..!!! The paths are very consistent now.. >>> >>> Thanks, >>> Reka >>> >>> On Thu, Dec 11, 2014 at 11:37 AM, Mariangela Hills <mariang...@wso2.com> >>> wrote: >>> >>>> 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 >>>>>>> definitionGET/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 application >>>>>>> POST/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 type >>>>>>> GET/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 >>>>>>> usersPUT/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 >>>>> >>>> >>>> >>> >>> >>> -- >>> Reka Thirunavukkarasu >>> Senior Software Engineer, >>> WSO2, Inc.:http://wso2.com, >>> Mobile: +94776442007 >>> >>> >>> >> >> >> -- >> Lakmal Warusawithana >> Vice President, Apache Stratos >> Director - Cloud Architecture; WSO2 Inc. >> Mobile : +94714289692 >> Blog : http://lakmalsview.blogspot.com/ >> >> > > > -- > Shiroshica Kulatilake > > Architect, > WSO2, Inc. http://wso2.com/ > Phone: +94 776523867 > -- Imesh Gunaratne Technical Lead, WSO2 Committer & PMC Member, Apache Stratos