00:01:40 <cyeoh> #startmeeting nova api 00:01:41 <openstack> Meeting started Fri Jul 18 00:01:40 2014 UTC and is due to finish in 60 minutes. The chair is cyeoh. Information about MeetBot at http://wiki.debian.org/MeetBot. 00:01:42 <openstack> Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 00:01:45 <openstack> The meeting name has been set to 'nova_api' 00:01:57 <cyeoh> Hi - who's here today? 00:02:00 <alex_xu> hi 00:02:08 <oomichi> hi 00:02:58 <cyeoh> ok. lets get started. 00:03:10 <cyeoh> #topic v2.1 on v3 00:03:29 <cyeoh> https://etherpad.openstack.org/p/nova-juno-spec-priorities 00:03:58 <cyeoh> so at the nova meeting today we got an exception for the v2.1 on v3, BUT its not approved. We have I think a week to get it approved 00:04:33 <cyeoh> please review https://review.openstack.org/#/c/84695/ if you can 00:04:57 <cyeoh> if it looks good to you, +1 it as it will show the nova drivers reviewers that it has the support of the api team 00:05:09 <oomichi> +1 for current spec of v2.1 :-) 00:05:37 <alex_xu> I will take a look today, I think it 'sgood for me 00:05:46 <cyeoh> thx - I will update it with any feedback today and Monday 00:05:51 <gmann> cyeoh: now it include the microversion part also right? 00:06:04 <cyeoh> gmann: yes, it has incorporated Sean's microversion proposal 00:06:10 <cyeoh> since we were dependent on it anyway 00:06:44 <cyeoh> now next Tuesday I will be going in for same day surgery so its unclear if I'll be able to update the spec wed/thu/fri 00:06:53 <cyeoh> (I hope I'll be back soon, but I might not be) 00:07:14 <oomichi> interesting point is that each backwards incompatible change increase version "X". now I agree with that. 00:07:23 <cyeoh> oomichi: would you mind handling updating the spec if it needs it while I'm away? 00:07:44 <oomichi> cyeoh: ok, i can do it ;-) 00:08:08 <cyeoh> oomichi: thx! 00:08:31 <oomichi> cyeoh: np, I will check status this week end always. 00:08:53 <cyeoh> oomichi: and re:X yes I think we need to get people used to the idea that with microversions small numbers of small backwards incompatible changes and if X gets bumped a lot that is fine 00:09:37 <oomichi> cyeoh: the idea seems great for me now, that should be microversion. 00:09:53 <cyeoh> oomichi: yep, if I'm not back by the nova meeting on Friday you might need to bring it up there to make sure it gets reconsidered - I'm hoping it will be approved by then though 00:10:30 <oomichi> cyeoh: when we find something wrong in the future, we can fix it. that is nice for us. 00:10:46 <cyeoh> oomichi: yep we no longer stuck with horrible apis forever 00:10:55 <oomichi> cyeoh: we can continue improving our interfaces. 00:11:08 <cyeoh> is there anything else that people wanted to talk about microversions of v2.1 on v3? 00:11:24 <oomichi> cyeoh: agree, great spec:-) 00:11:30 <gmann> 1 question. as each backward incompatible leads to bump X. At the end of release user will see the version bump from x1 to x5 (if that many backward incompatible changes done within release) 00:11:48 <cyeoh> gmann: yess 00:12:04 <cyeoh> but if they don't want the new stuff, they can just request the old one as usual 00:12:38 <cyeoh> its not like say a v2->v3 transition where people would have been forced to use the new api 00:12:46 <gmann> so from user point of view in between version bump is not visible. so what is the main advantage of bumping X for each backward incompatible changes instead of just bump once at the end of release 00:13:27 <cyeoh> gmann: we need to support continuous deployment for starters 00:13:51 <cyeoh> so as stuff merges during the cycle those operators who deploy straight away can allow their users to start using the new apis 00:14:11 <cyeoh> the other thing it allows is for say a user to say after a release that they just want x=4 00:14:19 <oomichi> I think the good point that we don't need to consider the end of release. and CD environments, we can use the latest APIs as experimental. 00:14:21 <cyeoh> and not have the new feature offered in x=5. 00:14:50 <cyeoh> as they may not want the feature or the work required to handle the backwards incompatible change involved in transitioning from x=4 -> x=5 yet 00:15:53 <cyeoh> oomichi: yep we shouldn't be doing any synchornising of what x is at the end of a cycle, its just a number. 00:16:27 <gmann> cyeoh: ohk, so you mean we will support for each in-between X version also after release too 00:16:39 <cyeoh> gmann: yes 00:16:58 <gmann> ok, got it Thanks. 00:17:02 <cyeoh> gmann: its one reason maintenance for all this code has to be really low 00:17:23 <cyeoh> and if the backwards incompatible changes are small each time it'll also make it easier to understand/maintain in the future 00:17:44 <cyeoh> #topic api specs reviews 00:17:52 <gmann> yes. 00:18:27 <cyeoh> so one thing we changed in icehouse was requiring *any* api change, even if pretty trivial to go through nova-specs to make sure we don't acidentally make a backwards incompatible change 00:18:51 <cyeoh> unfortunately from what I can see there are lots and lots of quite trivial api specs which are stuck in the nova-specs queue 00:19:22 <cyeoh> I've been thinking we should ask the nova-drivers folks if there can be a fast track for the trivial nova api spec changes 00:19:41 <cyeoh> (an example of this is say adding the ability to show which instances are locked 00:20:05 <cyeoh> because we don't want these sorts of changes held up for a cycle 00:20:28 <cyeoh> oomichi: if this is something you think is reasonable, perhaps you could bring it up at the mid-cycle meetup? 00:20:42 <oomichi> re: lock: yes, that is really trivial. 00:20:57 <oomichi> cyeoh: yes, I will join mid-cycle. 00:21:19 <oomichi> cyeoh: and I will bring them on the meetup. 00:21:34 <cyeoh> thx - I was thinking something like, say a only requiring say a nova-core who is familiar with the api (say you or me) and just one nova-driver, rather than 2 00:22:00 <cyeoh> hopefully that would speedup approval and we still have a second chance to pick up issues during normal code review 00:22:09 <oomichi> cyeoh: np, will check them again before the meetup 00:22:20 <cyeoh> cool :-) 00:23:09 <cyeoh> #topic Open Discussion 00:23:09 <oomichi> cyeoh: do you have anything special in the specs except v2.1? 00:23:27 <cyeoh> oomichi, well I don't think anything else is going to get approved :-( 00:23:39 <cyeoh> I think a couple of alex_xu's would be really nice to be able to work on - re: api policy 00:23:53 <cyeoh> but if v2.1 on v3 gets approved we will be totally flat out 00:24:08 <oomichi> cyeoh: ah, I agree. api policy is already nice/important. 00:24:12 <alex_xu> yes 00:24:28 <cyeoh> if you can get them approved at the midcycle it would be great :-) 00:24:41 <cyeoh> but of course v2.1 on v3 has the priority.... 00:24:54 <alex_xu> agreed 00:24:56 <oomichi> yep, right. 00:25:17 <alex_xu> oomichi, thx 00:25:22 <oomichi> there are some approved specs based on v3 api. 00:26:05 <oomichi> if not getting approval for v2.1, they also are not exposed.. 00:26:45 <alex_xu> I have a set of bug fix for v3 api, So waiting for v2.1 get approved, then I can continue them? 00:27:24 <cyeoh> alex_xu: so if its a bug fix you might be able to just merge it 00:27:50 <alex_xu> cyeoh, you mean I can update them now? 00:28:03 <cyeoh> if its just a bug fix rather than new feature, I'd give it a go 00:28:19 <alex_xu> cyeoh, and those bug fix still reference to old bp v3-api-inconsistencies 00:28:29 <alex_xu> for example, https://review.openstack.org/#/c/58458/ 00:29:08 <oomichi> alex_xu: better to skip them after the approval. because we will have a lot of v2.1 tasks. 00:29:11 <cyeoh> so those sorts of ones that make 'v3' changes, I don't think we'll be able to merge yet 00:29:31 <oomichi> alex_xu: we can fix them as microversion. 00:29:52 <alex_xu> ok, let me skip them 00:29:56 <cyeoh> but if there's a patch that say fixes a bug in the v3 api where it doesn't work properly (say returns a 500), then yes they can merge 00:30:07 <alex_xu> ok 00:30:11 <cyeoh> yep I agree with what oomichi said 00:30:31 <oomichi> cyeoh: agree to fix bad error response codes. 00:30:50 <cyeoh> yep 00:31:06 <oomichi> ah, one point. 00:31:42 <oomichi> can we add tenant-id to the url of v3 API? 00:32:08 <alex_xu> good point~ 00:32:20 <cyeoh> we don't want the tenant-id do we? 00:32:29 <cyeoh> (or do you mean for v2.1 compat?) 00:32:41 <oomichi> if we never expose v3 api forever, that is the big difference between v2 and v3 00:33:02 <oomichi> yes, v2.1 compat 00:33:02 <cyeoh> so we'll eventually do a microversion bump where we remove it 00:33:23 <oomichi> ah, interesting idea. 00:33:26 <cyeoh> as its not only not actually used, but its confusing because its not used 00:33:40 <cyeoh> I'd like to actually do a microversion bump where we remove '/v2' 00:33:54 <cyeoh> it doesn't make any sense in a microversion environment either 00:34:05 <oomichi> ok, now let keep tenant-id in the url. 00:34:21 <alex_xu> the new api shoule use 'tenant_id' or 'project_id' before v3 exposed by micro-version? 00:35:03 <cyeoh> so I have a patch somewhere that allows the tenant id to be passed in the url when in v2.1 compat mode 00:35:30 <cyeoh> but it doesn't actually use it (even v2 gets the project id info from the context now) 00:36:32 <cyeoh> what we do probably need to think about a bit (assuming v2.1 on v3 gets approved soon) is how make the v2.1/v3 switching logic a bit more generic 00:37:24 <cyeoh> at the moment when a request comes in we either do v2.1 or v3. But longer term we'll need to think about in terms of say an opaque "microversions object" 00:38:08 <eliqiao> cyeoh: a question , if user use v2.1 api, will /v2.1 appear in the request url ? 00:38:09 <cyeoh> this object has the version information contained in it. And our infrastructure switches through the different decorators based on how the microversions object matches against the version defs in the decorators 00:38:29 <cyeoh> eliqiao: so initially by default I think we will export as /v2.1 00:38:39 <eliqiao> cyeoh: thx 00:38:45 <cyeoh> eliqiao: this allows deployers to deploy both /v2 and /v2.1 00:39:02 <cyeoh> however its just a minor change to api-paste.ini and v2.1 can be exported as /v2 00:39:11 <cyeoh> there's nothing hardcoded to /v2.1 at all 00:40:07 <oomichi> right, we can use v2.1 as v2 default also. 00:40:18 <cyeoh> yep 00:41:06 <cyeoh> is there anything else that people wanted to talk about? I'm out of stuff 00:41:32 <eliqiao> if I understand correctlly , just add 00:41:33 <eliqiao> /: oscomputeversions 00:41:33 <eliqiao> /v1.1: openstack_compute_api_v2 00:41:33 <eliqiao> /v2: openstack_compute_api_v2 00:41:33 <eliqiao> /v3: openstack_compute_api_v3 00:41:33 <eliqiao> /v2.1: openstack_compute_api_v2 00:41:33 <eliqiao> is that correct ? 00:41:50 <cyeoh> eliqiao: yea, that's basically how you can configure it 00:42:24 <eliqiao> cyeoh: :) thank you. 00:44:14 <cyeoh> does anyone have anything else? otherwise I'll end the meeting early 00:44:28 <oomichi> nice meeting, nothing from me. 00:44:49 <gmann> me too 00:44:55 <cyeoh> ok, thanks everyone 00:44:58 <cyeoh> #endmeeting