Earlier  
Posted Nick Remark
#openstack-nova - 2017-07-12
19:44:57 gheorghe_ check at the bottom: https://paste.gnome.org/p9vruj0zw ... as you will see here, this is the unsecure resolution. but it will enable you to migrate. also, it greps IP from a subnet deployed within my test environment
19:45:38 gheorghe_ i just this on every kvm node and it enables nova-compute and migration for kvm
19:45:47 gheorghe_ *i just RUN this
20:14:21 jdandrea For "nova boot" how does one specify metadata with a dictionary value?
20:14:26 jdandrea Trying --meta foo='{"bar": ["baz"]]}}' and it seems to arrive in the scheduler plugin's instance properties as a dict of the form {'foo': '{bar:[baz]}'} instead.
20:14:36 jdandrea Which is not valid JSON nor YAML. Maybe I'm doing something wrong on the cmd line?
20:15:03 jdandrea (I should say the value for foo isn't valid JSON nor YAML.)
20:15:40 openstackgerrit Merged openstack/nova master: doc: Remove cruft from conf.py https://review.openstack.org/478468
20:19:18 mriedem jdandrea: i think you specify --meta multiple times
20:19:46 jdandrea mriedem - how do you do that to reference a nested key though?
20:20:01 jdandrea So I'd say --meta level_1_key=... something and then somehow refer to a level below level_1_key?
20:20:15 mriedem oh, no
20:20:46 jdandrea I want to provide a value that is itself a dict. So I figure I'd send in a JSON string enclosed in single quotes, but that doesn't quite work.
20:20:57 openstackgerrit Matt Riedemann proposed openstack/python-novaclient master: WIP: Microversion 2.50 - fix quota class sets resource usage https://review.openstack.org/483060
20:20:58 jdandrea And I can't remove the single quotes without it going sideways.
20:21:33 jdandrea My problem is what I get on the inside doesn't appear to be valid JSON or YAML, so I can't even string load it.
20:23:21 mriedem the CLI isn't expect the value to be itself a dict, so it does a single split and assumes it's a string, which it is - and it's not going to unpack that
20:23:26 mriedem return dict(v.split('=', 1) for v in metadata)
20:23:29 mriedem is what the cli code is doing
20:24:07 jaypipes jdandrea: who let you in here!? :P
20:24:15 jdandrea jaypipes - STOP FOLLOWING ME. :p
20:24:19 jaypipes hehe
20:24:21 jdandrea lol
20:25:11 jdandrea mriedem Right, that makes sense. So the trick is to encode it such that it lands in the plugin as something that can be converted sanely.
20:25:21 openstackgerrit Merged openstack/nova master: doc: Use consistent author, section for man pages https://review.openstack.org/482960
20:25:56 openstackgerrit Merged openstack/nova master: doc: Remove dead plugin https://review.openstack.org/478469
20:26:40 mriedem jdandrea: hmm, do you need to encode it somehow?
20:26:49 mriedem i'm not sure what's goofing it up when it gets over into the API
20:27:10 jdandrea mriedem Yeah, I'm not either. Pondering.
20:27:18 mriedem urlencode?
20:27:22 jdandrea Mayyyyybe.
20:27:25 jdandrea Plausible.
20:27:31 mriedem i'm totally guessing
20:27:32 openstackgerrit Merged openstack/nova master: api-ref: mark instance action events parameter as optional https://review.openstack.org/480792
20:27:33 jdandrea But messy, I admit.
20:27:46 jdandrea Gonna hack on this a li'l bit ...
20:27:46 jdandrea biab
20:29:34 melwitt guh, more random "OpenStackApiAuthenticationException: Authentication error" functional test fails
20:29:39 melwitt gonna have to figure that out soon
20:32:33 melwitt in the gate
20:32:43 mriedem eventlet
20:33:05 mriedem it's something with the compute api and placement api client helper things in the functional tests getting screwed up over eventlet, i think
20:33:22 mriedem cdent had a patch at one point for a related issue where he put a yield in there
20:33:32 melwitt oh, that sounds familiar
20:33:39 mriedem i'm sure i can find it
20:33:47 mriedem like a hog hunting for truffles
20:33:54 melwitt lol
20:40:13 mriedem https://review.openstack.org/#/c/459735/ is what we went with
20:40:30 mriedem https://review.openstack.org/#/c/459733/ was cdents
20:41:18 melwitt hm
20:41:57 mriedem maybe we should set that globally,
20:42:04 mriedem if it's failing on other tests that aren't using the integrated helpers stuf
20:42:07 mriedem *stuff
20:42:17 melwitt oh yeah, lemme see what this one was
20:42:40 mriedem i had one earlier here http://logs.openstack.org/22/454322/37/check/gate-nova-tox-functional-ubuntu-xenial/76cbda6/console.html#_2017-07-12_17_44_14_514884
20:42:42 melwitt api_sample_tests, thought those were using integrated_helpers http://logs.openstack.org/74/467774/7/gate/gate-nova-tox-functional-ubuntu-xenial/4a00841/testr_results.html.gz
20:42:56 mriedem api sample tests are yeah
20:43:58 mriedem mine was something else
20:44:00 mriedem NoValidHost
20:44:17 mriedem i think because the compute node never checked in
20:44:20 mriedem because of some eventlet timeout
20:48:21 jaypipes mriedem, dansmith, edleafe: did we want to return a list of alternates *for each instance in num_instances*? of a single list of alternate allocation requests for the entire request?
20:48:31 jaypipes s/of a single/or a single/g
20:48:37 jdandrea mriedem jaypipes So what I did was look at the value and if it is a string, I try to json.loads the thing. If that fails, I leave it as is. Mischief managed.
20:49:09 dansmith jaypipes: well, if all of them can be rescheduled max_attempts time, then it needs to be num_instances * max_attempts
20:49:39 dansmith jaypipes: but we could also take some percentage or something, and provide some number of bet-hedging alternates, but not enough for all of them to be rescheduled max times
20:50:25 jaypipes dansmith: no, sorry, I meant should I return a single list of alternate allocation requests for the entire call to select_destinations() or should I return a list of alternate allocation requests for each host returned by select_destinations()?
20:51:00 dansmith jaypipes: independent of the number?
20:51:12 dansmith jaypipes: an alternate has to go with a given primary host, because it has to be the same cell,
20:51:29 dansmith so a single list of num*max alternates won't help us once we lose context of which host is in which cell
20:51:39 jaypipes right
20:51:47 jaypipes ok, that answers that
20:52:25 melwitt cells meeting in 8 minutes
20:52:34 dansmith melwitt: correction
20:52:46 dansmith melwitt: short-ass cells meetinglet in 8 minutes
20:54:26 melwitt meetinglet, I like it
20:56:34 edleafe jaypipes: yeah, I think that a single list per instance is best, where each list is the selected (claimed) host followed by the alternates.
20:56:54 efried In Portuguese, meetazinho. In Spanish, meetito. In French, meetette. In German, meetchen.
20:57:05 dansmith ooh, meetito is great
20:57:29 dansmith like dorito, but less yummy
20:57:42 efried Nothing is less yummy than a cooler ranch dorito
20:57:48 jaypipes edleafe: I'm going for a dict, keyed by instance_uuid, of two-tuples where the tuple is (WeighedHost(claimed_host), list(alternate allocation requests))
20:57:57 jaypipes edleafe, dansmith: ^^ make sense to you?
20:58:08 dansmith sure
20:59:16 efried jaypipes Is this yet another thing we're going to regret not being an object later?
20:59:19 melwitt efried: phew, that was close. I misread at first that you were saying cooler ranch was the best dorito
20:59:46 efried melwitt Rest easy.
21:00:00 edleafe jaypipes: this is what scheduler is returning to the conductor?
21:00:35 jaypipes edleafe: well, not *yet*... I'm currently referring to what filter scheduler _schedule() returns to filter scheduler's select_destinations() call.
21:00:45 jaypipes edleafe: still need to figure out what's best for the RPC changes.
21:01:01 jaypipes edleafe: it *may* be that structure...
21:01:12 jaypipes haven't fully thought the RPC layer changes through yet
21:01:26 edleafe jaypipes: I'm still not clear why the selected host has to be in a separate structure than the alternates
21:03:30 jaypipes edleafe: the alternates are meant to be opaque structures. the selected host is the host identifier. the allocation requests are alternate things that can be passed to placement to claim resources if the original destination host fails to fully launch the instance.
21:04:14 jaypipes edleafe: or are you asking to just have a list where the first element of the list is a WeighedHost and the other elements of the list are allocation request blobs?
21:05:16 edleafe jaypipes: the distinction seems unnecessary. Why not send a list of (host, alloc) for each instance, where the first item in the list is the selected host? This way, if the build fails, the cell conductor can easily unclaim the resources already claimed
21:06:05 jaypipes dansmith: thoughts? ^
21:06:19 dansmith jaypipes: we're in the cells meeting right now
21:06:26 jaypipes oh, sorry.
21:06:44 edleafe jaypipes: passing a heterogenous structure seems like it will lead to a lot of conditional blocks to handle the different cases

Earlier   Later