| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2018-02-20 | |||
| 16:44:39 | dansmith | right, but once that gap is more than N-1 it's technically out of scope, | |
| 16:44:45 | dansmith | even if we leave it for longer | |
| 16:45:12 | dansmith | if we really need to be defensive in the api about something, we should probably be looking at service version, | |
| 16:45:24 | dansmith | but we can't just look for those forever, which is why we have rules about the gaps | |
| 16:46:09 | mriedem | i don't know if that rule is written down anywhere | |
| 16:46:11 | openstackgerrit | Mohammed Naser proposed openstack/nova stable/ocata: Add functional tests to ensure BDM removal on delete https://review.openstack.org/546227 | |
| 16:46:12 | openstackgerrit | Mohammed Naser proposed openstack/nova stable/ocata: Clean up ports and volumes when deleting ERROR instance https://review.openstack.org/546228 | |
| 16:46:16 | mriedem | which is a question that gets asked every 6 months or so | |
| 16:46:31 | dansmith | the rule that we only support N-1? | |
| 16:46:34 | mriedem | in other words, | |
| 16:46:56 | mriedem | i think one could upgrade the api to queens while they have pike computes and it's fine, but when they upgrade the api to rocky, their computes have to all be queens | |
| 16:46:59 | mriedem | so it's a bit different behavior | |
| 16:47:34 | mriedem | but then multinode grenade wouldn't work...so that doesn't make sense | |
| 16:47:35 | sean-k-mooney | QQ anyone know if the regex support in the pci whitelist allow negation? basical i want to say whitlist vf where vendor_id=x product_id=y and pci_adress is not z | |
| 16:47:47 | cfriesen | what's the criteria for when we expect to create a Migration record on a rebuild? | |
| 16:48:10 | mriedem | cfriesen: a rebuild isn't a migration so never | |
| 16:48:48 | openstackgerrit | Mohammed Naser proposed openstack/nova stable/ocata: Add functional recreate test of deleting a BFV server pre-scheduling https://review.openstack.org/546230 | |
| 16:49:06 | cfriesen | mriedem: what about evacuate or rebuild-to-new-server? | |
| 16:49:07 | mriedem | dansmith: here is an example of one of these things that i'd like to remove from the api https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/servers.py#L1138 | |
| 16:49:18 | mriedem | cfriesen: the api creates the migration record for evacuate | |
| 16:49:23 | mriedem | cfriesen: you could just look at the code | |
| 16:49:57 | mnaser | i'm sure i messed up a conflict somewhere, i have to | |
| 16:50:10 | cfriesen | I am, but it wasn't obvious who was creating it...the ComputeManager code just does a "look it up if it exists and log if it doesn't" | |
| 16:50:20 | dansmith | mriedem: yeah, so if your api is on rocky past this commit, you (obviously) can't hit that, nor can you detect that it won't be supported unless you go by service version | |
| 16:50:24 | cfriesen | or rather, that's the ConductorManager code | |
| 16:50:48 | dansmith | mriedem: if you have configured your upgrade_levels to attempt to allow talking to older than queens nodes, you would have failed to start the api service entirely because rpc client setup will fail | |
| 16:55:06 | openstackgerrit | Mohammed Naser proposed openstack/nova stable/pike: Add functional tests to ensure BDM removal on delete https://review.openstack.org/546220 | |
| 16:56:17 | mriedem | dansmith: so wondering if we should have an upgrade release note saying you can do rolling upgrades of your computes, but don't upgrade your api until all computes are at least rocky | |
| 16:56:48 | dansmith | mriedem: well, I don't think that we do because I feel like that is the rule, so calling it out makes this sound special when it's really not | |
| 16:57:15 | dansmith | mriedem: I'd rather clarify it in the docs somewhere if you think that's necessary | |
| 16:57:41 | openstackgerrit | Mohammed Naser proposed openstack/nova stable/ocata: Add functional tests to ensure BDM removal on delete https://review.openstack.org/546227 | |
| 16:57:52 | doude | Hi jaypipes, could you have a look to that fix https://review.openstack.org/#/c/533212/ ? It's about a bug appeared when Contrail VIF vrouter plugging was moved under privsep. Not sure you are the person I should ping for that but I don't know how to proceed now. I proposed the fix mid-January and I think I'll miss the Queens release :( | |
| 16:57:59 | dansmith | we've had other cases before where if you spanned the N-1 gap you'd have much less obvious issues, and certainly the last rpc bump was the same | |
| 16:58:52 | mriedem | dansmith: i don't think https://docs.openstack.org/nova/latest/user/upgrade.html#rolling-upgrade-process is very clear about it | |
| 16:59:04 | mriedem | 3rd bullet under #2 | |
| 16:59:50 | mriedem | if i'm reading that correctly, it's saying bring down the control plane services, with nova-api last (ok), but then the next bullet is talking about rolling through the computes | |
| 17:00:10 | dansmith | mriedem: "This results in a condition where both old (N) and new (N+1) nova-compute services co-exist for a certain time period." | |
| 17:00:44 | dansmith | that's all that promises | |
| 17:00:53 | dansmith | but, if it's not clear, let's be clear about it | |
| 17:01:30 | dansmith | but I really don't want to get into the habit of trying to call out problematic releases more than others so that people think if it's not called out for a given release then they should expect it to work | |
| 17:01:53 | mriedem | that's fine, | |
| 17:02:11 | mriedem | but then i need to understand if what some of the api compat code was doing via the compute rpcapi client was wrong, so we don't continue that pattern | |
| 17:02:18 | mriedem | because it's in several different compute rpcapi methods | |
| 17:02:53 | dansmith | mriedem: I don't think it's wrong, | |
| 17:03:03 | dansmith | mriedem: at some point the api needs to assume it can make a call and it will work | |
| 17:03:31 | mriedem | ok, so that means, any of these compat checks in compute rpcapi made *before* queens are OK to remove | |
| 17:03:33 | dansmith | if the operator has set up something wrong or created some unsupportable scenario, a 5xx error code from the api is correct rihgt? | |
| 17:03:54 | dansmith | I think any that were made *in* queens are good to remove | |
| 17:04:08 | dansmith | we can't detect or honor any of them made for scenarios before 5.0 | |
| 17:04:22 | dansmith | (in or before, in case it's not clear) | |
| 17:04:44 | mriedem | yeah, so then what the api could gracefully handle in queens, it cannot in rocky | |
| 17:04:54 | dansmith | right | |
| 17:04:58 | mriedem | but, | |
| 17:05:03 | cfriesen | In stable/pike if we do a rebuild-to-same-node with a new image, it results in ComputeManager.rebuild_instance() being called with "scheduled_node=<hostname>" and "recreate=False". This results in a new Claim, which seems wrong since we're not changing the flavor and that claim could fail if the compute node is already full. | |
| 17:05:05 | mriedem | we don't explicitly say the api can do that | |
| 17:05:19 | mriedem | is what you're saying, right? | |
| 17:05:47 | mriedem | you can have N control services and N and N-1 compute services, fin. | |
| 17:05:55 | dansmith | mriedem: we've said the api can be one rev newer than the computes, so our api code needs to handle the case where some computes don't support a function because they're N-1, and we do | |
| 17:06:01 | mriedem | no guarantees that the API will support the N-1 computes | |
| 17:06:08 | dansmith | as of this moment, api code for rocky can't have any computes that don't support things | |
| 17:06:44 | dansmith | no, we guarantee the api will support N-1 computes | |
| 17:06:45 | dansmith | but not N-2 | |
| 17:06:46 | dansmith | and at the moment, N-1 computes can do all the things of the N ones, so no checks are needed | |
| 17:12:22 | mriedem | cfriesen: that's a regression | |
| 17:12:25 | mriedem | yet another one | |
| 17:12:45 | dansmith | gawd | |
| 17:13:27 | mriedem | i don't know why this isn't just "if recreate: | |
| 17:13:28 | mriedem | https://github.com/openstack/nova/blob/master/nova/compute/manager.py#L2866 | |
| 17:13:36 | mriedem | recreate == evacuate == always do a claim | |
| 17:14:15 | mriedem | this is stale: https://github.com/openstack/nova/blob/master/nova/compute/manager.py#L2854 | |
| 17:14:25 | mriedem | since the new crap to consult the scheduler if the image changes | |
| 17:15:30 | mriedem | cfriesen: open a bug | |
| 17:16:03 | mriedem | it's a regression from I11746d1ea996a0f18b7c54b4c9c21df58cc4714b | |
| 17:16:20 | cfriesen | mriedem: will do | |
| 17:20:40 | openstack | Launchpad bug 1750618 in OpenStack Compute (nova) "rebuild to same host with a different image results in erroneously doing a Claim" [Undecided,New] | |
| 17:20:40 | cfriesen | mriedem: https://bugs.launchpad.net/nova/+bug/1750618 | |
| 17:21:00 | mriedem | cfriesen: are you going to post a patch? | |
| 17:21:05 | mriedem | i think it's just changing that one line | |
| 17:22:52 | cfriesen | just change it to only check "recreate" and ignore "scheduled_node"? yeah, I can post that | |
| 17:23:07 | cfriesen | I guess we'd need a new unit test? | |
| 17:23:29 | cfriesen | or a tweak to one of the existing ones to check if we're doing a real claim | |
| 17:23:37 | mriedem | i guess, there might already be one that has to change, | |
| 17:23:45 | mriedem | the problem here isn't in unit tests, | |
| 17:24:06 | mriedem | the problem is the fact that rebuild/evacuate is so tightly coupled between api, conductor and compute, and what the assumptions are between all of them about what the other is doing | |
| 17:24:21 | cfriesen | fair enough | |
| 17:24:22 | mriedem | so changing anything in one breaks the others | |
| 17:24:43 | mriedem | a solid test would be a functional rebuild test with a new image that asserts that we never do a claim | |
| 17:24:54 | mriedem | i know we have functional tests that do a rebuild with a new image, | |
| 17:25:04 | mriedem | but it's using the fake driver so likely the claim stuff was never a problem | |
| 17:25:15 | mriedem | there might be a way to poison the claim such that if it's called, it will fail | |
| 17:25:35 | openstackgerrit | Merged openstack/nova master: Check quota before creating volume snapshots https://review.openstack.org/520158 | |
| 17:27:43 | mriedem | cfriesen: functional test 'test_rebuild_with_new_image' should probably be tweaked | |
| 17:27:56 | mriedem | such that if nova.compute.resource_tracker.ResourceTracker.rebuild_claim is called, it blows up | |
| 17:28:53 | cfriesen | will take a look. | |
| 17:30:13 | mriedem | bauzas: melwitt was +2 on https://review.openstack.org/#/c/545132/ before i updated the commit message, can you just proxy her +2 and approve so we can do backports? | |
| 17:33:15 | dansmith | jaypipes: cdent which of you was going to work on the placement api change to allow passing aggregates? | |
| 17:33:40 | cfriesen | mriedem: for the rebuild-on-same-host-with-different-image case, if it runs through the scheduler could it fail due to placement if there isn't room for another one of itself on its current compute node? | |
| 17:35:10 | mriedem | cfriesen: we don't claim in that case | |
| 17:35:27 | cdent | dansmith: I probably _can_ do it, but I haven't made plans to do it | |
| 17:35:53 | mriedem | although i guess it's possible that placement could return 0 allocation candidates and we'd get a novalidhost | |