Merge "Avoid image format tests if glance is enforcing"
diff --git a/releasenotes/notes/image-enforcement-config-0bc67791a40bac56.yaml b/releasenotes/notes/image-enforcement-config-0bc67791a40bac56.yaml
new file mode 100644
index 0000000..2bbc82b
--- /dev/null
+++ b/releasenotes/notes/image-enforcement-config-0bc67791a40bac56.yaml
@@ -0,0 +1,8 @@
+---
+features:
+ - |
+ Add a new config option
+ `[image_feature_enabled]/image_format_enforcement` which tells tempest
+ that glance will do image format inspection and enforcement on upload. This
+ will disable tests that require glance to accept a bad image in order to
+ test another service (i.e. nova).
diff --git a/tempest/api/image/v2/test_images.py b/tempest/api/image/v2/test_images.py
index e9c7dba..9309c76 100644
--- a/tempest/api/image/v2/test_images.py
+++ b/tempest/api/image/v2/test_images.py
@@ -536,6 +536,15 @@
for container_fmt in container_fmts
for disk_fmt in disk_fmts]
+ # NOTE(danms): This tests depends on being able to lie about image
+ # content. We can probably improve this in some way, but without a
+ # valid sample of each image format in each container format, there is
+ # no easy solution.
+ if CONF.image_feature_enabled.image_format_enforcement:
+ raise cls.skipException(
+ 'Image format enforcement prevents testing with '
+ 'bogus image data')
+
for (container_fmt, disk_fmt) in all_pairs[:6]:
LOG.debug("Creating an image "
"(Container format: %s, Disk format: %s).",
diff --git a/tempest/api/image/v2/test_images_formats.py b/tempest/api/image/v2/test_images_formats.py
index 48f1325..f0dec90 100644
--- a/tempest/api/image/v2/test_images_formats.py
+++ b/tempest/api/image/v2/test_images_formats.py
@@ -166,6 +166,12 @@
# a properly-formatted image for it, so skip it.
self.skipTest(
'Format %s not allowed by config' % self.imgdef['format'])
+ if CONF.image_feature_enabled.image_format_enforcement:
+ # If glance rejects bad images during upload, we cannot get them
+ # registered so that we can test nova.
+ self.skipTest(
+ 'Unable to test compute image formats if glance does not '
+ 'allow them to be uploaded')
# VMDK with footer was not supported by earlier service versions,
# so we need to tolerate it passing and failing (skip for the latter).
@@ -191,6 +197,12 @@
@decorators.idempotent_id('ffe21610-e801-4992-9b81-e2d646e2e2e9')
def test_compute_rejects_format_mismatch(self):
"""Make sure compute rejects any image with a format mismatch."""
+ if CONF.image_feature_enabled.image_format_enforcement:
+ # If glance rejects bad images during upload, we cannot get them
+ # registered so that we can test nova.
+ self.skipTest(
+ 'Unable to test compute image formats if glance does not '
+ 'allow them to be uploaded')
# Lying about the disk_format should always fail
override_fmt = (
self.imgdef['format'] in ('raw', 'gpt') and 'qcow2' or 'raw')
diff --git a/tempest/config.py b/tempest/config.py
index 00d42cb..e7442ea 100644
--- a/tempest/config.py
+++ b/tempest/config.py
@@ -728,6 +728,11 @@
cfg.BoolOpt('image_conversion',
default=False,
help=('Is image_conversion enabled in glance.')),
+ cfg.BoolOpt('image_format_enforcement',
+ default=True,
+ help=('Indicates that image format is enforced by glance, '
+ 'such that we should not expect to be able to upload '
+ 'bad images for testing other services.')),
]
network_group = cfg.OptGroup(name='network',
diff --git a/zuul.d/integrated-gate.yaml b/zuul.d/integrated-gate.yaml
index 56c65c0..fb08297 100644
--- a/zuul.d/integrated-gate.yaml
+++ b/zuul.d/integrated-gate.yaml
@@ -330,6 +330,7 @@
devstack_localrc:
CINDER_ENABLED_BACKENDS: lvm:lvmdriver-1,lvm:lvmdriver-2
ENABLE_VOLUME_MULTIATTACH: true
+ GLANCE_ENFORCE_IMAGE_FORMAT: false
devstack_plugins:
neutron: https://opendev.org/openstack/neutron
devstack_services: