Browse Source

Merge "Fix kolla_set_configs --check with a directory" into stable/ussuri

changes/82/752682/1
Zuul 1 week ago
committed by Gerrit Code Review
parent
commit
ca699a830c
3 changed files with 53 additions and 5 deletions
  1. +6
    -5
      docker/base/set_configs.py
  2. +6
    -0
      releasenotes/notes/fix-config-check-c973c462761a4fa9.yaml
  3. +41
    -0
      tests/test_set_config.py

+ 6
- 5
docker/base/set_configs.py View File

@@ -204,8 +204,8 @@ class ConfigFile(object):
return False
for file_ in files:
full_path = os.path.join(root, file_)
dest_full_path = os.path.join(dest, os.path.relpath(source,
full_path))
dest_full_path = os.path.join(dest, os.path.relpath(full_path,
source))
if not self._cmp_file(full_path, dest_full_path):
return False
return True
@@ -225,8 +225,9 @@ class ConfigFile(object):
# otherwise means copy the source to dest
if dest.endswith(os.sep):
dest = os.path.join(dest, os.path.basename(source))
if os.path.isdir(source) and not self._cmp_dir(source, dest):
bad_state_files.append(source)
if os.path.isdir(source):
if not self._cmp_dir(source, dest):
bad_state_files.append(source)
elif not self._cmp_file(source, dest):
bad_state_files.append(source)
if len(bad_state_files) != 0:
@@ -404,7 +405,7 @@ def execute_config_strategy(config):


def execute_config_check(config):
for data in config['config_files']:
for data in config.get('config_files', []):
config_file = ConfigFile(**data)
config_file.check()



+ 6
- 0
releasenotes/notes/fix-config-check-c973c462761a4fa9.yaml View File

@@ -0,0 +1,6 @@
---
fixes:
- |
Fixes an issue with the ``kolla_set_configs --check`` command when the
source is a directory. `LP#1890567
<https://bugs.launchpad.net/kolla/+bug/1890567>`__

+ 41
- 0
tests/test_set_config.py View File

@@ -288,3 +288,44 @@ class ConfigFileTest(base.BaseTestCase):
'/foo/bar.conf'),
mock.call('/var/lib/kolla/config_files/bar.yml',
'/foo/bar.yml')])

@mock.patch.object(set_configs.ConfigFile, '_cmp_file')
@mock.patch.object(set_configs.ConfigFile, '_cmp_dir')
@mock.patch('os.path.isdir', return_value=False)
@mock.patch('glob.glob')
def test_check_source_dir(self, mock_glob, mock_isdir, mock_cmp_dir,
mock_cmp_file):
config_file = set_configs.ConfigFile(
'/var/lib/kolla/config_files/bar', '/foo', 'user1', '0644')

mock_glob.return_value = ['/var/lib/kolla/config_files/bar']
mock_isdir.return_value = True
mock_cmp_dir.return_value = True

config_file.check()

mock_isdir.assert_called_once_with('/var/lib/kolla/config_files/bar')
mock_cmp_dir.assert_called_once_with(
'/var/lib/kolla/config_files/bar', '/foo')
mock_cmp_file.assert_not_called()

@mock.patch.object(set_configs.ConfigFile, '_cmp_file')
@mock.patch.object(set_configs.ConfigFile, '_cmp_dir')
@mock.patch('os.path.isdir', return_value=False)
@mock.patch('glob.glob')
def test_check_source_dir_no_equal(self, mock_glob, mock_isdir,
mock_cmp_dir, mock_cmp_file):
config_file = set_configs.ConfigFile(
'/var/lib/kolla/config_files/bar', '/foo', 'user1', '0644')

mock_glob.return_value = ['/var/lib/kolla/config_files/bar']
mock_isdir.return_value = True
mock_cmp_dir.return_value = False

self.assertRaises(set_configs.ConfigFileBadState,
config_file.check)

mock_isdir.assert_called_once_with('/var/lib/kolla/config_files/bar')
mock_cmp_dir.assert_called_once_with(
'/var/lib/kolla/config_files/bar', '/foo')
mock_cmp_file.assert_not_called()

Loading…
Cancel
Save