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 <sba...@redhat.com
<mailto:sba...@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-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev