| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2021-01-05 | |||
| 14:03:45 | bauzas | gibi: ack, will look at the shelve cyborg support | |
| 14:03:54 | gibi | bauzas: thanks | |
| 14:04:30 | bauzas | that reminds me I have to rebase my own series on routed networks | |
| 14:08:19 | gibi | stephenfin: I reviewed https://review.opendev.org/c/openstack/nova/+/758396 and I have some questions inline. It was a long step forward, my brain hurts :) | |
| 14:08:55 | gibi | I need some distraction now | |
| 14:09:30 | stephenfin | heh, no problem. Stuck on that PCI unshelve issue from this morning (it's a different issue, it seems) but I'll take a look at some point today, hopefully | |
| 14:09:35 | stephenfin | and thanks! | |
| 14:09:37 | sean-k-mooney | i am reliably informed that the internet has many distrcations | |
| 14:10:17 | sean-k-mooney | stephenfin: do you mean https://bugzilla.redhat.com/show_bug.cgi?id=1911710 | |
| 14:10:18 | openstack | bugzilla.redhat.com bug 1911710 in openstack-nova "[osp 13][neutron] cold migration fails for sriov instance with: Port update failed for port <uuid>c: Unable to correlate PCI slot" [Urgent,New] - Assigned to nova-maint | |
| 14:10:28 | stephenfin | yup | |
| 14:10:32 | sean-k-mooney | cause that is not unshelve | |
| 14:10:44 | sean-k-mooney | different code path | |
| 14:10:58 | gibi | sean-k-mooney: yeah :) | |
| 14:12:00 | sean-k-mooney | the error is raised form here https://github.com/openstack/nova/blob/34c5df7b2b8c7eebbfc8aa0bc3edba501dddcb61/nova/network/neutron.py#L3396-L3398 | |
| 14:12:29 | sean-k-mooney | and it only happens if we have not claimed the pci device we are trying to update the neutron port with if i recall correctly | |
| 14:12:41 | stephenfin | My thinking was that there had been an unshelve on the host before that was using an old record, and the cold migrated instance was trying to use the same record | |
| 14:13:01 | sean-k-mooney | no that gives you a differnet error | |
| 14:13:06 | stephenfin | I'm trying to write a functional test to prove out that theory but have got stuck in the weeds | |
| 14:13:46 | sean-k-mooney | you get someting like libvirtError: Requested operation is not valid: PCI device 0000:5d:17.4 is in use by driver QEMU, domain instance-00003be0 | |
| 14:13:55 | sean-k-mooney | in that case e.g. a libvirt error | |
| 14:14:28 | stephenfin | Ah | |
| 14:16:10 | sean-k-mooney | im donwloadign the customer logs to take a quick look but i would suspect that the device its trying to use is unclaimed | |
| 14:16:46 | stephenfin | hmm, okay if you're looking at that I'll got back to the os-hypervisors work | |
| 14:17:50 | sean-k-mooney | im only going to look at it breifly but want to clarify a few things as peopel have mentioned rebuilds in it so i want to confirm what operation is actully happening | |
| 14:18:03 | sean-k-mooney | ill let you know if i find anything | |
| 14:18:56 | stephenfin | On that note, gibi: currently each entry in the 'hypervisors' field of the '/os-hypervisors/detail' response is identical to what '/os-hypervisors/{hypervisor}' returns. If I'm adding 'uptime' to the latter, I assume I should add it to the former also? | |
| 14:19:39 | stephenfin | as an aside, the whole '/os-hypervisors/detail' API is a bit weird and fairly "non-REST'ful" | |
| 14:19:57 | sean-k-mooney | /os-hypervisors/detail is the list endpoint | |
| 14:20:03 | sean-k-mooney | right | |
| 14:20:12 | sean-k-mooney | so i would expect it to be the same | |
| 14:20:18 | sean-k-mooney | well the detailed list endpoint | |
| 14:20:26 | sean-k-mooney | vs just /os-hypervisors | |
| 14:20:31 | stephenfin | Yeah, it's a variant of the list endpoint but with additional detail in each resource | |
| 14:20:38 | stephenfin | I'd expect it to be the same too | |
| 14:21:19 | sean-k-mooney | for me you are reall adding the uptime to the os-hyperviors resource | |
| 14:21:34 | sean-k-mooney | rather then just that specific endpoint | |
| 14:21:44 | sean-k-mooney | so showing it in detail makes sense | |
| 14:22:09 | sean-k-mooney | where as previously it was on the stats resouce | |
| 14:23:50 | stephenfin | makes sense | |
| 14:25:34 | sean-k-mooney | it is a migration by the way | |
| 14:25:40 | sean-k-mooney | not a rebuild | |
| 14:29:37 | bauzas | gibi: see https://review.opendev.org/c/openstack/nova/+/729563/26/nova/api/openstack/compute/shelve.py#59 | |
| 14:29:45 | bauzas | unfortunately, ship has sailed for a while | |
| 14:30:11 | bauzas | stephenfin: ^ look too | |
| 14:30:37 | bauzas | AFAIK, we were not blocking flavors using this key before | |
| 14:31:49 | bauzas | stephenfin: what's the correct behaviour when I ask to create a new instance with an unknown key ? | |
| 14:31:58 | bauzas | like 'sylvainb:nice' | |
| 14:32:16 | sean-k-mooney | stephenfin: http://paste.openstack.org/show/801414/ | |
| 14:32:20 | bauzas | I guess this would silently be accepted, right? | |
| 14:33:25 | sean-k-mooney | bauzas: you mean a custom extra spec | |
| 14:33:48 | stephenfin | bauzas: Depends on the API version | |
| 14:33:49 | sean-k-mooney | we allwo that as it might be used by a custome schduler filter | |
| 14:34:14 | bauzas | sean-k-mooney: I mean, what would happen if I was creating a flavor with accel:device_profile metadata key inside without using Cyborg at all ? | |
| 14:34:36 | bauzas | I would expect my instance to be created | |
| 14:34:39 | sean-k-mooney | oh thats allowed | |
| 14:34:45 | sean-k-mooney | it will just not do what you want | |
| 14:34:49 | bauzas | sure | |
| 14:34:54 | bauzas | but here, see | |
| 14:34:58 | sean-k-mooney | we will likely fail because we cant look it up | |
| 14:35:06 | sean-k-mooney | e.g. the device profile | |
| 14:35:19 | bauzas | people creating flavors with this key would previously get a 200 | |
| 14:35:32 | sean-k-mooney | ya | |
| 14:35:34 | bauzas | and now we're returning a 403 because of the cyborg deco | |
| 14:35:36 | bauzas | this is said | |
| 14:35:38 | bauzas | sad | |
| 14:35:43 | sean-k-mooney | sure | |
| 14:35:51 | bauzas | this would have required a microversion | |
| 14:35:57 | sean-k-mooney | no | |
| 14:36:05 | sean-k-mooney | extra specs never require a microverion | |
| 14:36:14 | sean-k-mooney | they are an unversioned part of the api | |
| 14:36:19 | bauzas | changing a 200 to 403 ? | |
| 14:36:32 | dansmith | anything could become a 403 at any point, right? | |
| 14:36:39 | dansmith | like you stop having permission to do something | |
| 14:36:52 | sean-k-mooney | well via a policy change yep | |
| 14:36:55 | bauzas | 403s are said to be accepted without new microversions | |
| 14:37:10 | bauzas | but there is a but | |
| 14:37:11 | bauzas | https://docs.openstack.org/nova/latest/contributor/microversions.html#f2 | |
| 14:37:35 | bauzas | getting a 403 because keystone check obviously doesn't require a new microversion | |
| 14:37:37 | sean-k-mooney | bauzas: to get the flavor extra spec validation you have to opt into it via a new microverion | |
| 14:38:01 | bauzas | either way, the ship has sailed | |
| 14:38:07 | bauzas | this deco is there for a while | |
| 14:38:20 | bauzas | and fwiw, happy to see you around dansmith :) | |
| 14:38:26 | sean-k-mooney | right but fundementally there is noting broken or wrong with this | |
| 14:38:38 | dansmith | bauzas: :) | |
| 14:38:56 | bauzas | sean-k-mooney: sure | |
| 14:39:09 | bauzas | anyway, let's continue to review the change | |
| 14:39:22 | sean-k-mooney | the only way to prevent this is to require that operators addign custom extra specs use either no namespace or custom: | |
| 14:39:47 | sean-k-mooney | that would be an improvment in my view but it would be an api change which would need a microverion for sure | |
| 14:39:57 | bauzas | sean-k-mooney: on a side note, https://review.opendev.org/c/openstack/nova/+/729563/26/nova/api/openstack/compute/shelve.py#59 means that now when you shelve, you're getting a 500 with cyborg, right? | |
| 14:40:19 | bauzas | since the exception wrapper is just added but the decorator was existing... | |
| 14:40:42 | sean-k-mooney | well we have patchs to enable cyborg shelve support right | |
| 14:41:02 | sean-k-mooney | oh it is the patch | |
| 14:41:39 | sean-k-mooney | exception.ForbiddenWithAccelerators should not be raised here anymore | |
| 14:42:34 | sean-k-mooney | bauzas: i havent review this in a while | |
| 14:43:03 | bauzas | sean-k-mooney: well, we decorated shelve() a while ago | |
| 14:43:05 | sean-k-mooney | why would self.compute_api.shelve(context, instance) raise that with this chagne? | |
| 14:43:16 | sean-k-mooney | bauzas: yes i know | |
| 14:43:24 | sean-k-mooney | but that decorator should be removed with this patch | |
| 14:43:28 | bauzas | so we were returning ForbiddenWithAccelerators up to the API | |