aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2017-07-06 15:09:24 +0000
committerGerrit Code Review <review@openstack.org>2017-07-06 15:09:24 +0000
commitda4396a86d7c7542fa6d281cdf69d26dd5e564bd (patch)
tree71baf8fc3e17921f030380a438de5194d1591e64
parente5ea8f678cbb3e6355a46fb46915b7163b9780d5 (diff)
parentf54f3406308406a158737c468c5e61ddb1eb61a2 (diff)
downloadkolla-da4396a86d7c7542fa6d281cdf69d26dd5e564bd.tar.gz
kolla-da4396a86d7c7542fa6d281cdf69d26dd5e564bd.zip
Merge "Make set_configs.py work with symlinks"
-rw-r--r--docker/base/set_configs.py12
-rw-r--r--tests/test_set_config.py18
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)