| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2018-05-16 | |||
| 19:53:20 | mriedem | this is where we call _build_failed() to see if we disable the service https://github.com/openstack/nova/blob/7bdb7dbbddf9fcb4284d490bf315d6756f4015e7/nova/compute/manager.py#L2209 | |
| 19:53:32 | mriedem | at that point, we have 0 context on the actual exception that occurred | |
| 19:53:51 | mriedem | so if i wanted to inspect the BuildAbortException let's say to see if it was a volume overquota issue, i can't do that | |
| 19:54:12 | dansmith | what does that have to do with hooks? | |
| 19:54:17 | mriedem | i can't do that because, except for one base64 decode error exception, _do_build_and_run_instance doesn't raise exceptions | |
| 19:54:31 | mriedem | _do_build_and_run_instance only returns build_results.* enums which are there for hooks | |
| 19:54:36 | mriedem | https://github.com/openstack/nova/blob/7bdb7dbbddf9fcb4284d490bf315d6756f4015e7/nova/compute/manager.py#L2209 | |
| 19:55:10 | mriedem | at least that's my understanding, | |
| 19:55:22 | mriedem | so what i want is for _do_build_and_run_instance to raise it's actual failure, | |
| 19:55:32 | mriedem | so we can inspect it up the stack in _build_failed() | |
| 19:55:40 | dansmith | you know you're not actually linking me to _do_build_and_run_instance right? | |
| 19:55:41 | mriedem | which means breaking the "return build_results.FAILED" contract in _do_build_and_run_instance which is there for hooks | |
| 19:55:59 | mriedem | sorry, https://github.com/openstack/nova/blob/7bdb7dbbddf9fcb4284d490bf315d6756f4015e7/nova/compute/manager.py#L1788 | |
| 19:56:23 | mriedem | this is where we call _build_failed() https://github.com/openstack/nova/blob/7bdb7dbbddf9fcb4284d490bf315d6756f4015e7/nova/compute/manager.py#L1752 | |
| 19:57:29 | dansmith | see, I never connected hooks with those build result values | |
| 19:58:04 | openstackgerrit | Eric Berglund proposed openstack/nova master: PowerVM Driver: DiskAdapter parent class https://review.openstack.org/549053 | |
| 19:58:05 | openstackgerrit | Eric Berglund proposed openstack/nova master: PowerVM Driver: Localdisk https://review.openstack.org/549300 | |
| 19:58:32 | dansmith | mriedem: what makes you think that those are there for the hooks? git history? | |
| 19:58:42 | dansmith | that said, I don't care at all about breaking that contract as you know, nor removing it | |
| 19:58:43 | dansmith | however, | |
| 19:58:50 | mriedem | i think that's what alaski told me they were for years ago when i asked | |
| 19:58:59 | dansmith | I'm not sure that unwinding all of that is a huge benefit, | |
| 19:59:14 | dansmith | and I'd say we just need another build result that is, like you said "failed, but not my fault" | |
| 19:59:35 | dansmith | that's kindof a large change to alter all that exception handling | |
| 19:59:45 | dansmith | not that it's great, but I just wouldn't want to go refactoring it myself | |
| 20:00:19 | dansmith | https://review.openstack.org/#/c/106482/ | |
| 20:00:29 | dansmith | so that's why I guess, but I had never made that connection | |
| 20:01:31 | dansmith | that is a lot more recent than I would have thought | |
| 20:01:54 | mriedem | yeah, kilo | |
| 20:01:57 | mriedem | all the andrews were in on that one | |
| 20:02:27 | mriedem | ok so i'll hack something nasty up quick and see what it looks like using the existing build_results gorp with a new enum | |
| 20:02:32 | dansmith | that was basically 2015, mitaka was early 2016 | |
| 20:05:32 | mriedem | gerrit says it's in kilo-eol | |
| 20:06:12 | dansmith | I know, it was deprecated in mitaka right? | |
| 20:13:51 | mriedem | hooks in general were deprecated in mitaka | |
| 20:14:19 | mriedem | https://github.com/openstack/nova/commit/7be56442703d071c9256267abb8acfabae642a1a | |
| 20:14:25 | mriedem | via mr dague | |
| 20:14:35 | mriedem | when he was on the "burn all extension points with fire" crusade | |
| 20:16:07 | dansmith | yeah | |
| 20:21:08 | openstackgerrit | Matt Riedemann proposed openstack/nova master: WIP: Don't count volume over quota when disabling compute https://review.openstack.org/568953 | |
| 20:21:10 | mriedem | dansmith: ok here is the hack a mole WIP ^ | |
| 20:24:50 | dansmith | commented | |
| 20:25:10 | dansmith | there are other things, like failing to verify an image signature | |
| 20:25:18 | dansmith | which probably shouldn't count | |
| 20:25:28 | dansmith | since you could probably make that happen externally | |
| 20:26:15 | mriedem | oh there are a buttload of things | |
| 20:27:07 | mriedem | there was one i saw earlier about hitting a compute with device tags but the virt driver doesn't support devices tags (so anything besides libvirt, hyperv and xen) | |
| 20:27:20 | dansmith | hrm yeah | |
| 20:27:26 | mriedem | multiattach is in the same boat | |
| 20:27:41 | mriedem | that's why we added a policy rule on the cinder side to disable being able to make those types of volumes | |
| 20:27:53 | mriedem | if you're purely non-libvirt | |
| 20:28:22 | mriedem | or hell, if you're not using any of the supported volume types for multiattach, which in queens was only 3 out of like the 400 available cinder backends | |
| 20:34:07 | mriedem | mnaser: how much do you hate this? https://review.openstack.org/#/c/568953/ - realizing we should still be doing a volume quota check in conductor, but that could still pass during a race | |
| 20:34:36 | mriedem | dansmith: you didn't pick up on the name of my villian in the commit message | |
| 20:35:23 | dansmith | mriedem: heh, didn't even read the commit message | |
| 20:35:35 | melwitt | I liked it | |
| 20:37:24 | osnaya | Question on openstack snapshot --> Is VMS (Virtual Machine Streaming) implemented in Openstack already? Is it used underneath when a snapshot and volume snapshot created? | |
| 20:38:05 | osnaya | when you take snapshot of a live VM? | |
| 20:38:37 | osnaya | Is VMS (virtual machine streaming) implemented in Pike release? | |
| 20:41:15 | mriedem | jaypipes: if you have the number to Florida Man, i think i might have found him a soul mate across the boarder https://theconcourse.deadspin.com/woman-furiously-shits-on-floor-of-tim-hortons-throws-i-1826082960#_ga=2.237274304.1540633067.1526503254-529658380.1521051074 | |
| 20:42:20 | mriedem | osnaya: the libvirt driver supports live snapshot but you have to set a config option to enable it because it's shown to be unreliable at load with older versions of libvirt | |
| 20:43:01 | mriedem | osnaya: https://docs.openstack.org/nova/pike/configuration/config.html#workarounds.disable_libvirt_livesnapshot | |
| 20:43:28 | mriedem | bye! | |
| 20:44:56 | melwitt | mriedem: what do you mean by "we should still be doing a volume quota check in conductor, but that could still pass during a race"? if we had a check in conductor, it could pass during a race? | |
| 20:46:12 | mriedem | melwitt: yes | |
| 20:46:26 | melwitt | oh, because volumes are created by compute. okay | |
| 20:46:29 | mriedem | let's say i have volume quota of 10 (default) and spawn 10 instances in 10 separate requests | |
| 20:46:47 | mriedem | right, not min_count=10 in a single request | |
| 20:47:04 | mriedem | conductor would see usage as 0 for all 10 requests | |
| 20:47:08 | melwitt | yeah, I didn't know or forgot that volumes are created by compute | |
| 20:47:18 | mriedem | yup - we should eventually create them in conductor but... | |
| 20:47:27 | mriedem | just like we should create ports in conductor | |
| 20:47:48 | melwitt | gotcha, yeah | |
| 20:47:52 | mriedem | creating volumes in conductor would also get rid of the cross_az_attach up-call i think | |
| 20:48:42 | melwitt | I wonder why we don't do them even earlier in the api, before conductor, that would make it so we don't get ERROR state for a quota fail | |
| 20:49:08 | mriedem | because if cross_az_attach=False, and boot from volume with an existing volume, conductor can tell the scheduler we need a host in that az or fail; if nova is going to create the volume, we can create the volume in the az of the host that the scheduler picked | |
| 20:49:39 | mriedem | i used to think about creating volumes in the api, not sure why we wouldn't, we already reserve pre-existing volumes in the api | |
| 20:49:46 | mriedem | we don't create ports in the api though | |
| 20:49:54 | mriedem | i think the argument against doing it in the api is it blocks the response | |
| 20:50:02 | melwitt | ah, okay. wonder if we could just volume-update for the az case. but yeah, just thinking | |
| 20:50:06 | dansmith | mriedem: yeah and volume create can be really slow | |
| 20:50:13 | mriedem | volume create is a 202 | |
| 20:50:26 | mriedem | so nova-api would volume create, get 202 and continue to conductor | |
| 20:50:28 | dansmith | plus you want to be able to do it closer to scheduling or when you know where the instance is going to be right? | |
| 20:50:29 | mriedem | if we did it in the api | |
| 20:50:36 | dansmith | mriedem: right you could and poll later I guess | |
| 20:50:47 | mriedem | yeah we'd still do the poll for available status in compute i think | |
| 20:51:04 | mriedem | but we could catch volume over quota and az cross attach issues much earlier | |
| 20:51:23 | mriedem | i think we need to do it closer to scheduling to know which az the volume and instance have to be in if cross_az_attach=False | |
| 20:52:00 | melwitt | yeah, I was thinking if we could do a "volume update" to set the az after a volume is created but maybe that's not a thing | |
| 20:52:17 | mriedem | that's not a thing | |
| 20:52:23 | mriedem | that would require a volume migration at least | |
| 20:52:25 | melwitt | guess it wouldn't be if their scheduling works like ours | |
| 20:52:27 | melwitt | yeah | |
| 20:52:29 | mriedem | right | |
| 20:53:01 | mriedem | i've only ever heard of i think 2 people that use cross_az_attach=True, and sam at nectar is always the one to reply to my questions about it in the ML | |
| 20:54:55 | mriedem | reminds me i never finished up the change for https://bugs.launchpad.net/nova/+bug/1694844 | |
| 20:54:56 | openstack | Launchpad bug 1694844 in OpenStack Compute (nova) "Boot from volume fails when cross_az_attach=False and volume is provided to nova without an AZ for the instance" [Medium,In progress] - Assigned to Matt Riedemann (mriedem) | |
| 21:39:23 | openstackgerrit | Matt Riedemann proposed openstack/osc-placement master: Resource class set (v1.7) https://review.openstack.org/514644 | |
| 21:39:24 | openstackgerrit | Matt Riedemann proposed openstack/osc-placement master: Usages per project and user (v1.8, v1.9) https://review.openstack.org/514646 | |