| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-sdks - 2018-12-13 | |||
| 16:35:22 | elmiko | imo, microversions seem less contentious. but i'm just one person | |
| 16:35:33 | edleafe | elmiko: lol | |
| 16:35:34 | elmiko | edleafe ++ | |
| 16:35:36 | kmalloc | i'd like to really outline the use of 405 in that doc. | |
| 16:35:41 | kmalloc | because it is useful. | |
| 16:35:52 | kmalloc | but that is a bigger bundle of "lots of comments" | |
| 16:35:57 | dtantsur | microversions are not contentious at all, just do them | |
| 16:36:05 | elmiko | dtantsur: LOL | |
| 16:36:14 | kmalloc | dtantsur: ok, go implement it for keystone, i think you just volunteered :) :P :P :P | |
| 16:36:20 | edleafe | kmalloc: http://specs.openstack.org/openstack/api-sig/guidelines/http/response-codes.html#failure-code-clarifications | |
| 16:36:35 | dtantsur | how many years it took us to implement proper negotiation in OSC? oh wait, it's still not there? :) | |
| 16:36:43 | edleafe | There is a paragraph there on 405 | |
| 16:36:50 | kmalloc | edleafe: yes, but i think that needs some expansion | |
| 16:37:05 | edleafe | patches welcome! :) | |
| 16:37:11 | kmalloc | yes, it's on my long long long list | |
| 16:37:14 | kmalloc | :) | |
| 16:37:21 | dtantsur | kmalloc: I'll switch keystone to SOAP | |
| 16:37:36 | kmalloc | dtantsur: if you can get people to approve it... and not break our API contracts, go for it | |
| 16:37:44 | kmalloc | dtantsur: i'll even volunteer to not -2 that change | |
| 16:37:50 | kmalloc | or even -1 it. | |
| 16:37:52 | dtantsur | SOAP never greaks contracts, it's enterprise-grade | |
| 16:37:52 | 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:38:19 | dtantsur | edleafe: /me imagines $ curl https://baremetal.example.com/v56/nodes | |
| 16:38:56 | dtantsur | it's mostly kidding again, but I do feel bad that we break RESTfulness with microversions | |
| 16:40:06 | dtantsur | hehe | |
| 16:40:18 | elmiko | but then i am a smelly hippy, so there is that XD | |
| 16:40:23 | dtantsur | I got some funny experience with it | |
| 16:40:41 | elmiko | if you had "fun" anywhere near SOAP then you are doing better than most ;) | |
| 16:40:45 | 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:53 | elmiko | ouch | |
| 16:40:54 | dtantsur | they had different SOAPs apparently | |
| 16:40:59 | elmiko | LOL | |
| 16:41:28 | edleafe | I made a python SOAP server talk with a .NET client | |
| 16:41:57 | dtantsur | nice! | |
| 16:42:34 | 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:41 | 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:43:25 | 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:25 | 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:36 | dtantsur | :) | |
| 16:43:56 | dtantsur | e.g. I cannot say /v1/portgroups/<UUID> is a representation of a portgroup <UUID> | |
| 16:44:11 | dtantsur | because it's only the case if microversion>=1.<something> | |
| 16:44:59 | elmiko | edleafe: heh, xml actually /solving/ problems... XD | |
| 16:45:03 | dtantsur | this defeats e.g. the "Location" header to a degree, since "Location" is meaningless without a microversion to use it with | |
| 16:45:28 | 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:46:24 | cdent | dtantsur: yeah, I feel really bad about URIs that exist in microversion N+1 but not N. It's dirty. | |
| 16:46:59 | 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:47:03 | 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:14 | cdent | until placement, yo | |
| 16:47:38 | edleafe | cdent: that's why I really hate the term "microversion". It's anything but micro | |
| 16:47:51 | cdent | really-hugeo-version | |
| 16:47:59 | edleafe | megaversion | |
| 16:48:06 | dtantsur | if we were less hipster, we would just use "API version" | |
| 16:48:06 | edleafe | or, you know, "version" | |
| 16:48:11 | dtantsur | ha! | |
| 16:48:47 | elmiko | cdent: lol | |
| 16:48:56 | edleafe | the only difference with microversions is that we simultaneously support many, many possible versions | |
| 16:49:49 | elmiko | i like "really-hugeo-version", it has a nice ring to it. would make debates much more lively | |
| 16:50:20 | elmiko | but, i am a fan of absurdism | |
| 16:51:31 | dtantsur | then we also have to be creative with numbers themselves | |
| 16:52:28 | elmiko | ooh, nice | |
| 16:53:01 | edleafe | we should use random integers for our versions. | |
| 16:53:28 | 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:57 | edleafe | dtantsur: too much work | |
| 16:54:20 | edleafe | We could just follow git's lead and make the version a hash of the codebase | |
| 16:55:02 | elmiko | edleafe: haha, <3 random integers | |
| 16:55:05 | dtantsur | nice! it will add a pleasant task of figuring out how to put a hash in the file being hashed | |
| 16:55:31 | 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:31 | dtantsur | or we could get boring and use the current date and time | |
| 16:55:38 | elmiko | *middleware | |
| 16:55:53 | edleafe | dtantsur: no problem. Internally you do a 'git checkout {hash}' and then run the request through that | |
| 16:56:01 | elmiko | hahaha | |
| 16:56:17 | edleafe | simple! | |
| 16:56:49 | elmiko | really randoversioning is an upgrade, because it helps project maintainers know who is _really_ following the project | |
| 16:57:40 | elmiko | "i'm using the latest, version 3831923", "ah ah, didn't you know the latest is actually 92359841?!?" | |
| 16:57:49 | elmiko | busted! | |
| 16:58:43 | edleafe | So not only could we replace 'latest' with 'HEAD', we now have access to 'HEAD^', 'HEAD^^', etc | |
| 16:58:46 | dtantsur | folks, you keep forgetting that in year 2018 we *must* be mobile-friendly | |
| 16:58:58 | dtantsur | so I recommend we start using smiles in versions | |
| 16:59:15 | dtantsur | * smileys | |
| 16:59:44 | edleafe | Better yet: animojis! | |
| 17:00:11 | elmiko | haha, perfect | |
| 17:00:12 | edleafe | https://emojipedia-us.s3.amazonaws.com/content/2017/09/21/animoji-poo-emojipedia.gif | |
| 17:00:33 | elmiko | dtantsur: micromoji-versioning? | |
| 17:00:42 | edleafe | I guess our office hour is up. | |
| 17:00:46 | elmiko | ah well | |
| 17:00:48 | dtantsur | right! | |
| 17:01:01 | elmiko | have a good weekend y'all =) | |
| 17:01:07 | dtantsur | see you in January :) | |
| 17:01:11 | dtantsur | happy holidays | |
| 17:01:13 | elmiko | enjoy dtantsur ! | |
| 17:01:17 | edleafe | elmiko: mobile devices are getting bigger, so let's not use 'micro' | |
| 17:01:24 | elmiko | edleafe: good point | |
| 17:01:28 | edleafe | See ya, dtantsur! Enjoy your time off! | |
| 17:03:07 | edleafe | cdent: So are you on board with replacing versions with git hashes? | |
| 17:04:23 | cdent | only if we do the git checkout bit internally, and only from a remote repo | |
| 17:05:52 | edleafe | If we put versions in the URI, we could have GET /v91b735fddedbeb9d1cc241dadc753ff2f3b86a4b/foo/bar | |
| 17:06:18 | edleafe | Users would love that! | |
| 17:06:42 | cdent | that looks suspiciously similar to user/project/tenant/whatever it was in URIs | |
| 17:06:46 | cdent | which was an equally bad idea | |
| 17:07:58 | elmiko | i'm gonna grab some lunch, catch you gents later o/ | |