<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; color: rgb(0, 0, 0); font-size: 14px; font-family: Calibri, sans-serif;">
<div>
<div>Hi Tim, </div>
<div><br>
</div>
<div>Glad to collaborate and work towards nailing down the details.  Yeah in terms of policy enforcement from Congress, it makes sense to delegate to  domain-specific policy engines.  It will be good to go through this PoC and to start thinking about the integration
 points of Congress with Solver scheduler, with a good set of APIs supported from both sides. </div>
<div><br>
</div>
<div>Some more comments inline to your questions: </div>
</div>
<div><br>
</div>
<span id="OLK_SRC_BODY_SECTION">
<div>
<div>On 2/13/15, 9:35 AM, "Tim Hinrichs" <<a href="mailto:thinrichs@vmware.com">thinrichs@vmware.com</a>> wrote:</div>
</div>
<div><br>
</div>
<blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="BORDER-LEFT: #b5c4df 5 solid; PADDING:0 0 0 5; MARGIN:0 0 0 5;">
<div>
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
Hi Debo and Yathi,
<div><br>
</div>
<div>We’re completely on the same page here.  We’ve known about the solver-scheduler for a while now (I even attended your Atlanta talk), and I always expected Congress would integrate with it.  As you say, now it’s a matter of getting down to the details.</div>
<div><br>
</div>
<div>A bit on the context…  The current problem we’re working on in Congress is how we might delegate responsibility for policy enforcement to domain-specific policy engines, and a number of people were interested in integrating with a VM-placement engine.
  We started looking at the solver-scheduler (the obvious first choice), hence this dialog.  The notes in the google doc are just me trying to understand the problem of delegation to a VM-placement engine by working through the problem end-to-end.  (I’ve not
 worked with LP or VM-placement much, so my notes are there to help me grapple a bit with the domain for the first time.)  How we build a PoC is something we haven’t started to discuss.  So you’re joining the discussion at the right time.  The more of that
 PoC we can build by leveraging solver-scheduler, the better.</div>
<div><br>
</div>
<div>More detailed comments inline.</div>
<div><br>
</div>
<div><br>
</div>
<div>
<div>
<div>On Feb 13, 2015, at 5:05 AM, Debojyoti Dutta <<a href="mailto:ddutta@gmail.com">ddutta@gmail.com</a>> wrote:</div>
<br class="Apple-interchange-newline">
<blockquote type="cite">
<div dir="ltr">Tim 
<div><br>
</div>
<div>Wanted to clarify a bit. As I have mentioned before: Solver scheduler is work done before this work (Datalog->constraints).... but we had kept it very generic to be integrated with something like congress. In fact Ramki (who was one of the members of the
 original thread when you reached out to us) joined us to in talk in Atlanta where we described some of the same use cases using PULP .... congress was still ramping up then. We were not aware of the Datalog->constraints work that you guys were doing, else
 we would have joined hands before.</div>
<div><br>
</div>
<div>The question is this: going forward, how do build this cool stuff together in the community? I am hoping the scheduler folks will be very excited too!<br>
</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">debo</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Thu, Feb 12, 2015 at 11:27 AM, Yathiraj Udupi (yudupi)
<span dir="ltr"><<a href="mailto:yudupi@cisco.com" target="_blank">yudupi@cisco.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; position: static; z-index: auto;">
<div style="word-wrap: break-word; font-size: 14px; font-family: Calibri, sans-serif;">
<div>Hi Tim, </div>
<div><br>
</div>
<div>Thanks for your response.  Excited too to extend the collaboration and ensure there is no need to duplicate effort in the open source community. </div>
<div> My responses inline. </div>
<div><br>
</div>
<div><span class=""><span>
<blockquote style="border-left-color:rgb(181,196,223);border-left-width:5px;border-left-style:solid;padding:0px 0px 0px 5px;margin:0px 0px 0px 5px">
<div style="word-wrap:break-word">
<div>1)  Choice of LP solver.</div>
<div><br>
</div>
<div>I see solver-scheduler uses Pulp, which was on the Congress short list as well.  So we’re highly aligned on the choice of underlying solver.</div>
</div>
</blockquote>
</span>
<div><br>
</div>
</span>
<div>YATHI - This makes me wonder why can’t we easily adapt the solver-scheduler to your needs, rather than duplicating the effort!</div>
</div>
<span class="">
<div><br>
</div>
</span></div>
</blockquote>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>My primary goal is to build an architecture that makes it easy to integrate with domain-specific policy engines (like compute or networking).  </div>
<div><br>
</div>
<div>What I’m also hearing is that people are interested in building *new* domain-specific policy engines within the Congress framework and/or expanding the functionality of the Congress policy engine itself to include optimization technology.  In both cases,
 we would need a library for solving optimization problems.  Oliver (CC’ed) has proposed adding such a library to Congress.  Solver-scheduler already has such a library, so it would be great if we could all brainstorm about how to make optimization technology
 easy to use for people writing domain-specific policy engines, without reinventing the wheel.</div>
