<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="">
Amrith,
<div class=""><br class="">
</div>
<div class="">I respect your point of view, and agree that the idea of a common compute API is attractive… until you think a bit deeper about what that would mean. We seriously considered a “global” compute API at the time we were first contemplating Magnum.
 However, what we came to learn through the journey of understanding the details of how such a thing would be implemented, that such an API would either be (1) the lowest common denominator (LCD) of all compute types, or (2) an exceedingly complex interface. </div>
<div class=""><br class="">
</div>
<div class="">You expressed a sentiment below that trying to offer choices for VM, Bare Metal (BM), and Containers for Trove instances “adds considerable complexity”. Roughly the same complexity would accompany the use of a comprehensive compute API. I suppose
 you were imagining an LCD approach. If that’s what you want, just use the existing Nova API, and load different compute drivers on different host aggregates. A single Nova client can produce VM, BM (Ironic), and Container (lbvirt-lxc) instances all with a
 common API (Nova) if it’s configured in this way. That’s what we do. Flavors determine which compute type you get.</div>
<div class=""><br class="">
</div>
<div class="">If what you meant is that you could tap into the power of all the unique characteristics of each of the various compute types (through some modular extensibility framework) you’ll likely end up with complexity in Trove that is comparable to integrating
 with the native upstream APIs, along with the disadvantage of waiting for OpenStack to continually catch up to the pace of change of the various upstream systems on which it depends. This is a recipe for disappointment.</div>
<div class=""><br class="">
</div>
<div class="">We concluded that wrapping native APIs is a mistake, particularly when they are sufficiently different than what the Nova API already offers. Containers APIs have limited similarities, so when you try to make a universal interface to all of them,
 you end up with a really complicated mess. It would be even worse if we tried to accommodate all the unique aspects of BM and VM as well. Magnum’s approach is to offer the upstream native API’s for the different container orchestration engines (COE), and compose
 Bays for them to run on that are built from the compute types that OpenStack supports. We do this by using different Heat orchestration templates (and conditional templates) to arrange a COE on the compute type of your choice. With that said, there are still
 gaps where not all storage or network drivers work with Ironic, and there are non-trivial security hurdles to clear to safely use Bays composed of libvirt-lxc instances in a multi-tenant environment.</div>
<div class=""><br class="">
</div>
<div class="">My suggestion to get what you want for Trove is to see if the cloud has Magnum, and if it does, create a bay with the flavor type specified for whatever compute type you want, and then use the native API for the COE you selected for that bay.
 Start your instance on the COE, just like you use Nova today. This way, you have low complexity in Trove, and you can scale both the number of instances of your data nodes (containers), and the infrastructure on which they run (Nova instances).</div>
<div class=""><br class="">
</div>
<div class="">Regards,</div>
<div class=""><br class="">
</div>
<div class="">Adrian</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
<div>
<blockquote type="cite" class="">
<div class="">On Apr 11, 2016, at 8:47 AM, Amrith Kumar <<a href="mailto:amrith@tesora.com" class="">amrith@tesora.com</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Monty,
 Dims,<span class="Apple-converted-space"> </span></span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">I
 read the notes and was similarly intrigued about the idea. In particular, from the perspective of projects like Trove, having a common Compute API is very valuable. It would allow the projects to have a single view of provisioning compute, as we can today
 with Nova and get the benefit of bare metal through Ironic, VM's through Nova VM's, and containers through nova-docker.</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">With
 this in place, a project like Trove can offer database-as-a-service on a spectrum of compute infrastructures as any end-user would expect. Databases don't always make sense in VM's, and while containers are great for quick and dirty prototyping, and VM's are
 great for much more, there are databases that will in production only be meaningful on bare-metal.</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Therefore,
 if there is a move towards offering a common API for VM's, bare-metal and containers, that would be huge.</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Without
 such a mechanism, consuming containers in Trove adds considerable complexity and leads to a very sub-optimal architecture (IMHO). FWIW, a working prototype of Trove leveraging Ironic, VM's, and nova-docker to provision databases is something I worked on a
 while ago, and have not revisited it since then (once the direction appeared to be Magnum for containers).</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">With
 all that said, I don't want to downplay the value in a container specific API. I'm merely observing that from the perspective of a consumer of computing services, a common abstraction is incredibly valuable.<span class="Apple-converted-space"> </span></span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Thanks,</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">-amrith<span class="Apple-converted-space"> </span></span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
