<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=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (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;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
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="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">HI Folks,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The original (and fairly simple) driver behind whole-host-allocation (<a href="https://wiki.openstack.org/wiki/WholeHostAllocation">https://wiki.openstack.org/wiki/WholeHostAllocation</a>) was to enable users to get guaranteed isolation
 for their instances.  This then grew somewhat along the lines of “If they have in effect a dedicated hosts then wouldn’t it be great if the user could also control some aspect of the scheduling, access for other users, etc”.    The Proof of Concept I presented
 at the Icehouse Design summit provided this by providing API extensions to in effect manipulate an aggregate and scheduler filters used with that aggregate.  
<a href="https://etherpad.openstack.org/p/NovaIcehousePclouds">https://etherpad.openstack.org/p/NovaIcehousePclouds</a><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Based on the discussion and feedback from the design summit session it became clear that this approach was kind of headed into a difficult middle ground between a very simple approach for users who just wanted the isolation for their instances,
 and a fully delegated admin model which would allow any admin operation to be scoped to a specific set of servers/flavours/instances<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’ve spent some time since mulling over what it would take to add some kind of “scoped admin” capability into Nova, and my current thinking is that it would be a pretty big change because there isn’t really a concept of “ownership” once
 you get beyond instances and a few related objects.   Also with TripleO its becoming easier to set up new copies of a Nova stack to control a specific set of hosts, and that in effect provides the same degree of scoped admin in a much more direct way.  The
 sort of model I’m thinking of here is a system where services such as Glance/Cinder and maybe Neutron are shared by a number of Nova services.    There are still a couple of things needed to make this work, such as limiting tenant access to regions on Keystone,
 but that feels like a better layer to try and address this kind of issue.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">In terms of the original driver of just guaranteeing instance isolation then we could (as suggested by Alex Gilkson and others) implement this just as a new instance property with an appropriate scheduler filter (i.e. for this type of instance
 only allow scheduling to hosts that are either empty or running only instances for the same tenant).    The attribute would then be passed through in notification messages, etc for the billing system to process.      <o:p></o:p></p>
<p class="MsoNormal">This would be pretty much the peer of AWS dedicated instances.  
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The host_state object already has the required num_instances_by_project data required by the scheduler filter, and the stats field in the compute manager resource tracker also has this information – so both the new filter and additional
 limits check on the compute manager look like they would be fairly straight forward to implement.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">It’s kind of beyond the scope of Nova, but the resulting billing model in this case is more complex –as the user isn’t telling you explicitly how many dedicated hosts they are going to consume.  AWS just charge a flat rate per region for
 having any number of dedicated instances – if you wanted to charge per dedicated host then it’d difficult to warn the user before they create a new instance that they are about to branch onto a new host.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Would welcome thoughts on the above,<o:p></o:p></p>
<p class="MsoNormal">Phil<o:p></o:p></p>
</div>
</body>
</html>