<div><br>
</div>
<div><a href="https://blueprints.launchpad.net/congress/+spec/rule-x">https://blueprints.launchpad.net/congress/+spec/rule-x</a></div>
</div>
</div>
</div>
</div>
</blockquote>
</span>
<div><br>
</div>
<div>
<div>YATHI: It is an interesting thought in this direction.  However it is good to build an architecture with easy integration of Congress to separate domain-specific engines in compute, networking, and storage.    I feel some of these policy validation/enforcement
 workflows are sometimes best within the domain-specific engines like VM placement/scheduling for example.   But definitely optimization technology is a good choice for this kind of problems. </div>
</div>
<div><br>
</div>
<span id="OLK_SRC_BODY_SECTION">
<blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="BORDER-LEFT: #b5c4df 5 solid; PADDING:0 0 0 5; MARGIN:0 0 0 5;">
<div>
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
<div>
<div>
<div><br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; position: static; z-index: auto;">
<div style="word-wrap: break-word; font-size: 14px; font-family: Calibri, sans-serif;">
<span class="">
<div></div>
<div><span>
<blockquote style="border-left-color:rgb(181,196,223);border-left-width:5px;border-left-style:solid;padding:0px 0px 0px 5px;margin:0px 0px 0px 5px">
<div style="word-wrap:break-word">
<div><br>
</div>
<div>2) User control over VM-placement.</div>
<div><br>
</div>
</div>
</blockquote>
</span></div>
<div><span>
<blockquote style="border-left-color:rgb(181,196,223);border-left-width:5px;border-left-style:solid;padding:0px 0px 0px 5px;margin:0px 0px 0px 5px">
<div style="word-wrap:break-word">
<div><br>
</div>
<div>To choose the criteria for VM-placement, the solver-scheduler user picks from a list of predefined options, e.g. ActiveHostConstraint, MaxRamAllocationPerHostConstraint.</div>
<div><br>
</div>
<div>We’re investigating a slightly different approach, where the user defines the criteria for VM-placement by writing any policy they like in Datalog.  Under the hood we then convert that Datalog to an LP problem.  From the developer’s perspective, with the
 Congress approach we don’t attempt to anticipate the different policies the user might want and write code for each policy; instead, we as developers write a translator from Datalog to LP.  From the user’s perspective, the difference is that if the option
 they want isn’t on the solver-scheduler's list, they’re out of luck or need to write the code themselves.  But with the Congress approach, they can write any VM-placement policy they like.</div>
<div><br>
</div>
<div>What I’d like to see is the best of both worlds.  Users write Datalog policies describing whatever VM-placement policy they want.  If the policy they’ve written is on the solver-scheduler’s list of options, we use the hard-coded implementation, but if
 the policy isn’t on that list we translate directly to LP.  This approach gives us the ability to write custom code to handle common cases while at the same time letting users write whatever policy they like.</div>
<div><br>
</div>
</div>
</blockquote>
</span></div>
<div><br>
</div>
</span>
<div>YATHI -  The idea of providing some default constraint classes in Solver Scheduler was to enable easy pluggability for various placement policy scenarios.  We can easily add a custom constraint class in solver scheduler, that enables adding additional
 constraints at runtime (PulP model or any other models we can use and support).  It will just take in any external policy (say Datalog in Congress example), and it can easily add those set of resulting translated constraints via this custom constraint builder
 class.  This is something we can definitely add value to solver scheduler by implementing and adding here. </div>
</div>
</blockquote>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>This sounds promising.  What would that custom constraint class look like?  What language would it support, e.g. would Congress send over a PulP LP?</div>
</div>
</div>
</div>
</div>
</blockquote>
</span>
<div><br>
</div>
<div>
<div>YATHI:  We will need to work out the details, but something along these lines, where Solver Scheduler will utilize the Congress policies (talking Congress APIs) while deciding provisioning/placement decisions. </div>
</div>
<div><br>
</div>
<span id="OLK_SRC_BODY_SECTION">
<blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="BORDER-LEFT: #b5c4df 5 solid; PADDING:0 0 0 5; MARGIN:0 0 0 5;">
<div>
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
<div>
<div><br>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; position: static; z-index: auto;">
<div style="word-wrap: break-word; font-size: 14px; font-family: Calibri, sans-serif;">
<span class="">
<div><br>
</div>
<div><span>
<blockquote style="border-left-color:rgb(181,196,223);border-left-width:5px;border-left-style:solid;padding:0px 0px 0px 5px;margin:0px 0px 0px 5px">
<div style="word-wrap:break-word">
<div><br>
</div>
<div>3) API and architecture.</div>
<div><br>
</div>
<div>Today the solver-scheduler's VM-placement policy is defined at config-time (i.e. not run-time).  Am I correct that this limitation is only because there’s no API call to set the solver-scheduler’s policy?  Or is there some other reason the policy is set
 at config-time?</div>
