15:00:42 <n0ano> #startmeeting gantt
15:00:44 <openstack> Meeting started Tue Jun 17 15:00:42 2014 UTC and is due to finish in 60 minutes.  The chair is n0ano. Information about MeetBot at http://wiki.debian.org/MeetBot.
15:00:45 <openstack> Useful Commands: #action #agreed #help #info #idea #link #topic #startvote.
15:00:47 <openstack> The meeting name has been set to 'gantt'
15:00:51 <n0ano> anyone here to talk about the scheduler?
15:00:55 <bauzas> n0ano: o/
15:00:59 <tianst> 哦/
15:01:04 <tianst> o/
15:01:06 <toan-tran> o/
15:01:12 <mspreitz> here
15:01:29 <jgallard> hi
15:01:32 <n0ano> tianst, I like your first response (if I only knew what it meant :-)
15:01:47 <tianst> :)
15:02:15 <n0ano> let's get started, I'll try and make it short today
15:02:23 <bauzas> :)
15:02:25 <n0ano> #topic forklift status
15:02:34 <bauzas> right :)
15:02:34 <n0ano> bauzas, anything good to report?
15:02:48 <bauzas> well, some updates :)
15:03:07 <bauzas> after a looong discussion with johnthetubaguy, decision has been made to simplify the propoal
15:03:18 <bauzas> so, we remove use of object for it
15:03:33 <bauzas> and scheduler doesn't have to manage its own view of services
15:03:50 <bauzas> so, the update is just coming in, and the DB got updated
15:04:01 <bauzas> https://review.openstack.org/82778
15:04:14 <bauzas> it's up to review, no work left
15:04:15 <n0ano> bauzas, that will still lead to clean, easily separatable interfaces, right?
15:04:33 <bauzas> well that's my point on a dependent patch
15:04:47 <bauzas> atm, this code is a library run by the compute host
15:05:14 <bauzas> so that only provides a way to "isolate" db accesses
15:05:34 <bauzas> but speaking of that, computes are still directly updating db
15:05:45 <bauzas> for scheduler compute_nodes table
15:06:09 <n0ano> computes updating the DB is not a problem, it's the scheduler access we need to isolate
15:06:25 <bauzas> n0ano: let me rephrase
15:06:46 <bauzas> computes are updating still updating a DB table
15:06:53 <bauzas> related to the scheduler
15:07:34 <bauzas> the proposal for letting Scheduler the only access to compute_nodes is here : https://review.openstack.org/97232
15:07:58 <mspreitz> bauzas: which table are you complaining about?
15:08:06 <bauzas> mspreitz: compute_nodes
15:08:10 <n0ano> ah, that to me is unrelated to splitting the scheduler out into the gantt tree, that's my main focus
15:08:19 <bauzas> mspreitz: which is the mother of all the scheduling decisions
15:08:21 <marun> http://omrasdfsdfshttp://omreunionproject.org/http://omreunionproject.org/eunionproject.org/
15:08:58 <bauzas> n0ano: that's related to it :)
15:09:19 <bauzas> if we split out the scheduler, we will need to provide a client library for compute nodes
15:09:43 <toan-tran> bauzas: +1
15:09:52 <n0ano> the client library either sends an api to the schduler or updates the DB, in either case it's unrelated to gantt code
15:10:01 <bauzas> if we leave the situation as it is, Nova conductor is still updating DB's compute_nodes
15:10:12 <mspreitz> so the debate here is really about where the split is
15:10:40 <bauzas> that's unrelated to gantt code, not data ;)
15:10:43 <toan-tran> n0ano: it's related in the sense that we have to use some call from *some service* to scheduler
15:11:00 <toan-tran> maybe nova-api
15:11:46 <n0ano> I think an API is fine but I just don't see it as a necessary precursor to splitting the scheduler code into gantt
15:12:42 <bauzas> mmm
15:13:00 <bauzas> I agree with the thing we draw a line
15:13:23 <bauzas> with compute not directly talking to conductor, but scheduler rather
15:13:46 <bauzas> but that scheduler.client portion of code will be run by Nova
15:14:04 <bauzas> while it is part of a Gantt code
15:15:46 <n0ano> so, to be clear, we need the 82778 change, do we also think that 97232 is required before we try and split the code out?
15:15:47 <toan-tran> bauzas: I'm confused, are you talking about the database access? or schuduling request?
15:17:06 <bauzas> toan-tran: I'm talking about nova computes running a Gantt code to update DB
15:17:17 <bauzas> n0ano: well, we can try with 82778 only
15:17:32 <n0ano> bauzas, that would be my hope
15:17:46 <bauzas> n0ano: but the problem is that Nova will need to import Gantt as a whole
15:18:20 <toan-tran> bauzas: that's not https://review.openstack.org/#/c/82778/ is about
15:18:20 <n0ano> bauzas, that would kind of defeat the purpose, why would nova need all of gantt?
15:19:20 <toan-tran> bauzas: ok so it's https://review.openstack.org/#/c/97232/
15:19:28 <bauzas> toan-tran: right
15:19:42 <bauzas> n0ano: I mean the scheduler client code has to be left in Nova
15:19:52 <bauzas> n0ano: and not be part of the fork
15:20:05 <bauzas> n0ano: that's a client library
15:20:36 <n0ano> the client library, yes we can do that as a second effort, as long as we split the scheduler proper out that the main goal
15:20:54 <n0ano> we do need the client library but we can do that later
15:21:04 <bauzas> n0ano: sorry, it seems we are not on the same page
15:21:06 <bauzas> :)
15:21:12 <bauzas> I'm trying to reformulate
15:21:21 <bauzas> so, my concern is that
15:21:35 <bauzas> if we say that all scheduler.* namespace becomes gantt
15:21:50 <bauzas> that's an external project
15:22:10 <bauzas> you ok?
15:22:40 <n0ano> I believe so, yes
15:22:45 <bauzas> ok
15:23:27 <bauzas> so, if Nova still has to call Scheduler for either select_destinations() or update_resource_stats(), it will need to import a certain portion of code
15:23:35 <bauzas> by importing, I mean Python importing
15:23:46 <bauzas> from ... import client
15:24:16 <bauzas> so we can't impose nova to declare gantt as a dependency
15:24:46 <bauzas> so, I'm just saying that nova.scheduler.client has to be left where it is
15:25:01 <bauzas> you ok ?
15:25:11 <toan-tran> bauzas: *where*?
15:25:18 <n0ano> we have to think about that, importing from a different project causes problems with testing
15:25:42 <bauzas> n0ano: right, that's why nova.scheduler.client will still be nova.scheduler.client
15:25:51 <bauzas> and not become gantt.client
15:26:00 <toan-tran> bauzas: if you're talking about cross-project call, then it's better in common or oslo
15:26:15 <bauzas> toan-tran: trust me, that's not that common :)
15:26:28 <bauzas> anyway
15:26:37 <bauzas> I'm just saying that :
15:26:50 <bauzas> A/ the scheduler.client code will remain in Nova
15:27:03 <bauzas> B/ all scheduler.* except scheduler.client will become Gantt
15:27:21 <bauzas> so the dependency is far less strong
15:27:23 <n0ano> well, the ultimate goal is to have a `python-ganttclient', like other projects, and isolate the client access that way
15:27:27 <toan-tran> bauzas: ok, I think I understand what you're saying
15:27:37 <bauzas> n0ano: agreed, that will be future plan
15:27:55 <toan-tran> basically you want to create an *interface* that scheduler listent to update db
15:28:02 <bauzas> n0ano: at the moment, we only have that nova.scheduler.client proposed in 82778 to be the last standing man
15:28:09 <toan-tran> and create something inside nova-compute to use that interface
15:28:25 <toan-tran> but instead of using an API, you use python call
15:28:55 <toan-tran> is that right?
15:29:14 <bauzas> toan-tran: I'm just thinking of a way to have a clean interface now, before having a python client :)
15:29:41 <bauzas> so, if we say nova.scheduler.client is the last standing man in Nova
15:29:53 <toan-tran> bauzas: I'm agreed that we would have to make some channel from nova to gantt to update DB
15:30:09 <toan-tran> I'm just worried that the channel is low-level function call
15:30:10 <bauzas> that means that we need to have compatibility in between nova.scheduler.client code and Scheduler
15:30:28 <toan-tran> it should be temporary
15:30:59 <bauzas> toan-tran: if we want a python-ganttclient we need a gantt-api :)
15:31:13 <n0ano> bauzas, +1
15:31:18 <toan-tran> bauzas: +1
15:31:31 <n0ano> the question is do we need python-ganttclient before we can make the split
15:31:40 <bauzas> n0ano: nope
15:31:47 <bauzas> n0ano: RPC API is enough
15:32:04 <n0ano> then I'm good, stepwise development works for me
15:32:17 <bauzas> n0ano: hence https://review.openstack.org/#/c/97232/
15:32:40 <n0ano> actually, that leads to the action for all
15:33:01 <n0ano> #all to review https://review.openstack.org/#/c/82778 and https://review.openstack.org/#/c/97232/
15:33:10 <bauzas> n0ano: thanks
15:33:34 <n0ano> I think we should move on
15:33:40 <bauzas> n0ano: as I'm just trying to explain, 97232 is the only piece of code needed to have a clear interface in between Gantt and Nova
15:34:09 <n0ano> bauzas, +1
15:34:18 <bauzas> n0ano: we can move on without that piece of code, but then we will need to manage compatibilty at the DB level
15:34:42 <n0ano> #topic policy based scheduler
15:35:01 <toan-tran> bauzas: I suggest you put the roadmap somewhere, to know which patch corresponds to which piece of the roadmap
15:35:09 <n0ano> toan-tran, I believe this is your topic, I noticed there was some reviews (fairly negative) on your BP
15:35:21 <bauzas> n0ano: could you please undo ? there is a WIP patch for isolate-scheduler-db
15:35:50 <n0ano> #topic code forklift
15:35:59 <n0ano> sorry, got ahead of myself
15:36:05 <tianst> isolate scheduler db, I put a daft patch , just want to make sure something,  one :if i did the right thing? two:need Depends bauzas's patch and split the API update to one patch?
15:36:24 <tianst> n0ano :0
15:36:31 <tianst> :)
15:36:43 <bauzas> tianst: well, I made some comments
15:36:54 <bauzas> tianst: maybe we could discuss that later on
15:36:59 <tianst> bauzas : I see thanks
15:37:08 <bauzas> tianst: btw, your topic name is incorrect
15:37:11 <n0ano> I haven't had a chance to review it yet, but I will later today
15:37:27 <bauzas> tianst: can't find it thru gerrit https://review.openstack.org/#/q/status:open+topic:bp/isolate-scheduler-db,n,z
15:37:34 <tianst> n0ano ,thanks
15:37:47 <bauzas> tianst: you made an excellent job
15:38:00 <bauzas> tianst: I'm just worried about the fact the bp is not validated yet
15:38:10 <tianst> bauzas: it's a draft, i will update tomorrow
15:38:11 <bauzas> https://review.openstack.org/#/c/89893/
15:38:19 <bauzas> tianst: yep, I know
15:38:37 <bauzas> tianst: would you mind if I propose another patchset ?
15:38:37 <n0ano> bauzas, I'm assuming the BP will get validated and I don't want to just sit and wait for that
15:39:08 <bauzas> n0ano: yey, but I had to do many back-and-forths with the sched-lib
15:39:29 <bauzas> n0ano: I don't want to have the same situation for isolate-sched-db
15:39:44 <n0ano> bauzas, hopefully this one is slightly less controversial (I'm an optimist)
15:39:52 <bauzas> n0ano: I'm also :)
15:40:11 <bauzas> so, tianst, would you mind if I'm proposing another patchset ?
15:40:24 <bauzas> so we could co-author it
15:40:31 <tianst> nop
15:40:32 <bauzas> that will be very quick
15:40:37 <bauzas> ok cool
15:41:02 <tianst> :)
15:41:07 <n0ano> OK, anything else about the forklift?
15:41:35 <n0ano> #topic policy based scheduler
15:41:41 <bauzas> well, we're running out of time :)
15:41:44 <bauzas> yep
15:41:57 <n0ano> toan-tran, anything you want to say today?
15:42:06 <toan-tran> i'll be quick
15:42:15 <toan-tran> I'm rewritting the proposal
15:42:35 <toan-tran> last time I made a mistake presenting usecases one by one
15:42:55 <toan-tran> it's easy to have patch for one usecase, but if we're keep doing that it's complicated
15:43:22 <toan-tran> I will re-present it with the whole picture, it's better to see the usefulness of this bp
15:43:36 <bauzas> toan-tran: the problem is that your proposal is big
15:43:45 <toan-tran> yes, the bp was proposed several months ago
15:43:50 <bauzas> toan-tran: so it should be managed by a single bp
15:43:53 <toan-tran> and it was the problem
15:44:05 <toan-tran> so I'm trying to break to down into pieces
15:44:06 <bauzas> should *not
15:44:10 <bauzas> right
15:44:18 <n0ano> toan-tran, yeah, it looks like you have to justify things a bit, breaking it up into smaller pieces might be easier
15:44:31 <toan-tran> n0ano: +1
15:44:31 <bauzas> maybe the rationale should still reside in a Wikipage
15:44:48 <mspreitz> I have an observation and a suggestion
15:44:53 <bauzas> you can just provide as many blueprints as you need
15:45:01 <bauzas> related to that
15:45:02 <toan-tran> bauzas: some old text is here: https://docs.google.com/document/d/1gr4Pb1ErXymxN9QXR4G_jVjLqNOg2ij9oA0JrLwMVRA/edit
15:45:13 <toan-tran> mspreitz: go ahead
15:45:51 <mspreitz> I have reviewed https://docs.google.com/document/d/1RfP7jRsw1mXMjd7in72ARjK0fTrsQv1bqolOriIQB2Y/edit# and the central idea there is that what you are adding is support for provider policy...
15:46:11 <mspreitz> When we get into policy-driven scheduling, there are two sources for policy : the user and the provider
15:46:44 <mspreitz> What I see your BP about is enabling the provider to make some fine-grained declarations of provider policy
15:46:53 <mspreitz> Leave the rest out of it
15:46:58 <mspreitz> That's a way to focus
15:47:18 <mspreitz> full stop
15:48:11 <toan-tran> mspreitz: well at first the idea is to have an engine driven by policy
15:48:28 <toan-tran> regardless of who the policy is provided by
15:48:46 <toan-tran> so we will have provider's polciy, and user's policy
15:48:58 <mspreitz> In some sense today's scheduler is driven by policy.  Both you and Yathi are working with user policy being given today
15:49:09 <toan-tran> but that's for later, right now I'm focusing on the engine itself
15:49:15 <mspreitz> I myself and Yathi want richer user policy input, but that's a separate issue
15:49:52 <mspreitz> So here is the factoring I see...
15:50:21 <mspreitz> One part is about letting the provider make fine-grained policy statements; those can, as outlined in https://docs.google.com/document/d/1RfP7jRsw1mXMjd7in72ARjK0fTrsQv1bqolOriIQB2Y/edit# , be parameters of today's scheduler
15:50:24 <toan-tran> mspreitz: +1, the obstacle for me with user's policy is that we don't have an API for user to delare that
15:50:41 <toan-tran> so I'm limited with provider policy only
15:50:52 <mspreitz> Other parts are about changing how the scheduler deals with incoming policy
15:50:58 <bauzas> toan-tran: I think that once we succeed in getting Gantt out
15:51:01 <toan-tran> but that's the thing I see in your proposal
15:51:13 <bauzas> toan-tran: the first item will be to provide an API
15:51:42 <bauzas> toan-tran: I have some experience of Pecan and WSME, I will be able to help
15:51:42 <toan-tran> bauzas: +1
15:51:51 <mspreitz> Yathi and I have been working on the API for user policy, I see you as contributing API for provider policy, let us not mix the two up
15:52:14 <toan-tran> mspreitz: right
15:52:14 <mspreitz> they are different things
15:52:22 <bauzas> toan-tran: mspreitz: I'm almost sure Nova cores won't want to extend Nova API for these purposes
15:52:38 <toan-tran> for now  I'm focusing on the engine itself, not the policy part
15:52:38 <bauzas> toan-tran: mspreitz: that needs to land on Gantt
15:52:44 * johnthetubaguy is lurking, in case someone had a question
15:52:48 <toan-tran> bauzas: +1
15:52:59 <mspreitz> Yes, I thought everyone agreed that Gantt comes first
15:53:18 <n0ano> toan-tran, note, focusing on the eingine might be your problem, it's hard to justify the engine without a user of it
15:53:20 <mspreitz> As for extending API to accept *more* user policy, yes that is not settled yet
15:53:21 <bauzas> mspreitz: by saying that, you implicitely accept the dependency on a Gantt API
15:53:41 <toan-tran> n0ano: that's why I'm working on its presentation :)
15:54:13 <toan-tran> mspreitz: I guess the API part should be talked once we have some discussion of gantt API
15:54:19 <bauzas> johnthetubaguy: we had some discussion abotu https://review.openstack.org/97232
15:54:37 <bauzas> johnthetubaguy: let's discuss it in #openstack-nova once that meeting ends up
15:54:47 <mspreitz> bauzas: I think Nova's client-facing API for accepting user policy does not necessarily have to expose Gantt; consider the proposals that Yathi and I and others have made; the implementation, OTOH, will involve Gantt
15:54:47 <johnthetubaguy> bauzas: ack
15:55:17 <toan-tran> FYI, I'm looking ath the work in Congress
15:55:33 <toan-tran> they're proposing some really interesting approach on policy part
15:55:35 <bauzas> mspreitz: what if Nova refuses to extend Nova API for adding user policies ?
15:56:03 <toan-tran> if it becomes official, we can benefit from congress API & policy language
15:56:22 <bauzas> toan-tran: I agree with you, but coming from a Stackforge project, that's tough now
15:56:37 <bauzas> toan-tran: we can't bet on a project to become integrated
15:56:44 <mspreitz> Refusing an API for accepting more user policy input = refusing to cope with more user policy.  If that's the community's decision, I'll probably be taking my marbles elsewhere.
15:57:16 <toan-tran> mspreitz: now now don't be on defensive :)
15:57:43 <toan-tran> I think that's the need (that's why I do it :) )
15:57:53 <n0ano> OK, we're running out of time and I do have one quick open
15:58:03 <toan-tran> I just see some work before it can be merged
15:58:04 <bauzas> toan-tran: so I would prefer to have an API accepting policies in Gantt and a possible backend that would be Congress
15:58:05 <n0ano> #topic opens
15:58:07 <mspreitz> I'm just saying that if the community decides to not work on a topic, then I will not try to work with this community on that topic
15:58:22 <toan-tran> bauzas: +1
15:58:42 <bauzas> mspreitz: well, I'm not saying the community will push back
15:59:03 <mspreitz> bauzas: you do not have to say it, it has already been said and done.  But not settled.
15:59:03 <n0ano> my BP https://review.openstack.org/#/c/97903/ for changing the compute node updates to the DB has been approved, expect to see code to implement it real soon now
15:59:06 <mspreitz> On to opens
15:59:07 <bauzas> mspreitz: but maybe it could be said that Nova is not the right place for it
15:59:24 <bauzas> n0ano: cool
15:59:31 <n0ano> reviews of the code, as always, are appreciated
15:59:38 <bauzas> :)
16:00:03 <n0ano> that's about all the time we have, barring any last minute opens
16:00:27 <bauzas> nope
16:00:30 <n0ano> OK, tnx everyone, we'll talk again next week.
16:00:31 <bauzas> thanks for your work
16:00:35 <n0ano> #endmeeting