-----Original Message-----<br class="">
From: Monty Taylor [<a href="mailto:mordred@inaugust.com" class="">mailto:mordred@inaugust.com</a>]<br class="">
Sent: Monday, April 11, 2016 11:31 AM<br class="">
To: Allison Randal <<a href="mailto:allison@lohutok.net" class="">allison@lohutok.net</a>>; Davanum Srinivas<br class="">
<<a href="mailto:davanum@gmail.com" class="">davanum@gmail.com</a>>;<span class="Apple-converted-space"> </span><a href="mailto:foundation@lists.openstack.org" class="">foundation@lists.openstack.org</a><br class="">
Cc: OpenStack Development Mailing List (not for usage questions)<br class="">
<<a href="mailto:openstack-dev@lists.openstack.org" class="">openstack-dev@lists.openstack.org</a>><br class="">
Subject: Re: [openstack-dev] [OpenStack Foundation] [board][tc][all] One<br class="">
Platform – Containers/Bare Metal? (Re: Board of Directors Meeting)<br class="">
<br class="">
On 04/11/2016 09:43 AM, Allison Randal wrote:<br class="">
<blockquote type="cite" class="">
<blockquote type="cite" class="">On Wed, Apr 6, 2016 at 1:11 PM, Davanum Srinivas <<a href="mailto:davanum@gmail.com" class="">davanum@gmail.com</a>><br class="">
</blockquote>
</blockquote>
wrote:<br class="">
<blockquote type="cite" class="">
<blockquote type="cite" class="">
<blockquote type="cite" class="">Reading unofficial notes [1], i found one topic very interesting:<br class="">
One Platform – How do we truly support containers and bare metal<br class="">
under a common API with VMs? (Ironic, Nova, adjacent communities e.g.<br class="">
Kubernetes, Apache Mesos etc)<br class="">
<br class="">
Anyone present at the meeting, please expand on those few notes on<br class="">
etherpad? And how if any this feedback is getting back to the<br class="">
projects?<br class="">
</blockquote>
</blockquote>
<br class="">
It was really two separate conversations that got conflated in the<br class="">
summary. One conversation was just being supportive of bare metal,<br class="">
VMs, and containers within the OpenStack umbrella. The other<br class="">
conversation started with Monty talking about his work on shade, and<br class="">
how it wouldn't exist if more APIs were focused on the way users<br class="">
consume the APIs, and less an expression of the implementation details<br class="">
</blockquote>
of each project.<br class="">
<blockquote type="cite" class="">OpenStackClient was mentioned as a unified CLI for OpenStack focused<br class="">
more on the way users consume the CLI. (OpenStackSDK wasn't mentioned,<br class="">
but falls in the same general category of work.)<br class="">
<br class="">
i.e. There wasn't anything new in the conversation, it was more a<br class="">
matter of the developers/TC members on the board sharing information<br class="">
about work that's already happening.<br class="">
</blockquote>
<br class="">
I agree with that - but would like to clarify the 'bare metal, VMs and<br class="">
containers' part a bit. (an in fact, I was concerned in the meeting that<br class="">
the messaging around this would be confusing because we 'supporting bare<br class="">
metal' and 'supporting containers' mean two different things but we use<br class="">
one phrase to talk about it.<br class="">
<br class="">
It's abundantly clear at the strategic level that having OpenStack be able<br class="">
to provide both VMs and Bare Metal as two different sorts of resources<br class="">
(ostensibly but not prescriptively via nova) is one of our advantages. We<br class="">
wanted to underscore how important it is to be able to do that, and wanted<br class="">
to underscore that so that it's really clear how important it is any time<br class="">
the "but cloud should just be VMs" sentiment arises.<br class="">
<br class="">
The way we discussed "supporting containers" was quite different and was<br class="">
not about nova providing containers. Rather, it was about reaching out to<br class="">
our friends in other communities and working with them on making OpenStack<br class="">
the best place to run things like kubernetes or docker swarm.<br class="">
Those are systems that ultimately need to run, and it seems that good<br class="">
integration (like kuryr with libnetwork) can provide a really strong<br class="">
story. I think pretty much everyone agrees that there is not much value to<br class="">
us or the world for us to compete with kubernetes or docker.<br class="">
<br class="">
So, we do want to be supportive of bare metal and containers - but the<br class="">
specific _WAY_ we want to be supportive of those things is different for<br class="">
each one.<br class="">
<br class="">
Monty<br class="">
<br class="">
<br class="">
__________________________________________________________________________<br class="">
OpenStack Development Mailing List (not for usage questions)<br class="">
Unsubscribe:<span class="Apple-converted-space"> </span><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="">
</blockquote>
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">__________________________________________________________________________</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">OpenStack
 Development Mailing List (not for usage questions)</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Unsubscribe:<span class="Apple-converted-space"> </span></span><a href="mailto:OpenStack-dev-request@lists.openstack.org" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">OpenStack-dev-request@lists.openstack.org</a><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">?subject:unsubscribe</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a></div>
</blockquote>
</div>
<br class="">
</div>
</body>
</html>