[openstack-dev] [nova] [placement] conducting, ovo and the placement api
Sylvain Bauza
sbauza at redhat.com
Mon Jun 6 13:55:41 UTC 2016
Le 04/06/2016 16:37, Dan Smith a écrit :
>> There was a conversation earlier this week in which, if I understood
>> things correctly, one of the possible outcomes was that it might make
>> sense for the new placement service (which will perform the function
>> currently provided by the scheduler in Nova) to only get used over its
>> REST API, as this will ease its extraction to a standalone service.
> FWIW, I think that has been the long term expectation for a while.
> Eventually that service is separate, which means no RPC to/from Nova
> itself. The thing that came up last week was more a timing issue of
> whether we go straight to that in newton or stop at an intermediate
> stage where we're still using RPC. Because of the cells thing, I was
> hoping to be able to go straight to HTTP, which would be slightly nicer
> than what is actually an upcall from the cell to the API (even though
> we're still pretty flat).
>
Right, I take this upcall as the main problem we could have in a cells
v2 world.
Using a REST API call for providing the resource inventories sounds good
to me.
>> * The way to scale is to add more placement API servers and more
>> nodes in the galera (or whatever) cluster. The API servers just
>> talk to the persistence layer themselves. There are no tasks to
>> "conduct".
> I'm not sure that we'll want to consider this purely a data service. The
> new resource filter approach is mostly a data operation, but it's not
> complete -- it doesn't actually select a resource. For that we still
> need to run some of the more complicated scheduler filters. I'm not sure
> that completely dispensing with the queue (or queuing of some sort) and
> doing all the decisions in the API worker while we hold the HTTP client
> waiting is the right approach. I'd have to think about it more.
I think there are two very different points :
#1 Nova and other projects like Neutron or Cinder can provide their own
inventories, so we need some kind of REST API for that. Good to me, +2.
#2 For the moment, only Nova wants to ask the scheduler to give it a
destination, not Cinder or Neutron. Sure, we want to ask the scheduler
to give us a destination possibly having a cross-project affinity, but
that's still a compute node that the scheduler gives back to the nova
conductor. By that, I'm really trying to explain that providing a REST
API for selecting a destination really needs to be discussed more than
by e-mails and also needs to see how the current request and the
returned destination (a tuple now) can be interfaced for more than just
nova. I don't think it's what we want to have *now*.
>> * If API needs to be versioned then it can version the external
>> representations that it uses.
> It certainly needs to be versioned, and certainly that versioned
> external representation should be decoupled from the actual persistence.
++
>> * Nova-side versioned objects that are making http calls in
>> themselves. For example, an Inventory object that knows how to
>> save itself to the placement API over HTTP. Argh. No. Magical
>> self-persisting objects are already messy enough. Adding a second
>> medium over which persistence can happen is dire. Let's do
>> something else please.
> Um, why? What's the difference between a remotable object that uses
> rabbit and RPC to ask a remote service to persist a thing, versus a
> remotable object that uses HTTP to do it? It seems perfectly fine to me
> to have the object be our internal interface, and the implementation
> behind it does whatever we want it to do at a given point in time (i.e.
> RPC to the scheduler or HTTP to the placement service). The
> indirection_api in ovo is pluggable for a reason...
>
Agreed, that's not because we don't have a REST API indirection yet in
Nova that we can't be having it next.
>> * A possible outcome here is that we're going to have objects in Nova
>> and objects in Placement that people will expect to co-evolve.
> I don't think so. I think the objects in Nova will mirror the external
> representation of the placement API, much like the nova client tracks
> evolution in nova's external API. As placement tries to expand its scope
> it is likely to need to evolve its internal data structures like
> anything else.
Yes, +1000 to what you say. Nova is *at the moment* the only consumer of
that placement API, we don't want to resurrect a project that was
defunct for good reasons by working on that epic story.
-Sylvain
> --Dan
>
> __________________________________________________________________________
> 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