diff options
| author | Jenkins <jenkins@review.openstack.org> | 2017-08-15 10:13:45 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2017-08-15 10:13:45 +0000 |
| commit | 675dd71f66fd28c031551db4b932f0ab1d09675d (patch) | |
| tree | 30ed6b5de32eb5221560c5f7eea93afd83dc7f59 | |
| parent | a0b22b4d4535399d96fb706899816560f710e18c (diff) | |
| parent | f309c7f763e724767f9832b1b52c81e303e7e6a8 (diff) | |
| download | kolla-675dd71f66fd28c031551db4b932f0ab1d09675d.tar.gz kolla-675dd71f66fd28c031551db4b932f0ab1d09675d.zip | |
Merge "Fix for git clone issue during kolla image build"
| -rwxr-xr-x | kolla/image/build.py | 5 | ||||
| -rw-r--r-- | kolla/tests/test_build.py | 22 |
2 files changed, 27 insertions, 0 deletions
diff --git a/kolla/image/build.py b/kolla/image/build.py index 8cbefad18..062a0096e 100755 --- a/kolla/image/build.py +++ b/kolla/image/build.py @@ -309,6 +309,11 @@ class BuildTask(DockerTask): elif source.get('type') == 'git': clone_dir = '{}-{}'.format(dest_archive, source['reference'].replace('/', '-')) + if os.path.exists(clone_dir): + self.logger.info("Clone dir %s exists. Removing it.", + clone_dir) + shutil.rmtree(clone_dir) + try: self.logger.debug("Cloning from %s", source['source']) git.Git().clone(source['source'], clone_dir) diff --git a/kolla/tests/test_build.py b/kolla/tests/test_build.py index 40722b779..b7aa0c29e 100644 --- a/kolla/tests/test_build.py +++ b/kolla/tests/test_build.py @@ -192,6 +192,28 @@ class TasksTest(base.TestCase): else: self.assertIsNotNone(get_result) + @mock.patch('os.path.exists') + @mock.patch('os.utime') + @mock.patch('shutil.rmtree') + def test_process_git_source_existing_dir(self, mock_rmtree, mock_utime, + mock_path_exists): + source = {'source': 'http://fake/source1', 'type': 'git', + 'name': 'fake-image1', + 'reference': 'fake/reference1'} + + self.image.source = source + self.image.path = "fake_image_path" + mock_path_exists.return_value = True + push_queue = mock.Mock() + builder = build.BuildTask(self.conf, self.image, push_queue) + get_result = builder.process_source(self.image, self.image.source) + + mock_rmtree.assert_called_with( + "fake_image_path/fake-image1-archive-fake-reference1") + self.assertEqual(self.image.status, build.STATUS_ERROR) + self.assertFalse(builder.success) + self.assertIsNone(get_result) + @mock.patch('docker.APIClient') def test_followups_docker_image(self, mock_client): self.imageChild.source = { |