<div><br>
</div>
<div>Congress policies change at runtime, so we’ll definitely need a VM-placement engine whose policy can be changed at run-time as well.</div>
<div><br>
</div>
</div>
</blockquote>
</span></div>
</span>
<div>YATHI -  We have working code to set VM placement policies at run-time to dynamically select the constraint or cost classes to use.   It is yet to upstreamed to solver scheduler stackforge repo, but will be soon.  But yeah I agree with you, this is definitely
 needed for any policy-driven VM placement engine, as the policies are dynamic. Short answer, yes solver scheduler has abilities to support this. </div>
</div>
</blockquote>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
Good to know.  Let us know when that gets committed so we can take a look.</div>
<div><br>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; position: static; z-index: auto;">
<div style="word-wrap: break-word; font-size: 14px; font-family: Calibri, sans-serif;">
<div><br>
</div>
<div><span class=""><span>
<blockquote style="border-left-color:rgb(181,196,223);border-left-width:5px;border-left-style:solid;padding:0px 0px 0px 5px;margin:0px 0px 0px 5px">
<div style="word-wrap:break-word">
<div><br>
</div>
<div>If we focus on just migration (and not provisioning), we can build a VM-placement engine that sits outside of Nova that has an API call that allows us to set policy at runtime.  We can also set up that engine to get data updates that influence the policy.
  We were planning on creating this kind of VM-placement engine within Congress as a node on the DSE (our message bus).  This is convenient because all nodes on the DSE run in their own thread, any node on the DSE can subscribe to any data from any other node
 (e.g. ceilometer’s data), and the algorithms for translating Datalog to LP look to be quite similar to the algorithms we’re using in our domain-agnostic policy engine.</div>
</div>
</blockquote>
</span>
<div><br>
</div>
</span>
<div>YATHI – The entire scheduling community in Nova is planning on an external scheduler (Gantt), and we are pitching solver scheduler also as a stand-alone placement engine a scheduler as a service.  Nova integration is just to ensure it fits within the Nova
 workflow.   I am not quite familiar with the DSE architecture yet,  but the simple idea we have is, Congress policies, as part of the enforcement workflow, should set the VM placement constraints, and feed any additional data to be used for scheduling/placement
 decisions, which will be consumed dynamically by the Solver Scheduler, and after the delegation, the Solver scheduler module will calculate the placement decisions, and complete the VM initial placement or call the VM migration APIs and enable the required
 migrations. </div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>So the solver-scheduler would take an LP program as input (using some agreed-upon decision variables) and handle provisioning or migration as needed.  The Congress side would take care of translating Datalog to that LP problem.  Right?</div>
</div>
</div>
</div>
</div>
</blockquote>
</span>
<div><br>
</div>
<div>
<div>YATHI:  From an initial provisioning (initial placement of VMs) perspective,  solver scheduler will need to incorporate the Congress policies into new constraints to be used for solving.   As the Solver Scheduler manages the variables used for that VM
 placement problem, it might be easier to create constraints here from the policies. So the module you might be planning to convert DataLog to PuLP could be implemented here using the variables we use.   Or like you suggest,  we can think about how PuLP LP
 rules can be directly consumed if the variables are somehow shared with Congress.    Let us work out the details. </div>
