<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 12 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal-reply;
font-family:"Calibri","sans-serif";
color:#1F497D;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Hi Stephen,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">+1<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Admittedly, since Stephen and I come from an operator centric world we have sometimes trouble grasping other use cases so I am wondering if you can provide
one which would help us understand the need for grouping multiple different devices (LB, VPN, FW) under a single flavor.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Thanks,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">German<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Stephen Balukoff [mailto:sbalukoff@bluebox.net]
<br>
<b>Sent:</b> Tuesday, July 15, 2014 3:06 PM<br>
<b>To:</b> OpenStack Development Mailing List (not for usage questions)<br>
<b>Subject:</b> Re: [openstack-dev] [Neutron] Flavor framework proposal<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">Hi Salvatore and Eugene,<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Responses inline:<o:p></o:p></p>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Tue, Jul 15, 2014 at 12:59 PM, Salvatore Orlando <<a href="mailto:sorlando@nicira.com" target="_blank">sorlando@nicira.com</a>> wrote:<o:p></o:p></p>
<div>
<p class="MsoNormal">I think I've provided some examples in the review.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I was hoping for specific examples. The discussion I've seen so far has been vague enough that it's difficult to see what people mean. It's also possible you gave specific examples but these were buried in comments on previous revisions
(one of my biggest gripes with the way Gerrit works. :P ) Could you please give a specific example of what you mean, as well as how it simplifies the user experience?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal">However, the point is mostly to simplify usage from a user perspective - allowing consumers of the neutron API to use the same flavour object for multiple services.<o:p></o:p></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Actually, I would argue the having a single flavor valid for several different services complicates the user experience (and vastly complicates the operator experience). This is because:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">* Flavors are how Operators will provide different service levels, or different feature sets for similar kinds of service. Users interested in paying for those services are likely to be more confused if a single flavor lists features for
several different kinds of service.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* Billing becomes more incomprehensible when the same flavor is used for multiple kinds of service. Users and Operators should not expect to pay the same rate for a "Gold" FWaaS instance and "Gold" VPNaaS instance, so why complicate things
by putting them under the same flavor?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* Because of the above concerns, it's likely that Operators will only deploy service profiles in a flavor for a single type of service anyway. But from the user's perspective, it's not apparent when looking at the list of flavors, which
are valid for which kinds of service. What if a user tries to deploy a LBaaS service using a flavor that only has FWaaS service profiles associated with it? Presumably, the system must respond with an error indicating that no valid service profiles could be
found for that service in that flavor. But this isn't very helpful to the user and is likely to lead to increased support load for the Operator who will need to explain this.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* A single-service flavor is going to be inherently easier to understand than a multi-service flavor.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* Single-service flavors do not preclude the ability for vendors to have multi-purpose appliances serve multiple roles in an OpenStack cloud.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal">There are other considerations which could be made, but since they're dependent on features which do not yet exist (NFV, service insertion, chaining and steering) I think there is no point in arguing over it.<o:p></o:p></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Agreed. Though, I don't think single-service flavors paint us into a corner here at all. Again, things get complicated enough when it comes to service insertion, chaining, steering, etc. that what we'll really need at that point is actual
orchestration. Flavors alone will not solve these problems, and orchestration can work with many single-service flavors to provide the illusion of multi-service flavors.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal">In conclusion I think the idea makes sense, and is a minor twist in the current design which should not either make the feature too complex neither prevent any other use case for which the flavours are being conceived. For the very same
reason however, it is worth noting that this is surely not an aspect which will cause me or somebody else to put a veto on this work item.<o:p></o:p></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I don't think this is a minor twist in the current design, actually:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* We'll have to deal with cases like the above where no valid service profiles can be found for a given kind of flavor (which we can avoid entirely if a flavor can have service profiles valid for only one kind of service).<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* When and if tags/capabilities/extensions get introduced, we would need to provide an additional capabilities list on the service profiles in order to be able to select which service profiles provide the capabilities requested.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* The above point makes things much more complicated when it comes to scheduling algorithms for choosing which service profile to use when multiple can meet the need for a given service. What does 'weight' mean if all but two low-weight
service profiles get eliminated as not suitable?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal">Another aspect to consider is how the flavours will work when the advanced service type they refer to is not consumable through the neutron API, which would be the case with an independent load balancing API endpoint. But this is probably
another story.<o:p></o:p></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">As far as I'm aware, flavors will only ever apply to advanced services consumable through the Neutron API. If this weren't the case, what's the point of having a flavor describing the service at all? If you're talking about Octavia here--
well, our plan is to have Octavia essentially be an other load balancer vendor, interfaced through a driver in the Neutron LBaaS extension. (This is also why so many developers interested in seeing Octavia come to light are spending all their time right now
improving Neutron LBaaS-- we want it to be feature-rich enough in Juno for us to be able to actually do interesting things with Octavia without having to resort to building our own independent API endpoint if at all possible.) If Octavia ever splits off and
has its own API endpoint, it would need to implement something like the Neutron flavor framework itself-- and in this case, what we decide to do there should not affect the Neutron flavor framework at all (or visa versa).<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">If you want to provide the illusion of two different top-level services / API endpoints having the same "flavor," then I would say, "that's what orchestration is for."<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">On Tue, Jul 15, 2014 at 2:07 PM, Eugene Nikanorov <<a href="mailto:enikanorov@mirantis.com" target="_blank">enikanorov@mirantis.com</a>> wrote:<o:p></o:p></p>
<div>
<p class="MsoNormal">Hi Stephen,<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">So, as was discussed, existing proposal has some aspects which better to be postponed, like extension list on the flavor (instead of tags). <o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Agreed-- I think we need to more fully flesh out how extension list / tags should work here before we implement it. But this doesn't prevent us from rolling forward with a "version 1" of flavors so that we can start to use some of the benefits
of having flavors (like the ability to use multiple service profiles with a single driver/provider, or multiple service profiles for a single kind of service).<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal">Particularly that idea has several drawbacks:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> - it makes public API inflexible<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> - turning features on/off is not what flavors should be doing, it's a task for policy framework and not flavors<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> - flavor-based rest call dispatching is quite complex solution giving no benefits for service plugins<o:p></o:p></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I'm confused as to what you mean by "that idea" here. Are you taking about the "extension list"? If this is the case, I agree that that aspect needs to be refined and should probably be postponed if possible.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal">While this is not explicitly written in proposal - that's what implied there.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">I think that one is a major blocker of the proposal right now, it deserves future discussion and not essential to the problem flavors are supposed to solve.<o:p></o:p></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Yes, I think there are many benefits we can get out of the flavor framework without having to have an extensions list / tags at this revision. But I'm curious: Did we ever define what we were actually trying to solve with flavors? Maybe
that's the reason the discussion on this has been all of the place: People are probably making assumptions about the problem we're trying to solve and we need to get on the same page about this.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal">Other than that, I personally don't have much disagreements on the proposal.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">The question about service type on the flavor is minor IMO. We can allow it to be NULL, which would mean multiservice flavor.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">However, multiservice flavors may put some minor requirements to driver API (that's mainly because of how flavor plugin interacts with service plugins)<o:p></o:p></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Yes, I think single-service flavors is almost certainly going to be a simpler thing to implement, too-- and if we want to get flavors in for Juno (which I know *we* really want to do), then I think reducing the complexity here is probably
a good idea, at least for the first revision.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"> Thanks,<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal">Stephen<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">-- <br>
Stephen Balukoff <br>
Blue Box Group, LLC <br>
(800)613-4305 x807 <o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</body>
</html>