stratos-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Imesh Gunaratne <im...@apache.org>
Subject Re: Use of create instead of deploy within Stratos
Date Thu, 11 Dec 2014 05:29:43 GMT
Great work Shiro! We might need to update the Wiki with this.

Thanks

On Wed, Dec 10, 2014 at 4:29 PM, Nirmal Fernando <nirmal070125@gmail.com>
wrote:

> Great work Shiro on seeing this through !!
>
> On Wed, Dec 10, 2014 at 3:14 PM, Shiroshica Kulatilake <shiro@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 policies
>> GET/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 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 <shiro@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 <imesh@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 <lakmal@wso2.com>
>>>> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Mon, Dec 8, 2014 at 4:55 PM, Shiroshica Kulatilake <shiro@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

Mime
View raw message