<div>For the migration scenario, we are working out the details,  Congress can trigger policy checks, and the solver can calculate and execute migrations as necessary. </div>
<div><br>
</div>
<div>Thanks,</div>
<div>Yathi. </div>
</div>
<div><br>
</div>
<span id="OLK_SRC_BODY_SECTION">
<blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="BORDER-LEFT: #b5c4df 5 solid; PADDING:0 0 0 5; MARGIN:0 0 0 5;">
<div>
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
<div>
<div>
<div><br>
</div>
<div>Tim</div>
<br>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; position: static; z-index: auto;">
<div style="word-wrap: break-word; font-size: 14px; font-family: Calibri, sans-serif;">
<div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div>Thanks,</div>
<div>Yathi. </div>
<div><br>
</div>
<span>
<blockquote style="border-left-color:rgb(181,196,223);border-left-width:5px;border-left-style:solid;padding:0px 0px 0px 5px;margin:0px 0px 0px 5px">
<div style="word-wrap:break-word"></div>
</blockquote>
</span></div>
<span class="">
<div><br>
</div>
<span>
<div>
<div>On 2/12/15, 10:02 AM, "Tim Hinrichs" <<a href="mailto:thinrichs@vmware.com" target="_blank">thinrichs@vmware.com</a>> wrote:</div>
</div>
<div><br>
</div>
<blockquote style="BORDER-LEFT:#b5c4df 5 solid;PADDING:0 0 0 5;MARGIN:0 0 0 5">
<div>
<div style="word-wrap:break-word">
<div>Hi Debo and Yathiraj,</div>
<div><br>
</div>
I took a third look at the solver-scheduler docs and code with your comments in mind.  A few things jumped out.
<div><br>
</div>
</div>
</div>
</blockquote>
</span>
<div><br>
</div>
<div><br>
</div>
<span>
<blockquote style="BORDER-LEFT:#b5c4df 5 solid;PADDING:0 0 0 5;MARGIN:0 0 0 5">
<div>
<div style="word-wrap:break-word">
<div><br>
</div>
</div>
</div>
</blockquote>
</span></span><span>
<blockquote style="BORDER-LEFT:#b5c4df 5 solid;PADDING:0 0 0 5;MARGIN:0 0 0 5">
<div>
<div style="word-wrap:break-word">
<div><br>
</div>
<span class="">
<div>2) User control over VM-placement.</div>
</span></div>
</div>
</blockquote>
</span><span>
<blockquote style="BORDER-LEFT:#b5c4df 5 solid;PADDING:0 0 0 5;MARGIN:0 0 0 5">
<div>
<div style="word-wrap:break-word">
<div><br>
</div>
<div>
<div class="h5">
<div>Tim<br>
<div><br>
</div>
<div><br>
<div>
<div>On Feb 11, 2015, at 4:50 PM, Debojyoti Dutta <<a href="mailto:ddutta@gmail.com" target="_blank">ddutta@gmail.com</a>> wrote:</div>
<br>
<blockquote type="cite">
<div dir="ltr">
<div style="font-family:Calibri,sans-serif;font-size:14px">Hi Tim: moving our thread to the mailer. Excited to collaborate!</div>
<div style="font-family:Calibri,sans-serif;font-size:14px"><br>
</div>
<div style="font-family:Calibri,sans-serif;font-size:14px"><br>
</div>
<div style="font-family:Calibri,sans-serif;font-size:14px"><br>
</div>
<div style="font-family:Calibri,sans-serif;font-size:14px">
<div style="font-family:Calibri;font-size:11pt;border-width:1pt medium medium;border-style:solid none none;padding:3pt 0in 0in;border-top-color:rgb(181,196,223)">
<span style="font-weight:bold">From: </span>Debo~ Dutta <<a href="mailto:dedutta@cisco.com" style="color:purple" target="_blank">dedutta@cisco.com</a>><br>
<span style="font-weight:bold">Date: </span>Wednesday, February 11, 2015 at 4:48 PM<br>
<span style="font-weight:bold">To: </span>Tim Hinrichs <<a href="mailto:thinrichs@vmware.com" style="color:purple" target="_blank">thinrichs@vmware.com</a>><br>
<span style="font-weight:bold">Cc: </span>"Yathiraj Udupi (yudupi)" <<a href="mailto:yudupi@cisco.com" style="color:purple" target="_blank">yudupi@cisco.com</a>>, Gokul B Kandiraju <<a href="mailto:gokul@us.ibm.com" style="color:purple" target="_blank">gokul@us.ibm.com</a>>,
 Prabhakar Kudva <<a href="mailto:kudva@us.ibm.com" style="color:purple" target="_blank">kudva@us.ibm.com</a>>, "<a href="mailto:ruby.krishnaswamy@orange.com" style="color:purple" target="_blank">ruby.krishnaswamy@orange.com</a>" <<a href="mailto:ruby.krishnaswamy@orange.com" style="color:purple" target="_blank">ruby.krishnaswamy@orange.com</a>>,
 "<a href="mailto:dilikris@in.ibm.com" style="color:purple" target="_blank">dilikris@in.ibm.com</a>" <<a href="mailto:dilikris@in.ibm.com" style="color:purple" target="_blank">dilikris@in.ibm.com</a>>, Norival Figueira <<a href="mailto:nfigueir@Brocade.com" style="color:purple" target="_blank">nfigueir@Brocade.com</a>>,
 Ramki Krishnan <<a href="mailto:ramk@Brocade.com" style="color:purple" target="_blank">ramk@Brocade.com</a>>, "Xinyuan Huang (xinyuahu)" <<a href="mailto:xinyuahu@cisco.com" style="color:purple" target="_blank">xinyuahu@cisco.com</a>>, "Rishabh Jain -X (rishabja
 - AAP3 INC at Cisco)" <<a href="mailto:rishabja@cisco.com" style="color:purple" target="_blank">rishabja@cisco.com</a>><br>
