19:01:02 #startmeeting Ironic 19:01:03 Meeting started Mon Nov 25 19:01:02 2013 UTC and is due to finish in 60 minutes. The chair is NobodyCam. Information about MeetBot at http://wiki.debian.org/MeetBot. 19:01:04 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 19:01:07 The meeting name has been set to 'ironic' 19:01:10 o/ 19:01:17 #chair devananda 19:01:18 Current chairs: NobodyCam devananda 19:01:25 welcome all to the Ironc meeting 19:01:26 o/ 19:01:27 o/ 19:01:29 hey 19:01:30 hi 19:01:30 hola 19:01:32 o/ 19:01:35 hey 19:01:40 The agenda can ofc be found at: 19:01:41 #link https://wiki.openstack.org/wiki/Meetings/Ironic#Agenda_for_next_meeting 19:01:50 #toplic Greetings, roll-call and announcements 19:02:06 hey all :) 19:02:26 #topic Greetings, roll-call, and announcements 19:02:29 ok any notes / announcemmeta 19:02:57 lol toplic dosen't work 19:03:02 hehw 19:03:52 #topic integration and testing 19:04:10 romcheg: any updates here 19:04:12 ahh no in-progress action items?! 19:04:22 hehehe 19:04:23 NobodyCam: There are some updates 19:04:46 Most of the "third party" patches are merged 19:04:56 w00t :) 19:05:01 s/most/all/g 19:05:26 just one thing, last week I said I would map some code/bugs to be ported from nova bm to ironic I started mapping them at https://etherpad.openstack.org/p/IronicWhiteBoard (at the bottom) 19:05:41 Two patches left: #link https://review.openstack.org/#/c/53917/ and #link https://review.openstack.org/#/c/48109/ 19:05:58 great :) 19:06:19 The first one Adds the jobs to infra config. Apparently it won't land until clarkb finished his refactoring 19:06:32 lucasagomes, those are the ones listed at the bottom? 19:06:45 ctracey, yes 19:06:55 ok cool, thanks 19:07:01 I have a update on the nova driver 19:07:20 I plan to make the jobs non-voting to be able to safely add them to tempest in order to test 48109 properly 19:08:18 I put up a new nova-ironic dib element in my git hub. this element pulls patch set 3 of the ironic nova driver. https://github.com/NoBodyCam/ironic-element 19:08:23 #link https://github.com/NoBodyCam/ironic-element 19:09:18 romcheg: let's start with non-gating for ironic, as you say, but plan to move them to be gating quickly 19:09:25 I made some changes to FakePower (that are not yet ready) tnat will allow fake driver to go thru a deploy 19:09:43 romcheg: by "non-voting" you mean voting +1/-1, but not gating, I assume 19:09:53 devananda: yes 19:10:00 romcheg: :) 19:10:01 I planned to make them voting 19:10:34 romcheg: so yes, let's start with that, and once we see that it works (few days, maybe a week) move them to gating (for ironic only, ofc) 19:10:34 However it's not safe to ass voting Ironic jobs to infra 19:10:41 g/ass/add/g 19:10:44 right 19:10:48 :) 19:11:10 romcheg: I would vote for non-voting as forst step 19:11:16 first 19:11:20 NobodyCam: you mean non-gating 19:11:53 yes... but I think I have heard the term non-voting 19:11:58 we have used voting/non-gating on other projects, and that has worked well 19:12:06 fwiw 19:12:12 :) 19:12:13 devananda: It should be non-voting because it will -1 every patch to tempest if it doesn't work 19:12:30 *otherwise 19:12:49 romcheg: it shouldn't be enabled in the general tempest pipeline 19:13:15 devananda: that's a good idea 19:13:33 I will put it to the experimental pipeline to tempest 19:13:54 Then I will be able to make in voting/gating from the beginning 19:13:57 romcheg: isn't there a flag to enable/disable it? 19:14:16 romcheg: that flag defaults to 0. that's fine. in the ironic pipeline, we'll flip that flag on 19:14:54 yea. there is this: https://review.openstack.org/#/c/48109/6/tempest/config.py default=False 19:15:22 devananda: Yes, it's desabled 19:15:46 But to test the tests in this patch we need to enable that flag 19:16:11 That's what the new jobs in 53917 are 19:16:13 and this, https://review.openstack.org/#/c/53899/6/devstack-vm-gate-wrap.sh, which defaults DEVSTACK_GATE_IRONIC=0 19:16:15 for 19:16:45 romcheg: exactly 19:16:47 The new jobs I introduces set DEVSTACK_GATE_IRONIC to 1 19:17:26 I'm going to add those jobs to the expetimental pipeline in tempest 19:17:41 That will allow us to test the API tests 19:17:45 romcheg: AIUI, that will enable the tempest tests for ironic in the ironic check and gate pipelines only 19:18:26 It won't if I add it to the experimental pipeline 19:18:36 i mean, the patches you have now will ^ 19:19:11 They will do that for Iroic 19:19:20 But we need to do that for tempest 19:19:26 let's not add something to tempest's pipe. 19:19:27 why? 19:19:39 To test changes to Ironic tests 19:19:57 oh. gotcha 19:20:08 There is a special pipeline for that 19:20:17 cause you can't see the tempest test changes in ironic's test pipeline. of course. 19:20:27 cool 19:20:54 It allows to run some jobs by posting "check experimental" 19:21:01 :) great romcheg want a action item? 19:21:11 I do! 19:21:12 ^) 19:21:26 Ok, I tool too much of the time now, sorry 19:21:41 #action enable ironic in experimental pipeline 19:21:59 #action ( romcheg ) enable ironic in experimental pipeline 19:22:04 NobodyCam: Neutron/nova interation discussion time? 19:22:22 dkehn: sure 19:22:36 #topic Nova / neutron 19:22:39 ok, 1st q: what level of support does Ironic need 19:22:56 one possibility full https://github.com/openstack/nova/blob/master/nova/network/api.py support 19:23:05 or not 19:23:28 cue crickets 19:23:45 * devananda skims api 19:23:46 sorry was looking at the link 19:24:10 I kinda think we'll need the full api. 19:24:20 I'm assigning that Nova will be nowhere 19:24:25 dkehn: is that the n-net api or the neutron api (or are they the same)? 19:24:35 sma 19:24:37 same 19:24:39 k 19:25:01 so basically it packages up a request and sends to the neutron API 19:25:08 we could prob do with out the dns functions 19:25:12 dkehn: so, at least for now, we can assume nova is still in the picture 19:25:20 see the __init__.py where it gets the API for nuetron 19:25:29 oh ok 19:25:40 we're trying not to rewrite nova :) 19:25:47 that will changes things a bit then we could go that route 19:26:04 dkehn: the interaction we need is that the PXE driver in particular needs to do certain things 19:26:05 instead of implementing the network (at least for neutron) in Ironic 19:26:11 sure 19:26:27 dkehn: that nova doesn't know about. like manage the DHCP BOOT response, and associate an IP on a separate network for deployment, temporarily 19:27:07 dkehn: so the neutron interaction is going to be coming from the PXE driver layer, not eg. the ironic ConductorManager layer 19:27:20 GheRivero: any in put on this ^^ 19:27:44 ok, that seems like we haven't talked about that yet, still mulling it over 19:28:22 GheRivero: does your PXE drive handle something like this? 19:28:25 looking at the nova-ironic driver, most of the network will be do still by nova. We (ironic) wwill mostly need a way to manage the dhcp_opts 19:28:49 NobodyCam, lucasagomes, and lifeless and I talked last week about some different ways we can initiate (re)mapping of nova instance <-> ironic condcutor <-> neutron dhcp_opts 19:28:57 GheRivero: we talked about that previous;ly , in that putting it into the module/pxe.py 19:28:57 what came out of that is this BP 19:28:59 #link https://blueprints.launchpad.net/ironic/+spec/instance-mapping-by-consistent-hash 19:29:21 what is in the nova/virt/baremetal/pxe.py today 19:29:43 GheRivero: we will need to create and associate deploy networks and ips 19:30:02 Need to cover non-pxe driver as well 19:30:02 on the ironic white board etherpad there's also some notes related to consistent hashing 19:30:04 #link https://etherpad.openstack.org/p/IronicWhiteBoard 19:30:05 tl;dr -- each Conductor will know what instances it is responsible for, and needs to set the neutron dhcp_opts for those instances to point to its own IP for TFTP 19:30:28 wh: non-pxe drivers may or may not need neutron integration for DHCP BOOT 19:31:17 so in the context of the conductor it will know its netwrok that it needs the PXE boot setup for (tftp server, etc.) 19:31:57 Can neutron today asign a ip address for a bare-metal node with non-pxe driver? 19:32:07 wh: put another way, only the PXE driver needs to manage PXE booting 19:32:43 wh: today, the only other driver in nova-baremetal is Tilera. IIRC, it uses NFS + SSH for booting, not DHCP, so Neutron isn't involved at that layer at all 19:32:50 such that when is call neutron (or nova) it has enough knowledge for the request info 19:32:55 wh: neutron still assigns the *tenant* IP, of course 19:33:13 dkehn: conductor will know that it is responsible for a node, and it will know its own ip 19:33:21 I am thinking about virtual media 19:33:23 k 19:33:51 pxe will have a block of deploy ips it can use (atp, deva am I saying that correctly) 19:34:34 dkehn: there is some glue we are workig on - that BP attempts to explain it - so that, for any instance that Nova is trying to boot, the Ironic PXE driver will know what DHCP_OPTS need to be sent to Neutron for that instance's deploy to work 19:35:01 dkehn: as far as the integration with neutron, i think we only need a way for the PXE driver to send that info to neutron directly 19:35:18 ok, so that into is going to be tuxked awayin the module/pxe.py, or should be 19:35:22 dkehn: i /think/ we're going to remove that from Nova. NobodyCam, amirite? 19:35:36 dkehn: right -- ironic/drivers/modules/pxe.py 19:35:38 right 19:36:38 running short on time anything elese here? 19:36:40 so we are back to the original question of integrating to neutron - there is an eample in nova - is that the right track? and what do we need - of course the plumbing will be required 19:36:57 wh: same thing. Point is that a virtual media based deployment driver will not need to set special DHCP BOOT options in neutron. so it won't need this particular bit of integration with neutron, which is why we're removing it from the common code in nova/virt/drivers/ironic.py 19:37:04 i think only a small fraction of the api will be needed 19:37:12 GheRivero: ++ 19:37:16 GheRivero: agreed 19:37:39 - manage dhcp_options 19:37:45 I guess in the shortterm we ned the plumbing and then the API will be a living thing 19:38:12 - and deployment ip? 19:38:19 plumbing logic would be small , neutron only? 19:38:22 dkehn: i can help post-meeting go through the nova network API and figure out what we need 19:38:35 devananda: k 19:38:36 if a conductor dies, i guess the deployment network also changes 19:38:52 devananda: note meeting day for me maybe later, later 19:39:10 dkehn: ok. ping me or, better yet, send me a gcal invite for when you have time 19:39:20 awesome 19:39:27 great :) 19:39:32 me likey 19:39:39 action itme? 19:39:42 :) 19:39:54 #action dkehn and devananda to iron out what nova-network-like API bits are needed in ironic/drivers/modules/pxe.py 19:39:58 hit me baby 19:39:58 :) 19:40:16 NobodyCam: moving on? 19:40:30 #topic python-ironicclient 19:40:54 just need to think of how the driver can start a deploy 19:41:03 ahh right 19:41:22 lucasagomes: we should probably create a similar API to how we change power state 19:41:36 yes, we need to offer something in the lib 19:41:46 a method call where he can do some node.deploy() 19:42:04 :) or set_deploy 19:42:10 *start_deploy 19:42:21 yea 19:42:35 so we also need to think about other driver interfaces 19:42:42 how do we initiate things like 19:42:51 - tear down 19:42:55 - start console 19:42:59 - rescue 19:43:03 - migrate 19:43:06 etc 19:43:33 devananda: +++ console is needed for parody 19:43:38 we will need deploy&teardown and start/stop_console for Icehouse 19:43:44 :) 19:43:45 others are long term but worth keeping in mind 19:43:48 yes we need also to expose a way where we can validate such interfaces 19:43:57 before triggering the deploy 19:44:17 :) oh yes 19:44:34 +1 lucas, your patch? 19:44:41 so some thing like validate_deploy & start_deploy 19:44:42 for validation 19:44:44 I will do some work on that, I had a patch (which is now abandoned) that do it (kinda) 19:44:51 yuriyz, yes, I will revive that patch 19:45:18 lucasagomes: action item? 19:45:27 NobodyCam, please :) 19:45:36 so we have now PUT /v1/node/XXX/state/power VALUE 19:46:11 #action lucasagomes look in to adding validate and start deploy methods to ironic Client 19:46:22 i think that's sufficient for other states, eg, state/deploy and state/console 19:46:27 ok to move on? 19:46:33 ya 19:46:45 #topic API discussion 19:47:03 ahn on the API side, I did some refactor in our resources 19:47:29 to use WSME custom types and complex types validation and remove a lot of the complexity we had before 19:47:36 patches are upstream waiting for review 19:47:40 lucasagomes: i need to finish reviewing your WSME patch. got some done friday, but didn't finish 19:47:56 devananda, ah thanks :) 19:48:20 lifeless -2 on https://review.openstack.org/56612 19:49:37 yuriyz: I did 19:50:04 I add some comments 19:50:05 any comments on vender_passthru 19:50:06 yuriyz: i also don't like exposing /vendor_passthru/ publicly without auth 19:50:07 yuriyz: oh, I see 19:50:20 yuriyz: sounds like a keystone bug :) 19:50:50 whatever the needs we have, it won't be unique. We should share it by doing it right, once - in keystone. 19:50:55 so if not using the kernel cmd, there's any other way we can use to pass it to the deploy ramdisk? 19:51:06 lifeless: ++ 19:51:16 lucasagomes: there are no other _simple_ ways 19:51:16 lucasagomes: we could write it to a file in the tftp root and suck that up from the ramdisk 19:51:26 DHCP param limited 255 bytes 19:51:38 it would be publically visible, but so is the kernel commandline. Its a race we know about. 19:51:51 lucasagomes: there are some odd vendor specific ways that folks have proposed, which potentially would be more secure 19:52:08 yuriyz: Maybe we should to Keystone trusts instead of tokens? 19:52:39 login/password credentials? 19:52:51 yuriyz: I think there is a chance we can use it to get a token inside a ramdisk 19:52:53 I see, maybe we should start a list at the ironic white board etherpad with the possible ways of doing this 19:53:10 lucasagomes: ++ 19:53:18 + 19:53:20 yuriyz: No, trust is a special thing in keystone that allows to get a new token 19:53:26 ++ 19:53:51 write it to a file in the tftp root 19:53:56 so while I would like toimprove teh security of this API by using a better token, or a one-use-only token, or by transmitting the token securely 19:54:01 no better or worse than kernel cmd line andunlimited in size 19:54:25 i dont want us to spend another week (or more) engineering a better solution to this that what Nova-baremetal has 19:55:01 the current deploy_key (just a string) is sufficient for now 19:55:22 yes, we should whiteboard a better solution for post-Icehouse 19:55:39 but my objection to this patch is that it opens all of /vendor_passthru/ to unauthenticated access in the public API 19:55:46 *public API service 19:55:57 devananda: so going with file in tft dir? 19:56:07 NobodyCam: that is tangential to my objection 19:56:12 yea it's less than ideal 19:56:20 how we get the key there != how we check the key in teh API when its posted back 19:56:42 if we can stick a full keystone auth token in a file in the tftp dir, great -- that seems best. 19:56:53 and maybe add new config option for allow private API? 19:56:54 then we don't need to lower the auth requirement of /vendor_passthru 19:57:02 if we CAN"T use a full keystone token 19:57:34 switching topic for last three minutes 19:57:36 we need a CONF option to allow unprivileged access to /vendor_passthru, which admins will explicitly need to set up a separate API service for that is not on a public PI 19:57:41 ack 19:57:44 #topic open discussion 19:57:57 yuriyz: migration scripts! 19:57:58 any body? any thing? 19:58:09 ya missed that 19:58:10 there's the merge of migration scripts 19:58:13 Ironic not in production 19:58:26 #link https://review.openstack.org/#/c/57722/ 19:58:34 +1 for modify old scripts now 19:58:44 yuriyz: no, but if this is a problem, how will we solve this when we ARE in production if it comes up again? 19:58:47 for bugfix 19:59:18 sqlalchemy-migrate is very buggy 19:59:27 yuriyz: and we can fix it 19:59:27 yuriyz, we can't just create a new migration that fix the UCs? 19:59:33 Let's switch to Alembic :) 19:59:45 romcheg: + 19:59:46 romcheg +1 19:59:51 yuriyz: either make new migration that fixes things, or make patch to sqla-migrate ... 19:59:58 romcheg: -1 20:00:18 new migration with all _two_ UC for table 20:00:19 devananda: I still have one +1 :-P 20:01:00 ok I write new one 20:01:01 yuriyz: if you have to drop all indexes and recreate them to fix this, that's fine. still better than changing history 20:01:04 romcheg: too big of a change for ice house target 20:01:13 ok 20:01:16 ok, we're over time :) 20:01:29 let's continue as necessary back in channel. Thanks everyone!! 20:01:30 no meeting after us now thou 20:01:34 oh... 20:01:41 NobodyCam: I realize that. But after we're in production we won't be able to do that 20:01:46 but we can go back to chnnel 20:01:59 if we can continue the discussion here it would be better 20:02:05 because people look at the logs 20:02:07 yea. calendar says no one's after us 20:02:08 let's stay here 20:02:12 k 20:02:27 romcheg: other projects have been discussing moving to alembic for several cycles 20:03:09 romcheg: but instead, afaik, openstack is now maintaining sqla-migrate. other projects are still using it. the common code for migrations has been moved to oslo recently 20:03:13 devananda: what has been stopping the pthers 20:03:29 romcheg: and in fact I'm porting that code from oslo to ironic :) 20:03:30 I can speak to that, its not trivial 20:03:31 #link https://review.openstack.org/#/c/56516/6 20:03:51 but allows migrationing back and forth 20:04:10 afaik, the plan is to get projects using the shared oslo db migration code 20:04:37 devananda: that is the perfect plan, if it really exists 20:05:15 clarkb: any comment on slqa-migrate // alembic // oslo db.sqlalchemy.test_migrations ? 20:06:04 they should run in per test or per process db schemas and not worry about locking using shared resources 20:06:32 hehe 20:06:47 clarkb: context here is should-we-use-alembic-or-sqlamigrate 20:07:47 oh that, no input from me 20:07:51 ack 20:07:54 :-p 20:08:00 love it 20:08:08 so stick with sqla and fix it? 20:08:42 is there any consensis from other projects 20:08:58 or is the same question being batted around 20:09:00 I think general consensus is move to alembic 20:09:22 #action devananda to find out project's common plans for sqla-migrate vs alembic, why there are test_migration code in oslo, and whether we should be fixing bugs in sqla-migrate 20:09:35 ++ Ty devananda 20:10:14 any thing else?? 20:11:05 ok we can handle any thing else in channel 20:11:55 Thank you every one. great meeting 20:12:18 #endmeeting