Earlier  
Posted Nick Remark
#openstack-nova - 2019-12-13
15:19:25 KeithMnemonic i did
15:19:50 KeithMnemonic on rocky
15:20:04 KeithMnemonic let me go back and do pike as well
15:20:08 KeithMnemonic it wont take me long
15:20:23 dansmith yeah, that's not the same
15:20:27 mriedem note that in at least one case i'm aware of, we had merged a backport to rocky and someone from canonical came back to me later saying it didn't actually fix the bug and they were right and we needed to follow up with a rocky only fix
15:20:28 KeithMnemonic ok fair enough
15:20:46 mriedem so, it happens
15:21:31 KeithMnemonic so that is funny, sort of i just got merged a cheey pick for a missing "prev" button on the horzion instance panel, that is actually broken in master
15:22:21 efried Sundar: I don't like "Hey, also send a required trait asserting that the compute is capable of accelerator stuff, because the fact that it's exposing inventory isn't sufficient"
15:23:05 dansmith efried: it's not exposing inventory, cyborg is exposing the inventory, right?
15:23:23 KeithMnemonic and mriedem they are telling me it is due to nova api behavior ;-)
15:23:38 efried dansmith, Sundar: If a rogue external agent (whether it's cyborg, neutron, random $service, an admin) goes around adding shit to the provider tree, all bets are off as far as I'm concerned.
15:23:38 Sundar efried: The trait can be used by Cyborg to not publish inventory.
15:23:58 efried Yes, that ^ is cyborg not being rogue, and it is sufficient IMO.
15:24:14 efried dansmith wants to not trust cyborg et al that far.
15:24:16 dansmith efried: then we should do a service version check
15:24:55 Sundar efried: does that not apply to any trait?
15:24:56 efried I'm not going to block on this. I appreciate the reasoning. I just don't like it. So you can ignore that part and focus on the "if you're going to do it, you need to do it this way" part of the comment.
15:24:57 dansmith efried: we have gone a long way with not breaking our internal RPC APIs, please give that the credit due, and let's use the tools (any of them) that we have to keep those guarantees strong
15:27:33 Sundar dansmith: We discussed 2 changes: A. Per-ARQ events B. Handling old compute nodes, one option being trait usage. I can do Part A now. Are you ok with that partial update?
15:28:15 Sundar Part B perhaps requires more discussion, and Ill do that later
15:28:51 dansmith Sundar: there are multiple parts of B that need to be done, the trait so that at least cyborg can tell, and then the second part is what we do on the nova side.. exposing the trait is not contentious, so you should do that
15:29:08 openstackgerrit Matt Riedemann proposed openstack/nova master: Fix accumulated non-docs nits for cross-cell-resize series https://review.opendev.org/698935
15:29:27 dansmith if you want to wait until january I will be glad to write the hard service version check
15:31:03 mriedem this kind of hard service version check when the trait isn't available? https://review.opendev.org/#/c/695220/4/nova/compute/api.py@3938
15:32:37 Sundar dansmith: OK. Just to be clear, you don't see the point in reviewing A alone now?
15:33:09 stephenfin smcginnis: Didn't you have a patch for the requirements tooling to allow me to do this? https://review.opendev.org/#/c/698895/1/doc/requirements.txt
15:33:16 stephenfin I was sure you did but I can't find it
15:33:16 dansmith Sundar: you can just do A and -W it if you want
15:33:42 dansmith Sundar: today is my last day in the office so it won't likely get done until Jan anyway
15:34:13 openstackgerrit Merged openstack/nova master: Move _get_request_group_mapping() to RequestSpec https://review.opendev.org/696541
15:34:19 dansmith mriedem: yes, that's the sort of thing I'm trying to convince efried is important
15:34:53 dansmith mriedem: the assertion is that cyborg should not add inventory for accels until the computes are upgraded, and that's enough to not break nova's internal and external APIs, and I'd rather us do our own internal check
15:35:05 dansmith since we have the tools and it's trivial to do
15:35:19 smcginnis stephenfin: Yes, that merged, but I think unfortunately you still need to keep the python_version marker.
15:35:20 dansmith the cyborg logic could easily be wrong, removed, altered, etc
15:36:16 stephenfin smcginnis: Ah, I thought it was fixed because [1] passed. Turned out that didn't run the requirements job /o\ [1] https://review.opendev.org/#/c/697004/
15:36:31 smcginnis Here's the requirements change: https://review.opendev.org/#/c/693631/
15:37:43 efried dansmith: in mriedem's example, he's going to remove the RPC version check once we can count on the compute exposing the trait.
15:37:55 stephenfin smcginnis: Thanks. Would a change to make the 'python_version' things optional if 'python_version' > 3.x make sense?
15:37:57 stephenfin Thinking out loud
15:38:27 efried dansmith: But he only needs that because the thing he's checking was still possible in a previous version; it just wasn't advertised via the trait.
15:38:29 smcginnis Yeah, I think so. That will give us a transition path away from py2 completely.
15:38:44 efried dansmith: so in this case we actually only need the trait check there.
15:38:46 stephenfin Kewl. I'll tackle that Monday
15:38:50 stephenfin Cheers :)
15:38:59 smcginnis stephenfin: +1
15:39:00 dansmith efried: as I said, I'm happy to check the trait
15:39:45 efried My point is, if we do it that way, we don't need to muck with RPC at all. (For that reason -- we may still want to muck with it to pass the arqs across the wire.)
15:40:30 dansmith efried: I think maybe there is some confusion going on
15:40:40 dansmith efried: there are three things we could do here to provide an internal-to-nova check:
15:40:42 efried The thing I was objecting to earlier was having to tack that same trait onto every GET /a_c. But meh, as long as you do it with root_required I'm content.
15:40:55 dansmith 1. Check the trait, or just put that in the request to placement
15:41:00 dansmith 2. Check the service version
15:41:13 dansmith 3. Put it into the RPC request and depend on the RPC layer to not send if not allowed
15:41:35 dansmith I think #3 is the right answer, but I've already said that I won't block on it, but I think we should do either 1a, 1b, or 2
15:41:49 dansmith all of which are trivially easy because we have infrastructure to make it so
15:42:09 dansmith if 1b (ask placement for the trait) is bad for some reason, then fine, although it seems like the least amount of overhead to me
15:42:26 efried Yes, I agree with you.
15:42:52 efried Are you also agreeing that 1b makes 1a/2/3 unnecessary?
15:43:01 efried If we can agree on that, then I'll get fully behind 1b.
15:43:06 dansmith I'm asking for one of those four options
15:43:09 efried cool
15:43:18 dansmith I thought you didn't want 1b?
15:43:21 efried Sundar: I retract my objection to 1b.
15:43:27 efried I didn't, but now I do.
15:43:39 dansmith man I'm glad we're not local
15:43:57 efried What, you gonna put clorox in my coffee?
15:43:59 dansmith I'd smack you, you'd punch me, our lawyers would get boats
15:44:10 openstackgerrit Matt Riedemann proposed openstack/nova master: Use COMPUTE_SAME_HOST_COLD_MIGRATE trait during migrate https://review.opendev.org/695220
15:44:11 efried I don't punch.
15:44:25 efried I thought you were asking for multiple redundant checks.
15:44:27 dansmith karate chop
15:44:42 efried now you're deliberately goading me
15:44:51 dansmith mriedem can cue up a youtube of the final scene of karate kid
15:45:27 dansmith efried: the only duplicity (which I don't consider duplicity) is us backing up the proper behavior of cyborg with a check, tht's all
15:45:45 mriedem https://www.youtube.com/watch?v=oomCIXGzsR0
15:46:32 dansmith mriedem: right, thanks
15:47:17 Sundar dansmith: efried: So, we are all agreed on 1b: Nova compute publishes a trait, Nova scheduler uses that in Placement query, we all party. Right?
15:47:36 dansmith I'm not partying with either of you, but yes, I'm fine with that
15:48:07 mriedem it occurs to me that daniel's secret is the same as defeating bald bull in punch out
15:48:25 Sundar dansmith: efried: Re. the idea that Cyborg should not publish inventory till n-c
15:48:25 Sundar unrequited? ;)
15:50:12 efried Sundar: ...till n-c advertises the trait. And yes, 1b.
15:51:25 Sundar efried: From an operator's POV, if the inventory gets published, she'd know at least that the devices are good and Cyborg is functioning, and they should look elsewhere to get the system functional.
15:53:24 efried I can live with that.
15:55:07 Sundar efried: dansmith: Ok I'll put in the trait definition. The changes for 1b presumably go in my current patch series.
15:55:16 efried yes
15:55:29 dansmith once the trait is there, it should be one line I'd think
15:55:30 efried so you'll need the os-traits chain
15:55:52 efried dansmith: I'm not actually sure where that line will go. But he also needs to bump the GET /a_c microversion.
15:55:58 efried ...which is like 12 lines.
15:56:11 efried (including test)
15:56:26 dansmith efried: why does he need a bump?
15:56:52 efried Because the trait needs to go into root_required. I'm not going to accept new code that hacks it into the unnumbered request group anymore.
15:57:17 dansmith oh, okay.. we have traits requested now of course, but I guess the point is this is a complicated request
15:57:34 dansmith well, service version check is pretty small and no external dependencies, but.. :)
15:57:42 efried the traits cyborg is requesting today are going into the device profile request groups, which isn't where this capability trait is.
15:58:12 efried And the place those request groups are being built from is kinda far from where the root_required will need to be put in.

Earlier   Later