| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2018-02-05 | |||
| 14:54:15 | gibi | yes, we need to agree on such a bump together. Especially as dansmith might plan to do a major rpc version bump before the release | |
| 14:54:46 | dansmith | yeah, unfortunately, that reqspec cleanup would be really nice to get into place | |
| 14:56:30 | mriedem | i got 2 patches in against it for queens! | |
| 14:56:31 | gibi | bauzas: if that helps with the current bugfix, I can offer some help with the request spec blueprint in Rocky | |
| 14:56:33 | mriedem | with great success | |
| 14:57:29 | efried | bauzas: What's a request spec, as distinct from allocation request data? | |
| 14:58:01 | efried | That is, what does a request spec has that an allocation request doesn't? | |
| 14:58:19 | mriedem | gibi: replied in https://review.openstack.org/#/c/528385/ | |
| 14:58:32 | mriedem | efried: all sorts of stuff, | |
| 14:58:38 | mriedem | instance groups, scheduler hints, | |
| 14:58:41 | mriedem | image id | |
| 14:58:46 | mriedem | it's basically the instance | |
| 14:58:53 | mriedem | minus host stuff (and BDMs for some reason) | |
| 14:59:03 | efried | okay, thanks. | |
| 15:00:20 | efried | cause jfyi, we are passing the allocation to the compute (https://review.openstack.org/#/c/511879/) | |
| 15:00:32 | bauzas | efried: originally the request spec is what was passed to the scheduler for filtering purposes | |
| 15:00:44 | mriedem | efried: in this case we need the scheduling hints | |
| 15:00:52 | efried | coo | |
| 15:00:58 | bauzas | efried: it became used for more than just the scheduler | |
| 15:01:20 | bauzas | because we have the original intent of the user + some quirks | |
| 15:01:57 | bauzas | the flaw in that model (and I apologize for not having considered it at the design state) is that we don't know which fields are immutable and which not | |
| 15:02:25 | gibi | mriedem: thanks the reply in https://review.openstack.org/#/c/528385/, I'm OK with the extra kwargs | |
| 15:02:36 | bauzas | so, when you review a change using that RequestSpec object record, try to consider all fields as potentially mutable | |
| 15:03:10 | gibi | ameeda: I think you have a way forward now in https://review.openstack.org/#/c/528385/ | |
| 15:04:08 | openstackgerrit | Peter Hamilton proposed openstack/nova-specs master: Add support for certificate validation https://review.openstack.org/540879 | |
| 15:16:54 | lyarwood | mriedem: https://review.openstack.org/#/c/531422/ - happy to +W this now that https://review.openstack.org/#/c/540680/1 is posted? | |
| 15:25:09 | mriedem | gibi: comments in https://review.openstack.org/#/c/525242/ | |
| 15:26:51 | gibi | mriedem: looking | |
| 15:28:10 | cdent | efried: sorry, was walking. On the POST, do the nearby links clarify things at all? On the allocations have a resource provider with a generation that's here: https://github.com/openstack/nova/blob/master/nova/api/openstack/placement/handlers/allocation.py#L210-L220 | |
| 15:29:01 | openstackgerrit | Stephen Finucane proposed openstack/nova master: doc: Start using openstackdoctheme's extlink extension https://review.openstack.org/540888 | |
| 15:29:01 | openstackgerrit | Stephen Finucane proposed openstack/nova master: doc: Don't use single backticks in man pages https://review.openstack.org/540887 | |
| 15:33:06 | mriedem | gibi: and the functional test below | |
| 15:33:44 | mriedem | dansmith: melwitt: easy quick cells v2 layout caveats update for stuff that is now fixed in queens https://review.openstack.org/#/c/540667/ | |
| 15:34:01 | gibi | mriedem: thanks | |
| 15:34:26 | mriedem | bauzas: this looks nice https://docs.openstack.org/nova/latest/admin/virtual-gpu.html thanks for doing that | |
| 15:40:10 | efried | cdent: I knew what you meant; was just commenting that the sentence didn't grammar for me. | |
| 15:40:38 | cdent | efried: because of the missing "of" or more than that? | |
| 15:41:20 | efried | cdent: TBH, I couldn't even interpolate what was missing/wrong. Let me go read it again... | |
| 15:41:28 | cdent | i've just put the "of" in | |
| 15:41:38 | mriedem | lyarwood: done | |
| 15:42:00 | lyarwood | mriedem: thanks | |
| 15:42:20 | efried | cdent: Oh, yeah, that (or the addition of caffeine since first reading) makes it a lot clearer. | |
| 15:42:37 | efried | cdent: And when you get a chance, you said you could point me to where allocations were managing generations. | |
| 15:42:41 | mriedem | lyarwood: can you hit the other 2 pike doc backports here? https://review.openstack.org/#/q/status:open+project:openstack/nova+branch:stable/pike+topic:bug/1714017 | |
| 15:43:03 | lyarwood | mriedem: sure, looking now | |
| 15:43:09 | purplerbot | ||
| 15:43:09 | cdent | efried: second part of [t vPW] | |
| 15:43:51 | efried | cdent: That's on the return from POST /allocations? | |
| 15:44:02 | mriedem | lyarwood: i'm not sure about this https://review.openstack.org/#/c/540846/ | |
| 15:44:19 | mriedem | it's going to be super annoying if we have to update all doc backports to point at the branch they are on | |
| 15:44:19 | cdent | that gives the Allocation object and rp (with a genaration), which is then checked at https://github.com/openstack/nova/blob/master/nova/objects/resource_provider.py#L2079-L2085 | |
| 15:44:25 | mriedem | we don't do that when we branch | |
| 15:44:29 | cdent | efried: that's on the _start_ of PUT or POST | |
| 15:44:35 | cdent | on the way in, not the way out | |
| 15:44:41 | openstackgerrit | Merged openstack/nova master: Fix invalid UUIDs in test_compute.py https://review.openstack.org/531479 | |
| 15:44:49 | cdent | efried: so the generation is checked, but the client doesn't provide | |
| 15:44:50 | openstackgerrit | Merged openstack/nova stable/pike: Don't update RT in _allocate_network https://review.openstack.org/519942 | |
| 15:44:55 | openstackgerrit | Merged openstack/python-novaclient master: Zuul: Remove project name https://review.openstack.org/540304 | |
| 15:44:56 | cdent | which seems ... useless? | |
| 15:45:04 | efried | cdent: Right. What are we checking the generation *against*? | |
| 15:45:30 | efried | cdent: (BTW, in that code block, I still don't see where the generation is being checked, even internally) | |
| 15:45:43 | cdent | efried: anything that changes from the start of the PUT to the time when _increment_provider_generation is called | |
| 15:46:13 | bauzas | mriedem: thanks for pushing me the idea :-) | |
| 15:46:22 | efried | cdent: Okay, well, I should hope that *all* the APIs are doing *that*, to guarantee atomicity of a single call. But yeah, totally not the point I'm actually making in the bug report. | |
| 15:46:43 | cdent | efried: yes, your bug report is a different concern | |
| 15:46:54 | cdent | and no, we shouldn't be doing that in all single calls | |
| 15:46:58 | cdent | it is pointless in allocations | |
| 15:47:00 | mriedem | lyarwood: are you planning on backporting this entire series to ocata also https://review.openstack.org/#/c/540861/ ? | |
| 15:47:03 | cdent | if the allocation fits, write it | |
| 15:47:04 | mriedem | that's a lot of refactor | |
| 15:47:11 | cdent | efried: but we don't currently do that | |
| 15:47:34 | lyarwood | mriedem: still working out if that's even possible | |
| 15:47:46 | efried | cdent: So that's the point we need to consider. I'm not sure I agree that we should always write the allocation if it still fits. | |
| 15:47:51 | lyarwood | mriedem: yeah, the refactor also fixes a load of connect/disonnect issues | |
| 15:48:22 | lyarwood | mriedem: really I should've landed a smaller bugfix ahead of this on master to backport | |
| 15:49:03 | mriedem | hmmm, | |
| 15:49:04 | mriedem | like what? | |
| 15:49:05 | cdent | efried: if you can come up with a cogent explanation of why, that would be great, but to me it violates the spirit of allocations to do anything else and also over constrains the system. | |
| 15:49:22 | mriedem | lyarwood: why not just put a change on stable that says if you're trying to swap encrypted volumes, we fail? | |
| 15:49:39 | efried | cdent: Okay, example: since we're explicitly *not* handling weighing in placement, supporting generation would be a way the caller (who has to handle weighing) can ensure the weighing assumptions they make in the PUT/POST allocation call actually apply at the time when the allocation is written. | |
| 15:50:13 | lyarwood | mriedem: yup that works and avoids this horrid backport, I'll do that now. | |
| 15:50:14 | mriedem | lyarwood: since swap volume doesn't work with encrypted volumes until queens (and only if you're not using native luks encryption), it seems ok to just make it outright fail on stable | |
| 15:50:54 | cdent | efried: "can actually apply" shouldn't mean generation (when it comes to allocations) it should mean capacity/capability | |
| 15:51:46 | cdent | (or if I'm not understanding you, you'll need to be more complete with your example) | |
| 15:51:53 | efried | cdent: I agree with that, but "should actually apply" is based on assumptions about the state of providers when the request was calculated. | |
| 15:52:32 | cdent | which is why we 409 if that state has changed, in a way that changes capacity, by checking the capacity at allocation write-time | |
| 15:52:49 | efried | cdent: Yeah, capacity conflicts I'm cool with, put that aside. | |
| 15:52:55 | edleafe | cdent: I think jaypipes expressed something similar a while ago. If a deployment is trying for spread, and two requests to allocate against the same host come in, the second should fail | |
| 15:53:03 | cdent | if we want to rely on generation, then we are vastly decreasing the odds of an allocation being able to land | |
| 15:53:16 | edleafe | IMO, that's a huge nova-ism for placement to base its behavior on | |
| 15:53:32 | efried | Yes, we may want to consider making the generation handling optional for allocations. But it should at least be possible. | |
| 15:53:45 | cdent | efried: I still haven't heard why? | |
| 15:54:04 | cdent | was " is trying for spread, and two requests to allocate against the same host come in, the second should fail" a reason why? If so, I don't understand? | |
| 15:55:19 | efried | cdent: Yeah. Scheduler is scheduling three instances. Each of the three threads requests allocation candidates "at the same time". Gets back the same list. Scheduler applies a "least consumed" weigher in each of those three threads, and winds up sorting the candidates in the same order. Scheduler sends all three PUT /allocations/{c} at the same time, with the same allocation request in each. | |
| 15:55:28 | edleafe | cdent: because nova thinks the host is relatively empty, so it chooses it. But had the first allocation been known, it would have chosen an emptier host for the second | |
| 15:56:31 | efried | cdent: Even assuming there's capacity for all three on the same set of RPs, by the time we've allocated the first one, the "least consumed" condition, upon which the second scheduler thread's PUT request was based, no longer applies. | |
| 15:57:04 | efried | cdent: Which may be an acceptable limitation of the scheduler's weigher. But it may not be. | |
| 15:57:21 | efried | cdent: Even more so if we have shared RPs involved, and these threads could be hitting from multiple separate compute nodes. | |
| 15:57:33 | edleafe | efried: this all seems like a good argument for placement not being part of nova | |
| 15:57:45 | cdent | a) that's not a thing I think placement should concern itself with, b) that's not a concern I think a cloud should concern itself with (in that fashion, it shoul be orchestrated at a different layer) | |