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/autoscalePoliciesGETgetAutoscalePolicies
>>>> -> 
>>>> getAutoscalingPolicies/policy/autoscale/autoscalePoliciesGETgetAutoscalePolicies
>>>> -> getAutoscalingPolicy/policy/autoscale/{autoscalePolicyId}
>>>> /autoscalePolicies/{autoscalePolicyId}Deployment PolicyPOST
>>>> deployDeploymentPolicyDefinition/policy/deployment/deploymentPolicies
>>>> GETgetDeploymentPolicies/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/servicesDELETE
>>>> unDeployService/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/kubernetesCluster
>>>> PUTdeployKubernetesHost/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

Reply via email to