Earlier  
Posted Nick Remark
#openstack-sdks - 2019-01-17
17:04:38 evrardjp edleafe: not right nwo
17:04:41 aspiers I think the idea was to specify it in the path
17:04:47 aspiers but we're open to recommendations
17:04:59 aspiers https://review.openstack.org/#/c/617924/1/oslo_middleware/healthcheck/__init__.py
17:05:09 aspiers is the WIP prototype from mugsie
17:05:14 edleafe Generally a header is preferred over mangling the path with version info
17:05:17 aspiers I'm just polishing it up now
17:05:20 dtantsur elmiko: cool!
17:05:32 aspiers edleafe: OK, but this would be a different header to the normal microversion?
17:05:52 dtantsur "normal microversion"? :D
17:05:52 elmiko dtantsur: you gonna be at devconf?
17:05:59 dtantsur elmiko: devconf.cz - yep
17:06:02 evrardjp aspiers: it could technically be the same header, it's a different path
17:06:20 mugsie in this case, there is a pre-existing URL, so it should be something like /status - move away from the /healthcheck that v1 uses
17:06:22 dtantsur OpenStack-Api-Version: compute 2.42, healthcheck 1.1\
17:06:24 dtantsur or something
17:06:25 elmiko dtantsur: \o/
17:06:28 aspiers right, that one
17:06:40 edleafe aspiers: microversions are per-call
17:06:40 evrardjp mugsie: I like that idea
17:06:51 aspiers edleafe: sure
17:06:58 aspiers evrardjp: me too
17:07:04 aspiers status can be about more than just health
17:07:09 mugsie and microversions make it unusable for a lot of monitoring application uses - so we should avodi it if possible
17:07:09 cdent I think if we want the middleware to be super easy, all it should be is a path
17:07:15 dtantsur just a word of caution: obvious things like /status may clash with services that do not use major versions
17:07:18 evrardjp mugsie: agreed again
17:07:27 mugsie dtantsur: true
17:07:28 evrardjp cdent: ok
17:07:37 aspiers ah ok
17:07:56 aspiers Apache has mod_status.so which uses /status IIRC
17:07:58 dtantsur so if we declare a standard endpoint, we may want it verbose. something like /openstack-status
17:07:58 edleafe mugsie: my only concern is when you run out of synonyms for 'healthcheck' :)
17:08:02 aspiers although that is optional
17:08:06 mugsie /statuscheck /superhealthcheck
17:08:33 dtantsur just to make sure e.g. Placement never wants to introduce its own /status :)
17:08:37 evrardjp dtantsur: thanks for the advice here , I would totally have forgotten that
17:09:10 dtantsur now, if you do insist on major versions (we you shouldn't), it could be /openstack-status/v1
17:09:39 evrardjp haha
17:09:42 aspiers there is some benefit to being somewhat consistent with the existing /healthcheck
17:09:48 aspiers /healthcheck-v2 ?
17:10:05 dtantsur what is this benefit?
17:10:08 aspiers and we want to leave room for v3 somehow :)
17:10:29 dtantsur if you want to leave room for large changes, use microversions
17:10:34 mugsie dont
17:10:35 aspiers dtantsur: so that people aren't confused about two totally different endpoints coming from the same oslo.middleware code
17:10:51 elmiko mugsie: ++ for /superhealthcheck XD
17:10:56 mugsie microversions will make it really hard for a lot of monitoring tools
17:10:59 evrardjp I think it would be fine to later add different path for different /superhealthchecks
17:11:11 evrardjp mugsie: I agree with you there
17:11:12 dtantsur mugsie: microversions are hard for everything, essentially
17:11:19 evrardjp we need the simplest thing for monitoring
17:11:30 mugsie personally, I am OK with /v<number>, but thats just me
17:11:43 aspiers I don't want to have to write a doc which says "for v1, use /healthcheck, for v2 use /openstack-status, and for v3 use /superawesomebunchofchecks"
17:11:55 dtantsur I don't see a problem with ^^ tbh
17:12:08 dtantsur especially if openstack-status is broader than healthcheck
17:12:17 aspiers OK I can try to privately deal with my OCD about inconsistency then :)
17:12:26 edleafe The problem is the repeated change of the API.
17:12:27 dtantsur I hear you, it can be painful
17:12:45 elmiko i'm more in favor of a commonly known path that could live outside of any path-based versioning scheme, but that's just my opinion
17:12:53 dtantsur hmm, we can do /healthcheck/v2 even while keeping /healthcheck
17:12:55 elmiko i don't have a strong technical argument
17:13:07 aspiers dtantsur: if that works, it sounds good
17:13:09 evrardjp elmiko: /healthcheck-v2.0 then /healthcheck-v3.0 ?
17:13:13 mugsie elmiko: this should be independant of the API version
17:13:16 evrardjp should that happen later?
17:13:17 dtantsur just make /healthcheck/(?!v2) redirect to /healthcheck/v1 and move the old stuff to /v1
17:13:29 elmiko honestly, we should get this stuff written into the proposed spec/guideline for health checks
17:13:43 elmiko mugsie: right, that's why i like it to live on a consistent endpoint
17:13:44 edleafe dtantsur: that's the least terrible so far
17:13:49 dtantsur so e.g. /healthcheck/foo/bar redirects to /healthcheck/v1/foo/bar
17:13:51 evrardjp elmiko: it sounds like we're gonna get 10 different answers
17:13:56 dtantsur but /healthcheck/v2/foo/bar is just v2
17:13:58 aspiers LOL, we're back where we were in the same bikeshed as 2 years ago XD
17:14:08 elmiko evrardjp: imo, /healthcheck/v{whatever} is preferable
17:14:18 elmiko evrardjp: yup, pretty much
17:14:23 aspiers I like /healthcheck/v$NUMBER
17:14:30 dtantsur I think we actually do it in ironic with our only major version (/nodes equivalent to /v1/nodes)
17:14:31 mugsie +1
17:14:32 aspiers mugsie: that work for you?
17:14:35 edleafe Not to divert the conversation, but what is driving the need for new healthcheck versions?
17:14:50 dtantsur edleafe: it's a good question actually
17:14:53 aspiers edleafe: https://storyboard.openstack.org/#!/story/2001439
17:14:53 mugsie edleafe: the old one misses some information, and the body changes
17:15:01 aspiers please read that first :)
17:15:06 aspiers there's a lot of history here
17:15:09 aspiers a *lot*
17:15:23 aspiers about 2+ years of bikeshedding
17:15:26 aspiers ;-0
17:15:39 dtantsur "please read these 2 years of bikeshedding history first", thanks, so nice of you :D
17:15:56 edleafe dtantsur: it'll cure your insomnia :)
17:15:56 dtantsur so, breaking changes?
17:15:58 evrardjp edleafe: also check L105 around https://etherpad.openstack.org/p/BER-t-series-goals
17:16:11 evrardjp even if it's not enough for the context
17:17:47 elmiko imo aspiers, whoever is writing the initial draft spec/guideline you just pick a path and we can debate the wording in the pr
17:18:01 elmiko at least get a vote on record at that point
17:18:25 elmiko i'm fine to see my opinion lose in the end, but at least some sort of roll call on the pr would help drive the discussion
17:18:34 elmiko (unless this has already happened and i missed it all XD)
17:18:44 edleafe My feelings on API changes is to not release it until there is very little liklihood of it needing to be changed in the foreseeable future. IOW, it should not be an iterative process
17:19:15 elmiko ++ agreed

Earlier   Later