On Mon, Oct 6, 2014 at 8:00 AM, Nirmal Fernando <nirmal070...@gmail.com>
wrote:

> I've enabled only comments since I am publishing it to dev list:
> https://docs.google.com/spreadsheets/d/1VP9-0xY2Oj1H1sv5yf5goIT6TakpwrCt5Z8QW1oFVOc/edit?usp=sharing
>

Great will put in comments

Thank you,
Shiro



> On Mon, Oct 6, 2014 at 7:33 AM, Nirmal Fernando <nirmal070...@gmail.com>
> wrote:
>
>> Sure, I hope, I'll be able to track who suggested what?
>>
>> On Mon, Oct 6, 2014 at 7:31 AM, Shiroshica Kulatilake <sh...@wso2.com>
>> wrote:
>>
>>> Hi Nirmal,
>>>
>>> Can you share this in the form of a sheet ?
>>> Then we can have a suggested column to have the diffs
>>>
>>> Thank you,
>>> Shiro
>>>
>>> On Mon, Oct 6, 2014 at 7:23 AM, Nirmal Fernando <nirmal070...@gmail.com>
>>> wrote:
>>>
>>>> Thanks Akila for going through and identifying collisions.
>>>>
>>>> On Sun, Oct 5, 2014 at 11:26 PM, Akila Ravihansa Perera <
>>>> raviha...@wso2.com> wrote:
>>>>
>>>>> Hi Nirmal,
>>>>>
>>>>> Great work on re-factoring REST API!
>>>>>
>>>>> I think these request paths might cause collisions.
>>>>>
>>>>> 1. /cartridges/multiTenant, /cartridges/singleTenant,
>>>>> /cartridges/{cartridgeType}
>>>>>
>>>>
>>>> I don't think in a real world, we would have a {cartridgeType} called
>>>> 'singleTenant' or 'multiTenant'. Do you think?
>>>>
>>>>
>>>>>
>>>>>
>>>>> 2. /clusters/{cartridgeType}, /clusters/{subscriptionAlias},
>>>>> /clusters/{clusterId}
>>>>>
>>>>
>>>> This is true, thanks again! So, we could refactor to something like:
>>>>
>>>> /clusters/cartridgeType/{cartridgeType}
>>>> /clusters/alias/{subscriptionAlias}
>>>> /clusters/{clusterId}
>>>>
>>>> Any other better way?
>>>>
>>>>
>>>>>
>>>>> I might be wrong...but just wanted to clarify :)
>>>>>
>>>>> Thanks.
>>>>>
>>>>> On Sun, Oct 5, 2014 at 9:06 PM, Udara Liyanage <ud...@wso2.com> wrote:
>>>>>
>>>>>> +1 for refactoring, some paths does not adhere to REST best practices
>>>>>>
>>>>>> On Sun, Oct 5, 2014 at 8:54 PM, Nirmal Fernando <
>>>>>> nirmal070...@gmail.com> wrote:
>>>>>>
>>>>>>> Hi Guys,
>>>>>>>
>>>>>>> As discussed previously, I've been going through all the API
>>>>>>> operations exposed via Stratos REST API and identified following set of
>>>>>>> APIs need to be refactored to have a RESTful design. While doing this, 
>>>>>>> I've
>>>>>>> also identified sub-APIs that we have provided (under Entity column) 
>>>>>>> and I
>>>>>>> suggest we could introduce sub-API classes as it makes the StratosAdmin
>>>>>>> class more readable.
>>>>>>>
>>>>>>> There're 40+ API operations ([?]), hence there could be places that
>>>>>>> I've not suggested proper refactoring. Please go through the list and
>>>>>>> provide improvements/comments, we can discuss/argue, then conclude and
>>>>>>> build a clean API for Stratos.
>>>>>>>
>>>>>>> IMO we also need to place a review process when adding a new API, it
>>>>>>> could save lot of time spending on cleaning things up. I propose, API
>>>>>>> introducer should initiate a discuss thread and a vote before committing
>>>>>>> them to the repository.
>>>>>>>
>>>>>>> I'll keep this thread open for 48hrs for comments and/or
>>>>>>> improvements.
>>>>>>>
>>>>>>> EntityHTTP OperationAPI Operation Name -> Suggested NameRequest 
>>>>>>> PathProposed
>>>>>>> PathCartridgePOSTdeployCartridgeDefinition/cartridge/definition/
>>>>>>> /cartridgesDELETEunDeployCartridgeDefinition
>>>>>>> /cartridge/definition/{cartridgeType}/cartridges/{cartridgeType}GETgetValidDeploymentPolicies
>>>>>>> -> getValidDeploymentPoliciesOfCartridge
>>>>>>> {cartridgeType}/policy/deployment
>>>>>>> /cartridges/{cartridgeType}/deploymentPolicyGETgetAvailableMultiTenantCartridges
>>>>>>> -> getMultiTenantCartridges/cartridge/tenanted/list
>>>>>>> /cartridges/multiTenantGETgetAvailableSingleTenantCartridges ->
>>>>>>> getSingleTenantCartridges/cartridge/list/cartridges/singleTenantGETgetAvailableCartridges
>>>>>>> -> 
>>>>>>> getCartridges/cartridge/available/list/cartridgesGETgetAvailableSingleTenantCartridgeInfo
>>>>>>> -> getAvailableSingleTenantCartridge
>>>>>>> /cartridge/available/info/{cartridgeType}
>>>>>>> /cartridges/{cartridgeType}/singleTenantGETgetAvailableLbCartridges
>>>>>>> /cartridge/lb/cartridges/loadBalancerPartitionPOSTdeployPartition
>>>>>>> /policy/deployment/partition/partitionsGETgetPartitions/partition
>>>>>>> /partitionsGETgetPartition/partition/{partitionId}
>>>>>>> /partitions/{partitionId}Autoscaling PolicyPOST
>>>>>>> deployAutoscalingPolicyDefintion/policy/autoscale/autoscalePolicies
>>>>>>> GETgetAutoscalePolicies -> getAutoscalingPolicies/policy/autoscale
>>>>>>> /autoscalePoliciesGETgetAutoscalePolicies -> getAutoscalingPolicy
>>>>>>> /policy/autoscale/{autoscalePolicyId}
>>>>>>> /autoscalePolicies/{autoscalePolicyId}Deployment PolicyPOST
>>>>>>> deployDeploymentPolicyDefinition/policy/deployment
>>>>>>> /deploymentPoliciesGETgetDeploymentPolicies/policy/deployment
>>>>>>> /deploymentPoliciesGETgetDeploymentPolicies -> getDeploymentPolicy
>>>>>>> /policy/deployment/{deploymentPolicyId}
>>>>>>> /deploymentPolicies/{deploymentPolicyId}Partition GroupGET
>>>>>>> getPartitionGroups/partition/group/{deploymentPolicyId}
>>>>>>> /deploymentPolicies/{deploymentPolicyId}/partitionGroupGETgetPartitions
>>>>>>> -> getPartitionGroup
>>>>>>> /partition/{deploymentPolicyId}/{partitionGroupId}
>>>>>>> /deploymentPolicies/{deploymentPolicyId}/partitionGroup/{partitionGroupId}
>>>>>>> GETgetPartitionsOfPolicy/partition/{deploymentPolicyId}
>>>>>>> /deploymentPolicies/{deploymentPolicyId}/partitionSubscriptionsGET
>>>>>>> getSubscribedCartridges/cartridge/list/subscribed
>>>>>>> /subscriptions/cartridgesGETgetSubscribedCartridgesForServiceGroup
>>>>>>> -> getSubscribedCartridgesOfServiceGroup
>>>>>>> /cartridge/list/subscribed/group/{serviceGroup}
>>>>>>> /subscriptions/cartridges/groups/{serviceGroup}GETgetCartridgeInfo
>>>>>>> -> getSubscribedCartridgeInfo/cartridge/info/{subscriptionAlias}
>>>>>>> /subscriptions/{subscriptionAlias}/cartridgesGETgetActiveInstances
>>>>>>> -> getActiveMembersCountOfSubscription
>>>>>>> /cartridge/active/{cartridgeType}/{subscriptionAlias}
>>>>>>> /subscriptions/{subscriptionAlias}/cartridges/{cartridgeType}/active
>>>>>>> POSTsubscribe/cartridge/subscribe/subscriptionsDELETEunsubscribe
>>>>>>> /cartridge/unsubscribe/subscriptions/{subscriptionAlias}POST
>>>>>>> addSubscriptionDomains
>>>>>>> /cartridge/{cartridgeType}/subscription/{subscriptionAlias}/domains
>>>>>>> /subscriptions/{subscriptionAlias}/domainsGETgetSubscriptionDomains
>>>>>>> /cartridge/{cartridgeType}/subscription/{subscriptionAlias}/domains
>>>>>>> /subscriptions/{subscriptionAlias}/domainsGETgetSubscriptionDomain
>>>>>>> /cartridge/{cartridgeType}/subscription/{subscriptionAlias}/domains/{domainName}
>>>>>>> /subscriptions/{subscriptionAlias}/domains/{domainName}DELETE
>>>>>>> removeSubscriptionDomain
>>>>>>> /cartridge/{cartridgeType}/subscription/{subscriptionAlias}/domains/{domainName}
>>>>>>> /subscriptions/{subscriptionAlias}/domains/{domainName}ClustersGETgetClustersForTenant
>>>>>>> -> getClustersOfTenant/cluster//clustersGETgetClusters ->
>>>>>>> getClustersOfCartridge/cluster/{cartridgeType}/
>>>>>>> /clusters/{cartridgeType}GETgetServiceClusters (This seems to do
>>>>>>> the same job as getClusters - I suggest we deprecate this.)GETgetCluster
>>>>>>> -> getClusterOfSubscription
>>>>>>> /cluster/{cartridgeType}/{subscriptionAlias}
>>>>>>> /clusters/{subscriptionAlias}GETgetCluster
>>>>>>> /cluster/clusterId/{clusterId}/clusters/{clusterId}GET
>>>>>>> getLoadBalancerCluster
>>>>>>> /cartridge/{cartridgeType}/subscription/{subscriptionAlias}/load-balancer-cluster
>>>>>>> /clusters/{subscriptionAlias}/loadBalancerTenantsGETretrieveTenants
>>>>>>> /tenant/list/tenants/list(All paths will be refactored to start
>>>>>>> from /tenants )Services POSTdeployService/service/definition
>>>>>>> /servicesDELETEunDeployService/service/definition/{serviceType}
>>>>>>> /services/{serviceType}(All paths will be refactored to start from
>>>>>>> /services )GIT RepositoriesPOSTgetRepoNotification ->
>>>>>>> notifyRepository/reponotification/repo/notifyPOSTsynchronizeRepository
>>>>>>> -> synchronizeRepositoryOfSubscription/cartridge/sync
>>>>>>> /repo/synchronize/{subscriptionAlias}UsersGETretrieveUsers/user/list
>>>>>>> /usersKubernetes HostsPOSTdeployKubernetesGroup ->
>>>>>>> deployKubernetesHostCluster/kubernetes/deploy/group
>>>>>>> /kubernetesClusterPUTdeployKubernetesHost
>>>>>>> /kubernetes/deploy/host/{kubernetesGroupId}
>>>>>>> /kubernetesCluster/{kubernetesClusterId}/minionPUT
>>>>>>> updateKubernetesMaster/kubernetes/update/master
>>>>>>> /kubernetesCluster/{kubernetesClusterId}/masterPATCH
>>>>>>> updateKubernetesHost/kubernetes/update/host
>>>>>>> /kubernetesCluster/{kubernetesClusterId}/minion/{minionId}GETgetKubernetesGroups
>>>>>>> -> 
>>>>>>> getKubernetesHostClusters/kubernetes/group/kubernetesClusterGETgetKubernetesGroup
>>>>>>> -> getKubernetesHostCluster/kubernetes/group/{kubernetesGroupId}
>>>>>>> /kubernetesCluster/{kubernetesClusterId}GETgetKubernetesHosts ->
>>>>>>> getKubernetesHostsOfKubernetesCluster
>>>>>>> /kubernetes/hosts/{kubernetesGroupId}
>>>>>>> /kubernetesCluster/{kubernetesClusterId}/hostsGETgetKubernetesMaster
>>>>>>> -> getKubernetesMasterOfKubernetesCluster
>>>>>>> /kubernetes/master/{kubernetesGroupId}
>>>>>>> /kubernetesCluster/{kubernetesClusterId}/masterDELETEunDeployKubernetesGroup
>>>>>>> -> unDeployKubernetesHostCluster
>>>>>>> /kubernetes/group/{kubernetesGroupId}
>>>>>>> /kubernetesCluster/{kubernetesClusterId}DELETEunDeployKubernetesHost
>>>>>>> -> unDeployKubernetesHostOfKubernetesCluster
>>>>>>> /kubernetes/host/{kubernetesHostId}
>>>>>>> /kubernetesCluster/{kubernetesClusterId}/hosts/{hostId}
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Best Regards,
>>>>>>> Nirmal
>>>>>>>
>>>>>>> Nirmal Fernando.
>>>>>>> PPMC Member & Committer of Apache Stratos,
>>>>>>> Senior Software Engineer, WSO2 Inc.
>>>>>>>
>>>>>>> Blog: http://nirmalfdo.blogspot.com/
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>>
>>>>>> Udara Liyanage
>>>>>> Software Engineer
>>>>>> WSO2, Inc.: http://wso2.com
>>>>>> lean. enterprise. middleware
>>>>>>
>>>>>> web: http://udaraliyanage.wordpress.com
>>>>>> phone: +94 71 443 6897
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Akila Ravihansa Perera
>>>>> Software Engineer, WSO2
>>>>>
>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Best Regards,
>>>> Nirmal
>>>>
>>>> Nirmal Fernando.
>>>> PPMC Member & Committer of Apache Stratos,
>>>> Senior Software Engineer, WSO2 Inc.
>>>>
>>>> Blog: http://nirmalfdo.blogspot.com/
>>>>
>>>
>>>
>>>
>>> --
>>> 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/
>>
>
>
>
> --
> Best Regards,
> Nirmal
>
> Nirmal Fernando.
> PPMC Member & Committer of Apache Stratos,
> Senior Software Engineer, WSO2 Inc.
>
> Blog: http://nirmalfdo.blogspot.com/
>



-- 
Shiroshica Kulatilake

Architect,
WSO2, Inc. http://wso2.com/
Phone: +94 776523867

Reply via email to