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 Sun, 14 Dec 2014 06:55:07 GMT
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 <shiro@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 <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
>>>>>>> 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 <
>>>>>>> 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
>


-- 
Imesh Gunaratne

Technical Lead, WSO2
Committer & PMC Member, Apache Stratos

Mime
View raw message