diff options
| author | Zuul <zuul@review.opendev.org> | 2020-08-28 19:03:42 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2020-08-28 19:03:42 +0000 |
| commit | 5dcd1dd915189e047e1e3b481c1b0d2dba9ea2fe (patch) | |
| tree | 4ce3ab6983eb101fba5fc4eb9dfdfbf959d5846e | |
| parent | 2cfc25e53a8bb6cb21bee24051c65d36015c6c09 (diff) | |
| parent | c5320eb22386c34d83435fa0b9aa03b178996b52 (diff) | |
| download | kolla-5dcd1dd915189e047e1e3b481c1b0d2dba9ea2fe.tar.gz kolla-5dcd1dd915189e047e1e3b481c1b0d2dba9ea2fe.zip | |
Merge "Fix kolla_set_configs --check with a directory"
| -rw-r--r-- | docker/base/set_configs.py | 11 | ||||
| -rw-r--r-- | releasenotes/notes/fix-config-check-c973c462761a4fa9.yaml | 6 | ||||
| -rw-r--r-- | tests/test_set_config.py | 41 |
3 files changed, 53 insertions, 5 deletions
diff --git a/docker/base/set_configs.py b/docker/base/set_configs.py index 5f030866f..572e4a001 100644 --- a/docker/base/set_configs.py +++ b/docker/base/set_configs.py @@ -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() diff --git a/releasenotes/notes/fix-config-check-c973c462761a4fa9.yaml b/releasenotes/notes/fix-config-check-c973c462761a4fa9.yaml new file mode 100644 index 000000000..ee87646df --- /dev/null +++ b/releasenotes/notes/fix-config-check-c973c462761a4fa9.yaml @@ -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>`__ diff --git a/tests/test_set_config.py b/tests/test_set_config.py index 8af2e618d..3888a38cc 100644 --- a/tests/test_set_config.py +++ b/tests/test_set_config.py @@ -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() |