<span style="font-weight:bold">Subject: </span>Re: Nova solver scheduler and Congress<br>
</div>
<div><br>
</div>
<div>
<div style="word-wrap:break-word">
<div>Hi Tim </div>
<div><br>
</div>
<div>To address your particular questions: </div>
<ol>
<li>translate some policy language into constraints for the LP/CVP and we had left that to congress hoping to integrate when the policy efforts in openstack were ready (our initial effort was pre congress) </li><li>For migrations: we are currently doing that – its about incremental constraints into the same solver. Hence its a small deal …. </li></ol>
<div>Joining forces is a terrific idea. Would love to join the IRC call and see how we can build cool stuff in the community together. I hope we don’t have to replicate the vm placement engine while the work that was done in the community does something very
 similar (and be adapted)</div>
<div><br>
</div>
<div>debo</div>
<div><br>
</div>
<span>
<div style="font-family:Calibri;font-size:11pt;border-width:1pt medium medium;border-style:solid none none;padding:3pt 0in 0in;border-top-color:rgb(181,196,223)">
<span style="font-weight:bold">From: </span>Tim Hinrichs <<a href="mailto:thinrichs@vmware.com" style="color:purple" target="_blank">thinrichs@vmware.com</a>><br>
<span style="font-weight:bold">Date: </span>Wednesday, February 11, 2015 at 4:43 PM<br>
<span style="font-weight:bold">To: </span>Debo~ Dutta <<a href="mailto:dedutta@cisco.com" style="color:purple" target="_blank">dedutta@cisco.com</a>><br>
<span style="font-weight:bold">Cc: </span>"Yathiraj Udupi (yudupi)" <<a href="mailto:yudupi@cisco.com" style="color:purple" target="_blank">yudupi@cisco.com</a>>, Gokul B Kandiraju <<a href="mailto:gokul@us.ibm.com" style="color:purple" target="_blank">gokul@us.ibm.com</a>>,
 Prabhakar Kudva <<a href="mailto:kudva@us.ibm.com" style="color:purple" target="_blank">kudva@us.ibm.com</a>>, "<a href="mailto:ruby.krishnaswamy@orange.com" style="color:purple" target="_blank">ruby.krishnaswamy@orange.com</a>" <<a href="mailto:ruby.krishnaswamy@orange.com" style="color:purple" target="_blank">ruby.krishnaswamy@orange.com</a>>,
 "<a href="mailto:dilikris@in.ibm.com" style="color:purple" target="_blank">dilikris@in.ibm.com</a>" <<a href="mailto:dilikris@in.ibm.com" style="color:purple" target="_blank">dilikris@in.ibm.com</a>>, Norival Figueira <<a href="mailto:nfigueir@Brocade.com" style="color:purple" target="_blank">nfigueir@Brocade.com</a>>,
 Ramki Krishnan <<a href="mailto:ramk@Brocade.com" style="color:purple" target="_blank">ramk@Brocade.com</a>>, "Xinyuan Huang (xinyuahu)" <<a href="mailto:xinyuahu@cisco.com" style="color:purple" target="_blank">xinyuahu@cisco.com</a>>, "Rishabh Jain -X (rishabja
 - AAP3 INC at Cisco)" <<a href="mailto:rishabja@cisco.com" style="color:purple" target="_blank">rishabja@cisco.com</a>><br>
<span style="font-weight:bold">Subject: </span>Re: Nova solver scheduler and Congress<br>
</div>
<div><br>
</div>
<div>
<div style="word-wrap:break-word">Hi Debo,
<div><br>
</div>
<div>The 2 efforts share great similarities, which was why we investigated the state of solver-scheduler.  From what I understand, (i) solver-scheduler doesn’t currently have a policy language and (ii) it doesn’t do migrations.  (I realize these are both in
 the works.)  We needed both and wanted to make progress before those were complete.</div>
