<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Stephen,<br>
    I have responded to your questions below.<br>
    <div class="moz-cite-prefix"><br>
      On 04/17/2014 01:02 PM, Stephen Balukoff wrote:<br>
    </div>
    <blockquote
cite="mid:CAAGw+Zqccw5--mOmymPm6XqO120PwOfyRPJrWtRORY0XnVmXqg@mail.gmail.com"
      type="cite">
      <meta http-equiv="Context-Type" content="text/html; charset=UTF-8">
      <div dir="ltr">
        <div>Howdy folks!</div>
        <div><br>
        </div>
        <div>Based on this morning's IRC meeting, it seems to me there's
          some contention and confusion over the need for "single call"
          functionality for load balanced services in the new API being
          discussed. This is what I understand:</div>
        <div><br>
        </div>
        <div>* Those advocating "single call" are arguing that this
          simplifies the API for users, and that it more closely
          reflects the users' experience with other load balancing
          products. They don't want to see this functionality
          necessarily delegated to an orchestration layer (Heat),
          because coordinating how this works across two OpenStack
          projects is unlikely to see success (ie. it's hard enough
          making progress with just one project). I get the impression
          that people advocating for this feel that their current users
          would not likely make the leap to Neutron LBaaS unless some
          kind of functionality or workflow is preserved that is no more
          complicated than what they currently have to do.</div>
      </div>
    </blockquote>
    <font color="#ff0000">Another reason, which I've mentioned many
      times before and keeps getting ignored, is because the more
      primitives you add the longer it will take to provision a load
      balancer.  Even if we relied on the orchestration layer to build
      out all the primitives, it still will take much more time to
      provision a load balancer than a single create call provided by
      the API.  Each request and response has an inherent time to
      process.  Many primitives will also have an inherent build time. 
      Combine this in an environment that becomes more and more dense,
      build times will become very unfriendly to end users whether they
      are using the API directly, going through a UI, or going through
      an orchestration layer.  This industry is always trying to improve
      build/provisioning times and there are no reasons why we shouldn't
      try to achieve the same goal.</font><br>
    <blockquote
cite="mid:CAAGw+Zqccw5--mOmymPm6XqO120PwOfyRPJrWtRORY0XnVmXqg@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div><br>
        </div>
        <div>* Those (mostly) against the idea are interested in seeing
          the API provide primitives and delegating "higher level"
          single-call stuff to Heat or some other orchestration layer.
          There was also the implication that if "single-call" is
          supported, it ought to support both simple and advanced
          set-ups in that single call. Further, I sense concern that if
          there are multiple ways to accomplish the same thing supported
          in the API, this redundancy breeds complication as more
          features are added, and in developing test coverage. And
          existing Neutron APIs tend to expose only primitives. I get
          the impression that people against the idea could be convinced
          if more compelling reasons were illustrated for supporting
          single-call, perhaps other than "we don't want to change the
          way it's done in our environment right now."</div>
      </div>
    </blockquote>
    <font color="#ff0000">I completely disagree with "we dont want to
      change the way it's done in our environment right now".  Our
      proposal has changed the way our current API works right now.  We
      do not have the notion of primitives in our current API and our
      proposal included the ability to construct a load balancer with
      primitives individually.  We kept that in so that those operators
      and users who do like constructing a load balancer that way can
      continue doing so.  What we are asking for is to keep our users
      happy when we do deploy this in a production environment and
      maintain a single create load balancer API call.</font><br>
    <blockquote
cite="mid:CAAGw+Zqccw5--mOmymPm6XqO120PwOfyRPJrWtRORY0XnVmXqg@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div><br>
        </div>
        <div>I've mostly stayed out of this debate because our solution
          as used by our customers presently isn't "single-call" and I
          don't really understand the requirements around this.</div>
        <div><br>
        </div>
        <div>So! I would love it if some of you could fill me in on
          this, especially since I'm working on a revision of the
          proposed API. Specifically, what I'm looking for is answers to
          the following questions:</div>
        <div><br>
        </div>
        <div>1. Could you please explain what you understand single-call
          API functionality to be?</div>
      </div>
    </blockquote>
    <font color="#cc0000">Single-call API functionality is a call that
      supports adding multiple features to an entity (load balancer in
      this case) in one API request.  Whether this supports all features
      of a load balancer or a subset is up for debate.  I prefer all
      features to be supported.  Yes it adds complexity, but complexity
      is always introduced by improving the end user experience and I
      hope a good user experience is a goal.</font><br>
    <blockquote
cite="mid:CAAGw+Zqccw5--mOmymPm6XqO120PwOfyRPJrWtRORY0XnVmXqg@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div><br>
        </div>
        <div>2. Could you describe the simplest use case that uses
          single-call API in your environment right now? Please be very
          specific--  ideally, a couple examples of specific CLI
          commands a user might run, or API (along with specific
          configuration data) would be great.</div>
      </div>
    </blockquote>
    <font color="#cc0000"><a class="moz-txt-link-freetext" href="http://docs.rackspace.com/loadbalancers/api/v1.0/clb-devguide/content/Create_Load_Balancer-d1e1635.html">http://docs.rackspace.com/loadbalancers/api/v1.0/clb-devguide/content/Create_Load_Balancer-d1e1635.html</a><br>
      <br>
      This page has many different ways to configure a load balancer
      with one call.  It ranges from a simple load balancer to a load
      balancer with a much more complicated configuration.  Generally,
      if any of those features are allowed on a load balancer then it is
      supported through the single call.  </font><br>
    <blockquote
cite="mid:CAAGw+Zqccw5--mOmymPm6XqO120PwOfyRPJrWtRORY0XnVmXqg@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div><br>
        </div>
        <div>3. Could you describe the most complicated use case that
          your single-call API supports? Again, please be very specific
          here.</div>
      </div>
    </blockquote>
    <font color="#cc0000">Same data can be derived from the link above.</font><br>
    <blockquote
cite="mid:CAAGw+Zqccw5--mOmymPm6XqO120PwOfyRPJrWtRORY0XnVmXqg@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div><br>
        </div>
        <div>4. What percentage of your customer base are used to using
          single-call functionality, and what percentage are used to
          manipulating primitives?</div>
      </div>
    </blockquote>
    <font color="#cc0000">100% but just like others it is the only way
      to create a load balancer in our API.  So this data doesn't mean
      much.</font><br>
    <br>
        Oh! One other question:
    <div><br>
    </div>
    <div>    5. Should "single-call" stuff work for the lifecycle of a
      load balancing service? That is to say, should "delete"
      functionality also clean up all primitives associated with the
      service?<br>
      <br>
      <font color="#ff0000">How we were thinking was that it would just
        "detach" the primitives from the load balancer but keep them
        available for association with another load balancer.  A user
        would only be able to actually delete a primitive if it went
        through the root primitive resource (i.e. /pools, /vips). 
        However, this is definitely up for debate and there are pros and
        cons to doing it both ways.  If the system completely deletes
        the primitives on the deletion of the load balancer, then the
        system has to handle when one of those primitives is being
        shared with another load balancer.</font><br>
    </div>
    <br>
    <blockquote
cite="mid:CAAGw+Zqccw5--mOmymPm6XqO120PwOfyRPJrWtRORY0XnVmXqg@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div><br>
        </div>
        <div>Thanks!</div>
        <div>Stephen</div>
        <div><br>
        </div>
        <div><br>
        </div>
        -- <br>
        <span></span>Stephen Balukoff
        <br>
        Blue Box Group, LLC
        <br>
        (800)613-4305 x807
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
OpenStack-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a>
<a class="moz-txt-link-freetext" href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>