Wednesday, 2024-01-24

opendevreviewDale Smith proposed openstack/magnum master: Drop Swarm support  https://review.opendev.org/c/openstack/magnum/+/89439500:20
*** LarsErik1 is now known as LarsErikP08:35
jakeyiphi dalees, do you have anything you want to talk about today? 08:51
daleeshey jakeyip - mostly related to patchsets. I added some topics to the agenda08:52
daleesother than prompting for reviews, i did want to ask if anyone has objections to magnum-api looking up and calling functions on the driver class.08:53
jakeyipok lets meet 'officially' then, I'll start the meeting in a bit08:55
jakeyip#startmeeting magnum09:00
opendevmeetMeeting started Wed Jan 24 09:00:43 2024 UTC and is due to finish in 60 minutes.  The chair is jakeyip. Information about MeetBot at http://wiki.debian.org/MeetBot.09:00
opendevmeetUseful Commands: #action #agreed #help #info #idea #link #topic #startvote.09:00
opendevmeetThe meeting name has been set to 'magnum'09:00
jakeyipAgenda:09:00
jakeyip#link https://etherpad.opendev.org/p/magnum-weekly-meeting09:00
jakeyip#topic Roll Call09:00
jakeyipo/ 09:00
daleeso/09:00
jakeyip#topic review - flakey tests09:01
daleesso this work was prompted when trying to merge the Swarm patchset09:01
jakeyipthanks. I had a brief look, haven't tested it out yet due to lack of time09:02
daleesand there was some state leaking after some tests, so I've now mocked these and the broken test case seems to be stable now.09:02
daleescool - I've taken the liberty of rebasing the Swarm removal onto this too - it passed CI09:03
daleesbut otherwise there's no rush on merging. it can wait until reviewers have time09:04
jakeyipI'm ok with it, but I was hoping mnasiadka can have a look when he comes back since he was working in this space too09:05
jakeyipif there's no urgency maybe we can wait a week? I think he'll be back soon09:05
daleesagreed, let's park it until then09:06
jakeyipthanks for understanding09:06
jakeyip#topic control plan resize09:07
daleesso for this i had a question I posted yesterday:09:07
daleesI'm interested in thoughts on Magnum-API looking up the driver for a cluster and using validation methods on it. I think the driver is only used by the Magnum Conductor currently, so perhaps the expected way to do this is RPC calls? This is in relation to https://review.opendev.org/c/openstack/magnum/+/90608609:07
jakeyiphmm I have a thought, we currently don't support (?) but what if conductor and api are different versions (e.g. middle of upgrade) and there's new driver code09:11
daleeswell the validation (in this case for control plane sizes on create or resize) will be validated according to whatever driver version is installed in the magnum-api instance and not the magnum-conductor (which still performs the *actual* resize actions)09:13
jakeyipalso, we don't store driver used for cluster 'at point of creation', rather conductor look it up, so in time this may be an issue... not really sure09:13
jakeyipto be fair I don't think mixed version is really much of a problem, we never say we support mixed version right?09:15
jakeyipgenerally i think ok, not shooting this down, just posting edge cases09:16
daleesNo, I wouldn't think so - perhaps for a short time during upgrade.09:16
daleesyeah it's tricky. Seems a big waste of effort to call out to RPC just to validate the master count, but maybe that keeps the delineation.09:17
jakeyipI agree it's a lot of effort. I'm not keen for such a simple case09:18
mkjpryorHi all09:18
daleeshi mkjpryor 09:18
mkjpryorApologies for my late arrival09:18
jakeyiphi mkjpryor glad you can join :) 09:19
mkjpryorDid I miss anything important?09:19
daleesmkjpryor: backlog available here: https://meetings.opendev.org/meetings/magnum/2024/magnum.2024-01-24-09.00.log.txt09:19
mkjpryorThanks dalees09:19
daleesjust discussing a question i had about magnum-api using driver lookup. I'm interested if you have thoughts, too09:19
mkjpryorFWIW, I quite like the fact that the API is completely implementation agnostic09:21
mkjpryorIt makes things very easy to reason about09:21
mkjpryorI think it would have to be very compelling functionality to change that09:22
mkjpryordalees: What exactly is the use case you are worried about?09:22
daleesright now validation of API requests is performed by magnum-api. It can respond immediately to failures (ie. master node count not accepted).09:23
daleesif I do it in the resize function of the conductor's driver, it's an async RPC call and the clusters transitions into UPDATE_FAILED09:23
mkjpryorI get you09:23
mkjpryorSo you're worried about the case where there is driver-specific validation that needs to happen09:24
mkjpryorSo we can fail early09:24
daleesyes09:24
daleesmaybe the answer is just a non-async RPC to do that, and still have the conductor locate and run the driver code.09:24
mkjpryorI guess you are worried about the API and the conductor versions getting out-of-sync if we call driver methods directly in the API?09:25
mkjpryorI'd be worried about the latency of the RPC call in the API code09:26
mkjpryorBut I guess there must be other OpenStack services that do that09:26
mkjpryor:shrugs:09:26
daleesit's a concern we were discussing, in most deployments both would be deployed at once I'd imagine.09:26
mkjpryorI can't imagine many cases, other than a failed upgrade, where they would be different for longer than a few seconds09:27
mkjpryorAnd if you have a failed upgrade, you probably have other problems :D09:27
jakeyipopenstack upgrade? for us the workflow is probably more than a few seconds :D09:28
daleescould be longer, with several api nodes and deployments progressing through them. But yeah, it wouldn't be long. Same problem with a conductor that doesn't know how to answer the validation RPC I guess.09:28
mkjpryorOpenStack upgrade - yeah. True - if you have multiple controllers then it might be a few minutes.09:29
mkjpryorOr if the conductor at the old versions answers the validation RPC and the conductor at the new version performs the operation09:29
mkjpryorI think whatever we do, other than denying API requests during an upgrade, we have a risk of mismatched versions09:30
mkjpryorSo we might as well do the easy/low-latency thing of calling a driver method directly in the API IMHO09:30
daleesokay thanks; I'll think more on your initial comments about it being easier to reason about if conductor does it. I that that's important.09:33
daleesmaybe it just needs some defined boundaries and commenting. We don't ever want magnum-api doing driver actions, but validation seems helpful when these drivers aren't all exposing the same capabilities.09:34
jakeyipyeah, this case is relatively trivial, I'm concerned to 'do it right' just takes so much more effort and blocks things. I want to have some time to think about API doing validation09:34
mkjpryorAs long as there is a well-defined contract for the driver to implement, on reflection I have less of a problem with the API calling that directly09:35
mkjpryorAnd it is clear which bits of the driver get called by the API and which bits by the conductor09:36
jakeyiptrying to think about cinder resize, does api figure out if backend driver supports resize?09:36
daleeshmm, I'll try and figure that one out, jakeyip  - could be similar, or quite different :)09:39
daleesjust to add concrete code; here are the proposed additions to the base driver, that the magnum-api may call (I need to add really clear docs!): https://review.opendev.org/c/openstack/magnum/+/906086/2/magnum/drivers/common/driver.py#19609:41
jakeyipdalees: what are the bad things if an invalid size is specified and cluster goes into UPDATE_FAILED ?09:42
daleesjakeyip: 1) user doesn't get feedback in their CLI or UI, they get "accepted" and it fails later. 2) UPDATE_FAILED clusters cannot be acted on with some features like upgrade. You have to  use a "trick" to resize them to the same size. (I'm proposing we change this in the patchset too).09:43
daleesMostly that it's a much worse user experience than getting a 400 "no you can't, here are the valid sizes".09:44
jakeyipwhat's the trick?09:46
daleesif a cluster is in UPDATE_FAILED you send it a resize to the same size it already is. magnum-api accepts that action and transitions to UPDATE_COMPLETE.09:47
jakeyipok thanks, just want to confirm because I vaguely remember doing something similar but with worker nodegroups etc.09:49
dalees(this is in magnum/conductor/handlers/cluster_conductor.py in allow_update_status variables)09:49
daleesyeah it doesn't matter what nodegroup you do it with. The whole cluster changes state into UPDATE_COMPLETE which allows more actions on it.09:51
jakeyipthe change to allow upgrade when UPDATE_FAILED seems to be a bit dangerous, can you explain why you need that? is it not possible to resize to current, get it to transition to UPDATE_COMPLETE then upgrade?09:53
daleesbecause that's a silly workaround? Perhaps UPDATE_FAILED covers too many cases, some you would rather deny upgrades - so I don't stand by that entirely.09:57
daleesif update_failed because you tried to set the master size to 100, but it failed and stayed at 3 - well what's the point in denying a cluster upgrade?09:58
jakeyipalso if we want Magnum's future to be a thin shim, should we even do validation? what if one day even numbers of controllers are acceptable? (becauase magic :P). do we want to update validation logic in magnum? where do we want to draw the line at validation?09:58
daleeswell yeah, this goes a long way ;)09:59
jakeyipyeah UPDATE_FAILED may have many reasons, I guess it was (is?) good to make sure cluster is healthy before allowing another operation. this can change, of cos09:59
daleesfor that *exact* example, I got you covered. The driver defines whatever it wants to support: https://github.com/stackhpc/magnum-capi-helm/pull/41/files09:59
jakeyipOK for stackhpc example understood10:02
jakeyipso in the size 100 case, should it be an operation to resize to 3 again then upgrade? what should the status be after upgrade if we allow? db will be storing size 100 I assume?10:02
daleeswell no, size 100 is right now denied as an HTTP 400 and not stored - that's the use case for validation vs letting magnum-api trigger the async RPC.10:04
daleesbut i think there are more use cases that Magnum right now encodes that we'll want to move into the driver10:05
daleesvexxhost had one a week back which was CNI support for Cilium. The list is hardcoded in Magnum right now.10:06
jakeyipsorry am thinking of the case where it is allowed, or it is a resize of worker nodegroup, then no quota or something resulting in a UPDATE_FAILED status10:06
jakeyipwe are past time, want to have a think and come back next week?10:09
daleesyep all good - a bit to think about here. thanks for the discussion mkjpryor and jakeyip 10:09
jakeyipthanks for bringing this up10:09
jakeyip#endmeeting\10:10
opendevmeetMeeting ended Wed Jan 24 10:10:33 2024 UTC.  Information about MeetBot at http://wiki.debian.org/MeetBot . (v 0.1.4)10:10
opendevmeetMinutes:        https://meetings.opendev.org/meetings/magnum/2024/magnum.2024-01-24-09.00.html10:10
opendevmeetMinutes (text): https://meetings.opendev.org/meetings/magnum/2024/magnum.2024-01-24-09.00.txt10:10
opendevmeetLog:            https://meetings.opendev.org/meetings/magnum/2024/magnum.2024-01-24-09.00.log.html10:10
*** freyes_ is now known as freyes14:01
*** Guest20 is now known as diablo_rojo23:58

Generated by irclog2html.py 2.17.3 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!