<div><br>
</div>
<div>In the long run, it may make perfect sense to replace our vm-placement engine with yours.  So joining forces sounds like a good idea.  At the very *least* we ought to keep up to date with each other’s progress.  </div>
<div><br>
</div>
<div>I’m starting to wonder if we ought to schedule a (bi-) weekly IRC for this topic.</div>
<div><br>
</div>
<div>Tim</div>
<div> <br>
<div>
<div>On Feb 11, 2015, at 4:35 PM, Debo Dutta (dedutta) <<a href="mailto:dedutta@cisco.com" style="color:purple" target="_blank">dedutta@cisco.com</a>> wrote:</div>
<br>
<blockquote type="cite">
<div style="word-wrap:break-word">
<div>Hi Tim </div>
<div><br>
</div>
<div>This looks awesome. Trying to figure out how this approach is different from the solver scheduler effort we did? We would be happy to fold our solver scheduler effort into this (that way you also get code up and running)</div>
<div><br>
</div>
<div>Will also respond on the thread. </div>
<div><br>
</div>
<div>thx</div>
<div>debo</div>
<div><br>
</div>
<span>
<div style="font-family:Calibri;font-size:11pt;border-width:1pt medium medium;border-style:solid none none;padding:3pt 0in 0in;border-top-color:rgb(181,196,223)">
<span style="font-weight:bold">From: </span>Tim Hinrichs <<a href="mailto:thinrichs@vmware.com" style="color:purple" target="_blank">thinrichs@vmware.com</a>><br>
<span style="font-weight:bold">Date: </span>Wednesday, February 11, 2015 at 4:11 PM<br>
<span style="font-weight:bold">To: </span>"Yathiraj Udupi (yudupi)" <<a href="mailto:yudupi@cisco.com" style="color:purple" target="_blank">yudupi@cisco.com</a>><br>
<span style="font-weight:bold">Cc: </span>Gokul B Kandiraju <<a href="mailto:gokul@us.ibm.com" style="color:purple" target="_blank">gokul@us.ibm.com</a>>, Prabhakar Kudva <<a href="mailto:kudva@us.ibm.com" style="color:purple" target="_blank">kudva@us.ibm.com</a>>,
 "<a href="mailto:ruby.krishnaswamy@orange.com" style="color:purple" target="_blank">ruby.krishnaswamy@orange.com</a>" <<a href="mailto:ruby.krishnaswamy@orange.com" style="color:purple" target="_blank">ruby.krishnaswamy@orange.com</a>>, "<a href="mailto:dilikris@in.ibm.com" style="color:purple" target="_blank">dilikris@in.ibm.com</a>"
 <<a href="mailto:dilikris@in.ibm.com" style="color:purple" target="_blank">dilikris@in.ibm.com</a>>, Norival Figueira <<a href="mailto:nfigueir@Brocade.com" style="color:purple" target="_blank">nfigueir@Brocade.com</a>>, Ramki Krishnan <<a href="mailto:ramk@Brocade.com" style="color:purple" target="_blank">ramk@Brocade.com</a>>,
 "Xinyuan Huang (xinyuahu)" <<a href="mailto:xinyuahu@cisco.com" style="color:purple" target="_blank">xinyuahu@cisco.com</a>>, "Rishabh Jain -X (rishabja - AAP3 INC at Cisco)" <<a href="mailto:rishabja@cisco.com" style="color:purple" target="_blank">rishabja@cisco.com</a>>,
 Debo~ Dutta <<a href="mailto:dedutta@cisco.com" style="color:purple" target="_blank">dedutta@cisco.com</a>><br>
<span style="font-weight:bold">Subject: </span>Re: Nova solver scheduler and Congress<br>
</div>
<div><br>
</div>
<div>
<div style="word-wrap:break-word">Hi Yathiraj,
<div><br>
</div>
<div>The group is getting big enough that we’ve decided to move the entire discussion to the openstack-dev mailing list.  I sent a note today with the google doc we’re working on.  We’re trying to include [Congress][Delegation] in the subject line of relevant
 posts.  Here’s the gdoc.</div>
