stratos-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Shiroshica Kulatilake <sh...@wso2.com>
Subject Re: Use of create instead of deploy within Stratos
Date Thu, 11 Dec 2014 06:49:36 GMT
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 <lakmal@wso2.com>
wrote:

> Yes, this is great, very clear now. Thanks Shiro.
>
> On Thu, Dec 11, 2014 at 11:54 AM, Reka Thirunavukkarasu <reka@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 <mariangela@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 <imesh@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 <
>>>> 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
>>>>>> 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 created
>>>>>> GET/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 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 <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
>>>>
>>>
>>>
>>
>>
>> --
>> 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

Mime
View raw message