From 02af6a44cccc01990fbaa697cea5881e097a1a98 Mon Sep 17 00:00:00 2001 From: Martin Kopec Date: Tue, 3 Mar 2020 12:39:12 +0000 Subject: [PATCH] Remove deprecated scenario image options Let's remove deprecated scenario image options which have been deprecated for more than 4 years. From now on CONF.scenario.img_file will need a full path for the image. CONF.scenario.img_dir was deprecated and will be removed in the next release. Till Tempest 25.0.0, old behavior is maintained and keep working but starting Tempest 26.0.0, you need to specify the full path in CONF.scenario.img_file config option. Change-Id: I96d26ad3889f55d867fdea016953cce522a6fbdf Related-Bug: #1393881 --- doc/source/configuration.rst | 14 ++---- ...age-scenario-options-b573c60e873ab451.yaml | 15 +++++++ tempest/config.py | 20 +++------ tempest/scenario/manager.py | 44 +++++++++---------- 4 files changed, 45 insertions(+), 48 deletions(-) create mode 100644 releasenotes/notes/Remove-deprecated-image-scenario-options-b573c60e873ab451.yaml diff --git a/doc/source/configuration.rst b/doc/source/configuration.rst index 36828e0ceb..c43e420c06 100644 --- a/doc/source/configuration.rst +++ b/doc/source/configuration.rst @@ -193,10 +193,6 @@ those tests will be skipped. There are also options in the ``scenario`` section for images: #. ``img_file`` -#. ``img_dir`` -#. ``aki_img_file`` -#. ``ari_img_file`` -#. ``ami_img_file`` #. ``img_container_format`` #. ``img_disk_format`` @@ -205,13 +201,9 @@ of scenario tests which are uploading an image. These options are used to tell Tempest where an image file is located and describe its metadata for when it is uploaded. -The behavior of these options is a bit convoluted (which will likely be fixed in -future versions). You first need to specify ``img_dir``, which is the directory -in which Tempest will look for the image files. First, it will check if the -filename set for ``img_file`` could be found in ``img_dir``. If it is found then -the ``img_container_format`` and ``img_disk_format`` options are used to upload -that image to glance. However, if it is not found, Tempest will look for the -three uec image file name options as a fallback. If neither is found, the tests +You first need to specify full path of the image using ``img_file`` option. +If it is found then the ``img_container_format`` and ``img_disk_format`` +options are used to upload that image to glance. If it's not found, the tests requiring an image to upload will fail. It is worth pointing out that using `cirros`_ is a very good choice for running diff --git a/releasenotes/notes/Remove-deprecated-image-scenario-options-b573c60e873ab451.yaml b/releasenotes/notes/Remove-deprecated-image-scenario-options-b573c60e873ab451.yaml new file mode 100644 index 0000000000..018d01d01f --- /dev/null +++ b/releasenotes/notes/Remove-deprecated-image-scenario-options-b573c60e873ab451.yaml @@ -0,0 +1,15 @@ +--- +upgrade: + - | + The following deprecated image scenario options are removed after a ~4 + year deprecation period. + + * ``ami_img_file`` + * ``ari_img_file`` + * ``aki_img_file`` + + Starting Tempest 25.0.0 release, CONF.scenario.img_file need a full path + for the image. CONF.scenario.img_dir was deprecated and will be removed + in the next release. Till Tempest 25.0.0, old behavior is maintained and + keep working but starting Tempest 26.0.0, you need to specify the full path + in CONF.scenario.img_file config option. diff --git a/tempest/config.py b/tempest/config.py index e4e17f10ee..11f9426f3b 100644 --- a/tempest/config.py +++ b/tempest/config.py @@ -1068,11 +1068,13 @@ ScenarioGroup = [ cfg.StrOpt('img_dir', default='/opt/stack/new/devstack/files/images/' 'cirros-0.3.1-x86_64-uec', - help='Directory containing image files', + help='Directory containing image files, this has been ' + 'deprecated - img_file option contains a full path now.', deprecated_for_removal=True), cfg.StrOpt('img_file', deprecated_name='qcow2_img_file', - default='cirros-0.3.1-x86_64-disk.img', - help='Image file name'), + default='/opt/stack/new/devstack/files/images' + '/cirros-0.3.1-x86_64-disk.img', + help='Image full path.'), cfg.StrOpt('img_disk_format', default='qcow2', help='Image disk format'), @@ -1081,18 +1083,6 @@ ScenarioGroup = [ help='Image container format'), cfg.DictOpt('img_properties', help='Glance image properties. ' 'Use for custom images which require them'), - cfg.StrOpt('ami_img_file', - default='cirros-0.3.1-x86_64-blank.img', - help='AMI image file name', - deprecated_for_removal=True), - cfg.StrOpt('ari_img_file', - default='cirros-0.3.1-x86_64-initrd', - help='ARI image file name', - deprecated_for_removal=True), - cfg.StrOpt('aki_img_file', - default='cirros-0.3.1-x86_64-vmlinuz', - help='AKI image file name', - deprecated_for_removal=True), # TODO(yfried): add support for dhcpcd cfg.StrOpt('dhcp_client', default='udhcpc', diff --git a/tempest/scenario/manager.py b/tempest/scenario/manager.py index 85917715a0..004bf9ef52 100644 --- a/tempest/scenario/manager.py +++ b/tempest/scenario/manager.py @@ -14,6 +14,7 @@ # License for the specific language governing permissions and limitations # under the License. +import os import subprocess import netaddr @@ -531,33 +532,32 @@ class ScenarioTest(tempest.test.BaseTestCase): return image['id'] def glance_image_create(self): - img_path = CONF.scenario.img_dir + "/" + CONF.scenario.img_file - aki_img_path = CONF.scenario.img_dir + "/" + CONF.scenario.aki_img_file - ari_img_path = CONF.scenario.img_dir + "/" + CONF.scenario.ari_img_file - ami_img_path = CONF.scenario.img_dir + "/" + CONF.scenario.ami_img_file + img_path = CONF.scenario.img_file + if not os.path.exists(img_path): + # TODO(kopecmartin): replace LOG.warning for rasing + # InvalidConfiguration exception after tempest 25.0.0 is + # released - there will be one release which accepts both + # behaviors in order to avoid many failures across CIs and etc. + LOG.warning( + 'Starting Tempest 25.0.0 release, CONF.scenario.img_file need ' + 'a full path for the image. CONF.scenario.img_dir was ' + 'deprecated and will be removed in the next release. Till ' + 'Tempest 25.0.0, old behavior is maintained and keep working ' + 'but starting Tempest 26.0.0, you need to specify the full ' + 'path in CONF.scenario.img_file config option.') + img_path = os.path.join(CONF.scenario.img_dir, img_path) img_container_format = CONF.scenario.img_container_format img_disk_format = CONF.scenario.img_disk_format img_properties = CONF.scenario.img_properties LOG.debug("paths: img: %s, container_format: %s, disk_format: %s, " - "properties: %s, ami: %s, ari: %s, aki: %s", + "properties: %s", img_path, img_container_format, img_disk_format, - img_properties, ami_img_path, ari_img_path, aki_img_path) - try: - image = self._image_create('scenario-img', - img_container_format, - img_path, - disk_format=img_disk_format, - properties=img_properties) - except IOError: - LOG.warning( - "A(n) %s image was not found. Retrying with uec image.", - img_disk_format) - kernel = self._image_create('scenario-aki', 'aki', aki_img_path) - ramdisk = self._image_create('scenario-ari', 'ari', ari_img_path) - properties = {'kernel_id': kernel, 'ramdisk_id': ramdisk} - image = self._image_create('scenario-ami', 'ami', - path=ami_img_path, - properties=properties) + img_properties) + image = self._image_create('scenario-img', + img_container_format, + img_path, + disk_format=img_disk_format, + properties=img_properties) LOG.debug("image:%s", image) return image