<div><br>
</div>
<div><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__docs.google.com_document_d_1ksDilJYXV-2D5AXWON8PLMedDKr9NpS8VbT0jIy-5FMIEtI_edit-3Fusp-3Dsharing&d=AwMF-g&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=B6BWd4kFfgOzAREgThxkmTZKy7dDXE2-eBAmL0PBK7s&m=no-emyiErtYa3_zneDNhY78LG0mCHc0bgMpXi1StZ7A&s=rLY2ACQqD5EQn3MgOnoX8M_zr9254v-FqhF56wfGpic&e=" style="color:rgb(149,79,114)" target="_blank">https://docs.google.com/document/d/1ksDilJYXV-5AXWON8PLMedDKr9NpS8VbT0jIy_MIEtI/edit?usp=sharing</a></div>
<div><br>
</div>
<div>Tim</div>
<div><br>
<div>
<div>On Feb 10, 2015, at 11:10 AM, Yathiraj Udupi (yudupi) <<a href="mailto:yudupi@cisco.com" style="color:purple" target="_blank">yudupi@cisco.com</a>> wrote:</div>
<br>
<blockquote type="cite">
<div style="word-wrap:break-word">
<div>Hi Tim, </div>
<div><br>
</div>
<div>Thanks for your response.  I think Congress will have to appreciate different APIs interacting with multiple components in the OpenStack ecosystem.  So I will be happy to help figure out the integration plan in general from the Congress side. </div>
<div><br>
</div>
<div>I will  be very interested and glad to participate in the discussions of designing these interfaces in Congress.   Please share any preliminary designs you may have.   I had participated in one of the Congress mid-cycle meet ups, and I am interested in
 the upcoming work on these kind of enforcement aspects (reactive, proactive) of Congress.  In terms of Nova scheduling via Solver scheduler, it will also help us be ready with the integration points. </div>
<div><br>
</div>
<div>Let’s be in sync. </div>
<div><br>
</div>
<div>Thanks,</div>
<div>Yathi. </div>
<div><br>
</div>
<div><br>
</div>
<span>
<div>On 2/10/15, 11:03 AM, "Tim Hinrichs" <<a href="mailto:thinrichs@vmware.com" style="color:purple" target="_blank">thinrichs@vmware.com</a>> wrote:</div>
<div><br>
</div>
<blockquote type="cite" style="border-left-color:rgb(181,196,223);border-left-width:5px;border-left-style:solid;padding:0px 0px 0px 5px;margin:0px 0px 0px 5px">
<div style="word-wrap:break-word">Hi Yathiraj,
<div><br>
</div>
<div>Thanks for the help!</div>
<div><br>
</div>
<div>The reason I asked is that we’re trying to figure out the basic interface for how two policy engines (in general) ought to interact.  We were hoping Congress and solver-scheduler had very similar APIs, which would make that interface relatively simple. 
 But it sounds like the two systems have pretty different APIs.  So for now we’ll keep working on that interface, and once we have something worked out we’ll touch base with you to think through how an integration might work.     </div>
<div><br>
</div>
<div>Tim</div>
<div><br>
</div>
<div>
<div>
<div>On Feb 6, 2015, at 11:45 AM, Yathiraj Udupi (yudupi) <<a href="mailto:yudupi@cisco.com" style="color:purple" target="_blank">yudupi@cisco.com</a>> wrote:</div>
<br>
<blockquote type="cite">
<div style="word-wrap:break-word">
<div>Hi Tim, </div>
<div><br>
</div>
<div>Thanks for reaching out.   Currently available documentation is all in the project README - <a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_stackforge_nova-2Dsolver-2Dscheduler_blob_master_README.md&d=AwMF-g&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=B6BWd4kFfgOzAREgThxkmTZKy7dDXE2-eBAmL0PBK7s&m=4W62lNEl8JKjwUKKASTM0fjHUVJATmMpEsCoYaeA_OQ&s=1rPI8hfdD9f8_B9_14xALPUjAuJJnWVJRhugMJ16IIk&e=" style="color:purple" target="_blank">https://github.com/stackforge/nova-solver-scheduler/blob/master/README.md</a> 
 Towards the end there are some examples. </div>
<div> </div>
<div>To answer your specific questions:</div>
<div>
<div><br>
</div>
<div>1) How do we change the Nova server-placement policy?  An API call?  A file on the Nova server?  </div>
</div>
<div>- Currently the server placement policies are all defined in solver scheduler in the form of pluggable constraint or cost modules.  So imagine there will be a policy to place a compute VM close to on a storage volume host, there is a volume affinity cost
 module - <a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_stackforge_nova-2Dsolver-2Dscheduler_blob_master_nova_scheduler_solvers_costs_volume-5Faffinity-5Fcost.py&d=AwMF-g&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=B6BWd4kFfgOzAREgThxkmTZKy7dDXE2-eBAmL0PBK7s&m=4W62lNEl8JKjwUKKASTM0fjHUVJATmMpEsCoYaeA_OQ&s=T34XhGj816dbMWcnLKU0Oda99ku1twIhUWN_SLTHPkQ&e=" style="color:purple" target="_blank">https://github.com/stackforge/nova-solver-scheduler/blob/master/nova/scheduler/solvers/costs/volume_affinity_cost.py</a> and
 you will feed the necessary inputs for the policy via scheduler hints that are induced during the nova API calls, in this case of the volume cost,  the scheduler hint will be to provide the specific volume id. </div>
