diff options
| author | Jenkins <jenkins@review.openstack.org> | 2017-07-06 15:09:24 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2017-07-06 15:09:24 +0000 |
| commit | da4396a86d7c7542fa6d281cdf69d26dd5e564bd (patch) | |
| tree | 71baf8fc3e17921f030380a438de5194d1591e64 | |
| parent | e5ea8f678cbb3e6355a46fb46915b7163b9780d5 (diff) | |
| parent | f54f3406308406a158737c468c5e61ddb1eb61a2 (diff) | |
| download | kolla-da4396a86d7c7542fa6d281cdf69d26dd5e564bd.tar.gz kolla-da4396a86d7c7542fa6d281cdf69d26dd5e564bd.zip | |
Merge "Make set_configs.py work with symlinks"
| -rw-r--r-- | docker/base/set_configs.py | 12 | ||||
| -rw-r--r-- | tests/test_set_config.py | 18 |
2 files changed, 17 insertions, 13 deletions
diff --git a/docker/base/set_configs.py b/docker/base/set_configs.py index 53678a287..b6c56ca97 100644 --- a/docker/base/set_configs.py +++ b/docker/base/set_configs.py @@ -75,12 +75,16 @@ class ConfigFile(object): self._delete_path(dest) # dest endswith / means copy the <source> to <dest> folder LOG.info('Copying %s to %s', source, dest) - shutil.copy(source, dest) - self._set_properties(source, dest) + if os.path.islink(source): + link_target = os.readlink(source) + os.symlink(link_target, dest) + else: + shutil.copy(source, dest) + self._set_properties(source, dest) def _merge_directories(self, source, dest): if os.path.isdir(source): - if os.path.exists(dest) and not os.path.isdir(dest): + if os.path.lexists(dest) and not os.path.isdir(dest): self._delete_path(dest) if not os.path.isdir(dest): LOG.info('Creating directory %s', dest) @@ -95,7 +99,7 @@ class ConfigFile(object): self._copy_file(source, dest) def _delete_path(self, path): - if not os.path.exists(path): + if not os.path.lexists(path): return LOG.info('Deleting %s', path) if os.path.isdir(path): diff --git a/tests/test_set_config.py b/tests/test_set_config.py index 643b5ba54..e4706c99d 100644 --- a/tests/test_set_config.py +++ b/tests/test_set_config.py @@ -77,41 +77,41 @@ FAKE_CONFIG_FILE = FAKE_CONFIG_FILES[0] class ConfigFileTest(base.BaseTestCase): - @mock.patch('os.path.exists', return_value=False) - def test_delete_path_not_exists(self, mock_exists): + @mock.patch('os.path.lexists', return_value=False) + def test_delete_path_not_exists(self, mock_lexists): config_file = copy.deepcopy(FAKE_CONFIG_FILE) config_file._delete_path(config_file.dest) - mock_exists.assert_called_with(config_file.dest) + mock_lexists.assert_called_with(config_file.dest) - @mock.patch('os.path.exists', return_value=True) + @mock.patch('os.path.lexists', return_value=True) @mock.patch('os.path.isdir', return_value=True) @mock.patch('shutil.rmtree') def test_delete_path_exist_dir(self, mock_rmtree, mock_isdir, - mock_exists): + mock_lexists): config_file = copy.deepcopy(FAKE_CONFIG_FILE) config_file._delete_path(config_file.dest) - mock_exists.assert_called_with(config_file.dest) + mock_lexists.assert_called_with(config_file.dest) mock_isdir.assert_called_with(config_file.dest) mock_rmtree.assert_called_with(config_file.dest) - @mock.patch('os.path.exists', return_value=True) + @mock.patch('os.path.lexists', return_value=True) @mock.patch('os.path.isdir', return_value=False) @mock.patch('os.remove') def test_delete_path_exist_file(self, mock_remove, mock_isdir, - mock_exists): + mock_lexists): config_file = copy.deepcopy(FAKE_CONFIG_FILE) config_file._delete_path(config_file.dest) - mock_exists.assert_called_with(config_file.dest) + mock_lexists.assert_called_with(config_file.dest) mock_isdir.assert_called_with(config_file.dest) mock_remove.assert_called_with(config_file.dest) |
