Fix state checking via kolla_set_configs

Kolla checks the status of its configurations
using kolla_set_configs --check. However, this
doesn't work for the command block in the config.json
file. This means that if only the command value changes,
but not the config_files block, which is common practice
in Kolla-Ansible btw, the container will not report the
changes.

This is undesirable and important to fix, especially
considering the planned rework of notifiers in
Kolla-Ansible [1].

[1] https://review.opendev.org/c/openstack/kolla-ansible/+/773243/14

Closes-Bug: #2080861
Change-Id: I2a290da38ea34b05ce3da8fb8b39b6252bf2da47
This commit is contained in:
Michal Arbet 2024-09-16 16:33:43 +02:00
parent 6c5a443efe
commit ea198170ba
2 changed files with 20 additions and 0 deletions

View File

@ -57,6 +57,10 @@ class ConfigFileBadState(ExitingException):
pass
class ConfigFileCommandDiffers(ExitingException):
pass
class ConfigFile(object):
def __init__(self, source, dest, owner=None, perm=None, optional=False,
@ -414,6 +418,15 @@ def execute_config_strategy(config):
raise InvalidConfig('KOLLA_CONFIG_STRATEGY is not set properly')
def execute_command_check(config):
cmd = config.get('command')
with open("/run_command", "r") as f:
cmd_running = f.read()
if cmd != cmd_running:
msg = "Running command differs. " + cmd + " != " + cmd_running
raise ConfigFileCommandDiffers(msg)
def execute_config_check(config):
for data in config.get('config_files', []):
config_file = ConfigFile(**data)
@ -431,6 +444,7 @@ def main():
config = load_config()
if args.check:
execute_command_check(config)
execute_config_check(config)
else:
execute_config_strategy(config)

View File

@ -0,0 +1,6 @@
---
fixes:
- |
Fixed an issue where ``kolla_set_configs --check`` failed to detect
changes in the ``command`` block of ``config.json`` file.
`LP#2080861 <https://bugs.launchpad.net/bugs/2080861>`__