| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2017-03-15 | |||
| 20:32:43 | mriedem | i know it's not part of a filter, but i'm trying to figure out how it becomes a list, | |
| 20:32:46 | bauzas | forced_hosts is set by the AZ flag | |
| 20:33:02 | mriedem | because the only thing i see that sets forced_hosts in the request spec comes through the REST API using the az parsing in ^ | |
| 20:33:02 | bauzas | mriedem: honestly, I don't remember why, lemme verify the change | |
| 20:33:39 | mriedem | those docs are also a bit wrong btw, they say "HOST is an optional parameter. In such cases, use the --availability-zone ZONE::NODE." - but they fail to mention that NODE is also an optional parameter | |
| 20:34:19 | bauzas | node was added later | |
| 20:34:26 | bauzas | because of $ironic :) | |
| 20:34:30 | openstackgerrit | Ed Leafe proposed openstack/nova master: Add check for invalid inventory amounts https://review.openstack.org/428800 | |
| 20:34:31 | openstackgerrit | Ed Leafe proposed openstack/nova master: Add check for invalid allocation amounts https://review.openstack.org/416752 | |
| 20:34:35 | edleafe | jaypipes: mriedem: updated ^^ | |
| 20:35:21 | jaypipes | cool | |
| 20:37:19 | bauzas | mriedem: so, in between PS7 and PS8, I modified force_hosts to be a list | |
| 20:37:20 | bauzas | https://review.openstack.org/#/c/145528/8..9/nova/objects/request_spec.py | |
| 20:37:39 | bauzas | I'm trying to remember the context why | |
| 20:37:47 | mriedem | 8..9, butok | |
| 20:38:40 | bauzas | mmm | |
| 20:38:55 | mriedem | it's 46 patch sets is hurting my browser | |
| 20:39:44 | bauzas | so, the only reason I see that is because filter_props was having a list | |
| 20:40:12 | bauzas | it's not what I say a reasonable answer, so lemme verify why we have a list for the legacy dict | |
| 20:40:35 | mriedem | i smell a rackspace reason here | |
| 20:41:26 | bauzas | at least the host manager waits for a list | |
| 20:41:32 | bauzas | and I haven't changed that | |
| 20:41:42 | bauzas | so somewhere we accepted a list | |
| 20:42:11 | bauzas | yeah... build_filter_properties() in nova.scheduler.utils | |
| 20:42:14 | bauzas | mriedem: ^ | |
| 20:43:00 | mriedem | https://github.com/openstack/nova/commit/90620a27e0831345864f574256b30bac1ced5843 | |
| 20:43:03 | bauzas | mriedem: https://github.com/openstack/nova/commit/9998c51f | |
| 20:43:47 | mriedem | https://github.com/openstack/nova/commit/90620a27e0831345864f574256b30bac1ced5843 goes back to havana, | |
| 20:43:52 | bauzas | mriedem: sure, but both don't explain why we want a list | |
| 20:43:55 | mriedem | and appears to introduce the idea that forced_hosts is a list | |
| 20:44:18 | mriedem | could have been a mistake if the key was named "force_hosts" so plural | |
| 20:44:53 | mriedem | https://github.com/openstack/nova/blob/90620a27e0831345864f574256b30bac1ced5843/nova/compute/api.py#L727 | |
| 20:44:55 | bauzas | we should go back where force_hosts was originally created | |
| 20:45:04 | mriedem | i'm going | |
| 20:45:31 | bauzas | yeah, like I said there are a shit ton of places where we expect a list | |
| 20:45:39 | bauzas | so I shamelessly copied that | |
| 20:46:05 | bauzas | although I originally found it was a string like I wrote in my PS8 | |
| 20:46:10 | bauzas | defeated by tech debt | |
| 20:47:41 | mriedem | https://github.com/openstack/nova/commit/7b34a2d767b60e053ac1f49d1cdd8c853b8d9133 | |
| 20:47:46 | mriedem | is about as far back as i see | |
| 20:48:27 | mriedem | oh wait it goes further | |
| 20:48:27 | bauzas | https://github.com/openstack/nova/commit/836ee3f45 | |
| 20:49:22 | jroll | don't you guys know to always blame comstud by now | |
| 20:51:00 | mriedem | https://github.com/openstack/nova/commit/16ea348a1623f055809d0d9b7fe9f046515b5dd1 | |
| 20:51:01 | melwitt | I was seeing some stuff from essex | |
| 20:51:54 | mriedem | ^ is essex | |
| 20:52:20 | bauzas | yeah I was an diablo op and I don't remember that feature | |
| 20:52:21 | melwitt | hah, nice | |
| 20:52:41 | bauzas | I just remember Essex added lots of things like that | |
| 20:52:54 | bauzas | but it's very old stories at the corner of the fireplace | |
| 20:53:41 | bauzas | soooo... to answer mriedem's question, I guess that the terrible answer he was afraid was the correct one | |
| 20:53:56 | bauzas | ie. "we planned that for the future" | |
| 20:54:31 | bauzas | just give me a license to kill that AZ hack, and I'll write a specx | |
| 20:54:45 | melwitt | it was maybe mirroring ignore_hosts, which was already there when force_hosts was added | |
| 20:55:00 | bauzas | yeah | |
| 20:55:20 | bauzas | anyway, force_hosts is a legacy from the past, and we should get rid of it | |
| 20:55:37 | mriedem | i'm not necessarily saying let's remove it, | |
| 20:55:43 | bauzas | I'm saying it :p | |
| 20:55:55 | mriedem | but it sure as shit causes a lot of confusion when you're looking at all of the code that uses it, and the API that provides the value, and you see it's not a list | |
| 20:56:00 | mriedem | and you say, wtf am i missing? | |
| 20:56:20 | bauzas | mriedem: you know that the policy differs for that, right? | |
| 20:56:25 | mriedem | yes | |
| 20:56:37 | melwitt | would have to run that by operators because afaik they use that to test new compute host before making it available for scheduling? | |
| 20:56:38 | mriedem | you mean "create:forced_host" right? | |
| 20:56:45 | bauzas | yup | |
| 20:56:54 | mriedem | yeah i thought operators were pretty keen on this, | |
| 20:56:59 | bauzas | I was | |
| 20:57:03 | mriedem | and we've baked it into the migration APIs right? | |
| 20:57:11 | bauzas | in Essex, it was terribly necessary | |
| 20:57:40 | bauzas | but now, we are in a far better place, but at least we should mimic what we merged for the move operations | |
| 20:57:53 | bauzas | ie. having a possible target with a force flag | |
| 20:58:24 | bauzas | which would then verify the filters if the target is set without force | |
| 20:58:34 | bauzas | or totally bypass the scheduler if force | |
| 20:58:55 | mriedem | so, i'm going to just start with a code comment in the request spec object | |
| 20:59:04 | mriedem | so when i look at this in a year, i won't have to do all of the detective work again | |
| 20:59:59 | bauzas | fine by me | |
| 21:04:41 | openstackgerrit | Matt Riedemann proposed openstack/nova master: Add a note about force_hosts only ever having a single value https://review.openstack.org/446175 | |
| 21:04:42 | mriedem | there you go ^ | |
| 21:04:49 | openstackgerrit | Roman Dobosz proposed openstack/nova-specs master: Provide detailed error information for placement API https://review.openstack.org/418393 | |
| 21:06:09 | mriedem | ok, well, back to figuring out how i can mock the scheduler to send build requests to certain hosts in order | |
| 21:07:28 | bauzas | melwitt: https://review.openstack.org/#/c/446175/1 could be worth of interest | |
| 21:07:51 | bauzas | mriedem: what's your concern ? | |
| 21:08:06 | mriedem | bauzas: i'm writing a functional test to recreate https://review.openstack.org/#/c/444106/ | |
| 21:08:07 | bauzas | mriedem: you want the scheduler to return you a specific destination ? | |
| 21:08:21 | mriedem | i have 2 hosts, i want the scheduler to send them in order | |
| 21:10:34 | mriedem | i think i can just use the disk weigher and fake it out | |
| 21:13:50 | mriedem | oh now i see a bug in the docs | |
| 21:15:28 | openstackgerrit | Matt Riedemann proposed openstack/nova master: Fix the help for the disk_weight_multiplier option https://review.openstack.org/446177 | |
| 21:16:31 | bauzas | mriedem: the scheduler is only returning one host, so 2 calls one after the other ? | |
| 21:17:21 | mriedem | bauzas: i need the test to make the scheduler put the server on the hosts in order, where the first host will fail during driver.spawn which would normally trigger a retry to the 2nd host | |
| 21:17:30 | mriedem | i've got 2 hosts in the test | |
| 21:17:45 | mriedem | i want to trick the scheduler into picking the hosts in order | |
| 21:17:52 | mriedem | so i really just need it to pick the bad one first | |
| 21:18:06 | mriedem | i guess maybe it doesn't matter which order as long as i can keep track of the first host that's called | |
| 21:18:18 | mriedem | i'll just do that | |
| 21:19:05 | bauzas | I see | |
| 21:21:32 | bauzas | mriedem: tbh, just asks the scheduler for one host, kill the spawn and then the reschedule will put that host in the retry list | |
| 21:22:02 | bauzas | in case retry doesn't work, then you'll get the first node | |
| 21:22:07 | mriedem | the scheduler will try to send it back to the same host? | |
| 21:22:40 | bauzas | yup, because the claim will be reversed | |