| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2020-08-27 | |||
| 17:16:57 | dansmith | gmann: nova could check for the file and if not existing, parse the config opt, check for the .json equivalent and reset the default right? | |
| 17:17:38 | sean-k-mooney | right instead of hardcoding DEFAULT_POLICY_FILE = 'policy.yaml' | |
| 17:17:46 | dansmith | like if CONF.policy_file == DEFAULT_POLICY_FILE and os.path.exists(CONF.policy_file.replace('yaml', 'json')): cfg.set_defaults(...) | |
| 17:18:00 | gmann | first one is not right thing to do as any existing file should be consider as policy file | |
| 17:18:08 | dansmith | sean-k-mooney: no, we have to hardcode it | |
| 17:18:09 | dansmith | but we can be flexible in our use of it | |
| 17:18:25 | sean-k-mooney | ya what you sugges seam sane to me too | |
| 17:18:40 | sean-k-mooney | its more or less what i ment | |
| 17:18:59 | gmann | you mean just change the extension name? | |
| 17:19:04 | sean-k-mooney | yep | |
| 17:19:09 | sean-k-mooney | check if the file exists | |
| 17:19:15 | sean-k-mooney | if not change extnetion | |
| 17:19:22 | sean-k-mooney | and check again if found use it | |
| 17:19:36 | dansmith | gmann: yeah my str.replace was just an example, but basically if the config is not overridden, and the file does not exist but the s/yaml/json/ one does, change the default | |
| 17:20:49 | gmann | i think policy.json -> policy.yaml should be converted via new tool which acutally convert the JSON formatted to YAM L formatted. | |
| 17:21:04 | gmann | otherwise policy.yaml in JSON format is confusing | |
| 17:21:14 | dansmith | they should, but we can't make them | |
| 17:21:27 | dansmith | putting json in a .yaml file is not a good idea, nor what we're suggesting | |
| 17:21:32 | sean-k-mooney | well this is not assumign yaml in an .json | |
| 17:22:13 | sean-k-mooney | we are assumign that are on ussuri upgradeing to victoria | |
| 17:22:23 | sean-k-mooney | so they have a policy.json with json in it now | |
| 17:22:39 | gmann | i was thinking warn now give them time to properly convert the json to yaml and in next cycle or so we just change default | |
| 17:22:43 | sean-k-mooney | and we want to make sure we can load that in victoria without them modifying it in any way | |
| 17:23:12 | dansmith | gmann: we can do that too, but we're saying it would be better if we can make it default to yaml now, but fall back to json if need b | |
| 17:23:14 | dansmith | *be | |
| 17:24:17 | gmann | and remove fallback in next cycle? | |
| 17:24:25 | sean-k-mooney | yep | |
| 17:24:32 | dansmith | potentially..some future cycle | |
| 17:24:37 | sean-k-mooney | basicaly treat this as a deprecation | |
| 17:24:48 | sean-k-mooney | we normally remove in a cycle or two | |
| 17:24:51 | gmann | ok. yeah if at some point we can remove fallback then it is fine | |
| 17:24:59 | dansmith | gmann: where is policy.init called from the actual code? | |
| 17:25:02 | dansmith | I only see it from cmd/status | |
| 17:25:38 | gmann | from manage also and at the first call of context.can( | |
| 17:25:51 | sean-k-mooney | you mean in the api wsgi app | |
| 17:25:52 | dansmith | ah, context.can runs it if not run yet? | |
| 17:26:54 | gmann | yeah | |
| 17:26:57 | gmann | https://github.com/openstack/nova/blob/f521f4dbace0e35bedd089369da6f6969da5ca32/nova/policy.py#L168 | |
| 17:27:12 | gmann | which is called from context.can() | |
| 17:27:47 | sean-k-mooney | i was expecting to see it in here https://github.com/openstack/nova/blob/master/nova/api/wsgi.py but ok | |
| 17:28:35 | dansmith | gmann: we're suggesting this: https://pastebin.com/WASufpac | |
| 17:28:44 | dansmith | but less crappy and working.. I just hacked that up like pseudocode | |
| 17:29:37 | sean-k-mooney | ya something like that | |
| 17:29:38 | dansmith | make sense? | |
| 17:31:07 | gmann | yeah but we should only replace replace('yaml', 'json') if default file, 'policy.json' and not any other name | |
| 17:31:37 | sean-k-mooney | thats why there is CONF.policy_file == DEFAULT_POLICY_FILE | |
| 17:31:38 | gmann | if CONF.policy_file == OLD_DEFAULT | |
| 17:32:01 | dansmith | gmann: no, | |
| 17:32:06 | openstack | bug 1889108 in OpenStack Compute (nova) train "failures during driver.pre_live_migration remove source attachments during rollback" [Undecided,New] https://launchpad.net/bugs/1889108 | |
| 17:32:06 | openstackgerrit | Lee Yarwood proposed openstack/nova stable/train: WIP Add regression tests for bug #1889108 https://review.opendev.org/748494 | |
| 17:32:07 | dansmith | gmann: only do this if they haven't touched their config file | |
| 17:32:07 | openstackgerrit | Lee Yarwood proposed openstack/nova stable/train: compute: Don't delete the original attachment during pre LM rollback https://review.opendev.org/748496 | |
| 17:32:07 | gmann | DEFAULT_POLICY_FILE will be policy.yaml right | |
| 17:32:07 | openstackgerrit | Lee Yarwood proposed openstack/nova stable/train: compute: refactor volume bdm rollback error handling https://review.opendev.org/748495 | |
| 17:32:11 | sean-k-mooney | we only do hte fall back if the value is the default | |
| 17:32:14 | dansmith | right | |
| 17:32:32 | sean-k-mooney | dansmith: actully isnt there a way to check if a config value has been set or is the default | |
| 17:32:37 | dansmith | because if they're relying on the default file being policy.json, only THEN do we fall back to the old default | |
| 17:32:53 | dansmith | sean-k-mooney: yes, I'm just doing the easy thing without having to look that up :) | |
| 17:32:55 | gmann | else part change overridden policy file also | |
| 17:33:07 | gmann | xyv_policy_nova.json | |
| 17:33:13 | sean-k-mooney | ok cool i think i have used it before | |
| 17:33:23 | dansmith | gmann: if they have overridden it in the config, then we take what they have set | |
| 17:33:39 | dansmith | gmann: we only need to look for the old file if they haven't, but are assuming the default is the old thing | |
| 17:35:40 | gmann | that is what i am saying. which need to change else: -> elif CONF.policy_file == OLD_DEFAULT_POLICY_FILE | |
| 17:36:08 | dansmith | NO | |
| 17:36:09 | dansmith | :) | |
| 17:36:32 | dansmith | we don't need to do anything if they have said their CONF.policy_file to anything, including the old default | |
| 17:36:39 | dansmith | because of L13 | |
| 17:37:27 | dansmith | wait, maybe I'm missing which else you're talking about.. gmann maybe update the pastebin with what you mean? | |
| 17:37:37 | gmann | if they set CONF.policy_file=nova_policy.json | |
| 17:37:43 | gmann | ok | |
| 17:37:58 | sean-k-mooney | if they set it at all we just use what they set | |
| 17:38:07 | dansmith | sean-k-mooney: right | |
| 17:38:46 | sean-k-mooney | if they dont set it. we check the new default and if the file does not exists check the old default. | |
| 17:39:00 | dansmith | we never need to check to see if the conf is set to the old default, | |
| 17:39:01 | sean-k-mooney | that is what dansmith's pastebin does | |
| 17:39:14 | sean-k-mooney | correct | |
| 17:39:16 | dansmith | we only need to do something different if the conf is unchanged, i.e. set to the NEW default | |
| 17:39:38 | dansmith | and knowing if it's overridden is better than knowing if it's set to the default | |
| 17:39:48 | dansmith | because if it's just set to the default in their config, we should *only* honor that file | |
| 17:40:13 | gmann | https://pastebin.com/GN7mz5tE | |
| 17:40:30 | dansmith | gmann: no, that's not what we want | |
| 17:41:15 | dansmith | if it's set to the old value, then we just use the old value, end of story | |
| 17:41:35 | dansmith | if it's not overridden, then we need to check the new value, and if not present, check the old value..that's it | |
| 17:41:39 | sean-k-mooney | gmann: that woudl expand to 'policy.json'.replace('yaml', 'json') on line 14 | |
| 17:42:08 | dansmith | right | |
| 17:44:04 | gmann | in case of overridden to any new-name.json also else block is executed right? | |
| 17:44:30 | dansmith | if the value is set to *anything* other than the new default in config, then we just honor that | |
| 17:45:10 | dansmith | the ONLY thing we need to handle is the case where the value is not overridden and the operator or packager assumes the filename is the old value | |
| 17:45:22 | dansmith | i.e. "I don't need to set it in my config because I use the default filename" | |
| 17:45:33 | sean-k-mooney | gmann: did you miss the early return on line 11 https://pastebin.com/WASufpac | |
| 17:45:43 | dansmith | we break those people if we change the default filename | |
| 17:46:17 | dansmith | we we'd like to change the default filename, but still honor the old one IF-AND-ONLY-IF they're relying on the default and have not specified a value in their config file | |
| 17:46:50 | sean-k-mooney | im going to go have food o/ | |
| 17:46:51 | gmann | yeah but i was thinking to change the existing default policy file instead if cONF default based on what exist | |
| 17:47:25 | dansmith | gmann: I don't understand that last statement | |
| 17:51:28 | gmann | overall goal i was thinking is to warn with upgrade checks and change default to yaml so that oslo_policy can remove the json format support at some point. | |
| 17:51:54 | gmann | but having fallback is kind of same situation with what we have currently. | |
| 17:52:08 | dansmith | we were discussion two options and maybe we confused you, so let me reiterate the two options: | |