*** mriedem has quit IRC | 00:01 | |
*** bobh has joined #openstack-sdks | 00:19 | |
*** tosky has quit IRC | 00:55 | |
*** dave-mccowan has joined #openstack-sdks | 01:18 | |
*** dave-mccowan has quit IRC | 02:14 | |
*** Blotis has joined #openstack-sdks | 02:36 | |
*** bobh has quit IRC | 02:37 | |
*** bobh has joined #openstack-sdks | 02:38 | |
*** bobh has quit IRC | 02:42 | |
*** Blotis has left #openstack-sdks | 02:57 | |
*** bobh has joined #openstack-sdks | 03:38 | |
*** bobh has quit IRC | 03:39 | |
*** bobh has joined #openstack-sdks | 03:40 | |
*** bobh has quit IRC | 03:40 | |
*** bobh has joined #openstack-sdks | 03:41 | |
*** bobh has quit IRC | 03:57 | |
*** jkulik has quit IRC | 04:02 | |
openstackgerrit | Rajat Dhasmana proposed openstack/python-openstackclient master: Fix: Restore operation returns 'VolumeBackupsRestore' object is not iterable https://review.openstack.org/624860 | 05:50 |
---|---|---|
*** slaweq has joined #openstack-sdks | 06:57 | |
*** Luzi has joined #openstack-sdks | 07:33 | |
openstackgerrit | machunnan proposed openstack/js-openstack-lib master: change http:// to https:// https://review.openstack.org/624873 | 07:44 |
openstackgerrit | machunnan proposed openstack/js-openstack-lib master: change http:// to https:// https://review.openstack.org/624874 | 07:47 |
openstackgerrit | machunnan proposed openstack/js-openstack-lib master: change http:// to https:// https://review.openstack.org/624875 | 07:53 |
openstackgerrit | machunnan proposed openstack/js-openstack-lib master: change http:// to https:// https://review.openstack.org/624879 | 07:59 |
openstackgerrit | machunnan proposed openstack/js-openstack-lib master: change http:// to https:// https://review.openstack.org/624880 | 08:03 |
openstackgerrit | machunnan proposed openstack/js-openstack-lib master: change http:// to https:// https://review.openstack.org/624881 | 08:04 |
openstackgerrit | Rajat Dhasmana proposed openstack/python-openstackclient master: Fix: Restore operation returns 'VolumeBackupsRestore' object is not iterable https://review.openstack.org/624860 | 08:04 |
openstackgerrit | machunnan proposed openstack/js-openstack-lib master: change http:// to https:// https://review.openstack.org/624883 | 08:08 |
openstackgerrit | machunnan proposed openstack/js-openstack-lib master: change http:// to https:// https://review.openstack.org/624884 | 08:09 |
openstackgerrit | machunnan proposed openstack/js-openstack-lib master: change http:// to https:// https://review.openstack.org/624886 | 08:11 |
openstackgerrit | machunnan proposed openstack/js-openstack-lib master: change http:// to https:// https://review.openstack.org/624887 | 08:12 |
openstackgerrit | machunnan proposed openstack/js-openstack-lib master: Capitalizes the first letter -- should to Should https://review.openstack.org/624891 | 08:38 |
openstackgerrit | machunnan proposed openstack/js-openstack-lib master: Capitalizes the first letter -- should to Should https://review.openstack.org/624892 | 08:43 |
*** jpena|off is now known as jpena | 09:04 | |
*** ttsiouts has joined #openstack-sdks | 09:18 | |
*** jpich has joined #openstack-sdks | 09:19 | |
*** gtema has joined #openstack-sdks | 09:25 | |
*** ttsiouts has quit IRC | 09:28 | |
*** ttsiouts has joined #openstack-sdks | 09:29 | |
*** ttsiouts has quit IRC | 09:33 | |
*** noama has joined #openstack-sdks | 09:35 | |
*** tosky has joined #openstack-sdks | 09:37 | |
*** ttsiouts has joined #openstack-sdks | 09:40 | |
*** e0ne has joined #openstack-sdks | 09:41 | |
*** markvoelker has joined #openstack-sdks | 09:46 | |
*** gtema has quit IRC | 10:01 | |
*** cdent has joined #openstack-sdks | 10:42 | |
*** ttsiouts has quit IRC | 10:51 | |
*** ttsiouts has joined #openstack-sdks | 10:52 | |
*** dtantsur|afk is now known as dtantsur | 10:53 | |
*** ttsiouts has quit IRC | 10:57 | |
*** tobias-urdin is now known as tobias-urdin_afk | 11:41 | |
*** tobias-urdin_afk is now known as tobias-urdin | 11:42 | |
*** tobias-urdin is now known as tobias-urdin_afk | 11:43 | |
frickler | mordred: Shrews: is there any news regarding the dogpile.cache issue to fix broken nodepool jobs? | 11:53 |
*** markvoelker has quit IRC | 12:24 | |
*** gtema has joined #openstack-sdks | 12:36 | |
*** mriedem has joined #openstack-sdks | 12:42 | |
*** e0ne has quit IRC | 12:51 | |
*** tobias-urdin_afk is now known as tobias-urdin | 12:53 | |
Shrews | frickler: mordred has a review up to requirements to limit the version. and morgan is going to look into the actual dogpile.cache change for us | 12:59 |
Shrews | that's all i know before coffee | 13:00 |
*** gtema has quit IRC | 13:00 | |
*** jpena is now known as jpena|lunch | 13:01 | |
*** bobh has joined #openstack-sdks | 13:04 | |
frickler | Shrews: thx, found the reqs patch, seems that it needs a bug report/story attached. do we have a simple reproducer yet? | 13:09 |
*** markvoelker has joined #openstack-sdks | 13:10 | |
Shrews | frickler: i have one. 1 sec | 13:12 |
Shrews | frickler: http://paste.openstack.org/show/737212/ | 13:17 |
*** bobh has quit IRC | 13:18 | |
frickler | Shrews: thx, created https://storyboard.openstack.org/#!/story/2004605 from that and will add to the reqs patch | 13:30 |
frickler | mordred: morgan: ^^ fyi | 13:31 |
*** e0ne has joined #openstack-sdks | 13:35 | |
*** e0ne has quit IRC | 13:49 | |
*** irclogbot_2 has quit IRC | 13:50 | |
*** tosky has quit IRC | 13:56 | |
*** e0ne has joined #openstack-sdks | 13:57 | |
*** bobh has joined #openstack-sdks | 13:58 | |
*** tosky has joined #openstack-sdks | 14:00 | |
*** markvoelker has quit IRC | 14:03 | |
*** irclogbot_2 has joined #openstack-sdks | 14:10 | |
*** irclogbot_2 has quit IRC | 14:19 | |
*** bobh has quit IRC | 14:27 | |
*** ttsiouts has joined #openstack-sdks | 14:28 | |
elmiko | edleafe: ack, thanks | 14:33 |
*** irclogbot_2 has joined #openstack-sdks | 14:33 | |
edleafe | elmiko: it's brief | 14:33 |
elmiko | yeah, but also contains good info imo | 14:34 |
cdent | I thought it was elegantly sufficient | 14:34 |
elmiko | me too | 14:34 |
elmiko | i like it, no objections here edleafe | 14:34 |
*** markvoelker has joined #openstack-sdks | 14:36 | |
edleafe | okie dokie | 14:38 |
elmiko | edleafe: reading it over again, i think the only thing that might make me a tad nervous is that it sounds like we could answer all api related issues that come up. i wonder if that gives the impression that any project-specific api issues are fair game to ask the sig? (maybe i'm reading too much, maybe this isn't a concern) | 14:42 |
*** dayou has quit IRC | 14:43 | |
cdent | elmiko: to some extent that's supposed to be what SIG means | 14:44 |
cdent | we are a house for people who care about APIs | 14:44 |
elmiko | i guess i meant more like, "hey this call to service X isn't working for me, why not? (insert arcane curl command here)" | 14:44 |
elmiko | and i imagine we would definitely point that person in the right direction | 14:45 |
cdent | "hey caller, it looks like you're using nova, you might want to talk to ..." | 14:45 |
* cdent puts on his paperclip costume | 14:45 | |
elmiko | anyways, it was just a thought. i don't think it's a concern, but if i pushed to make a critique. | 14:45 |
elmiko | yeah | 14:45 |
elmiko | i still don't have an objection, i was just trying to go deeper with due diligence =) | 14:45 |
edleafe | elmiko: Sorry, was afk | 14:51 |
edleafe | I can see what you mean, but I kinda think that's a good thing. The more interest in the SIG, the better | 14:51 |
elmiko | i like that attitude =) | 14:52 |
edleafe | Like cdent said, we may not have the answers, but we might help point people to better resources | 14:52 |
elmiko | agreed | 14:52 |
elmiko | thanks for indulging me ;) | 14:56 |
*** dayou has joined #openstack-sdks | 15:00 | |
cdent | elmiko: speaking of indulgences, how did your aqua vit settle in at home. did it even make it home? | 15:11 |
elmiko | haha, yes! it made it home | 15:12 |
elmiko | it's been a big hit =) | 15:12 |
elmiko | people are becoming scared at the volume of clear liquors i am pushing on them when they visit XD | 15:13 |
cdent | here, try this mysterious thing! | 15:13 |
elmiko | basically | 15:23 |
elmiko | at least with the eau de vie they kinda get it, but when i start digging out stuff slike slivovice and awamori things get /interesting/ =D | 15:24 |
elmiko | the liquor cabinet is starting to look a little nuts though, like "does this guy have a problem?" haha | 15:25 |
*** markvoelker has quit IRC | 15:38 | |
*** Luzi has quit IRC | 15:52 | |
*** bobh has joined #openstack-sdks | 15:53 | |
*** ttsiouts has quit IRC | 15:56 | |
*** ttsiouts has joined #openstack-sdks | 15:57 | |
* elmiko sets down coffee mug | 16:00 | |
edleafe | API-SIG Office Hour has begun | 16:00 |
* elmiko rests feet on table | 16:00 | |
edleafe | Get your feet off the table!! Were you raised in a barn? | 16:00 |
* elmiko pulls feet down | 16:01 | |
elmiko | sadly no, just a normal house | 16:01 |
edleafe | dtantsur: around? Wanted to get your feedback on http://paste.openstack.org/show/737157/ | 16:03 |
edleafe | It's the little blurb for the OpenStack Foundation Annual Report about our SIG | 16:03 |
* dtantsur reads | 16:03 | |
dtantsur | edleafe: sounds perfect to me | 16:03 |
edleafe | kewl | 16:04 |
edleafe | The only other issue I had was whether to freeze https://review.openstack.org/#/c/616610/ | 16:04 |
dtantsur | also JFYI I'm off starting tomorrow, back in Jan | 16:04 |
edleafe | lucky you! | 16:05 |
edleafe | I'm around all next week, then back 2nd week of Jan | 16:05 |
elmiko | i'll be around next week as well | 16:05 |
* dtantsur has stated his opinion re 616610 | 16:06 | |
edleafe | dtantsur: so you would prefer to interpret DELETE as "find this resource, and then delete it" | 16:07 |
edleafe | instead of "make sure this resource doesn't exist" | 16:07 |
dtantsur | edleafe: "delete this resource", yes | 16:07 |
*** jpena|lunch is now known as jpena | 16:08 | |
dtantsur | I think if somebody is actually going to follow this guideline, it's going to be confusing for users | 16:09 |
dtantsur | e.g. `rm /foo` actually errors out | 16:09 |
*** morgan is now known as kmalloc | 16:09 | |
edleafe | So consider this scenario: resource `foo` exists. Two users call DELETE /rsrc/foo. One should get 204, and the other 404? | 16:10 |
dtantsur | right | 16:13 |
elmiko | i think the only weird part to me is how long should that behavior persist after the delete? | 16:14 |
kmalloc | Shrews: now that my massive headache of doom has passed, i should be able to look at dogpile and the other issues outstanding | 16:14 |
elmiko | like, if i delete a resources ages ago, when should the server respond with a 404? | 16:15 |
kmalloc | Shrews, mordred: ^ thanks for bearing with me yesterday. | 16:15 |
elmiko | or should it ever? which implies keeping track of delete resources for the purposes of delete responses | 16:15 |
edleafe | RFC 7231 says that DELETE is idempotent: https://tools.ietf.org/html/rfc7231#section-8.1.3 | 16:15 |
dtantsur | tracking deleting resources is quite a change to many database models | 16:15 |
*** ttsiouts has quit IRC | 16:16 | |
dtantsur | edleafe: that's one of the reasons HTTP is not a great match for API.. | 16:16 |
* dtantsur shrugs | 16:16 | |
kmalloc | edleafe: oh good to know. | 16:17 |
kmalloc | edleafe: also... damn that means keystone has messed up a bunch. | 16:17 |
* kmalloc makes note for v4.. when that comes. | 16:17 | |
elmiko | edleafe: such a weird knot this is, it should be idempotent, but does that mean it should always return some 2XX for a previously deleted resource? | 16:18 |
elmiko | i mean, i know that's what we are proposing i'm just exploring the idea a little more | 16:18 |
dtantsur | yeah, this is a weird point | 16:18 |
elmiko | definitely | 16:19 |
edleafe | The impetus for adding this guideline is that it is assumed that an API has one implementation, but many, many consumers. Attempting to delete a resource that doesn't exist requires an exception handler. If you can return a 404 from the API, every single consumer of that API has to build code to handle that | 16:19 |
edleafe | elmiko: why not? | 16:19 |
edleafe | "I don't want resource foo to exist" "OK, it doesn't exist" | 16:19 |
dtantsur | "In effect, this method is similar to the rm command | 16:20 |
dtantsur | in UNIX: it expresses a deletion operation on the URI mapping of the | 16:20 |
dtantsur | origin server rather than an expectation that the previously | 16:20 |
dtantsur | associated information be deleted. | 16:20 |
dtantsur | I don't know how to interpret it.. | 16:20 |
elmiko | edleafe: it just makes me wonder what the impl starts to look like, for example do i need to keep a database table of delete resources to properly respond to all future delete requests? | 16:20 |
edleafe | elmiko: why? | 16:20 |
dtantsur | edleafe: the "very single customer" is simply incorrect | 16:20 |
elmiko | if i delete some resource /foo/bar | 16:20 |
dtantsur | I personally very rarely catch 404 from deletions because I *want* to know that something went south | 16:21 |
elmiko | then later a request comes in to DELETE /foo/bar, then i need to respond 2XX if it has been deleted. is that accurate? | 16:21 |
edleafe | elmiko: if you call DELETE /foo/bar, and `foo` is a valid resouce class, you return 204 whether or not you had to delete resource `bar` or not. You don't need to confirm that `bar` ever existed. | 16:22 |
edleafe | dtantsur: that's very different than "I want this resource gone" | 16:23 |
edleafe | dtantsur: if you care that it's there and getting deleted, do a GET/HEAD on it first | 16:23 |
dtantsur | well, "I want this resource gone" is not the semantic I use, so no wonder :) | 16:23 |
elmiko | edleafe: what if "bar" never existed as a foo? | 16:23 |
elmiko | shouldn't that be a 404? | 16:23 |
edleafe | elmiko: No | 16:23 |
dtantsur | edleafe: so instead of handling 404 by some consumers, some other consumers have to make 2 requests? | 16:23 |
elmiko | ah, i misunderstood you then | 16:24 |
edleafe | if you interpret delete as "I don't want resource bar to exist" | 16:24 |
*** noama has quit IRC | 16:24 | |
dtantsur | then we should allow 'DELETE /some/nonsense' :) | 16:24 |
dtantsur | half-kidding, but the same logic can be applied to invalid URLs | 16:24 |
edleafe | If you care about the existence of a resource, you call GET or HEAD | 16:24 |
kmalloc | it's fine to say DELETE X and if the path is unrouted, get a 404 | 16:24 |
kmalloc | afaict. | 16:25 |
kmalloc | acutally | 16:25 |
kmalloc | no | 16:25 |
dtantsur | kmalloc: why? I want it to be gone, and it's gone | 16:25 |
edleafe | dtantsur: cdent clarified that. Just what kmalloc said | 16:25 |
kmalloc | that would be a method not allowed | 16:25 |
kmalloc | sorry, wrong error | 16:25 |
dtantsur | edleafe: not for me | 16:25 |
kmalloc | not 404, 40.. 405? | 16:25 |
elmiko | kmalloc: if it's possible that the resource _could_ have existed, then it should 404. if i understand edleafe's point | 16:25 |
elmiko | er should not! | 16:25 |
elmiko | sorry | 16:25 |
kmalloc | elmiko: right | 16:25 |
* dtantsur starts leaning toward a proper -1 now | 16:26 | |
kmalloc | elmiko: it should be .. 200/204/2XX (not 201) | 16:26 |
elmiko | right | 16:26 |
edleafe | Generally 204 is returned from DELETE | 16:26 |
kmalloc | if delete is not allowed, e.g. the whole path is unrouted in an api | 16:26 |
edleafe | There is no response body | 16:26 |
kmalloc | XXXX/<resource> -> where XXXX is not a thing at all | 16:26 |
kmalloc | that should be 405 | 16:26 |
kmalloc | as DELETE is not supported | 16:27 |
kmalloc | but if XXXX is a thing, and there could be a resource under it | 16:27 |
edleafe | kmalloc: according to cdent, it's 404 | 16:27 |
dtantsur | what about GET XXXX? | 16:27 |
* edleafe keeps hoping to invoke the spirit of cdent with these repeated incantation | 16:27 | |
kmalloc | edleafe: in most of openstack 404 is a thing. | 16:27 |
cdent | sorry, I'm debugging a gate failure | 16:27 |
kmalloc | most of openstack is wrong | 16:27 |
kmalloc | from a standpoint of the RFC | 16:27 |
edleafe | dtantsur: GET /XXXX should also be 404 | 16:28 |
cdent | only if XXXXX/<resource> has any methods at all should it ever be a 405 on delete | 16:28 |
cdent | if it simply does not exist then it should be 404 | 16:28 |
kmalloc | hm. | 16:28 |
kmalloc | i could see that interpretation | 16:28 |
dtantsur | kmalloc: well, we're talking of taking an RFC designed for hypertext and applying it to API | 16:28 |
kmalloc | order of precidence on routing | 16:28 |
cdent | kmalloc: that interpretation is right :) | 16:28 |
edleafe | From the front page of our guidelines: "Note Where this guidance is incomplete or ambiguous, refer to the HTTP RFCs—RFC 7230, RFC 7231, RFC 7232, RFC 7233, RFC 7234, and RFC 7235—as the ultimate authority." | 16:28 |
dtantsur | this has gone wrong many times, this is no exception | 16:28 |
cdent | the URI is the primary thing | 16:28 |
kmalloc | XXX is checked before XXXX/YYYY | 16:29 |
kmalloc | so, XXX hits 404 | 16:29 |
kmalloc | sure. | 16:29 |
cdent | if there is _nothing_ that has that URI, then 404 | 16:29 |
cdent | if you can GET it, but can't delete it, then 405 | 16:29 |
kmalloc | but a 404 on a delete where a resource could exist is explictly wrong | 16:29 |
kmalloc | it's always a success if delete could work | 16:30 |
*** e0ne has quit IRC | 16:30 | |
kmalloc | cdent: ++ don't have to convince me too hard on that front :P | 16:30 |
cdent | that's effectively what ed's thing say | 16:30 |
edleafe | kmalloc: that's what the point of https://review.openstack.org/#/c/616610/ is | 16:30 |
edleafe | jinx | 16:30 |
kmalloc | hehe | 16:30 |
cdent | if this is a valid uri, and there might have been a thing here, or ever will be, respond 204 on delete when it is not there, or has just been removed | 16:30 |
kmalloc | yep. | 16:30 |
cdent | but if the url is invalid because you can't even GET there, then 404 | 16:30 |
*** e0ne has joined #openstack-sdks | 16:30 | |
cdent | s/even/ever/ | 16:30 |
kmalloc | yes. | 16:30 |
kmalloc | i could see that, i'll have to go poke and see how flask handles it | 16:31 |
kmalloc | i think it does it the correct way | 16:31 |
kmalloc | what you just described | 16:31 |
kmalloc | because if not, i have some bugs to go open/fix | 16:31 |
elmiko | edleafe: fwiw, i'm still +1 on the review | 16:31 |
* edleafe wipes brow | 16:31 | |
elmiko | lol | 16:31 |
elmiko | seems like dtantsur will be the -1 | 16:31 |
dtantsur | yep | 16:32 |
edleafe | One thing to keep in mind before you -1: | 16:32 |
edleafe | This is a guideline; it says what projects should ideally follow | 16:32 |
edleafe | We are trying to encourage new projects to follow them. Existing projects do not have to change | 16:33 |
kmalloc | i know if we iterate on the keystone api like I want to, we'll get to where we're more closely following the guidelines | 16:34 |
kmalloc | we just have a ton of history that... well we can't "just fix" | 16:34 |
edleafe | kmalloc: sure, that's reasonable. | 16:34 |
elmiko | kmalloc: totally understandable | 16:34 |
elmiko | to echo edleafe, these are guidelines and not laws | 16:34 |
kmalloc | also we don't have (and doesn't look like we will in the near-to-medium term) microversions :) | 16:34 |
kmalloc | also +1 on that change. I like the guidelines | 16:35 |
edleafe | kmalloc: the other purpose of the guidelines is to "settle arguments". If a change is being considered, and there are differing views, the guidelines can be used as an arbiter | 16:35 |
elmiko | imo, microversions seem less contentious. but i'm just one person | 16:35 |
edleafe | elmiko: lol | 16:35 |
elmiko | edleafe ++ | 16:35 |
kmalloc | i'd like to really outline the use of 405 in that doc. | 16:35 |
kmalloc | because it is useful. | 16:35 |
kmalloc | but that is a bigger bundle of "lots of comments" | 16:35 |
dtantsur | microversions are not contentious at all, just do them | 16:35 |
* dtantsur ducks | 16:35 | |
elmiko | dtantsur: LOL | 16:36 |
kmalloc | dtantsur: ok, go implement it for keystone, i think you just volunteered :) :P :P :P | 16:36 |
edleafe | kmalloc: http://specs.openstack.org/openstack/api-sig/guidelines/http/response-codes.html#failure-code-clarifications | 16:36 |
dtantsur | how many years it took us to implement proper negotiation in OSC? oh wait, it's still not there? :) | 16:36 |
edleafe | There is a paragraph there on 405 | 16:36 |
kmalloc | edleafe: yes, but i think that needs some expansion | 16:36 |
edleafe | patches welcome! :) | 16:37 |
kmalloc | yes, it's on my long long long list | 16:37 |
kmalloc | :) | 16:37 |
dtantsur | kmalloc: I'll switch keystone to SOAP | 16:37 |
kmalloc | dtantsur: if you can get people to approve it... and not break our API contracts, go for it | 16:37 |
kmalloc | dtantsur: i'll even volunteer to not -2 that change | 16:37 |
kmalloc | or even -1 it. | 16:37 |
edleafe | I think we should add a guideline that recommends abandoning the term "microversions", and replaces it with "every change is a major version" | 16:37 |
dtantsur | SOAP never greaks contracts, it's enterprise-grade | 16:37 |
dtantsur | edleafe: /me imagines $ curl https://baremetal.example.com/v56/nodes | 16:38 |
dtantsur | it's mostly kidding again, but I do feel bad that we break RESTfulness with microversions | 16:38 |
* elmiko shudders at the mention of SOAP | 16:40 | |
dtantsur | hehe | 16:40 |
elmiko | but then i am a smelly hippy, so there is that XD | 16:40 |
dtantsur | I got some funny experience with it | 16:40 |
elmiko | if you had "fun" anywhere near SOAP then you are doing better than most ;) | 16:40 |
dtantsur | It's supposed to be interoperable, but in fact I could not make a SOAP client in Java talk to a SOAP server in Python | 16:40 |
elmiko | ouch | 16:40 |
dtantsur | they had different SOAPs apparently | 16:40 |
elmiko | LOL | 16:40 |
edleafe | I made a python SOAP server talk with a .NET client | 16:41 |
dtantsur | nice! | 16:41 |
* edleafe remembers when XML was going to solve all our problems | 16:42 | |
dtantsur | yeah, except for the problem "how to serialize a list". this one is unsolvable. something between "what's the point of life" and "where is my 2nd sock". | 16:42 |
cdent | dtantsur: which of many aspect of REST do we break with microversions. I suspect we could come up with several depending on which rules we wanted follow | 16:42 |
cdent | dtantsur: also I'm pleased to see you sticking to your guns with -1 the DELETE thing. I think it is important to get it not just right but agreed on and you raise some good points. | 16:43 |
dtantsur | cdent: the one where a URI points to a resource. with microversions a URL can mean anything (or nothing at all) depending on a header | 16:43 |
dtantsur | :) | 16:43 |
*** tosky has quit IRC | 16:43 | |
dtantsur | e.g. I cannot say /v1/portgroups/<UUID> is a representation of a portgroup <UUID> | 16:43 |
dtantsur | because it's only the case if microversion>=1.<something> | 16:44 |
*** tosky has joined #openstack-sdks | 16:44 | |
* edleafe dislikes versions in both URI and header | 16:44 | |
elmiko | edleafe: heh, xml actually /solving/ problems... XD | 16:44 |
dtantsur | this defeats e.g. the "Location" header to a degree, since "Location" is meaningless without a microversion to use it with | 16:45 |
dtantsur | edleafe: I guess from the pure RESTful point of view we had to put them in the URL somewhere.. I know that it has other problems :) | 16:45 |
cdent | dtantsur: yeah, I feel really bad about URIs that exist in microversion N+1 but not N. It's dirty. | 16:46 |
edleafe | I believe that the original practice of using /v1-type URLs was because the original OpenStack devs always did it that way, and so continued the practice. It was never debated | 16:46 |
cdent | their existence has allowed us to get away with some things that we would have considered much more strongly if they didn't | 16:47 |
cdent | until placement, yo | 16:47 |
* cdent tried to resist microversions in placement too | 16:47 | |
edleafe | cdent: that's why I really hate the term "microversion". It's anything but micro | 16:47 |
cdent | really-hugeo-version | 16:47 |
edleafe | megaversion | 16:47 |
edleafe | or, you know, "version" | 16:48 |
dtantsur | if we were less hipster, we would just use "API version" | 16:48 |
dtantsur | ha! | 16:48 |
elmiko | cdent: lol | 16:48 |
edleafe | the only difference with microversions is that we simultaneously support many, many possible versions | 16:48 |
elmiko | i like "really-hugeo-version", it has a nice ring to it. would make debates much more lively | 16:49 |
elmiko | but, i am a fan of absurdism | 16:50 |
dtantsur | then we also have to be creative with numbers themselves | 16:51 |
elmiko | ooh, nice | 16:52 |
edleafe | we should use random integers for our versions. | 16:53 |
dtantsur | what about multiplying 3.14 by 1.X where X is a number of changed strings in the patch introducing the microversion? | 16:53 |
edleafe | dtantsur: too much work | 16:53 |
edleafe | We could just follow git's lead and make the version a hash of the codebase | 16:54 |
*** jpich has quit IRC | 16:54 | |
elmiko | edleafe: haha, <3 random integers | 16:55 |
dtantsur | nice! it will add a pleasant task of figuring out how to put a hash in the file being hashed | 16:55 |
dtantsur | or we could get boring and use the current date and time | 16:55 |
elmiko | i love it, we can have a new middle to handle to upgrade that all projects must follow to become compliant with the new randoversions | 16:55 |
elmiko | *middleware | 16:55 |
edleafe | dtantsur: no problem. Internally you do a 'git checkout {hash}' and then run the request through that | 16:55 |
elmiko | hahaha | 16:56 |
edleafe | simple! | 16:56 |
elmiko | really randoversioning is an upgrade, because it helps project maintainers know who is _really_ following the project | 16:56 |
elmiko | "i'm using the latest, version 3831923", "ah ah, didn't you know the latest is actually 92359841?!?" | 16:57 |
elmiko | busted! | 16:57 |
edleafe | So not only could we replace 'latest' with 'HEAD', we now have access to 'HEAD^', 'HEAD^^', etc | 16:58 |
dtantsur | folks, you keep forgetting that in year 2018 we *must* be mobile-friendly | 16:58 |
dtantsur | so I recommend we start using smiles in versions | 16:58 |
dtantsur | * smileys | 16:59 |
edleafe | Better yet: animojis! | 16:59 |
elmiko | haha, perfect | 17:00 |
edleafe | https://emojipedia-us.s3.amazonaws.com/content/2017/09/21/animoji-poo-emojipedia.gif | 17:00 |
elmiko | dtantsur: micromoji-versioning? | 17:00 |
edleafe | I guess our office hour is up. | 17:00 |
elmiko | ah well | 17:00 |
dtantsur | right! | 17:00 |
elmiko | have a good weekend y'all =) | 17:01 |
dtantsur | see you in January :) | 17:01 |
dtantsur | happy holidays | 17:01 |
elmiko | enjoy dtantsur ! | 17:01 |
edleafe | elmiko: mobile devices are getting bigger, so let's not use 'micro' | 17:01 |
elmiko | edleafe: good point | 17:01 |
edleafe | See ya, dtantsur! Enjoy your time off! | 17:01 |
*** bobh has quit IRC | 17:01 | |
* cdent blinks | 17:02 | |
edleafe | cdent: So are you on board with replacing versions with git hashes? | 17:03 |
cdent | only if we do the git checkout bit internally, and only from a remote repo | 17:04 |
*** bobh has joined #openstack-sdks | 17:05 | |
edleafe | If we put versions in the URI, we could have GET /v91b735fddedbeb9d1cc241dadc753ff2f3b86a4b/foo/bar | 17:05 |
edleafe | Users would love that! | 17:06 |
cdent | that looks suspiciously similar to user/project/tenant/whatever it was in URIs | 17:06 |
cdent | which was an equally bad idea | 17:06 |
elmiko | i'm gonna grab some lunch, catch you gents later o/ | 17:07 |
*** bobh has quit IRC | 17:10 | |
*** bobh has joined #openstack-sdks | 17:12 | |
*** bobh has quit IRC | 17:16 | |
*** dtantsur is now known as dtantsur|afk | 17:27 | |
*** bobh has joined #openstack-sdks | 17:51 | |
*** e0ne has quit IRC | 18:11 | |
*** e0ne has joined #openstack-sdks | 18:15 | |
*** e0ne has quit IRC | 18:16 | |
*** jpena is now known as jpena|off | 18:38 | |
*** e0ne has joined #openstack-sdks | 19:53 | |
*** tosky has quit IRC | 19:56 | |
*** tosky has joined #openstack-sdks | 19:57 | |
*** e0ne has quit IRC | 19:58 | |
*** gtema has joined #openstack-sdks | 20:12 | |
*** bobh has quit IRC | 20:28 | |
*** bobh has joined #openstack-sdks | 20:48 | |
*** bobh has quit IRC | 20:52 | |
*** mriedem has quit IRC | 21:02 | |
openstackgerrit | Thomas Bechtold proposed openstack/openstacksdk master: Drop self.conn from base.TestCase https://review.openstack.org/625115 | 21:07 |
*** markvoelker has joined #openstack-sdks | 21:11 | |
*** gtema has quit IRC | 21:11 | |
*** mriedem has joined #openstack-sdks | 21:26 | |
*** tobias-urdin has quit IRC | 21:32 | |
*** bobh has joined #openstack-sdks | 21:54 | |
*** bobh has quit IRC | 22:00 | |
*** markvoelker has quit IRC | 22:06 | |
*** bobh has joined #openstack-sdks | 22:15 | |
*** lbragstad has quit IRC | 22:37 | |
kmalloc | mordred: the SDK issue, are you seeing that on master or on pip isntalled? | 23:08 |
kmalloc | mordred: because i can't duplicate it on the current release | 23:08 |
kmalloc | mordred: the discovery bit | 23:08 |
kmalloc | mordred: i just tried with vexxhost: | 23:09 |
kmalloc | https://www.irccloud.com/pastebin/EHIjvSgI/ | 23:09 |
kmalloc | mordred: using pretty much your code: | 23:10 |
kmalloc | https://www.irccloud.com/pastebin/7mR8Gonv/ | 23:10 |
kmalloc | mordred: i omitted the auth request. | 23:10 |
kmalloc | maybe you're hitting the unversioned URL? | 23:11 |
kmalloc | nope, also not seeing that there. | 23:11 |
Shrews | kmalloc: you gotta enable the cache part | 23:12 |
kmalloc | Shrews: bah. | 23:13 |
Shrews | kmalloc: steps to reproduce are here: https://storyboard.openstack.org/#!/story/2004605 | 23:13 |
Shrews | kmalloc: unless there is a different issue you are talking about :) | 23:13 |
kmalloc | no different thing | 23:13 |
Shrews | oh, sorry | 23:13 |
kmalloc | Shrews: i was looking at the duplicate discovery bit first | 23:13 |
kmalloc | Shrews: and i can't duplicate that. | 23:13 |
kmalloc | since that one might be something wrong in KSA. | 23:13 |
Shrews | kmalloc: i am no help there | 23:14 |
kmalloc | yeah, will need mordred to weigh in on duplication, it just isn't happening for me. | 23:14 |
kmalloc | on to the dogpile thing. | 23:14 |
ianw | kmalloc: yeah, i'm taking a look at it too ... wow it's hairy | 23:18 |
ianw | the change is https://gerrit.sqlalchemy.org/#/c/sqlalchemy/dogpile.cache/+/996/4/dogpile/cache/region.py | 23:19 |
ianw | i can sort of replicate it. i think in the unit tests, somehow it's getting eaten | 23:20 |
ianw | but if you put more failures in there, you see it | 23:20 |
kmalloc | Shrews: on another unrelated note | 23:22 |
kmalloc | https://usercontent.irccloud-cdn.com/file/ylihsQes/battlestation | 23:23 |
kmalloc | Shrews: ^ hehehe 3x portrait mode monitors = win for code! | 23:23 |
kmalloc | ianw: yeah it's weird. | 23:24 |
Shrews | kmalloc: sick | 23:25 |
*** tosky has quit IRC | 23:27 | |
kmalloc | Shrews: i'm not able to duplicate that issue | 23:33 |
kmalloc | with dogpile 0.7.0 or 0.7.1 | 23:33 |
kmalloc | i must have something broken in my clouds.yaml | 23:33 |
kmalloc | ooh wait. | 23:34 |
kmalloc | nope. hmmm. | 23:35 |
kmalloc | there we go | 23:37 |
kmalloc | hmm. this is why i usually use settr() instead of = for setting values, especially on python structures. | 23:39 |
*** slaweq has quit IRC | 23:40 | |
*** mriedem has quit IRC | 23:41 | |
ianw | so the original decorator wrapped the function, which is actually in this case a bound method | 23:45 |
kmalloc | right. | 23:45 |
ianw | now it uses "decorate" | 23:45 |
kmalloc | which means that __get__ is looking at .. i think something else here. | 23:45 |
kmalloc | yeah, i'm not super familiar with decoratte, that might eat things. | 23:45 |
ianw | i think the __get__ is right -- that's returning the bound method | 23:46 |
ianw | e.g. if we're calling self.list_users() | 23:46 |
ianw | it's the list_users() method of self | 23:46 |
kmalloc | right. but we're failing when it comes to doing the .set = set_ | 23:46 |
ianw | then it's essentially calling "cache_on_arguments(self.list_users)" | 23:47 |
kmalloc | so, with decorate module we might be getting something else back from the __get__ that is resulting on the failure. | 23:47 |
ianw | well it hasn't got to that point yet | 23:47 |
ianw | it's assuming it can set "func.set = ... something" | 23:47 |
kmalloc | the traceback i see is | 23:47 |
kmalloc | https://www.irccloud.com/pastebin/Dd2zuRog/ | 23:47 |
ianw | which you can't do on a bound method | 23:47 |
kmalloc | right. | 23:48 |
kmalloc | hmm.. i wonder. | 23:48 |
ianw | ok, we're talking about the same traceback at least :) | 23:48 |
ianw | splitting it up helps i think | 23:49 |
ianw | http://paste.openstack.org/ | 23:49 |
kmalloc | yeah | 23:49 |
kmalloc | i think i see what is going on | 23:50 |
ianw | in the old decorator, it would use @wraps(fn) on the incoming user function | 23:50 |
kmalloc | yes | 23:50 |
kmalloc | dogpile makes the broad assumption it is doing the wrapping | 23:50 |
kmalloc | not getting magic instantiated things | 23:51 |
kmalloc | bound methods. | 23:51 |
ianw | yes ... probably a fair assumption :) | 23:51 |
kmalloc | we're probably doing it wrong. | 23:51 |
ianw | sorry i've got to step out for about 30 minutes for a meeting. i'll be back | 23:52 |
kmalloc | yeah np. | 23:52 |
kmalloc | ianw: the solutions are pretty straightforward (cc Shrews, mordred): 1) dogpile reverts, 2) we stop wrapping on-demand, and we lean on something similar to a "should_cache_fn", or always wrap and just lean on the null backend by default, 3) same as 2, but we use should_cache_fn to control if caching is enabled. | 23:54 |
kmalloc | i think dogpile is probably making the sane assumption it should be allowed to control wrapping. | 23:55 |
kmalloc | i think we should just always wrap, and let dogpile do that, instead of wrap the bound method. | 23:56 |
Generated by irclog2html.py 2.15.3 by Marius Gedminas - find it at mg.pov.lt!