CenturyLinkCloud / clc-node-sdk

Apache License 2.0
6 stars 1 forks source link

Design API for shared Anti-Affinity Policies operations #129

Closed idrabenia closed 9 years ago

idrabenia commented 9 years ago

It would be great to design set of API calls and structures that will allow to provide possibilities to manage Anti-Affinity Policies.

Proposed set of required to implementation APIs:

  1. Create Anti-Affinity Policy
  2. Search Anti-Affinity Policies
  3. Delete Anti-Affinity Policy
  4. Add support of Anti-Affinity Policy to Create Server Operation
push1st1k commented 9 years ago

Proposed structure:

policySearchCriteria: 
{
    name: "My Policy",
    nameContains: "anti",
    where: function(policy) {
        return ["My Policy", "Custom Policy"].indexOf(policy.name) > -1;
    },
    dataCenter: dataCenterCriteria,
    dataCenterId: 'de1',
    dataCenterName: 'DE1 - Germany (Frankfurt)',
    dataCenterNameContains: 'Frankfurt',
    //dataCenterWhere: function(dataCenter) {
    //    return dataCenter.id === 'de1';
    //}
}

createPolicyConfig:
{
    name: "New Policy",
    dataCenter: dataCenterSearchCriteria
}

modifyPolicyConfig:
{
    name: "New Policy"
}

policies().create(createPolicyConfig);
policies().delete(policySearchCriteria);
policies().find(policySearchCriteria);
policies().modify(policySearchCriteria, modifyPolicyConfig);
idrabenia commented 9 years ago

About policies it would be great to think - because we will have multiple types of policies:

  1. Anti-affinity policies
  2. Alert policies
  3. Autoscale policies
idrabenia commented 9 years ago

Then I propose to use next methods naming:

policies().createAntiAffinity(createPolicyConfig);
policies().deleteAntiAffinity(policySearchCriteria);
policies().findAntiAffinity(policySearchCriteria);
policies().modifyAntiAffinity(policySearchCriteria, modifyPolicyConfig);
push1st1k commented 9 years ago

@idrabenia Looks great! Thanks!

push1st1k commented 9 years ago

In this case we cannot implement SearchSupport functionality properly. I think, we should implement separate services for each policy (alert-policies, anti-affinity-policies etc).

idrabenia commented 9 years ago

ok, you may try to use next approach:

policies().antiAffinity().create(createPolicyConfig);
policies().antiAffinity().delete(policySearchCriteria);
policies().antiAffinity().find(policySearchCriteria);
policies().antiAffinity().modify(policySearchCriteria, modifyPolicyConfig);