15:00:44 #startmeeting gantt 15:00:45 Meeting started Tue Jun 24 15:00:44 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:46 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 15:00:48 The meeting name has been set to 'gantt' 15:00:54 anyone here to talk about the scheduler? 15:00:55 \o 15:01:54 sounds like the crowds are silent :) 15:02:08 listen to the crickets :-) 15:02:34 well, it's the Summer, so that's possible :) 15:02:48 well, we can make it quick 15:02:53 #topic code forklift 15:03:06 soooooo 15:03:22 long debates this week with johnthetubaguy :) 15:03:24 I see that john garbutt doesn't like one of your patches, is that one crucial 15:03:43 well, which one do you refer ? 15:03:53 https://review.openstack.org/#/c/97232/ 15:04:00 ah, this one 15:04:12 (I know now all of them by the numbers ;) ) 15:04:24 it's shorter :-) 15:04:38 so, indeed, the problem is about how we care until Gantt is out 15:04:54 I finally agreed with John 15:05:21 if we can do the split and then do 97232 then I don't have a problem waiting for it also, my prime goal is just doing the split 15:05:28 indeed 15:05:39 we will still have many things to do 15:06:08 I looked at 82778 and didn't see anything wrong (probably a weakness in my pyhthon foo) 15:06:12 so, let's unscope 97232 from the pre-split tasks 15:06:21 +1 15:06:27 yey, the real debate is about 82778 15:06:39 everything was fine until last week... 15:07:06 the idea is to update the stats without returning nothing 15:07:12 that's cool 15:07:14 but... 15:07:17 * johnthetubaguy waves 15:07:19 (teaser) 15:07:45 so, everything is setup in resourcetracker and updated to the scheduler 15:07:58 nothing is needed to be returned to RT 15:08:01 nothing but... 15:08:19 I discovered a section of PCI code asking explicitely for the compute node id 15:08:36 which is not returned back when creating 15:08:46 so that's blocking the creation of computenode in TR 15:08:47 RT 15:09:16 yeah, things can get very intertwined 15:09:16 I did the PCI code review and there is no clear benefit of keeping the cn id 15:09:38 that's basically for raising an exception and saying which CN is failing 15:09:52 so, yjiang5 agreed on removing that cn id from PCI 15:10:07 but until that, compute node creations has to be done on the RT side 15:10:19 so now you're dependent upon the change to the PCI code, right? 15:10:32 nope 15:10:46 because that's life, and we have to figure out another way 15:10:51 n0ano: I think we can leave compute node in nova basically 15:11:04 n0ano: and gantt just has its own copy 15:11:22 that was most of the previous talk I had with johnthetubaguy, about keeping compute node in Nova :) 15:11:30 n0ano: so PCI stuff still goes in there tables (till they fix that) 15:11:40 so n0ano your thoughts are welcome here :) 15:11:52 yeah, would be good to agree a direction here 15:12:09 I am pro leaving compute node in nova, and just not populating the stats there when we switch to gantt 15:12:30 a little concerned about 2 copies of compute node (one in nova, one in gantt) but, if we're careful, it's probably OK 15:12:35 that way we don't have to wait for PCI, they can do that at there own speed 15:13:02 +1 (not being depenent upon PCI changes is good) 15:13:08 n0ano: yeah, it just means we wrip it out of Nova later, and gantt needs a separate database and schema anyways 15:13:10 +1 too 15:13:25 I'm hearing violent agreement 15:13:36 yey, but the debate is not there :) 15:14:04 now we agree to workaround the current situation (RT has to know the CN ID) 15:14:08 bauzas, what does it take for PCI stuff to be done first 15:14:12 what's the best option ? 15:14:32 PaulMurray: good question, a quick code review showed me little effort here 15:14:43 bauzas, so why not do it? 15:14:45 PaulMurray: but I'm possibly missing a crucial thing 15:15:03 bauzas, I think you said it was for information in the exceptions? 15:15:11 bauzas, or at least logging 15:15:11 PaulMurray, I've been waiting 2 weeks for a simple change, things can take a long time to get done 15:15:19 PaulMurray: because PCI code is very sensitive, I have no way to correctly test it :) 15:15:39 yeah, its not worth doing PCI code 15:15:43 n0ano, no s*** 15:16:00 bauzas: I got confused where we are debating to be honest 15:16:08 PaulMurray: and I unfortunately discovered that PCI testing is a bit unsufficient because Jenkins was still happy with my change even if I was not giving back the id.... :) 15:16:17 the more stuff we are responsible for, the better 15:16:35 bauzas: yes, no PCI passthrough testing in the gate right now 15:17:10 n0ano: turns out we get PCI stats for scheduling OK, its just some internal account stuff that not scheduling related that happens to use ComputeNode that would stay in nova 15:17:12 ok, everyone happy with leaving compute nodes in RT ? 15:17:52 bauzas, no, but understand it may be better than waiting on pci 15:18:15 PaulMurray: what your worry with compute node in RT 15:18:19 johnthetubaguy, as I said, a little icky (2 copies) but probably OK, something to fix as soon as possible once gantt is split out 15:18:21 PaulMurray: the alternative was to give back the id when creating the node in Scheduler client code 15:18:47 n0ano: its just a slightly empty nova structure, the gnatt one will have to be different in shape regardless 15:19:00 bauzas, johnthetubaguy its only about making things cleaner for me 15:19:02 n0ano: there should be no data in two places, except the name 15:19:09 I made various code proposals about the split in different patchsets 15:19:21 PaulMurray: right, I see it as delete the ComputeNode independently of the scheduler split 15:19:24 people can compare and appreciate which one is better 15:20:11 I'm still having a -1 from Jenkins on the last patchset, but probably a short miss 15:20:26 or some tests to fix 15:20:28 bauzas, is the latest the one to review? 15:20:37 one sec, checking 15:20:45 bauzas, you made 3 revisions since I started to look 15:21:08 so, for the record, I am kinda pushing for this sort of approach: https://review.openstack.org/#/c/101858/ 15:21:24 bauzas, you do have a -1, I missed that (I `hate` color encodings) 15:21:37 ok, lemme give you details 15:21:42 basically, just move self.conductor_api.compute_node_update into the scheduler client 15:22:07 patchset #26 is everything done in Scheduler, compute nodes owned by sched client 15:22:08 so we drop a gantt client that would take the same stats and store them somewhere else, if you don't want nova-scheduler 15:22:27 nah, nevermind 15:22:29 so 15:23:07 its a tricky line to draw, thats agreed here 15:23:16 so, patchset #26 is everything done in sched client 15:23:32 johnthetubaguy, +2 (plus the devil is in the details) 15:23:34 patchset #27 is john's proposal about keeping creation in RT 15:23:50 patchset #30 is a CRUD interface 15:24:02 (everything done in sched client) 15:24:21 yup, https://review.openstack.org/#/c/101858 (which because #27) is just updating the stats in the client, and leaving the compute node in the RT 15:24:31 patchset #31 is john's idea, but a little rewritten 15:24:57 bauzas, I'm wondering if this should be marked work in progress 15:25:14 PaulMurray: I can, at least until Jenkins is happy 15:25:29 PaulMurray: but situation is changing everyday because of the confusion 15:25:39 yesterday, it was OK for reviewing 15:25:43 bauzas, its the latter I was thinking about 15:25:52 ok, putting WIP now 15:26:17 bauzas, although I know people don't review WIP# 15:26:32 bauzas: my patch had some fixed up unit tests you might want to borrow 15:26:33 bauzas, but I will :) 15:26:40 well, I think we need to agree on the approach 15:27:02 bauzas: what have we not agreed on at this point? 15:27:05 everyone's happy with keeping cn creation in RT and cn update in scheduler client ? 15:27:23 bauzas, +1 (that's my understanding) 15:27:27 johnthetubaguy: I was feeling a little confusion over here 15:27:33 PaulMurray ? 15:27:46 bauzas, not sure 15:28:12 bauzas, I think I am probably not deep enough into the problems here 15:28:14 PaulMurray: could you then review all the patchsets I mentioned and leave a comment directly in Gerrit ? 15:28:28 so just be mess things up a bit, I don't think we keep ComputeNode in RT, I think we remove that separately to this client work 15:28:40 bauzas, yes, I was half way through looking but got confused over what I should be looking at 15:28:56 this blueprint is awfully time-consuming, and I just want to make sure we all agree on what needs to be done 15:29:30 the last 2 weeks were about doing back and forthes on that patch, just want to make sure everybody will like the direction :) 15:30:09 bauzas, by "create compute node" do yo mean the conductor call to create it in db or do you mean the compute_node data structure? 15:30:49 RT will still issue the call to conductor create, and the DB model will stay in Nova :) 15:31:10 bauzas, I would prefer to see the db create and update in client library, but as I said 15:31:25 but in the proposal, the sched client is doing the update call 15:31:26 bauzas, I not sure I yunderstand the difficulties 15:31:28 to the conductor 15:31:49 well, there is no difficulty in having sched client owning the creation 15:32:00 you can look at patchset #26 15:32:05 that was the case 15:32:21 we just need to return the id when the creation is done 15:32:31 PaulMurray: let me find you a quick link, its this... 15:32:59 PaulMurray: https://github.com/openstack/nova/blob/master/nova/db/sqlalchemy/models.py#L1378 15:33:17 n0ano, as a process point, is it ok dwelling on this in this meeting? 15:33:17 PCI device stats are stored with a foreignkey into compute node table 15:33:37 PaulMurray, sure, this is the only agenda item for today 15:33:45 its not scheduler info, its resource tracker only state, so needs to stay in Nova 15:33:45 PaulMurray: https://review.openstack.org/#/c/82778/26/nova/scheduler/client.py here is the proposal having sched client owning conductor calls 15:34:23 PaulMurray: if the scheduler client owns the compute node, it ends up passing back the id, so that the compute node id is known to the PCI tracer 15:35:20 PaulMurray: so when you replace the nova scheduler client, the gantt client would have to still access the nova db, which is not allowed, so we need to first change the PCI stats, then we also end up pass back in id that should be interal to gantt, and its all very confusing 15:35:21 as I understand it, this is all a little convoluted in order to make the current PCI code happy 15:35:45 johnthetubaguy: I'm just wondering if we can imagine such scenario : 15:35:56 n0ano: yeah, further I think it doesn't work when you add in the gantt client, until you change the nova DB structures for the PCI devices 15:36:27 1. merge the client to place all creation/update calls and return the id with a FIXME comment 15:36:42 2. do the PCI work of removing that FK 15:36:43 updates only seems to work both ways though, although it leaves the old DB structures in Nova, till it deletes them, which we have to do anyway due to the different deprecation cycles 15:36:49 johnthetubaguy, well, one good thing is jiang is in my group so I can probably get his attention to make PCI changes :-) 15:36:51 3. provide a Gantt client 15:37:18 n0ano: right, but its a bit chain of changes that may never get into trunk 15:37:28 anyway,we're far from proposing a Gantt client now so there is high probability to have the PCI fix before the use of a Gantt client in Nova 15:38:06 johnthetubaguy, which is why we work around the PCI code for now and worry about fixing it later 15:38:11 n0ano, the reason I didn't get the ComputeNode object done in RT a while back was difficulties with PCI 15:38:36 n0ano, that's why I am sympathetic to the "PCI avoidance route" 15:38:42 n0ano: yeah, thats my preference 15:38:52 n0ano, sooner or later we need to clean up the PCI code 15:38:58 unfortunate that all roads lead back to the PCI code, oh well 15:39:20 and there is high visibility because of the SRIOV efforts 15:39:50 I don't have a problem with PCI & SR/IOV, it's just the implementation that needs to be cleaned up 15:39:56 n0ano, there was a suggestion (possibly from jiang) to make PCI a resource plugin for extensible RT 15:39:59 n0ano: +1 15:40:28 n0ano, we could try to make an effort to sort it out if that ever comes about 15:41:02 mid-cycle meetup coming soon, we should raise that issue then (both jiang & I will be there) 15:41:14 n0ano, me too 15:41:23 I won't be able to be there :( 15:41:41 bauzas, NP, I'll do your proxy :-) 15:42:06 my wife had the unsupportable thing to expect to release my 2.0 baby by these dates 15:42:23 I will be at the mid-cylce 15:42:32 just not really sure what we are disagreeing about here 15:42:34 bauzas, congratulations, that's a good excuse 15:43:05 johnthetubaguy, seems like the current PCI implementation is impacting two different areas, that's an indication that somethings wrong 15:43:21 anyway, that's also a matter of timeline 15:43:34 I would prefer this code to be merged before Juno-2 15:43:43 n0ano: yes, but we seem to have a solution to that now, but maybe I am missing something 15:43:55 basically, the refactor is very simple, but we care about how we should do it 15:44:15 johnthetubaguy, a work around for us but we would still like the PCI code to change later 15:45:20 n0ano: oh very true, I think the SRIOV stuff gets most of that into a better place, but there are other bits of work 15:45:48 as I keep saying, the devil is in the details 15:45:48 maybe I'm wrong, but if we talk about workarounds, why returning an id can't be a possible approach ? 15:46:21 bauzas, would that require changes to the PCI code? 15:46:32 bauzas, the db interface passes back the whole data structure with the id filled in 15:46:38 bauzas: what id are you returning, is the problem? and why, the key into the DB should the (compute host, compute node) tripple that gets returned from select destinations 15:46:38 n0ano: nope 15:46:41 bauzas, could do same? 15:47:38 PaulMurray: I just don't see what the scheduler should have to return the values you just sent it, given the values are out of date when you send them, but you know the better values yourself 15:47:51 ^ oops, why the scheduler, not what 15:47:58 johnthetubaguy: if we say that https://review.openstack.org/#/c/82778/26/nova/scheduler/client.py is returning the compute_node['id'], that's a workaround 15:48:01 johnthetubaguy, yes, fair enough 15:48:14 bauzas: but what would the gantt client do when you drop it in there? 15:48:36 bauzas: it is writing into a different database, so the id will not help the PCI stats that still talks to the Nova db 15:48:39 but we agreed to ask PCI guys to do the removal ? 15:49:27 bauzas, isn't the PCI stats part of the compute node information that would go to the scheduler? 15:49:27 as I said, in terms of planning, this is far sooner to remove the FK in PCI table that having Nova making use of a Gantt client 15:49:33 bauzas: its a bit trickier on the PCI side, it might make sense to keep it 15:49:59 johnthetubaguy: well, yjiang5 said he was ok to remove it 15:50:03 bauzas: can we go back to the question around the id, what would you return, and how does it help the PCI stats? 15:50:43 bauzas: it should go into the persistent resource tracker BP, so its more of a move, but lets not get distracted by PCI details 15:50:53 johnthetubaguy: https://review.openstack.org/#/c/82778/26/nova/scheduler/client.py L65 I would return values['id'] 15:51:17 bauzas: but its from the gantt db, not the nova db, so doesn't help the PCI stats 15:51:27 that id doesn't exist in the nova db 15:51:43 (when using the gantt client) 15:52:10 * johnthetubaguy so wishes he could draw a picture 15:53:12 * bauzas would love to see all of you in person :) 15:53:38 maybe we need our own meet up 15:53:44 https://awwapp.com/draw.html#0dca39e5 15:53:51 I'm saying that once we will a gantt client 15:54:18 PaulMurray, unfortunately, the july in Oregon and nov and Pars are the only near term options 15:54:40 s/and Pars/in Paris 15:54:59 bauzas: thats what I am trying to say, the id is from the wrong database: https://awwapp.com/draw.html#0dca39e5 15:55:07 we would possibly move the conductor calls back in RT in the _update() method and make use of the client, if necessary 15:55:49 bauzas: you can't access the nova DB directly from compute nodes, security reasons, so we need the conductor for that 15:56:08 the scheduler might need its own conductor, but thats a different story 15:56:33 johnthetubaguy: I would so love to show you my thoughts in the code directly... 15:56:41 (I have a gantt API plan in my head that doesn't involve REST...) 15:56:59 bauzas: which bit? 15:58:21 johnthetubaguy: https://review.openstack.org/#/c/82778/26/nova/compute/resource_tracker.py 15:58:34 johnthetubaguy: consider this one the trunk with gantt in use 15:59:28 unfortunately, I have another meeting and we're running out of time, I'll have to send you guys over to #openstack-nova 15:59:50 bauzas: so thats basically the gantt client I am imagining, but it talks to the scheduler "conductor", but right now that would break PCI if it were the nova client as well 16:00:07 let's move to #openstack-nova :) 16:00:13 so, I'll thank everyone, looking forward to an updated patch, and we'll talk again next week 16:00:17 bauzas: +1 16:00:18 n0ano: thanks a lot :) 16:00:25 #endmeeting