[openstack-dev] Compute API (Was Re: [nova][cinder] how to handle AZ bug 1496235?)
Andrew Laski
andrew at lascii.com
Mon Sep 28 14:11:31 UTC 2015
On 09/28/15 at 08:50am, Monty Taylor wrote:
>On 09/28/2015 07:58 AM, Sylvain Bauza wrote:
>>
>>
>>Le 28/09/2015 12:35, Duncan Thomas a écrit :
>>>
>>>
>>>On 28 September 2015 at 12:35, Sylvain Bauza <sbauza at redhat.com
>>><mailto:sbauza at redhat.com>> wrote:
>>>
>>> About the maintenance burden, I also consider that patching
>>> clients is far more easier than patching an API unless I missed
>>> something.
>>>
>>>
>>>I think I very much disagree there - patching a central installation
>>>is much, much easier than getting N customers to patch M different
>>>libraries, even assuming the fix is available for any significant
>>>subset of the M libraries, plus making sure that new customers use the
>>>correct libraries, plus helping any customers who have some sort of
>>>roll-your-own library do the new right thing...
>>>
>>
>>Well, having N versions of clients against one single API version is
>>just something we manage since the beginning. I don't really see why it
>>suddently becomes so difficult to manage it.
>>
>>
>>>I think there's a definite place for a simple API to do infrastructure
>>>level orchestration without needing the complexities of heat - these
>>>APIs are in nova because they're useful - there's clear operator
>>>desire for them and a couple of operators have been quite vocal about
>>>their desire for them not to be removed. Great, let's keep them, but
>>>form a team of people interested in getting them right (get rid of
>>>fixed timeouts, etc), add any missing pieces (like floating IPs for
>>>new VMs) and generally focus on getting this piece of the puzzle
>>>right. Breaking another small piece off nova and polishing it has been
>>>a generally successful pattern.
>>
>>I don't want to overthink what could be the right scope of that future
>>API but given the Heat mission statement [1] and its service name
>>'orchestration', I don't see why this API endpoint should land in the
>>Nova codebase and couldn't be rather provided by the Heat API. Oh sure,
>>it would perhaps require another endpoint behind the same service, but
>>isn't that better than having another endpoint in Nova ?
>>
>>[1]
>>https://github.com/openstack/governance/blob/master/reference/projects.yaml#L482-L484
>>
>>
>>>
>>>I remember Monty Taylor (copied) having a rant about the lack of the
>>>perfect 'give me a VM with all its stuff sorted' API. Care to comment,
>>>Monty?
>>
>>Sounds you misunderstood me. I'm not against implementing this excellent
>>usecase, I just think the best place is not in Nova and should be done
>>elsewhere.
>>
>
>Specifically, I want "nova boot" to get me a VM with an IP address. I
>don't want it to do fancy orchestration - I want it to not need fancy
>orchestration, because needing fancy orchestration to get a VM on a
>network is not a feature.
In the networking case there is a minimum of orchestration because the
time required to allocate a port is small. What has been requiring
orchestration is the creation of volumes because of the requirement of
Cinder to download an image, or be on a backend that support fast
cloning and rely on a cache hit. So the question under discussion is
when booting an instance relies on another service performing a long
running operation where is a good place to handle that.
My thinking for a while has been that we could use another API that
could manage those things. And be the central place you're looking for
to pass a simple "nova boot" with whatever options are required so you
don't have to manage the complexities of calls to
Neutron/Cinder/Nova(current API). What's become clear to me from this
thread is that people don't seem to oppose that idea, however they don't
want their users/clients to need to switch what API they're currently
using(Nova).
The right way to proceed with this idea seems to be to by evolving the
Nova API and potentially creating a split down the road. And by split I
more mean architectural within Nova, and not necessarily a split API.
What I imagine is that we follow the model of git and have a plumbing
and porcelain API and each can focus on doing the right things.
>
>I also VERY MUCH do not want to need Heat to get a VM. I want to use
>Heat to do something complex. Getting a VM is not complex. It should
>not be complex. What it's complex and to the level of needing Heat,
>we've failed somewhere else.
>
>Also, people should stop deploying clouds that require people to use
>floating IPs to get basic internet access. It's a misuse of the
>construct.
>
>Public Network "ext-net" -> shared / directly attachable
>Per-tenant Network "private" -> private network, not shared, not routable
>
>If the user chooses, a router can be added with gateway set to ext-net.
>
>This way:
>
>nova boot --network=ext-net -> vm dhcp'd on the public network
>nova boot --network=private -> vm dhcp'd on the private network
>nova floating-ip-attach -> vm gets a floating ip attached to
>their vm from the ext-net network
>
>All of the use cases are handled, basic things are easy (boot a vm on
>the network works in one step) and for the 5% of cases where a
>floating IP is actually needed (a long-lived service on a single vm
>that wants to keep the IP and not just a DNS name across VM
>migrations and isn't using a load-balancer) can use that.
>
>This is, btw, the most common public cloud deployment model.
>
>Let's stop making things harder than they need to be and serve our users.
>
>__________________________________________________________________________
>OpenStack Development Mailing List (not for usage questions)
>Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
More information about the OpenStack-dev
mailing list