<div>- So all these constraint and cost classes are defined the nova conf file, so all applicable policies are included statically at the moment, and inputs to the policies are via scheduler hints. </div>
<div>- We are yet to commit the code to dynamically set these policies at run-time, so we can choose what policies to include. </div>
<div><br>
</div>
<div>2) What policy language does solver-scheduler use?</div>
<div>- We haven’t yet added support for a formal policy language, but everything is implemented as pluggable modules now, and a policy will be simply defining what constraints or costs to use, for what scenarios.  We plan to use simple policy rules to define
 this, and will be added soon in the roadmap.  </div>
<div><br>
</div>
<div>3) I presume solver-scheduler *provisions* servers according to policy.  Does it also *migrate* servers when they begin to violate policy?</div>
<div>Yes for provisioning according to policy,  Support for migration is coming soon, and will utilize the nova migration workflow based on a policy violation detected by a constraint validator. </div>
<div><br>
</div>
<div>Congress could feed some of these policies in terms of selecting our solver scheduler constraints and costs for specific scenarios, and also feed the necessary scheduler hints.  So based on the Congress policy, we can select our constraints and costs,
 and enable nova server placement accordingly.  </div>
<div><br>
</div>
<div>Including our small solver scheduler team here from Cisco, we will be glad to work with the community. </div>
<div><br>
</div>
<div>Thanks,</div>
<div>Yathi. </div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<span>
<div>On 2/5/15, 4:22 PM, "Tim Hinrichs" <<a href="mailto:thinrichs@vmware.com" style="color:purple" target="_blank">thinrichs@vmware.com</a>> wrote:</div>
<div><br>
</div>
<blockquote type="cite" style="border-left-color:rgb(181,196,223);border-left-width:5px;border-left-style:solid;padding:0px 0px 0px 5px;margin:0px 0px 0px 5px">
<div style="word-wrap:break-word">Hi Yathiraj,
<div><br>
</div>
<div>I had a couple of questions about the nova solver scheduler.  We’re looking into driving server-placement via policy through Congress and wanted to understand more about how solver-scheduler works.  If it’s easier to just point me to docs or examples,
 that’d be great!</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div>Thanks!</div>
<div>Tim</div>
<div><br>
</div>
<div><br>
</div>
</div>
</blockquote>
</span></div>
</blockquote>
</div>
<br>
</div>
</div>
</blockquote>
</span></div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</span></div>
</blockquote>
</div>
</div>
</div>
</div>
</span></div>
</div>
</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Wed, Feb 11, 2015 at 9:01 AM, Tim Hinrichs <span dir="ltr">
<<a href="mailto:thinrichs@vmware.com" target="_blank">thinrichs@vmware.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word">Hi all,
<div><br>
</div>
<div>A (growing) group of folks are interested in working on the problem of delegating policy from Congress to domain-specific policy engines.  We started looking at an NFV use case: migrating VMs to reduce energy consumption.  In particular we’re looking into
 building a VM-placement policy engine built on top of a linear programming solver.  Here’s a doc with some working notes where we’re trying to figure out how to do the translation from Congress policy to the linear program.</div>
<div><br>
</div>
<div>
<div style="word-wrap:break-word">
<div style="word-wrap:break-word"><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__docs.google.com_document_d_1ksDilJYXV-2D5AXWON8PLMedDKr9NpS8VbT0jIy-5FMIEtI_edit-3Fusp-3Dsharing&d=AwMFaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=B6BWd4kFfgOzAREgThxkmTZKy7dDXE2-eBAmL0PBK7s&m=ZN1RTPgf15rmqr46xMdX8HUY-fmlaOfIY3TWbQlfgBk&s=zdYLSRitftQH2q_b1lhY80vIsECD9-xW6LZhcwJrRZA&e=" style="color:rgb(149,79,114)" target="_blank">https://docs.google.com/document/d/1ksDilJYXV-5AXWON8PLMedDKr9NpS8VbT0jIy_MIEtI/edit?usp=sharing</a></div>
<span><font color="#888888"></font></span></div>
<span><font color="#888888"></font></span></div>
<span><font color="#888888">
<div><br>
</div>
<div>Tim</div>
</font></span></div>
<br>
__________________________________________________________________________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org/?subject:unsubscribe" target="_blank">
OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
<div>-Debo~<br>
</div>
</div>
__________________________________________________________________________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="mailto:OpenStack-dev-request@lists.openstack.org" target="_blank">
OpenStack-dev-request@lists.openstack.org</a>?subject:unsubscribe<br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</span></div>
<br>
__________________________________________________________________________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org/?subject:unsubscribe" target="_blank">
OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
<div class="gmail_signature">-Debo~<br>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</blockquote>
</span>
</body>
</html>