| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2020-04-06 | |||
| 09:52:32 | bauzas | gibi: on it, I'm mostly done | |
| 09:52:44 | johnthetubaguy | stephenfin: somewhere like that | |
| 09:52:50 | gibi | bauzas: thanks | |
| 09:53:01 | johnthetubaguy | stephenfin: comparing it to configuration, basically | |
| 09:53:21 | stephenfin | Yeah, sure. I probably need to better flesh out the descriptions for much of them, including things like what virt driver supports what extra spec | |
| 09:53:46 | stephenfin | In a follow-up though, preferably? I'd like to focus more on making sure every possible extra spec is listed there first | |
| 09:53:54 | johnthetubaguy | stephenfin: I thought you did fairly well on the virt support, I guess there are a bunch of libvirt only in there that are not spelled out | |
| 09:54:11 | johnthetubaguy | stephenfin: yeah, I am OK with that, just wondering about your plans really | |
| 09:54:41 | johnthetubaguy | stephenfin: there are things like PCI alias, when you check the format and not the content, which is typical of json schema checks, just wondering about your thoughts there | |
| 09:54:47 | stephenfin | Yeah, I plan to massively improve the documentation and do things like add cross-referencing | |
| 09:55:19 | johnthetubaguy | to be clear, I would be fine just checking the keys and not the value, as a step forward, so this is a step ahead of that | |
| 09:55:49 | stephenfin | Ah, so for more detailed things like that, I was planning to leave it to the virt driver for now | |
| 09:56:22 | stephenfin | ditto for things like "you need to specify 'hw:cpu_policy' to use 'hw:cpu_thread_policy'" | |
| 09:56:57 | stephenfin | I wanted to do that via the validator initially but it was way too much /o\ | |
| 09:57:12 | johnthetubaguy | I guess I see this as our global API abstraction, that has been implemented by limited drivers... but yeah, its totally a next step | |
| 10:05:05 | bauzas | stephenfin: I don't see anything in the spec about API interop consistency with updates on, say, https://review.opendev.org/#/c/704643/21/nova/api/validation/extra_specs/capabilities.py | |
| 10:05:28 | bauzas | like, I want 'baz' to be accepted in Victoria | |
| 10:05:45 | bauzas | but calling a Ussuri API will tell you 'sorry but no' | |
| 10:05:55 | bauzas | stephenfin: do you plan to address this later on ? | |
| 10:06:13 | johnthetubaguy | its not turned on yet right, haven't set the microversion where it starts | |
| 10:08:08 | bauzas | johnthetubaguy: indeed, see my comments https://review.opendev.org/#/c/704643/21 | |
| 10:08:36 | stephenfin | bauzas: There's no easy answer for that. I think that's the main reason we had to make the policy configurable. We didn't want to require a microversion to add a new extra spec so people needed a escape lever | |
| 10:09:22 | bauzas | stephenfin: okay, I just feel my biggest concern is that if we avoid to whitelist some key for some filter, then people will see a behavioural change | |
| 10:09:23 | bauzas | right? | |
| 10:09:26 | stephenfin | bauzas: tbh though, it's the exact same issue we see with image metadata today and configuring flavor extra specs, unlike configuring image metadata, is admin-only | |
| 10:10:13 | bauzas | alas. people can use 2.85 microversion if they want to disable it | |
| 10:10:14 | stephenfin | bauzas: Correct, but we have signalled that change with a microversion and we've provided a way to "escape" validation | |
| 10:10:29 | bauzas | stephenfin: yeah I understood it | |
| 10:10:32 | stephenfin | or pass '?validation=permissive', iirc | |
| 10:10:50 | bauzas | stephenfin: I'm just afraid that we could merge something that would opt-in | |
| 10:10:59 | bauzas | close to RC1 | |
| 10:11:09 | bauzas | stephenfin: but we can go like it is now | |
| 10:11:20 | bauzas | at least if we have ways to address issues easilty | |
| 10:11:42 | bauzas | because reviewing all the key and value regexes for every filter isn't an easy thing | |
| 10:11:47 | bauzas | but I don't want to hold this one | |
| 10:12:22 | bauzas | so, my take is : if we mess things up, we all assume that we're about to provide bugfixes that will touch the API behaviour and should be backportable | |
| 10:12:31 | bauzas | if we all agree on this, I'm thumbs up | |
| 10:12:36 | bauzas | gibi: stephenfin: johnthetubaguy: ^ | |
| 10:12:55 | bauzas | or we go permissive *by default* | |
| 10:13:05 | johnthetubaguy | hang on... I am missing something | |
| 10:13:06 | bauzas | (which is not the default case IIUC) | |
| 10:13:22 | johnthetubaguy | don't we currently do zero validation by default right now? | |
| 10:13:33 | gibi | bauzas: fixing bugs in the extra_spec validation will not need a new microversion in my view. | |
| 10:13:40 | johnthetubaguy | including after the proposed validation | |
| 10:13:58 | bauzas | gibi: me too, but I'm just saying that we will change the API behaviour silently | |
| 10:14:05 | johnthetubaguy | hang about | |
| 10:14:07 | bauzas | so we all need to accept it | |
| 10:14:10 | stephenfin | johnthetubaguy: no, after https://review.opendev.org/#/c/704643/ it's enabled by default | |
| 10:14:11 | johnthetubaguy | this totally requires a microversion | |
| 10:14:16 | gibi | bauzas: we fix bugs in the API behavior. Which was allowed before as well | |
| 10:14:24 | stephenfin | whoops | |
| 10:14:24 | bauzas | johnthetubaguy: this is enabled later in another change | |
| 10:14:27 | stephenfin | https://review.opendev.org/#/c/708436/ | |
| 10:14:33 | bauzas | 2.86 | |
| 10:14:33 | stephenfin | johnthetubaguy: got that ^ | |
| 10:14:59 | stephenfin | johnthetubaguy: It's a noop with the first patch. The microversion change to turn it on is a separate change | |
| 10:15:05 | bauzas | tbc, I'm okay with approving https://review.opendev.org/#/c/704643/ provided stephenfin (or me) just changes the commit msg | |
| 10:15:28 | johnthetubaguy | stephenfin: yeah, i.e. its added in a microversion | |
| 10:15:32 | bauzas | but I'm not okay with https://review.opendev.org/#/c/708436/ until we basically agree on the stuff I said | |
| 10:15:51 | johnthetubaguy | so... if you do an old microversion, there is no change | |
| 10:15:51 | bauzas | but as gibi said, bugfixes are accepted, so maybe I'm overthinking | |
| 10:16:00 | bauzas | correct | |
| 10:16:06 | gibi | correct | |
| 10:16:12 | johnthetubaguy | nope, bug fixes than change the API would be really bad right? | |
| 10:16:22 | johnthetubaguy | I am really confused here | |
| 10:16:32 | johnthetubaguy | code looks OK to me, but not agreed with the discussion here | |
| 10:16:36 | gibi | johnthetubaguy: if we broke the API we have to fix them with a bugfix. I don't see how that is a bad thing. | |
| 10:17:04 | johnthetubaguy | gibi: nope, we just keep a broken microversion, we did exactly that in the past, see the limits APIs | |
| 10:17:23 | johnthetubaguy | well, it depends on the bug... | |
| 10:17:26 | stephenfin | we're saying that additions to and bug fixes for the _registry_ of extra specs are okay and wouldn't need a microversion | |
| 10:17:32 | gibi | I'm sure that in other cases we said "client should not have to opt in to get a fix" | |
| 10:17:33 | stephenfin | not the API itself | |
| 10:17:41 | bauzas | okay, see, that's why I wanted some discussion about this | |
| 10:17:48 | johnthetubaguy | hmm... | |
| 10:17:50 | bauzas | ... or we set it to permissive by default | |
| 10:18:12 | johnthetubaguy | permissive by default seems pointless to me, needs to get on by default in a new microversion | |
| 10:18:14 | bauzas | and then we have a later change for turning it by default that would require approvals separately | |
| 10:18:15 | stephenfin | that has to be okay, because operators are currently allowed to specify their own extra specs for use in e.g. custom scheduler filters | |
| 10:18:37 | gibi | I think the differentiator was always like "Was the bug in the API was clearly a bad behavior?" | |
| 10:18:51 | bauzas | johnthetubaguy: I agree, the microversion bump would have to be on the 'turn on by default' | |
| 10:18:52 | stephenfin | if we were to say new extra spec == new microversion, we'd have to take that away from operators | |
| 10:18:57 | johnthetubaguy | it was, "does it impact security" I think | |
| 10:19:17 | johnthetubaguy | stephenfin: we would have to give them a namespace like CUSTOM: | |
| 10:19:34 | johnthetubaguy | so to use the new API microversion, they need to update their flavors | |
| 10:19:45 | stephenfin | if we were doing this from scratch, yes | |
| 10:19:57 | stephenfin | but there are custom extra specs in the wild now, so that ship has sailed | |
| 10:20:05 | johnthetubaguy | well, not quite | |
| 10:20:17 | johnthetubaguy | they would still work with older microversions right? | |
| 10:20:27 | bauzas | I don't want to rediscuss the spec https://specs.openstack.org/openstack/nova-specs/specs/ussuri/approved/flavor-extra-spec-validators.html | |
| 10:20:27 | johnthetubaguy | to move forward, they need a migration path | |
| 10:21:02 | johnthetubaguy | well... I guess we should be comparing this to image properties | |
| 10:21:06 | bauzas | I'm just okay with the plan, but from an implementation point of view, I feel that has necessarly to be discussed | |
| 10:21:47 | stephenfin | yeah, they could use the older microversions | |
| 10:22:50 | stephenfin | compared to image metadata properties, I think we're mostly in the same place now | |
| 10:23:22 | stephenfin | you can add a new image metadata property or modify an existing one (add a new value to an enum) | |
| 10:23:51 | johnthetubaguy | so I am stuggling to understand everyone's position in text form | |
| 10:25:08 | stephenfin | for example, setting the 'hw_pci_numa_affinity_policy' property would be rejected by a Train cloud but not an Ussuri cloud, regardless of microversion | |
| 10:25:20 | stephenfin | (since it was only added this cycle) | |
| 10:26:55 | johnthetubaguy | but to be rejected, they would need to be calling the new microversion right? | |
| 10:26:58 | bauzas | johnthetubaguy: stephenfin: the consensus I think is that https://review.opendev.org/#/c/704643/ is a nobrainer | |