From 2bb8bfd385d534ac115715424a1ca15996fdd6f6 Mon Sep 17 00:00:00 2001 From: Arx Cruz Date: Fri, 11 May 2018 12:14:23 +0200 Subject: [PATCH] Fixing download of the cirros image Download the image fails if the path doesn't exist. img-dir in tempest.conf points to etc, so if you're running python-tempestconf outside tempest dir, without tempest overrides, it will point to default_dir/etc/cirros. If etc doesn't exist, it will fail to download the image, this patch fix it. Change-Id: Ib44e57442da2aa656916327d70f8dccdc0c6d1be --- config_tempest/services/image.py | 8 +++++++- config_tempest/tests/services/test_image.py | 4 +++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/config_tempest/services/image.py b/config_tempest/services/image.py index c9228306..dadfe9f4 100644 --- a/config_tempest/services/image.py +++ b/config_tempest/services/image.py @@ -55,9 +55,15 @@ class ImageService(VersionedService): :type conf: TempestConf object """ - img_path = os.path.join(conf.get("scenario", "img_dir"), + img_dir = os.path.join(conf.get("scenario", "img_dir")) + img_path = os.path.join(img_dir, os.path.basename(self.image_path)) name = self.image_path[self.image_path.rfind('/') + 1:] + if not os.path.exists(img_dir): + try: + os.makedirs(img_dir) + except OSError: + raise conf.set('scenario', 'img_file', name) alt_name = name + "_alt" image_id = None diff --git a/config_tempest/tests/services/test_image.py b/config_tempest/tests/services/test_image.py index ca40496c..f98bac26 100644 --- a/config_tempest/tests/services/test_image.py +++ b/config_tempest/tests/services/test_image.py @@ -47,9 +47,11 @@ class TestImageService(BaseServiceTest): @mock.patch('config_tempest.services.image.ImageService' '.find_or_upload_image') - def _test_create_tempest_images(self, mock_find_upload): + @mock.patch('os.makedirs') + def _test_create_tempest_images(self, mock_makedirs, mock_find_upload): mock_find_upload.side_effect = ["id_c", "id_d"] self.Service.create_tempest_images(conf=self.conf) + mock_makedirs.assert_called() self.assertEqual(self.conf.get('compute', 'image_ref'), 'id_c') self.assertEqual(self.conf.get('compute', 'image_ref_alt'), 'id_d') self.assertEqual(self.conf.get('scenario', 'img_file'),