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