<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
Hi Yali,
<div class=""><br class="">
</div>
<div class="">Would you mind writing up what you’re thinking and putting it into the Delegation google doc? (I also put this request in a response to Ruby’s email.) Maybe add a section called “Integration with Nova solver-scheduler”.</div>
<div class=""><br class="">
</div>
<div class="">I’d love to see an example worked through—that usually helps me understand the nuances. In what you write below I’m a bit confused by who calls into who, where the policies live, etc.</div>
<div class=""><br class="">
</div>
<div class="">Once we have something in the doc, I’d suggest we go through a couple rounds of comments/edits and then schedule a call with everyone interested to discuss.</div>
<div class=""><br class="">
</div>
<div class="">Tim</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
<div class="">
<blockquote type="cite" class="">
<div class="">On Feb 27, 2015, at 11:18 AM, Yathiraj Udupi (yudupi) <<a href="mailto:yudupi@cisco.com" class="">yudupi@cisco.com</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; font-size: 14px; font-family: Calibri, sans-serif;" class="">
<div class="">Hi, </div>
<div class=""><br class="">
</div>
<div class="">It will be good to simplify the PoC scenario. In terms of policies and other constraints related to VM Placement, I guess we agree that not all policies/constraints have to originate from the policy framework such as Congress. The existing
placement engine logic that is present in the default Nova scheduler or say the Nova solver scheduler will be adding its own set of constraints to the placement calculations. </div>
<div class=""><br class="">
</div>
<div class="">My idea would be make the Nova placement engine, (for e.g., solver scheduler) talk to Congress to get the Datalog rules / translated LP constraints, based on the defined policies pertaining to a particular tenant/user. This of course needs to
be worked out in terms of translation logic, constraint specifications, etc. Also, this workflow will be part of the scheduling/Placement workflow as part of the Nova boot instance API call (for the initial placement). </div>
<div class=""><br class="">
</div>
<div class="">As the next phase, for migrations scenario, Congress can periodically trigger a check, if any of the violations/warnings are triggered, (corresponding tables getting populated, as you show in your example), if so, then trigger migrations, which
will have to go through another round of placement decisions for figuring out the best destinations, without violating the policies and other existing constraints. </div>
<div class=""><br class="">
</div>
<div class="">Happy to discuss more and simplify a PoC scenario. </div>
<div class=""><br class="">
</div>
<div class="">Thanks,</div>
<div class="">Yathi. </div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<span id="OLK_SRC_BODY_SECTION" class="">
<div class="">
<div class="">On 2/27/15, 6:40 AM, "<a href="mailto:ruby.krishnaswamy@orange.com" class="">ruby.krishnaswamy@orange.com</a>" <<a href="mailto:ruby.krishnaswamy@orange.com" class="">ruby.krishnaswamy@orange.com</a>> wrote:</div>
</div>
<div class=""><br class="">
</div>
<blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="BORDER-LEFT: #b5c4df 5 solid; PADDING:0 0 0 5; MARGIN:0 0 0 5;" class="" type="cite">
<div 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" class="">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)" class="">
<style class=""><!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@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;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
{font-family:"Segoe UI";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:o365IconsIE8;}
@font-face
{font-family:o365IconsMouse;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
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;}
p
{mso-style-priority:99;
margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
pre
{mso-style-priority:99;
mso-style-link:"Préformaté HTML Car";
margin:0cm;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:"Courier New";}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
{mso-style-priority:99;
mso-style-link:"Texte de bulles Car";
margin:0cm;
margin-bottom:.0001pt;
font-size:8.0pt;
font-family:"Tahoma","sans-serif";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:36.0pt;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
p.ms-cui-menu, li.ms-cui-menu, div.ms-cui-menu
{mso-style-name:ms-cui-menu;
mso-style-priority:99;
margin:0cm;
margin-bottom:.0001pt;
background:white;
font-size:11.0pt;
font-family:"Segoe UI","sans-serif";
color:#333333;}
p.ms-cui-menusection-title, li.ms-cui-menusection-title, div.ms-cui-menusection-title
{mso-style-name:ms-cui-menusection-title;
mso-style-priority:99;
margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";
display:none;}
p.ms-cui-ctl, li.ms-cui-ctl, div.ms-cui-ctl
{mso-style-name:ms-cui-ctl;
mso-style-priority:99;
margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";
color:#333333;}
p.ms-cui-ctl-on, li.ms-cui-ctl-on, div.ms-cui-ctl-on
{mso-style-name:ms-cui-ctl-on;
mso-style-priority:99;
margin:0cm;
margin-bottom:.0001pt;
background:#DFEDFA;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
p.ms-cui-img-cont-float, li.ms-cui-img-cont-float, div.ms-cui-img-cont-float
{mso-style-name:ms-cui-img-cont-float;
mso-style-priority:99;
margin-top:1.5pt;
margin-right:0cm;
margin-bottom:0cm;
margin-left:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
p.ms-cui-smenu-inner, li.ms-cui-smenu-inner, div.ms-cui-smenu-inner
{mso-style-name:ms-cui-smenu-inner;
mso-style-priority:99;
margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
p.ms-owa-paste-option-icon, li.ms-owa-paste-option-icon, div.ms-owa-paste-option-icon
{mso-style-name:ms-owa-paste-option-icon;
mso-style-priority:99;
margin-top:1.5pt;
margin-right:3.0pt;
margin-bottom:0cm;
margin-left:3.0pt;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";
vertical-align:sub;}
p.ms-rtepasteflyout-option, li.ms-rtepasteflyout-option, div.ms-rtepasteflyout-option
{mso-style-name:ms-rtepasteflyout-option;
mso-style-priority:99;
margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
p.ms-cui-menusection, li.ms-cui-menusection, div.ms-cui-menusection
{mso-style-name:ms-cui-menusection;
mso-style-priority:99;
margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
p.wf, li.wf, div.wf
{mso-style-name:wf;
mso-style-priority:99;
margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
p.wf-family-owa, li.wf-family-owa, div.wf-family-owa
{mso-style-name:wf-family-owa;
mso-style-priority:99;
margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:o365IconsMouse;}
p.wf-owa-play-large, li.wf-owa-play-large, div.wf-owa-play-large
{mso-style-name:wf-owa-play-large;
mso-style-priority:99;
margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
p.wf-size-play-large, li.wf-size-play-large, div.wf-size-play-large
{mso-style-name:wf-size-play-large;
mso-style-priority:99;
margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
p.wf-family-owa1, li.wf-family-owa1, div.wf-family-owa1
{mso-style-name:wf-family-owa1;
mso-style-priority:99;
margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:o365IconsIE8;}
p.wf-owa-play-large1, li.wf-owa-play-large1, div.wf-owa-play-large1
{mso-style-name:wf-owa-play-large1;
mso-style-priority:99;
margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";
color:white;}
p.wf-owa-play-large2, li.wf-owa-play-large2, div.wf-owa-play-large2
{mso-style-name:wf-owa-play-large2;
mso-style-priority:99;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:12.0pt;
font-family:"Times New Roman","serif";
color:white;}
p.wf-size-play-large1, li.wf-size-play-large1, div.wf-size-play-large1
{mso-style-name:wf-size-play-large1;
mso-style-priority:99;
margin:0cm;
margin-bottom:.0001pt;
font-size:22.5pt;
font-family:"Times New Roman","serif";}
p.wf-size-play-large2, li.wf-size-play-large2, div.wf-size-play-large2
{mso-style-name:wf-size-play-large2;
mso-style-priority:99;
margin:0cm;
margin-bottom:.0001pt;
font-size:22.5pt;
font-family:"Times New Roman","serif";}
span.EmailStyle37
{mso-style-type:personal;
font-family:"Arial","sans-serif";
color:black;
font-weight:normal;
font-style:normal;}
span.PrformatHTMLCar
{mso-style-name:"Préformaté HTML Car";
mso-style-priority:99;
mso-style-link:"Préformaté HTML";
font-family:Consolas;}
span.TextedebullesCar
{mso-style-name:"Texte de bulles Car";
mso-style-priority:99;
mso-style-link:"Texte de bulles";
font-family:"Tahoma","sans-serif";}
span.EmailStyle42
{mso-style-type:personal-reply;
font-family:"Arial","sans-serif";
color:black;
font-weight:normal;
font-style:normal;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:562837415;
mso-list-type:hybrid;
mso-list-template-ids:-14367710 -105722318 67895299 67895301 67895297 67895299 67895301 67895297 67895299 67895301;}
@list l0:level1
{mso-level-start-at:3;
mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:53.4pt;
text-indent:-18.0pt;
mso-ansi-font-size:12.0pt;
font-family:Wingdings;
mso-fareast-font-family:Calibri;
mso-bidi-font-family:"Times New Roman";
color:windowtext;}
@list l0:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:89.4pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l0:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:125.4pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l0:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:161.4pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l0:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:197.4pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l0:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:233.4pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l0:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:269.4pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l0:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:305.4pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l0:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:341.4pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l1
{mso-list-id:920062328;
mso-list-type:hybrid;
mso-list-template-ids:-1878756118 -255961220 67895299 67895301 67895297 67895299 67895301 67895297 67895299 67895301;}
@list l1:level1
{mso-level-start-at:2;
mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:53.4pt;
text-indent:-18.0pt;
font-family:Wingdings;
mso-fareast-font-family:Calibri;
mso-bidi-font-family:"Times New Roman";}
@list l1:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:89.4pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l1:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:125.4pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l1:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:161.4pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l1:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:197.4pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l1:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:233.4pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l1:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:269.4pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l1:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:305.4pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l1:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:341.4pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l2
{mso-list-id:1003049695;
mso-list-type:hybrid;
mso-list-template-ids:13284550 8583636 67895299 67895301 67895297 67895299 67895301 67895297 67895299 67895301;}
@list l2:level1
{mso-level-start-at:15;
mso-level-number-format:bullet;
mso-level-text:-;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Calibri","sans-serif";
mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";}
@list l2:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l2:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l2:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l2:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l2:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l2:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l2:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l2:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l3
{mso-list-id:1317566395;
mso-list-type:hybrid;
mso-list-template-ids:278404720 67895313 67895321 67895323 67895311 67895321 67895323 67895311 67895321 67895323;}
@list l3:level1
{mso-level-text:"%1\)";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:18.0pt;
text-indent:-18.0pt;}
@list l3:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:54.0pt;
text-indent:-18.0pt;}
@list l3:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
margin-left:90.0pt;
text-indent:-9.0pt;}
@list l3:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:126.0pt;
text-indent:-18.0pt;}
@list l3:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:162.0pt;
text-indent:-18.0pt;}
@list l3:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
margin-left:198.0pt;
text-indent:-9.0pt;}
@list l3:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:234.0pt;
text-indent:-18.0pt;}
@list l3:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:270.0pt;
text-indent:-18.0pt;}
@list l3:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
margin-left:306.0pt;
text-indent:-9.0pt;}
@list l4
{mso-list-id:1350175818;
mso-list-type:hybrid;
mso-list-template-ids:-21618932 -2000632464 67895299 67895301 67895297 67895299 67895301 67895297 67895299 67895301;}
@list l4:level1
{mso-level-start-at:15;
mso-level-number-format:bullet;
mso-level-text:-;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Arial","sans-serif";
mso-fareast-font-family:Calibri;}
@list l4:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l4:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l4:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l4:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l4:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l4:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l4:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l4:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l5
{mso-list-id:1609653194;
mso-list-type:hybrid;
mso-list-template-ids:-1359176026 -1085749712 67895299 67895301 67895297 67895299 67895301 67895297 67895299 67895301;}
@list l5:level1
{mso-level-start-at:15;
mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;
mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";}
@list l5:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l5:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l5:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l5:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l5:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l5:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l5:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l5:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l6
{mso-list-id:2057510848;
mso-list-type:hybrid;
mso-list-template-ids:-1279853874 1263277570 67895299 67895301 67895297 67895299 67895301 67895297 67895299 67895301;}
@list l6:level1
{mso-level-start-at:15;
mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:21.0pt;
text-indent:-18.0pt;
font-family:Wingdings;
mso-fareast-font-family:Calibri;
mso-bidi-font-family:"Times New Roman";}
@list l6:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:57.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l6:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:93.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l6:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:129.0pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l6:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:165.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l6:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:201.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l6:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:237.0pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l6:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:273.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l6:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:309.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
--></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]-->
<div lang="FR" link="blue" vlink="purple" class="">
<div class="WordSection1">
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">My first suggestion: why don’t we set up call together with Ramki, Yathi, Debo, as soon as possible ?<o:p class=""></o:p></span></div>
<p class="MsoListParagraph" style="text-indent:-18.0pt;mso-list:l2 level1 lfo10">
<!--[if !supportLists]--><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""><span style="mso-list:Ignore" class="">-<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">How to go forward concretely with the 8 steps for the PoC (details within each step),<o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:72.0pt;text-indent:-18.0pt;mso-list:l2 level2 lfo10">
<!--[if !supportLists]--><span lang="EN-US" style="font-size: 10.5pt; font-family: 'Courier New';" class=""><span style="mso-list:Ignore" class="">o<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">Including nova integration points<o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-18.0pt;mso-list:l2 level1 lfo10">
<!--[if !supportLists]--><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""><span style="mso-list:Ignore" class="">-<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">Identify “friction points” in the details above to resolve for beyond PoC<o:p class=""></o:p></span></p>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""><o:p class=""> </o:p></span></div>
</div>
</div>
</div>
</blockquote>
</span><span id="OLK_SRC_BODY_SECTION" class="">
<blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="BORDER-LEFT: #b5c4df 5 solid; PADDING:0 0 0 5; MARGIN:0 0 0 5;" class="" type="cite">
<div 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" class="">
<div lang="FR" link="blue" vlink="purple" class="">
<div class="WordSection1">
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""><o:p class=""> </o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">Tim: Where does the rest of the program originate? I’m not saying the entire LP program is generated from the Datalog constraints; some of it is
generated by the solver independent of the Datalog. In the text, I gave the example of defining hMemUse[j].<o:p class=""></o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">Tim: The VM-placement engine does 2 things: (I) translates Datalog to LP and (ii) generates additional LP constraints. (Both work items could leverage
any constraints that are builtin to a specific solver, e.g. the solver-scheduler. The point is that there are 2 distinct, conceptual origins of the LP constraints: those that represent the Datalog and those that codify the domain.<o:p class=""></o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">Tim: Each domain-specific solver can do whatever it wants, so it’s not clear to me what the value of choosing a modeling language actually is—unless
we want to build a library of common functionality that makes the construction of domain-specific engine (wrappers) easier. I’d prefer to spend our energy understanding whether the proposed workflow/interface works for a couple of different domain-specific
policy engines OR to flush this one out and build it.<o:p class=""></o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""><o:p class=""> </o:p></span></div>
<div class="MsoListParagraph"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""><o:p class=""> </o:p></span></div>
<p class="MsoListParagraph" style="margin-left:21.0pt;text-indent:-18.0pt;mso-list:l6 level1 lfo8">
<!--[if !supportLists]--><span lang="EN-US" style="font-size: 10pt; font-family: Wingdings;" class=""><span style="mso-list:Ignore" class="">ð<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">The value of choosing a modeling language is related to how “best to automate translations” from Datalog constraints (to LP)?<o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:57.0pt;text-indent:-18.0pt;mso-list:l6 level2 lfo8">
<!--[if !supportLists]--><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New';" class=""><span style="mso-list:Ignore" class="">o<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">We can have look for one unique way of generation, and not, “some of it is generated by the VM-placement engine
<s class="">solver</s> independent of the Datalog”.<o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:57.0pt;text-indent:-18.0pt;mso-list:l6 level2 lfo8">
<!--[if !supportLists]--><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New';" class=""><span style="mso-list:Ignore" class="">o<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">Datalog imposes most constraints (== policies)<o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:57.0pt;text-indent:-18.0pt;mso-list:l6 level2 lfo8">
<!--[if !supportLists]--><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New';" class=""><span style="mso-list:Ignore" class="">o<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">Two constraints are not “policies”<o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:93.0pt;text-indent:-18.0pt;mso-list:l6 level3 lfo8">
<!--[if !supportLists]--><span lang="EN-US" style="font-size: 10pt; font-family: Wingdings;" class=""><span style="mso-list:Ignore" class="">§<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">A VM is allocated to only one host.<o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:93.0pt;text-indent:-18.0pt;mso-list:l6 level3 lfo8">
<!--[if !supportLists]--><span lang="EN-US" style="font-size: 10pt; font-family: Wingdings;" class=""><span style="mso-list:Ignore" class="">§<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">Host capacity is not exceeded.<o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:129.0pt;text-indent:-18.0pt;mso-list:l6 level4 lfo8">
<!--[if !supportLists]--><span lang="EN-US" style="font-size: 10pt;" class=""><span style="mso-list:Ignore" class="">·<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">Over subscription
<o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:21.0pt;text-indent:-18.0pt;mso-list:l6 level1 lfo8">
<!--[if !supportLists]--><span lang="EN-US" style="font-size: 10pt; font-family: Wingdings;" class=""><span style="mso-list:Ignore" class="">ð<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">Otherwise what was your suggestion? As follows?<o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:57.0pt;text-indent:-18.0pt;mso-list:l6 level2 lfo8">
<!--[if !supportLists]--><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New';" class=""><span style="mso-list:Ignore" class="">o<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">Use framework (extend) the nova-solver-scheduler currently implements (itself using PuLP). This framework specifies an API to write constraints
and cost functions (in a domain specific way). Modifying this framework:<o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:93.0pt;text-indent:-18.0pt;mso-list:l6 level3 lfo8">
<!--[if !supportLists]--><span lang="EN-US" style="font-size: 10pt; font-family: Wingdings;" class=""><span style="mso-list:Ignore" class="">§<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">To read data in from DSE<o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:93.0pt;text-indent:-18.0pt;mso-list:l6 level3 lfo8">
<!--[if !supportLists]--><span lang="EN-US" style="font-size: 10pt; font-family: Wingdings;" class=""><span style="mso-list:Ignore" class="">§<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">To obtain the cost function from Datalog (e.g. minimize Y[host1]…)<o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:93.0pt;text-indent:-18.0pt;mso-list:l6 level3 lfo8">
<!--[if !supportLists]--><span lang="EN-US" style="font-size: 10pt; font-family: Wingdings;" class=""><span style="mso-list:Ignore" class="">§<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">To obtain Datalog constraints (e.g. <75% memory allocation constraint for hosts of special zone)<o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:57.0pt;text-indent:-18.0pt;mso-list:l6 level2 lfo8">
<!--[if !supportLists]--><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New';" class=""><span style="mso-list:Ignore" class="">o<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">We need to specify the “format” for this? It will likely to be a string of the form (?)<o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:93.0pt;text-indent:-18.0pt;mso-list:l6 level3 lfo8">
<!--[if !supportLists]--><span lang="EN-US" style="font-size: 10pt; font-family: Wingdings;" class=""><span style="mso-list:Ignore" class="">§<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">“hMemUse[0] – 0.75*hMemCap[0] < 100*y[0], “ Memory allocation constraint on Host 0“,
<o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:21.0pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""><o:p class=""> </o:p></span></p>
<p class="MsoListParagraph" style="margin-left:21.0pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""><o:p class=""> </o:p></span></p>
<p class="MsoListParagraph" style="margin-left:35.4pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""><o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:35.4pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""><o:p class=""> </o:p></span></p>
<p class="MsoListParagraph" style="margin-left:35.4pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""><o:p class=""> </o:p></span></p>
<p class="MsoListParagraph" style="margin-left:21.0pt;text-indent:-18.0pt;mso-list:l6 level1 lfo8">
<!--[if !supportLists]--><span lang="EN-US" style="font-size: 10pt; font-family: Wingdings;" class=""><span style="mso-list:Ignore" class="">ð<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">From your doc (page 5, section 4)<o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:21.0pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""><o:p class=""> </o:p></span></p>
<div class="MsoNormal"><span lang="EN-US" style="font-family: 'Courier New';" class="">warning(id) :-</span><span lang="EN-US" class=""><o:p class=""></o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-family: 'Courier New';" class=""> nova:host(id, name, service, zone, memory_capacity),</span><span lang="EN-US" class=""><o:p class=""></o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-family: 'Courier New';" class=""> legacy:special_zone(zone),</span><span lang="EN-US" class=""><o:p class=""></o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-family: 'Courier New';" class=""> ceilometer:statistics(id, "memory", avg, count, duration,
</span><span lang="EN-US" class=""><o:p class=""></o:p></span></div>
<p class="MsoNormal" style="margin-left:36.0pt;text-indent:36.0pt"><span lang="EN-US" style="font-family: 'Courier New';" class="">durstart, durend, max, min, period, perstart, perend,
</span><span lang="EN-US" class=""><o:p class=""></o:p></span></p>
<p class="MsoNormal" style="margin-left:72.0pt"><span lang="EN-US" style="font-family: 'Courier New';" class="">sum, unit),</span><span lang="EN-US" class=""><o:p class=""></o:p></span></p>
<div class="MsoNormal"><span lang="EN-US" style="font-family: 'Courier New';" class=""> avg > 0.75 * memory_capacity</span><span lang="EN-US" class=""><o:p class=""></o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" class=""><o:p class=""> </o:p></span></div>
<p class="MsoListParagraph" style="margin-left:21.0pt"><span lang="EN-US" class="">Notice that this is a soft constraint, identified by the use of
</span><span lang="EN-US" style="font-family: 'Courier New';" class="">warning</span><span lang="EN-US" class=""> instead of
</span><span lang="EN-US" style="font-family: 'Courier New';" class="">error</span><span lang="EN-US" class="">. When compiling to LP, the VM-placement engine will attempt to minimize the number of rows in the
</span><span lang="EN-US" style="font-family: 'Courier New';" class="">warning</span><span lang="EN-US" class=""> table. That is, for each possible row
</span><span lang="EN-US" style="font-family: 'Courier New';" class="">r</span><span lang="EN-US" class=""> it will create a variable
</span><span lang="EN-US" style="font-family: 'Courier New';" class="">Y[r]</span><span lang="EN-US" class=""> and assign it True if the row is a warning and False otherwise</span><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""><o:p class=""></o:p></span></p>
<p class="MsoNormal" style="margin-left:21.0pt;text-indent:14.4pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">
<o:p class=""></o:p></span></p>
<p class="MsoNormal" style="margin-left:21.0pt;text-indent:14.4pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""><o:p class=""> </o:p></span></p>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">The policy (warning) : when will it be evaluated? This should be done periodically? Then if the table has even one True entry, then the action should
be to generate the LP, solve, activate the migrations etc.<o:p class=""></o:p></span></div>
<p class="MsoListParagraph" style="margin-left:21.0pt;text-indent:-18.0pt;mso-list:l6 level1 lfo8">
<!--[if !supportLists]--><span lang="EN-US" style="font-size: 10pt; font-family: Wingdings;" class=""><span style="mso-list:Ignore" class="">ð<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">The “LP” cannot be generated when the VM-placement engine receives the policy snippet.<o:p class=""></o:p></span></p>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""><o:p class=""> </o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""><o:p class=""> </o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">Ruby<o:p class=""></o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""><o:p class=""> </o:p></span></div>
<div class="">
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm" class="">
<div class="MsoNormal"><b class=""><span lang="EN-US" style="font-size: 10pt; font-family: Tahoma, sans-serif;" class="">De :</span></b><span lang="EN-US" style="font-size: 10pt; font-family: Tahoma, sans-serif;" class=""> Tim Hinrichs [<a href="mailto:thinrichs@vmware.com" class="">mailto:thinrichs@vmware.com</a>]
<br class="">
<b class="">Envoyé :</b> jeudi 26 février 2015 19:17<br class="">
<b class="">À :</b> OpenStack Development Mailing List (not for usage questions)<br class="">
<b class="">Objet :</b> Re: [openstack-dev] [Congress][Delegation] Initial workflow design<o:p class=""></o:p></span></div>
</div>
</div>
<div class="MsoNormal"><span lang="EN-US" class=""><o:p class=""> </o:p></span></div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">Inline.<o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div>
</div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm" class="">
<div class="MsoNormal"><b class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">From:
</span></b><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">"<a href="mailto:ruby.krishnaswamy@orange.com" class="">ruby.krishnaswamy@orange.com</a>" <<a href="mailto:ruby.krishnaswamy@orange.com" class="">ruby.krishnaswamy@orange.com</a>><br class="">
<b class="">Reply-To: </b>"OpenStack Development Mailing List (not for usage questions)" <<a href="mailto:openstack-dev@lists.openstack.org" class="">openstack-dev@lists.openstack.org</a>><br class="">
<b class="">Date: </b>Wednesday, February 25, 2015 at 8:53 AM<br class="">
<b class="">To: </b>"OpenStack Development Mailing List (not for usage questions)" <<a href="mailto:openstack-dev@lists.openstack.org" class="">openstack-dev@lists.openstack.org</a>><br class="">
<b class="">Subject: </b>Re: [openstack-dev] [Congress][Delegation] Initial workflow design<o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0cm 0cm 0cm 4.0pt;margin-left:3.75pt;margin-right:0cm" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" class="" type="cite">
<div class="">
<div class="">
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">Hi Tim, All,</span><span style="" class=""><o:p class=""></o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></div>
<p class="MsoListParagraph" style="margin-left:18.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo2">
<!--[if !supportLists]--><span style="" class=""><span style="mso-list:Ignore" class="">1)<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">Step 3: The VM-placement engine is also a “datalog engine” . Right?</span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:18.0pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">When policies are delegated:
</span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:18.0pt;text-indent:17.4pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">when policies are inserted? When the VM-placement engine has already registered itself all policies
are given to it?</span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:18.0pt;text-indent:17.4pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></p>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">
</span><span style="" class=""><o:p class=""></o:p></span></div>
<p class="MsoListParagraph" style="margin-left:18.0pt;text-indent:17.4pt"><span lang="EN-US" style="" class="">“In our example, this would mean the domain-specific policy engine executes the following API call over the DSE”</span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:53.4pt;text-indent:-18.0pt;mso-list:l0 level1 lfo4">
<!--[if !supportLists]--><span style="font-family:Wingdings" class=""><span style="mso-list:Ignore" class="">ð<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="" class="">“domain-agnostic” ….</span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:18.0pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></p>
</div>
</div>
</blockquote>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">Done.<o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0cm 0cm 0cm 4.0pt;margin-left:3.75pt;margin-right:0cm" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" class="" type="cite">
<div class="">
<div class="">
<p class="MsoListParagraph" style="margin-left:18.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo2">
<!--[if !supportLists]--><span style="" class=""><span style="mso-list:Ignore" class="">2)<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">Step 4:</span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:18.0pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:18.0pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">Ok</span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:18.0pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">But finally: if Congress will likely “delegate”
</span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:18.0pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></p>
</div>
</div>
</blockquote>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">Not sure what you’re suggesting here.<o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0cm 0cm 0cm 4.0pt;margin-left:3.75pt;margin-right:0cm" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" class="" type="cite">
<div class="">
<div class="">
<p class="MsoListParagraph" style="margin-left:18.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo2">
<!--[if !supportLists]--><span style="" class=""><span style="mso-list:Ignore" class="">3)<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">Step 5: Compilation of subpolicy to LP in VM-placement engine</span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:18.0pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:35.4pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">For the PoC, it is likely that the LP program ( in PuLP or some other ML) is *<b class="">not</b>* completely generated
by compiler/translator.</span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:53.4pt;text-indent:-18.0pt;mso-list:l1 level1 lfo6">
<!--[if !supportLists]--><span style="font-family: Wingdings;" class=""><span style="mso-list:Ignore" class="">ð<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">Right?</span><span style="" class=""><o:p class=""></o:p></span></p>
</div>
</div>
</blockquote>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">Where does the rest of the program originate? I’m not saying the entire LP program is generated from the Datalog constraints; some of it is generated by the
solver independent of the Datalog. In the text, I gave the example of defining hMemUse[j].<o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0cm 0cm 0cm 4.0pt;margin-left:3.75pt;margin-right:0cm" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" class="" type="cite">
<div class="">
<div class="">
<p class="MsoNormal" style="margin-left:18.0pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoNormal" style="margin-left:18.0pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> You also indicate that some category of constraints (“</span><span lang="EN-US" style="" class="">the LP solver doesn’t
know what the relationship between assign[i][j], hMemUse[j], and vMemUse[i] actually is, so the VM-placement engine must also include constraints”) .</span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoNormal" style="margin-left:18.0pt"><span lang="EN-US" style="" class=""> </span><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">These constraints must be “explicitly” written?</span><span lang="EN-US" style="" class="">
</span><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">(e.g. max_ram_allocation etc that are constraints used in the solver-scheduler’s package).</span><span style="" class=""><o:p class=""></o:p></span></p>
</div>
</div>
</blockquote>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">The VM-placement engine does 2 things: (I) translates Datalog to LP and (ii) generates additional LP constraints. (Both work items could leverage any constraints
that are builtin to a specific solver, e.g. the solver-scheduler. The point is that there are 2 distinct, conceptual origins of the LP constraints: those that represent the Datalog and those that codify the domain.<o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0cm 0cm 0cm 4.0pt;margin-left:3.75pt;margin-right:0cm" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" class="" type="cite">
<div class="">
<div class="">
<p class="MsoNormal" style="margin-left:18.0pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoNormal" style="margin-left:18.0pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></p>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> So what “parts” will be generated:
</span><span style="" class=""><o:p class=""></o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> Cost function :
</span><span style="" class=""><o:p class=""></o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> Constraint from Policy : memory usage < 75%
</span><span style="" class=""><o:p class=""></o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">
</span><span style="" class=""><o:p class=""></o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> Then the rest should be “filled” up?</span><span style="" class=""><o:p class=""></o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> Could we convene on an intermediary “modeling language”?</span><span style="" class=""><o:p class=""></o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> @Yathi: do you think we could use some thing like AMPL ? Is this proprietary?</span><span style="" class=""><o:p class=""></o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></div>
</div>
</div>
</blockquote>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0cm 0cm 0cm 4.0pt;margin-left:3.75pt;margin-right:0cm" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" class="" type="cite">
<div class="">
<div class="">
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> A detail: the example “</span><span lang="EN-US" style="font-family: 'Courier New';" class="">Y[host1] = hMemUse[host1] > 0.75 * hMemCap[host1]</span><span lang="EN-US" style="" class="">”</span><span style="" class=""><o:p class=""></o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="" class=""> </span><span style="" class=""><o:p class=""></o:p></span></div>
<p class="MsoListParagraph" style="margin-left:53.4pt;text-indent:-18.0pt;mso-list:l1 level1 lfo6">
<!--[if !supportLists]--><span style="font-family: Wingdings;" class=""><span style="mso-list:Ignore" class="">ð<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">To be changed to a linear form (mi – Mi > 0 then Yi = 1 else Yi = 0) so something like (mi – Mi) < 100 yi</span><span style="" class=""><o:p class=""></o:p></span></p>
</div>
</div>
</blockquote>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div>
</div>
<div class="">
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">Each domain-specific solver can do whatever it wants, so it’s not clear to me what the value of choosing a modeling language actually is—unless we want to build
a library of common functionality that makes the construction of domain-specific engine (wrappers) easier. I’d prefer to spend our energy understanding whether the proposed workflow/interface works for a couple of different domain-specific policy engines
OR to flush this one out and build it.<o:p class=""></o:p></span></div>
</div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0cm 0cm 0cm 4.0pt;margin-left:3.75pt;margin-right:0cm" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" class="" type="cite">
<div class="">
<div class="">
<div class="MsoNormal"><span lang="EN-US" style="" class=""> </span><span style="" class=""><o:p class=""></o:p></span></div>
<p class="MsoListParagraph" style="margin-left:18.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo2">
<!--[if !supportLists]--><span style="" class=""><span style="mso-list:Ignore" class="">4)<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">Step 6: This is completely internal to the VM-placement engine (and we could say this is “transparent” to Congress)</span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:18.0pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:18.0pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">We should allow configuration of a solver (this itself could be a policy
</span><span lang="EN-US" style="font-size: 10pt; font-family: Wingdings;" class="">J</span><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> )</span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:18.0pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">How to invoke the solver API ? </span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:18.0pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:18.0pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">The domain-specific placement engine could send out to DSE (action_handler: data)?</span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:18.0pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></p>
</div>
</div>
</blockquote>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">I had always envisioned the solver being just a library of code—not an entity that sits on the DSE itself. <o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0cm 0cm 0cm 4.0pt;margin-left:3.75pt;margin-right:0cm" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" class="" type="cite">
<div class="">
<div class="">
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">3) Step 7 : Perform the migrations (according to the assignments computed in the step 6)</span><span style="" class=""><o:p class=""></o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> This part invokes OpenStack API (to perform migrations).</span><span style="" class=""><o:p class=""></o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> We may suppose that there are services implementing “action handlers”?</span><span style="" class=""><o:p class=""></o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> It can listen on the DSE and execute the action.</span><span style="" class=""><o:p class=""></o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></div>
</div>
</div>
</blockquote>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">That interface is supposed to exist by the Kilo release. I’ll check up on the progress.<o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0cm 0cm 0cm 4.0pt;margin-left:3.75pt;margin-right:0cm" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" class="" type="cite">
<div class="">
<div class="">
<p class="MsoListParagraph" style="margin-left:18.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo2">
<!--[if !supportLists]--><span style="" class=""><span style="mso-list:Ignore" class="">5)<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">Nova tables to use</span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">Policy
</span><span lang="EN-US" style="font-family: 'Courier New';" class="">warning(id) :-</span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-family: 'Courier New';" class=""> nova:host(id, name, service, zone, memory_capacity),</span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-family: 'Courier New';" class=""> legacy:special_zone(zone),</span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-family: 'Courier New';" class=""> ceilometer:statistics(id, "memory", avg, count, duration,</span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoNormal" style="margin-left:180.0pt"><span lang="EN-US" style="font-family: 'Courier New';" class=""> durstart, durend, max, min, period,</span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoNormal" style="margin-left:180.0pt;text-indent:36.0pt"><span lang="EN-US" style="font-family: 'Courier New';" class="">perstart, perend, sum, unit),</span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-family: 'Courier New';" class=""> avg > 0.75 * memory_capacity</span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:18.0pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:18.0pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">I believe that ceilometer gives usage of VMs and not hosts. The host table (ComputeNode table) should give current used
capacity. </span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:18.0pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></p>
</div>
</div>
</blockquote>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">Good to know. <o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0cm 0cm 0cm 4.0pt;margin-left:3.75pt;margin-right:0cm" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" class="" type="cite">
<div class="">
<div class="">
<p class="MsoListParagraph" style="margin-left:18.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo2">
<!--[if !supportLists]--><span style="" class=""><span style="mso-list:Ignore" class="">6)<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">One of the issues highlighted in OpenStack (scheduler) and also elsewhere (e.g. Omega scheduler by google) is :</span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:18.0pt"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">Reading “host utilization” state from the data bases and DB (nova:host table) updates and overhead of maintaining in-memory
state uptodate.</span><span style="" class=""><o:p class=""></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:53.4pt;text-indent:-18.0pt;mso-list:l1 level1 lfo6">
<!--[if !supportLists]--><span style="font-family: Wingdings;" class=""><span style="mso-list:Ignore" class="">ð<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">This is expensive and current nova-scheduler does face this issue (many blogs/discussions).</span><span style="" class=""><o:p class=""></o:p></span></p>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> While the first goal is a PoC, this will likely become a concern in terms of adoption.</span><span style="" class=""><o:p class=""></o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></div>
</div>
</div>
</blockquote>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">So you’re saying we won’t have fresh enough data to make policy decisions? If the data changes so frequently that we can’t get an accurate view, then I’m guessing
we shouldn’t be migrating based on that data anyway.<o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">Could you point me to some of these discussions?<o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0cm 0cm 0cm 4.0pt;margin-left:3.75pt;margin-right:0cm" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" class="" type="cite">
<div class="">
<div class="">
<p class="MsoListParagraph" style="margin-left:18.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo2">
<!--[if !supportLists]--><span style="" class=""><span style="mso-list:Ignore" class="">7)<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">While in this document you have changed the “example” policy, could we drill down the set of policies for the PoC (the server under utilization
?)</span><span style="" class=""><o:p class=""></o:p></span></p>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></div>
<p class="MsoListParagraph" style="margin-left:53.4pt;text-indent:-18.0pt;mso-list:l1 level1 lfo6">
<!--[if !supportLists]--><span style="font-family: Wingdings;" class=""><span style="mso-list:Ignore" class="">ð<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">As a reference
</span><span style="" class=""><o:p class=""></o:p></span></p>
</div>
</div>
</blockquote>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">Sure. The only reason I chose this policy was because it doesn’t have aggregation. I’m guessing we’ll want to avoid aggregation for the POC because we don’t
yet have it in Congress, and it complicates the problem of translating Datalog to LP substantially. <o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">Tim<o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0cm 0cm 0cm 4.0pt;margin-left:3.75pt;margin-right:0cm" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" class="" type="cite">
<div class="">
<div class="">
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class="">Ruby</span><span style="" class=""><o:p class=""></o:p></span></div>
<div class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: Arial, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></div>
<div class="">
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm" class="">
<div class="MsoNormal"><b class=""><span lang="EN-US" style="font-size: 10pt; font-family: Tahoma, sans-serif;" class="">De :</span></b><span lang="EN-US" style="font-size: 10pt; font-family: Tahoma, sans-serif;" class=""> Yathiraj Udupi (</span><span style="font-size: 10pt; font-family: Tahoma, sans-serif;" class="">yudupi)
[<a href="mailto:yudupi@cisco.com" class="">mailto:yudupi@cisco.com</a>] <br class="">
<b class="">Envoyé :</b> mardi 24 février 2015 20:01<br class="">
<b class="">À :</b> OpenStack Development Mailing List (not for usage questions); Tim Hinrichs<br class="">
<b class="">Cc :</b> Debo Dutta (dedutta)<br class="">
<b class="">Objet :</b> Re: [openstack-dev] [Congress][Delegation] Initial workflow design</span><span style="" class=""><o:p class=""></o:p></span></div>
</div>
</div>
<div class="MsoNormal"><span style="" class=""> <o:p class=""></o:p></span></div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">Hi Tim, </span><span style="" class=""><o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">Thanks for your updated doc on Delegation from Congress to a domain-specific policy engine, in this case, you are planning to build a LP-based VM-Placement engine
to be the domain specific policy engine. </span><span style="" class=""><o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">I agree your main goal is to first get the delegation interface sorted out. It will be good so that external services (like Solver-Scheduler) can also easily
integrate to the delegation model. </span><span style="" class=""><o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">From the Solver-Scheduler point of view, we would actually want to start working on a PoC effort to start integrating Congress and the Solver-Scheduler. </span><span style="" class=""><o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">We believe rather than pushing this effort to a long-term, it would add value to both the Solver Scheduler effort, as well as the Congress effort to try some
early integration now, as most of the LP solver work for VM placements is ready available now in Solver scheduler, and we need to spend some time thinking about translating your domain-agnostic policy to constraints that the Solver scheduler can use. </span><span style="" class=""><o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">I would definitely need your help from the Congress interfaces and I hope you will share your early interfaces for the delegation, so I can start the effort from
the Solver scheduler side for integration. </span><span style="" class=""><o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">I will reach out to you to get some initial help for integration w.r.t. Congress, and also keep you posted about the progress from our side. </span><span style="" class=""><o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">Thanks,</span><span style="" class=""><o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">Yathi. </span><span style="" class=""><o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></div>
</div>
<div class="">
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">On 2/23/15, 11:28 AM, "Tim Hinrichs" <<a href="mailto:thinrichs@vmware.com" class="">thinrichs@vmware.com</a>> wrote:</span><span style="" class=""><o:p class=""></o:p></span></div>
</div>
</div>
<div class="">
<div class="MsoNormal"><span style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></div>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0cm 0cm 0cm 4.0pt;margin-left:3.75pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" class="" type="cite">
<div class="">
<div class="">
<div class="">
<p style="background:white" class=""><span style="font-family: Calibri, sans-serif;" class="">Hi all,</span><span style="" class=""><o:p class=""></o:p></span></p>
<p style="background:white" class=""><span style="font-family: Calibri, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></p>
<p style="background:white" class=""><span style="font-family: Calibri, sans-serif;" class="">I made a heavy editing pass of the Delegation google doc, incorporating many of your comments and my latest investigations into VM-placement. I left the old stuff
in place at the end of the doc and put the new stuff at the top. </span><span style="" class=""><o:p class=""></o:p></span></p>
<p style="background:white" class=""><span style="font-family: Calibri, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></p>
<p style="background:white" class=""><span style="font-family: Calibri, sans-serif;" class="">My goal was to propose an end-to-end workflow for a PoC that we could put together quickly to help us explore the delegation interface. We should iterate on this
design until we have something that we think is workable. And by all means pipe up if you think we need a totally different starting point to begin the iteration. </span><span style="" class=""><o:p class=""></o:p></span></p>
<p style="background:white" class=""><span style="font-family: Calibri, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></p>
<p style="background:white" class=""><span style="font-family: Calibri, sans-serif;" class="">(BTW I'm thinking of the integration with solver-scheduler as a long-term solution to VM-placement, once we get the delegation interface sorted out.)</span><span style="" class=""><o:p class=""></o:p></span></p>
<p style="background:white" class=""><span style="font-family: Calibri, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></p>
<p style="background:white" class=""><span style="font-family: Calibri, sans-serif;" class=""><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__docs.google.com_document_d_1ksDilJYXV-2D5AXWON8PLMedDKr9NpS8VbT0jIy-5FMIEtI_edit&d=AwMFAw&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=B6BWd4kFfgOzAREgThxkmTZKy7dDXE2-eBAmL0PBK7s&m=kF8jMOpogOhk8MJWvNMKJC3PiNImxWpZeD2o642YM2s&s=8PV5EW-kz8Q9aP9riFbIjJXJNZXchx2NsL-Z3Y7E5Vg&e=" class="">https://docs.google.com/document/d/1ksDilJYXV-5AXWON8PLMedDKr9NpS8VbT0jIy_MIEtI/edit#</a></span><span style="" class=""><o:p class=""></o:p></span></p>
<p style="background:white" class=""><span style="font-family: Calibri, sans-serif;" class=""> </span><span style="" class=""><o:p class=""></o:p></span></p>
<p style="background:white" class=""><span style="font-family: Calibri, sans-serif;" class="">Tim</span><span style="" class=""><o:p class=""></o:p></span></p>
</div>
</div>
</div>
</blockquote>
<pre class=""><span style="" class="">_________________________________________________________________________________________________________________________<o:p class=""></o:p></span></pre>
<pre class=""><span style="" class=""><o:p class=""> </o:p></span></pre>
<pre class=""><span style="" class="">Ce message et ses pieces jointes peuvent contenir des informations confidentielles ou privilegiees et ne doivent donc<o:p class=""></o:p></span></pre>
<pre class=""><span style="" class="">pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce message par erreur, veuillez le signaler<o:p class=""></o:p></span></pre>
<pre class=""><span style="" class="">a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration,<o:p class=""></o:p></span></pre>
<pre class=""><span style="" class="">Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.<o:p class=""></o:p></span></pre>
<pre class=""><span style="" class=""><o:p class=""> </o:p></span></pre>
<pre class=""><span style="" class="">This message and its attachments may contain confidential or privileged information that may be protected by law;<o:p class=""></o:p></span></pre>
<pre class=""><span style="" class="">they should not be distributed, used or copied without authorisation.<o:p class=""></o:p></span></pre>
<pre class=""><span style="" class="">If you have received this email in error, please notify the sender and delete this message and its attachments.<o:p class=""></o:p></span></pre>
<pre class=""><span style="" class="">As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.<o:p class=""></o:p></span></pre>
<pre class=""><span style="" class="">Thank you.<o:p class=""></o:p></span></pre>
</div>
</div>
</blockquote>
</div>
<pre class="">_________________________________________________________________________________________________________________________
Ce message et ses pieces jointes peuvent contenir des informations confidentielles ou privilegiees et ne doivent donc
pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce message par erreur, veuillez le signaler
a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration,
Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.
This message and its attachments may contain confidential or privileged information that may be protected by law;
they should not be distributed, used or copied without authorisation.
If you have received this email in error, please notify the sender and delete this message and its attachments.
As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.
Thank you.
</pre>
</div>
</div>
</blockquote>
</span></div>
__________________________________________________________________________<br class="">
OpenStack Development Mailing List (not for usage questions)<br class="">
Unsubscribe: <a href="mailto:OpenStack-dev-request@lists.openstack.org" class="">
OpenStack-dev-request@lists.openstack.org</a>?subject:unsubscribe<br class="">
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" class="">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br class="">
</div>
</blockquote>
</div>
<br class="">
</div>
</body>
</html>