aboutsummaryrefslogtreecommitdiff
path: root/kolla
diff options
context:
space:
mode:
authorJavier Pena <jpena@redhat.com>2017-02-17 17:48:47 +0100
committerJavier Pena <jpena@redhat.com>2017-03-01 13:01:55 +0100
commit8b38c4d5c9f62b7cb42d8e885cea56f188ab9110 (patch)
tree8ad40f8cc1600e5c9f614c72f8d25c90025148d9 /kolla
parent2c801637e667939c6525b48d5d507da64b3fbaff (diff)
downloadkolla-8b38c4d5c9f62b7cb42d8e885cea56f188ab9110.tar.gz
kolla-8b38c4d5c9f62b7cb42d8e885cea56f188ab9110.zip
Add work-dir command-line option
The working directory was previously generated as a temporary one, but there may be cases when we want to specify a directory, for example if we want to generate the Dockerfiles and then do some parsing on them. Change-Id: Ic332328913924bcb3d0dfa4d473e796050fc14b3
Diffstat (limited to 'kolla')
-rwxr-xr-xkolla/common/config.py2
-rwxr-xr-xkolla/image/build.py15
-rw-r--r--kolla/tests/test_build.py7
3 files changed, 19 insertions, 5 deletions
diff --git a/kolla/common/config.py b/kolla/common/config.py
index 30f679880..c47c3c660 100755
--- a/kolla/common/config.py
+++ b/kolla/common/config.py
@@ -217,6 +217,8 @@ _CLI_OPTS = [
cfg.StrOpt('logs-dir', help='Path to logs directory'),
cfg.BoolOpt('pull', default=True,
help='Attempt to pull a newer version of the base image.'),
+ cfg.StrOpt('work-dir', help='Path to be used as working directory.'
+ 'By default, a temporary dir is created.'),
]
_BASE_OPTS = [
diff --git a/kolla/image/build.py b/kolla/image/build.py
index 133063513..a6736172e 100755
--- a/kolla/image/build.py
+++ b/kolla/image/build.py
@@ -633,10 +633,14 @@ class KollaWorker(object):
def setup_working_dir(self):
"""Creates a working directory for use while building"""
- ts = time.time()
- ts = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d_%H-%M-%S_')
- self.temp_dir = tempfile.mkdtemp(prefix='kolla-' + ts)
- self.working_dir = os.path.join(self.temp_dir, 'docker')
+ if self.conf.work_dir:
+ self.working_dir = os.path.join(self.conf.work_dir, 'docker')
+ else:
+ ts = time.time()
+ ts = datetime.datetime.fromtimestamp(ts).strftime(
+ '%Y-%m-%d_%H-%M-%S_')
+ self.temp_dir = tempfile.mkdtemp(prefix='kolla-' + ts)
+ self.working_dir = os.path.join(self.temp_dir, 'docker')
shutil.copytree(self.images_dir, self.working_dir)
self.copy_apt_files()
LOG.debug('Created working dir: %s', self.working_dir)
@@ -754,7 +758,8 @@ class KollaWorker(object):
def cleanup(self):
"""Remove temp files"""
- shutil.rmtree(self.temp_dir)
+ if not self.conf.work_dir:
+ shutil.rmtree(self.temp_dir)
def filter_images(self):
"""Filter which images to build"""
diff --git a/kolla/tests/test_build.py b/kolla/tests/test_build.py
index 1a1e019d5..7bcd2de7f 100644
--- a/kolla/tests/test_build.py
+++ b/kolla/tests/test_build.py
@@ -349,6 +349,13 @@ class KollaWorkerTest(base.TestCase):
results = kolla.summary()
self.assertEqual(None, results['failed'][0]['status'])
+ @mock.patch('shutil.copytree')
+ def test_work_dir(self, copytree_mock):
+ self.conf.set_override('work_dir', '/tmp/foo')
+ kolla = build.KollaWorker(self.conf)
+ kolla.setup_working_dir()
+ self.assertEqual('/tmp/foo/docker', kolla.working_dir)
+
class MainTest(base.TestCase):