diff options
| author | Javier Pena <jpena@redhat.com> | 2017-02-17 17:48:47 +0100 |
|---|---|---|
| committer | Javier Pena <jpena@redhat.com> | 2017-03-01 13:01:55 +0100 |
| commit | 8b38c4d5c9f62b7cb42d8e885cea56f188ab9110 (patch) | |
| tree | 8ad40f8cc1600e5c9f614c72f8d25c90025148d9 /kolla | |
| parent | 2c801637e667939c6525b48d5d507da64b3fbaff (diff) | |
| download | kolla-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-x | kolla/common/config.py | 2 | ||||
| -rwxr-xr-x | kolla/image/build.py | 15 | ||||
| -rw-r--r-- | kolla/tests/test_build.py | 7 |
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): |
