17:00:47 #startmeeting ironic 17:00:48 Meeting started Mon Mar 9 17:00:47 2015 UTC and is due to finish in 60 minutes. The chair is devananda. Information about MeetBot at http://wiki.debian.org/MeetBot. 17:00:49 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 17:00:52 The meeting name has been set to 'ironic' 17:00:59 o/ 17:01:06 o/ 17:01:10 as usual, the agenda is up -- https://wiki.openstack.org/wiki/Meetings/Ironic 17:01:39 o/ 17:01:45 it looks fairly light today, but I suspect we'll spend a fair bit of time on stuff 17:01:57 #topic announcements 17:01:59 o/ 17:02:16 no announcements, just a reminder -- we've now past the "feature proposal freeze" point 17:02:18 o/ 17:02:26 o/ 17:02:35 ie, no more specs should land for Kilo, because we already have a *TON* of work ahead of us, and only two weeks to land it 17:02:55 the exception possibly being the spec on api microversions (will get to that soon) 17:03:11 because it is informational and we've already actually landed the code 17:03:16 like, a month ago. 17:03:18 anyway... 17:03:21 :) 17:03:32 :) good 17:03:37 we're tracking the ongoing work here 17:03:39 #link https://launchpad.net/ironic/+milestone/kilo-3 17:04:05 during the next month (leading up to k3 and the subsequent RC release) please review things based on their status on launchpad 17:04:08 what does 'good progress' mean? no code to review yet? 17:04:24 rloo: means there is still code to be written, not available for review yet 17:04:24 I think we have a status for need code review 17:04:27 which concerns me 17:04:39 deva, partition image for IPA was on KIlo3 lp now it's not there 17:04:45 devananda, but for inspection code is there for review 17:04:48 we have a very aggressive goal here - another 16 "features" to review 17:05:10 if a blueprint is assigned to you and the status is incorrect -- dont tell me. go update it 17:05:23 if it needs more code, put it in "* progress" 17:05:24 devananda, ok 17:05:30 if ALL the code is up, put it in "needs review" 17:05:41 if ALL the code is landed, but it still needs docs or tests -- it is NOT done 17:06:05 the support for local boot, code-wise pretty much landed already 17:06:10 need docs ofc 17:06:13 I will continue to bump things as we get closer to feature freeze, which is only two weeks agao 17:06:16 *away 17:06:26 some docs can be done after that cut-off, too 17:06:28 * lucasagomes will mark as implented later 17:07:04 lucasagomes: which one do you need implemented. I can update that one for you later today 17:07:09 I'd like to just mention that we should also start to think about our thrid part testing needs. 17:07:10 don't hestitate to ping me or BadCub if something looks like the status is wrong and you can't change it, or you think something is not going ot make it and should be re-targeted 17:07:19 lucas: is uefi local boot coded landed? 17:07:25 NobodyCam: sure. but not in the next two weeks :) 17:07:32 oh ya 17:07:35 BadCub, https://blueprints.launchpad.net/ironic/+spec/local-boot-support-with-partition-images 17:07:38 NobodyCam: I think discussing our third-party testing (and all testing of drivers) is a great vancouver topic 17:07:40 deff not until after L 17:07:41 wanyen, it wasn't part of the spec 17:07:42 opend 17:07:45 opens 17:08:09 wanyen: we are still working on it, there are couple of reviews already out 17:08:10 lucas: The spec that Faizan proposed include uefi local boot 17:08:16 that's it for announcements -- let's move on, and we can continue discussing specific proposals in the opendiscussion later 17:08:17 thanks lucasagomes do you want me to change it now, r is there something else you need to add first? 17:08:58 BadCub, wanyen I think it's out of topic a bit. I ping you guys on the channel 17:09:02 #info feature proposal freeze is past. feature freeze is in two weeks. please revie all the code, following priorities on LP. 17:09:18 #info ping BadCub or devananda if you believe a status is wrong AND you can't change it yourself 17:09:22 #topic subteam status reports 17:09:55 adam_g: I saw you doing a bunch of functional-test-related things last week - but I dont see any notes on the white board 17:10:05 adam_g: is the status worth sharing yet? or still in-flight? 17:10:50 I see a note that we don't have naohirot today. I'll update the 'pad 17:12:03 GheRivero: looks like a lot of changes coming from oslo recently? wow ... 17:12:28 mostly synced and minor changes to use released versions 17:12:41 GheRivero: ok, cool. anything you feel is high-risk for this late in the cycle? 17:13:01 not really. 17:13:10 great 17:13:59 ok - any further comments on drivers before we move on? 17:14:26 just pointing out that pxe_ipa is now running on check 17:14:28 \o/ 17:14:31 (giving folks anoter minute) 17:14:49 devananda: We want two ilo defects milestone to be changed to kilo-3 17:15:04 #link https://bugs.launchpad.net/ironic/+bug/1418327 17:15:06 Launchpad bug 1418327 in Ironic "pxe_ilo and iscsi_ilo driver sets capabilities:boot_mode in node property if there is none" [High,In progress] - Assigned to Shivanand Tendulker (shivanand-tendulker) 17:15:14 #link ttps://bugs.launchpad.net/ironic/+bug/1412559 17:15:24 #link https://bugs.launchpad.net/ironic/+bug/1412559 17:15:25 Launchpad bug 1412559 in Ironic "agent_ilo deploy driver do not support uefi boot mode" [High,In progress] - Assigned to Shivanand Tendulker (shivanand-tendulker) 17:15:43 jroll, +1 o/ 17:15:58 agent / uefi sounds more like a feature :/ 17:16:11 #action devananda to review above bugs after the meeting 17:16:37 jroll, deva suggested us to file a bug for uefi/agent 17:16:37 devananda: thanks 17:16:43 jroll, no it is just switching between boot modes in agent ilo driver 17:16:44 huh. ok. 17:16:49 right on 17:17:10 thanks for the updates, everyone. let's move on 17:17:33 #topic python client's default microversion 17:17:54 for a bit of background here... 17:18:16 about a month ago, I wrote up microversion support for our API, following Nova's spec on it 17:18:24 though we didn't go through our own spec and just referenced theirs 17:18:49 when we (in particular lintan_ ) started adding support to the client to pass a version header to the server 17:19:00 there was considerable disagreement on what the default behavior should be 17:19:18 and a discussion ensued on both lintan_ 's review and on the spec which mrda subsequently proposed 17:19:26 #link https://review.openstack.org/#/c/155624/ 17:19:32 #link https://review.openstack.org/#/c/161110/ 17:20:05 I also started drafting a reply to rloo's concerns, but put it in an etherpad and asked -infra to sanity-check me 17:20:21 I haven't gotten around to polishing it and actually sending it ... but it does provide some context none the less 17:20:24 #link https://etherpad.openstack.org/p/oHVxTVRFix 17:20:40 17:20:43 let's discuss :) 17:22:08 Probably would have been helpful to have reviewed these links before the meeting :/ 17:22:16 note that the API defaults to minimum version if the version header isn't specified 17:22:47 rloo: i guess that's why we introduced "latest" (still reading through docs :( ) 17:23:23 rameshg87: yes, you can get max version if you specify 'latest'. 17:23:38 rameshg87: the question is what to do if the user doesn't specify a version (or 'latest') 17:24:01 devananda: I would like to distinguish the client library from the client CLI. 17:24:20 devananda: or do you think they both should behave the same? 17:24:22 +1 17:24:23 rloo: i do not believe that's a valid distinction. as a user of the client, I consume it in both ways 17:24:48 I believe there are two salient points here (and possibly more) -- how this impacts our testing, and how this impacts usability 17:25:15 devananda: I can't really read the etherpad stuff and grok it in a few minutes. but it discusses our testing/usability. I'm worried about our users (maybe that is only rackspace so it doesn't matter) 17:25:23 as a user, I *never* want to have to specify what version of the API to use. I just want my client to work with the server that I point it at 17:25:34 rloo: we don't matter? :P 17:25:40 rloo: I use it too. and I'm sure there are many other users out there 17:25:40 devananda, +1 17:25:43 9and in here) 17:25:49 devananda: as a user, I don't want my client to break when I upgrade my server, either. 17:25:51 * lucasagomes still reading stuff 17:25:54 devananda: we changed nova ironic driver so it recognizes NOSTATE and AVAILABLE. so if we change the default to be 'latest', the nova ironic driver won't break. 17:26:04 devananda: or my applications that use the client. 17:26:07 jroll: right. and I dont want a new client to break when I point it at an old server 17:26:09 devananda: but what about others that don't have code that recognizes AVAILABLE yet? 17:26:24 jroll: I mean you've/rackspace is probably uptodate anyway. 17:26:39 rloo: ehhh. trying. 17:27:22 rloo: so if there are applications using pyhton-ironicclient which upgrade the client library, we can reasonably expect them to look at the changelog and update the applicaiton accordingly 17:27:37 rloo: we are not going to break an application which chooses to not upgrade the client 17:27:43 I'm having trouble reasoning about all of the cases this touches, btw. still trying to wrap my head around it all. 17:28:32 the current client is still passing no header by default 17:28:41 which means that, by default, if we were to release Kilo like this, 17:28:49 devananda: ok, if we can expect users to read the changelog, etc, then I am fine with whatever default you want to use. 17:28:50 users will still get the "v1.1" API 17:28:52 which is basically Juno 17:28:56 er, sorry 17:29:17 Juno + what ever we landed early this cycle before microversioning 17:29:22 which I think is just maintenance_reason 17:29:36 devananda: right. but you want the client to be changed so it defaults to the maximum version it supports/knows about. 17:30:27 rloo: correct. and just to re-state: that is not the literal "latest" string, but a literal version (eg, 1.6) that we write into the client lib 17:30:28 I think that makes the most sense for our client 17:30:54 however, i also want the client to be smarter about talking to older servers 17:30:54 If *I* am a user of a client, and I install the latest version of that client, I totally expect it to give me the EVERYTHING that is supported by both client and server. I would NOT want to have to explicitly tell it *anything* about versions 17:30:57 and right now, it's not 17:31:03 I think defaulting to latest is mostly good, but it does create effort when the application using the client relies on something (e.g. tempest breaks right now with >1.1) 17:31:04 Shrews: exactly 17:31:10 jroll: not "latest", no. 17:31:26 right, I type slow. 17:31:40 jroll: to be clear, "latest" is a valid version header value, which indicates to the server that it should use ITS latest, which is reasonably newer than what ever the client understands 17:31:45 that is essentially the behavior we have today 17:32:05 old client + new server == client should still work by disregarding pieces of the response thta it doesn't understand 17:32:11 devananda: I know. I typed that before you clarified that you want to hardcode a version. unclear how I feel about that. 17:32:18 k 17:32:37 devananda: but it's probably reasonable to release a new client to get new API features, since we'll need to handle those properly 17:32:47 Shrews: I also expect the client to work when pointed at some old server, the current server, and the server which I install tomorrow 17:32:47 I feel like we're going to duplicate a lot of version checking code :| 17:32:50 I also don't like what I feel is an inconsistency, that if the header isn't specified in API, the min version is used. But if no version is specified to the client, the client sends a header to use some max version. 17:33:17 but really, i only care if we break people's applications, so since it is user beware when upgrading client, then I am fine with whatever. 17:33:28 rloo: I tend to think that's fine. think about it as a client feature that it uses the latest it knows about 17:33:29 rloo: the server "no header == min versoin" is there to support older clients that didn't pass any header 17:33:32 devananda: I do too. So the client should either know about different API version options (and which ones to present to the user), or the server could possibly return that info some how. 17:33:50 Why can't the client query the API for what version it is, then make some decision on support based on that? 17:33:52 rloo: whereas "new client sends the max version it understands" is the desired behavior going forward 17:33:59 Shouldn't all the information for the client ot act sanely already exist? 17:34:02 JayF: totally. that's actually the ideal case 17:34:21 I feel like I'm missing some dimension of this problem, because it seems that's a clear solution? 17:34:22 however we aren't even close to supporting multi-versioning in the client 17:34:25 today 17:34:43 right 17:35:20 maybe for the future to support client-server version negotiation 17:35:34 the client library wasn't designed to interact with servers of different versions, and so the code architecture doesn't facilitate it yet 17:35:34 for me, it isn't a question of the client acting sanely (we can decide what 'sane' means). it was what if we break people's applications cuz the user using the client didn't specify a version, and now they get everything. 17:36:00 rloo: so before we introduced microversions, that is exactly what clients got -- everything the server returned 17:36:14 rloo: we're not changing that behavior 17:36:21 devananda: +1 17:36:29 rloo: previously, a user would install a new client version, and get new functionality form their client 17:36:42 rloo: if we have the client NOT send any version header, we CHANGE that behavior 17:36:45 devananda: right, before we introduced microversions, regardless of via API and client, the user got everything. 17:36:52 and the client will stop exposing any new features ... 17:37:07 devananda: same question was asked before. an example of logical names /v1/nodes/foo might have returned error, whereas before logical names user would expect error 17:37:25 devananda: sounds sort of like we want a protocol negotiation at connection time 17:37:27 devananda: but we have now introduced microversions and ... this is a new world... 17:37:28 if the existing behavious is not changing, and the client was getting *allthethings* anyway, this seems logical path to take 17:37:33 rameshg87: exactly. 17:37:36 Shrews: yup! 17:37:45 fun 17:37:47 BadCub: that's my point 17:37:55 devananda: but i would assume it's not changing the behaviour 17:38:01 devananda: it was just an extension right ? 17:38:07 but we did change the existing behavior. if you send a request via the API w/o specifying the header, you don't get the latest, you get the minimum. 17:38:23 I'd like the user experience to not change -- that is, "install new client, get new feature if my server supports it" 17:38:40 One question, why not let server use it's latest version if no specific version 17:38:45 rloo: we changed that a month ago. I think that was a mistake on my part, which I'm trying to correct, and to prevent it landing in the Kilo release 17:39:04 devananda: that make sense to me, esp with the fact that client releases can hapen any time 17:39:17 devananda: OH. Why didn't you say that before? 17:39:22 rloo: :) 17:39:26 heh 17:39:28 lol 17:40:00 rloo: so let me clarify what i may not have been clear about in hasty typing 17:40:08 devananda: so, what do you want to happen if the user sends a request via API but doesn't specify a header? 17:40:36 rloo: the change from NOSTATE -> AVAILABLE is actually a breaking API change 17:40:45 technically, we should have gone to /v2/ at that point 17:40:57 because it is a non-backwards-compatible change, and IF we were following SemVer 17:41:01 we'd have to bump the major version 17:41:16 devananda: I thought the whole idea of microversions was to deal with NOSTATE->AVAILABLE instead of a /v2 17:41:21 microversions let us work around that 17:41:24 rloo: exactly 17:41:26 but 17:41:50 if we're going to preserve the old behavior of /v1/, we need to accept that "no header" == min version == v1 17:42:03 otherwise we just broke /v1/ 17:42:12 for anyone using the juno-era client 17:42:26 and an upgrade from juno - kilo will be impossible 17:42:48 we need to support juno/nova + kilo/ironic 17:42:57 for the upgrade path that many folks will take 17:43:11 What's the virtue in not making a /v2/? 17:43:39 seems like a lot of work to change the name of a state. 17:43:41 This is intentionally a little naive, but isn't it just a question of where the version goes? Why not bump the "big version" 17:43:46 JayF: it's painful to make a new endpoint. users have to point somewhere else. keystone has two entries for ironic 17:44:10 don't forget, this state thing is just one example. we could potentially have other features that aren't backwards compatible. 17:44:16 Isn't it also painful to check microversions everywhere? 17:44:26 heh. true. 17:44:30 JayF: sort of. it's also about adding some sanity to our client-server negotiation. though I think we're still at least a cycle from that 17:45:15 backwards-incompatible-changes are really hard ... this lets us deal with the only "mistake" we've found so far in the early API 17:45:29 allow older clients to continue working, while newer clients can iterate on newer features 17:46:39 +1 17:47:40 to be clear, we should continue to avoid making backwards-incompatible changes. I dont think microversions give us any carte blanche to make more -- they're going to continue to be just as painful for users, even if we're able to handle them slightly better in our CI environment now 17:48:10 I mean, microversions do make it less painful 17:48:13 (imho) 17:48:19 for us, yes 17:48:25 and for anyone using python-ironicclient - yes 17:48:35 that's with my user hat on 17:48:40 even without 17:48:44 hm, ok 17:48:47 keeps things from breaking 17:48:55 as long as I specify a version :) 17:49:03 ah - good point 17:49:10 (which sucks, but if you're using something that's well versioned, you should specify your version) 17:49:16 yup 17:49:26 (kinda like how most non-openstack-people use requirements.txt) 17:49:30 so, I think we need to move on, even if there's not a conclusion 17:49:37 because we're almost out of time 17:49:53 I thought we did conclude. Or I conceded anyway ;) 17:49:58 rloo: oh :) 17:50:07 heh 17:50:14 I think for us at this late point in the cycle it is our best solution. if we have time next cycle we could look at a negotiation 17:50:20 option 17:50:26 #topic python-openstackclient support 17:50:36 d0ugal: hi! sorry for the late inclusion here 17:50:39 Hi :) 17:50:50 devananda: No problem, I have a quick question, I think 17:50:52 d0ugal: but the above discussion is hopefully at least slightly relevant too :) 17:50:59 Indeed, it was 17:51:29 My question - is anyone working on a plugin for python-openstackclient? and if not, is this something people are interested in? 17:51:47 I am not aware of any earnest work on that 17:51:51 to point 2) I'm interested 17:51:55 I have not heard of anyone working on it 17:51:59 I don't know anyone too 17:51:59 I'm aiming to make the TripleO experience a bit nicer :) 17:52:22 Okay, so if I wanted to help - would a spec be the place to start? 17:52:28 d0ugal: iirc, there has been push-back a few times when ive been in discussions about adding ironic to common clients 17:52:42 devananda: Right 17:52:45 d0ugal: because thoes clients are geared towards end-users of clouds, whereas Ironic should never be visible to end-users 17:53:00 it's an admin-facing service (the only one in openstack afaik) 17:53:01 devananda: Unless your end users are TripleO users I guess :) 17:53:29 Okay, so it sounds like I might need to take this to the list for further reach. 17:53:29 d0ugal: so if openstackclient includes support for eg. nova's admin functions, then I think there's a good case for including ironic as well 17:53:42 Gotcha 17:54:07 There is a chance I may be working on one anyway, but wanted to make it upstream if we could 17:54:26 I think that gives me enough to go on for now, thanks devananda 17:54:35 d0ugal: great. welcome! 17:54:40 #topic open discussion 17:55:21 I'd just like to point out this nova review for OD. https://review.openstack.org/#/c/158269 17:55:34 oooh yah 17:55:39 #link https://review.openstack.org/#/c/158269 17:55:47 sick of fighting nova's model. 17:55:56 #info Nova discussion on support for clustered / federated hypervisors is getting interesting. see above link 17:56:09 jroll: you can bet there's going to be (yet another) session in vancouver on it 17:56:16 devananda: oh ya 17:56:32 though I think enough folks in Nova want to solve it the right way (tm) this time, too, that I'm hopeful we'll make progress 17:56:44 devananda: do you think that could land in K or will it be more likely L 17:56:52 the question is if fixing it the right way will be prioritized at all. 17:57:05 NobodyCam: wht's "that" ? 17:57:12 teh nova review 17:57:17 changes 17:57:19 that patch? definitely not kilo 17:57:22 NobodyCam: no. not that patch 17:57:26 :) 17:57:53 jroll: thta's what I mean by "enough folks". 17:58:00 yeah 17:58:01 jroll: I think it's becoming a priority for several nova cores now 17:58:07 ok, cool 17:58:12 * fyi: * 2 minutes to go * 17:59:27 ok, thanks for the lively discussion today folks 17:59:34 Thank you all ! 17:59:36 see you all back in channel! 17:59:37 great meeting 17:59:43 thanks everyone! 17:59:55 #endmeeting