| 9 | 9 |
# License for the specific language governing permissions and limitations
|
| 10 | 10 |
# under the License.
|
| 11 | 11 |
|
| 12 | |
import io
|
| 13 | |
|
| 14 | |
from tempest.common import waiters
|
| 15 | 12 |
from tempest import config
|
| 16 | |
from tempest.lib.common.utils import data_utils
|
| 17 | |
from tempest.lib.common.utils import test_utils
|
| 18 | 13 |
from tempest.lib import decorators
|
| 19 | 14 |
|
| 20 | 15 |
from cinder_tempest_plugin.api.volume import base
|
|
| 30 | 25 |
super(VolumeAndVolumeTypeFromImageTest, cls).skip_checks()
|
| 31 | 26 |
if not CONF.service_available.glance:
|
| 32 | 27 |
raise cls.skipException("Glance service is disabled")
|
| 33 | |
|
| 34 | |
@classmethod
|
| 35 | |
def create_image_with_data(cls, **kwargs):
|
| 36 | |
# we do this as a class method so we can use the
|
| 37 | |
# addClassResourceCleanup functionality of tempest.test.BaseTestCase
|
| 38 | |
images_client = cls.os_primary.image_client_v2
|
| 39 | |
if 'min_disk' not in kwargs:
|
| 40 | |
kwargs['min_disk'] = 1
|
| 41 | |
response = images_client.create_image(**kwargs)
|
| 42 | |
image_id = response['id']
|
| 43 | |
cls.addClassResourceCleanup(
|
| 44 | |
images_client.wait_for_resource_deletion, image_id)
|
| 45 | |
cls.addClassResourceCleanup(
|
| 46 | |
test_utils.call_and_ignore_notfound_exc,
|
| 47 | |
images_client.delete_image, image_id)
|
| 48 | |
|
| 49 | |
# upload "data" to image
|
| 50 | |
image_file = io.BytesIO(data_utils.random_bytes(size=1024))
|
| 51 | |
images_client.store_image_file(image_id, image_file)
|
| 52 | |
|
| 53 | |
waiters.wait_for_image_status(images_client, image_id, 'active')
|
| 54 | |
image = images_client.show_image(image_id)
|
| 55 | |
return image
|
| 56 | 28 |
|
| 57 | 29 |
@decorators.idempotent_id('6e9266ff-a917-4dd5-aa4a-c36e59e7a2a6')
|
| 58 | 30 |
def test_create_from_image_with_volume_type_image_property(self):
|