Earlier  
Posted Nick Remark
#openstack-nova - 2019-07-19
13:57:14 sean-k-mooney am ^
13:57:30 sean-k-mooney no ...?
13:57:49 dansmith lol
13:58:06 sean-k-mooney apperently there is a bluepirnt but the link does not work
13:58:12 gibi efried: so we have more than one node under a compute service. the admin wants to configure some node specific thing via the yaml file. It works for a while but then the node is moved under another compute service where the yaml file has different config. How this allows the admin to specify config for a single ironic node properly?
13:59:35 efried gibi: If they want to have a config for "one specific ironic node no matter which compute service it's under" they could deploy the same config (a single file, that identifies that ironic node explicitly) to all compute hosts.
13:59:57 dansmith gibi: yep, if the admin has different files on different nodes, then a rebalance will change inventory, regardless of if they use $COMPUTE_NODE or not.. that'll need to be a ..node: warning probably regardless
14:00:17 sean-k-mooney dansmith: oh its just a bad commit title
14:00:35 dansmith sean-k-mooney: apparently the submitter is a secret agent
14:00:43 dansmith who cannot reveal their identity
14:00:45 gibi so the templating only helps if the config in the yaml file is not node specific but compute service specific
14:00:46 sean-k-mooney apparently so
14:01:11 sean-k-mooney too bad they didnt update there commit email or username
14:01:21 dansmith gibi: specific to all the nodes managed by that compute, but you have a good point:
14:01:46 gibi but _all_ node changes so it is not well defined
14:01:49 dansmith gibi: some people with different ironic node types would want to have a different selector but still apply one definition to multiple things
14:01:54 efried gibi: Yes. Or if you know you want all of your ironic nodes in your deployment to have some common characteristic, like a trait. You could effect that by deploying one section with $COMPUTE_NODE to each host instead of all N to each compute host.
14:02:35 dansmith the identification section presumably offers us the ability to identify nodes by means other than $COMPUTE_NODE or uuid,
14:02:54 efried dansmith: as of PS13 it allows you to identify by name
14:03:13 dansmith so that we can say things like "any node managed by this service with inventory of CUSTOM_IRONIC_GOLD would be matched
14:03:13 efried earlier revs had a whole panoply of identification mechanisms, but we trimmed it down to the bare bones.
14:03:14 dansmith efried: name isn't super helpful in this case, but ... yeah
14:03:29 dansmith and that's good for early revs I think
14:03:46 gibi OK, I think I see the use case of the templating now.
14:03:47 efried but yes, you make a good case for future expansion of the identification section.
14:03:54 dansmith I'm saying that's a good reason for having identification be a section and not a key
14:03:55 dansmith right
14:04:30 gibi we might need a warning for ironic admins about using the yaml for node specific config
14:04:44 dansmith like I said, a ..note: somewhere for sure
14:04:49 gibi OK
14:05:01 gibi let me read PS13 through, but I think I'm +2 on the spec
14:05:06 efried Thanks gibi
14:10:35 artom dansmith, dunno if you saw efried's adding of yourself to https://review.opendev.org/#/c/671471/, could I pester you some more for it?
14:11:02 gibi efried: does changing 'ensure' to 'additional' keeps the intended behavior idepmotent? I mean if I restart a compute serivce it won't try to re-create the inventory if already exists
14:11:13 dansmith artom: I did not
14:11:46 dansmith gibi: it's still idempotent language to me
14:11:50 efried gibi: yes, it's just a bikeshed of the word being used. I think I explained the rationale in the comment on PS12
14:12:14 efried gibi: it's more than just "restart a compute service" -- this thing runs on every periodic
14:12:15 gibi dansmith: I more after the behavior. if that is idepmontent then I'm happy
14:12:33 gibi efried: OK. then I'm happy :)
14:12:37 dansmith gibi: same behavior, more descriptive (IMHO) wording
14:12:43 efried It makes me happy to make you happy, gibi
14:13:08 gibi dansmith: OK. I accept the language change blindly as I'm not a native speakre
14:13:22 dansmith heh
14:13:36 gibi ... and try to learn in the process
14:13:47 efried don't try to learn too much from s/ensure/additional/
14:13:52 efried that way lies madness
14:14:18 dansmith efried: stop mocking me
14:14:20 efried you can learn things about Dan, but not about English
14:14:23 efried jinx
14:14:43 efried kisses
14:14:44 gibi :)
14:19:49 gibi I'm +2 on the provider config spec
14:20:24 gibi and I guess it is good time to inform you that I will disappeare for two weeks of vacation starting in an hour
14:22:52 efried phew, then I'm glad I nabbed you for that +2. Have a great vacation gibi!
14:23:02 gibi efried: thanks!
14:28:46 cdent enjoy your time off gibi
14:28:59 gibi cdent: thanks
14:31:51 dansmith artom: you have to fix your many typos anyway, so I think you should move the code to a single check to LOG.warning on startup and then I'd be +2 if not for needing some diversity on it
14:32:16 artom dansmith, in _init_host?
14:32:27 artom Yeah, that'd make sense
14:32:27 dansmith that'd be startup yeah :)
14:32:46 sean-k-mooney if you put it in _init_host i would perfonally make it stop the agent booting
14:32:57 dansmith no
14:33:04 artom It wouldn't stop it
14:33:10 artom But... it might take a long time
14:33:12 dansmith this should be a LOG.warning
14:33:13 sean-k-mooney im fine with it just being a warning to
14:33:21 artom Not sure if that's acceptable
14:33:35 dansmith artom: also a reno, just in case anyone is relying on this to do their homework for them
14:34:20 dansmith artom: how long does this take? I'm not sure why it'd be slow really
14:34:29 artom The bug's env has > 1000 nics, they timed it to over 2 minutes
14:34:40 artom ==========
14:34:41 artom ==========
14:34:41 artom sys 2m27.918s
14:34:41 artom user 0m4.358s
14:34:41 artom real 2m32.642s
14:34:41 artom $ time python -c "import nova.compute.utils; nova.compute.utils.get_machine_ips()"
14:34:59 efried wow
14:35:14 dansmith which thing takes long? listing the nics themselves?
14:35:20 dansmith because that really shouldn't take that long
14:35:26 efried yeah, is there not a quicker way to find out if my IP is on the system?
14:35:35 efried ifconfig -a | grep ??
14:35:53 artom efried, could be that "dumb", yeah. Would we be cool with this?
14:36:03 dansmith if it's the list, then not much can be done, but if it's our processing, we could limit to 100 nics and bail after, or something
14:36:05 artom ifconfig isn't on every system nowadays, but `ip` is
14:36:12 efried considering what we're shooting for here, I would be totally fine with something that "dumb".
14:36:14 dansmith no, don't do ip|grep
14:36:27 efried if we were relying on this for real functionality that would be one thing
14:36:30 dansmith this has been in place for four years and one person has complained,
14:36:34 efried but this is a best-effort sanity check
14:36:40 dansmith so I think once at startup which is way less impactful should be fine
14:36:47 artom dansmith, well, thousands of nics aren't exactly common :)
14:36:53 dansmith right
14:37:07 dansmith which is why it's not a problem to do this for the 99.999% I think
14:37:15 efried and as dansmith noted in the original, it's possible for it to fail and everything still be alright.
14:37:17 artom I'm just worried there might be something that implicitly relies on compute service starting up in less than a few seconds
14:37:33 dansmith artom: we have tons of things that are long-running in compute startup,
14:37:35 dansmith so that's not a concern
14:37:54 dansmith we block compute startup until we can talk to conductor in both directions, we clean up failed migrations, do disk IO, etc, etc

Earlier   Later