Files
rally-openstack/rally/plugins/openstack/scenarios/glance/images.py
Chris St. Pierre 51254b7811 Make glance v2 the default
This adds some compatibility to ensure that both Glance wrappers
support both is_public and visibility kwargs.

Co-Authored-By: Andrey Kurilin <andr.kurilin@gmail.com>

Change-Id: If27fffe83b7f610c802fcb29c7442801ac6ca908
2017-01-12 09:24:00 +00:00

149 lines
6.4 KiB
Python

# Copyright 2014: Mirantis Inc.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from rally.common import logging
from rally import consts
from rally.plugins.openstack import scenario
from rally.plugins.openstack.scenarios.glance import utils
from rally.plugins.openstack.scenarios.nova import utils as nova_utils
from rally.task import types
from rally.task import validation
LOG = logging.getLogger(__name__)
"""Scenarios for Glance images."""
@types.convert(image_location={"type": "path_or_url"},
kwargs={"type": "glance_image_args"})
@validation.required_services(consts.Service.GLANCE)
@validation.required_openstack(users=True)
@scenario.configure(context={"cleanup": ["glance"]},
name="GlanceImages.create_and_list_image")
class CreateAndListImage(utils.GlanceScenario, nova_utils.NovaScenario):
def run(self, container_format, image_location, disk_format, **kwargs):
"""Create an image and then list all images.
Measure the "glance image-list" command performance.
If you have only 1 user in your context, you will
add 1 image on every iteration. So you will have more
and more images and will be able to measure the
performance of the "glance image-list" command depending on
the number of images owned by users.
:param container_format: container format of image. Acceptable
formats: ami, ari, aki, bare, and ovf
:param image_location: image file location
:param disk_format: disk format of image. Acceptable formats:
ami, ari, aki, vhd, vmdk, raw, qcow2, vdi, and iso
:param kwargs: optional parameters to create image
"""
image = self._create_image(container_format,
image_location,
disk_format,
**kwargs)
self.assertTrue(image)
image_list = self._list_images()
self.assertIn(image.id, [i.id for i in image_list])
@validation.required_services(consts.Service.GLANCE)
@validation.required_openstack(users=True)
@scenario.configure(context={"cleanup": ["glance"]},
name="GlanceImages.list_images")
class ListImages(utils.GlanceScenario, nova_utils.NovaScenario):
def run(self):
"""List all images.
This simple scenario tests the glance image-list command by listing
all the images.
Suppose if we have 2 users in context and each has 2 images
uploaded for them we will be able to test the performance of
glance image-list command in this case.
"""
self._list_images()
@types.convert(image_location={"type": "path_or_url"},
kwargs={"type": "glance_image_args"})
@validation.required_services(consts.Service.GLANCE)
@validation.required_openstack(users=True)
@scenario.configure(context={"cleanup": ["glance"]},
name="GlanceImages.create_and_delete_image")
class CreateAndDeleteImage(utils.GlanceScenario, nova_utils.NovaScenario):
def run(self, container_format, image_location, disk_format, **kwargs):
"""Create and then delete an image.
:param container_format: container format of image. Acceptable
formats: ami, ari, aki, bare, and ovf
:param image_location: image file location
:param disk_format: disk format of image. Acceptable formats:
ami, ari, aki, vhd, vmdk, raw, qcow2, vdi, and iso
:param kwargs: optional parameters to create image
"""
image = self._create_image(container_format,
image_location,
disk_format,
**kwargs)
self._delete_image(image)
@types.convert(flavor={"type": "nova_flavor"},
image_location={"type": "path_or_url"},
kwargs={"type": "glance_image_args"})
@validation.flavor_exists("flavor")
@validation.required_services(consts.Service.GLANCE, consts.Service.NOVA)
@validation.required_openstack(users=True)
@scenario.configure(context={"cleanup": ["glance", "nova"]},
name="GlanceImages.create_image_and_boot_instances")
class CreateImageAndBootInstances(utils.GlanceScenario,
nova_utils.NovaScenario):
def run(self, container_format, image_location, disk_format,
flavor, number_instances, create_image_kwargs=None,
boot_server_kwargs=None, **kwargs):
"""Create an image and boot several instances from it.
:param container_format: container format of image. Acceptable
formats: ami, ari, aki, bare, and ovf
:param image_location: image file location
:param disk_format: disk format of image. Acceptable formats:
ami, ari, aki, vhd, vmdk, raw, qcow2, vdi, and iso
:param flavor: Nova flavor to be used to launch an instance
:param number_instances: number of Nova servers to boot
:param create_image_kwargs: optional parameters to create image
:param boot_server_kwargs: optional parameters to boot server
:param kwargs: optional parameters to create server (deprecated)
"""
create_image_kwargs = create_image_kwargs or {}
boot_server_kwargs = boot_server_kwargs or kwargs or {}
if kwargs:
LOG.warning("'kwargs' is deprecated in Rally v0.8.0: Use "
"'boot_server_kwargs' for additional parameters when "
"booting servers.")
image = self._create_image(container_format,
image_location,
disk_format,
**create_image_kwargs)
self._boot_servers(image.id, flavor, number_instances,
**boot_server_kwargs)