Merge "Move 'required_services' validator to 'openstack/validators.py'"

This commit is contained in:
Jenkins 2017-05-18 19:00:22 +00:00 committed by Gerrit Code Review
commit dc2c7e49ce
52 changed files with 475 additions and 253 deletions

View File

@ -161,7 +161,8 @@ class ValidateHeat(scenario.OpenStackScenario):
@validation.add("number", param_name="repetitions", minval=1)
@validation.add("required_platform", platform="openstack", users=True)
@validation.required_services(consts.Service.MONASCA)
@validation.add("required_services",
services=[consts.Service.MONASCA])
@scenario.configure(name="Authenticate.validate_monasca")
class ValidateMonasca(scenario.OpenStackScenario):

View File

@ -20,7 +20,8 @@ from rally.task import validation
"""Benchmark scenarios for Ceilometer Alarms API."""
@validation.required_services(consts.Service.CEILOMETER)
@validation.add("required_services",
services=[consts.Service.CEILOMETER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["ceilometer"]},
name="CeilometerAlarms.create_alarm")
@ -42,7 +43,8 @@ class CreateAlarm(ceiloutils.CeilometerScenario):
self._create_alarm(meter_name, threshold, kwargs)
@validation.required_services(consts.Service.CEILOMETER)
@validation.add("required_services",
services=[consts.Service.CEILOMETER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(name="CeilometerAlarms.list_alarms")
class ListAlarms(ceiloutils.CeilometerScenario):
@ -55,7 +57,8 @@ class ListAlarms(ceiloutils.CeilometerScenario):
self._list_alarms()
@validation.required_services(consts.Service.CEILOMETER)
@validation.add("required_services",
services=[consts.Service.CEILOMETER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["ceilometer"]},
name="CeilometerAlarms.create_and_list_alarm")
@ -79,7 +82,8 @@ class CreateAndListAlarm(ceiloutils.CeilometerScenario):
self._list_alarms(alarm.alarm_id)
@validation.required_services(consts.Service.CEILOMETER)
@validation.add("required_services",
services=[consts.Service.CEILOMETER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["ceilometer"]},
name="CeilometerAlarms.create_and_get_alarm")
@ -103,7 +107,8 @@ class CreateAndGetAlarm(ceiloutils.CeilometerScenario):
self._get_alarm(alarm.alarm_id)
@validation.required_services(consts.Service.CEILOMETER)
@validation.add("required_services",
services=[consts.Service.CEILOMETER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["ceilometer"]},
name="CeilometerAlarms.create_and_update_alarm")
@ -127,7 +132,8 @@ class CreateAndUpdateAlarm(ceiloutils.CeilometerScenario):
self._update_alarm(alarm.alarm_id, alarm_dict_diff)
@validation.required_services(consts.Service.CEILOMETER)
@validation.add("required_services",
services=[consts.Service.CEILOMETER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["ceilometer"]},
name="CeilometerAlarms.create_and_delete_alarm")
@ -150,7 +156,8 @@ class CreateAndDeleteAlarm(ceiloutils.CeilometerScenario):
self._delete_alarm(alarm.alarm_id)
@validation.required_services(consts.Service.CEILOMETER)
@validation.add("required_services",
services=[consts.Service.CEILOMETER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["ceilometer"]},
name="CeilometerAlarms.create_alarm_and_get_history")

View File

@ -27,8 +27,8 @@ from rally.task import validation
# no other way except emit suitable notification from one of services,
# for example create new user in keystone.
@validation.required_services(consts.Service.CEILOMETER,
consts.Service.KEYSTONE)
@validation.add("required_services", services=[consts.Service.CEILOMETER,
consts.Service.KEYSTONE])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["keystone"],
"cleanup": ["ceilometer"]},
@ -49,8 +49,8 @@ class CeilometerEventsCreateUserAndListEvents(cutils.CeilometerScenario,
self.assertTrue(events, msg)
@validation.required_services(consts.Service.CEILOMETER,
consts.Service.KEYSTONE)
@validation.add("required_services", services=[consts.Service.CEILOMETER,
consts.Service.KEYSTONE])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["keystone"],
"cleanup": ["ceilometer"]},
@ -71,8 +71,8 @@ class CeilometerEventsCreateUserAndListEventTypes(cutils.CeilometerScenario,
self.assertTrue(event_types, msg)
@validation.required_services(consts.Service.CEILOMETER,
consts.Service.KEYSTONE)
@validation.add("required_services", services=[consts.Service.CEILOMETER,
consts.Service.KEYSTONE])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["keystone"],
"cleanup": ["ceilometer"]},

View File

@ -21,7 +21,8 @@ from rally.task import validation
"""Scenarios for Ceilometer Meters API."""
@validation.required_services(consts.Service.CEILOMETER)
@validation.add("required_services",
services=[consts.Service.CEILOMETER])
@validation.required_contexts("ceilometer")
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(name="CeilometerMeters.list_meters")
@ -44,7 +45,8 @@ class ListMeters(ceiloutils.CeilometerScenario):
scenario.run(limit=limit)
@validation.required_services(consts.Service.CEILOMETER)
@validation.add("required_services",
services=[consts.Service.CEILOMETER])
@validation.required_contexts("ceilometer")
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(name="CeilometerMeters.list_matched_meters")

View File

@ -23,7 +23,8 @@ from rally.task import validation
"""Scenarios for Ceilometer Queries API."""
@validation.required_services(consts.Service.CEILOMETER)
@validation.add("required_services",
services=[consts.Service.CEILOMETER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["ceilometer"]},
name="CeilometerQueries.create_and_query_alarms")
@ -50,7 +51,8 @@ class CeilometerQueriesCreateAndQueryAlarms(ceiloutils.CeilometerScenario):
self._query_alarms(filter, orderby, limit)
@validation.required_services(consts.Service.CEILOMETER)
@validation.add("required_services",
services=[consts.Service.CEILOMETER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["ceilometer"]},
name="CeilometerQueries.create_and_query_alarm_history")
@ -75,7 +77,8 @@ class CeilometerQueriesCreateAndQueryAlarmHistory(ceiloutils
self._query_alarm_history(alarm_filter, orderby, limit)
@validation.required_services(consts.Service.CEILOMETER)
@validation.add("required_services",
services=[consts.Service.CEILOMETER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["ceilometer"]},
name="CeilometerQueries.create_and_query_samples")

View File

@ -21,7 +21,8 @@ from rally.task import validation
"""Scenarios for Ceilometer Resource API."""
@validation.required_services(consts.Service.CEILOMETER)
@validation.add("required_services",
services=[consts.Service.CEILOMETER])
@validation.required_contexts("ceilometer")
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(name="CeilometerResource.list_resources")
@ -54,7 +55,8 @@ class ListResources(ceiloutils.CeilometerScenario):
scenario.run(limit=limit)
@validation.required_services(consts.Service.CEILOMETER)
@validation.add("required_services",
services=[consts.Service.CEILOMETER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(name="CeilometerResource.get_tenant_resources")
class GetTenantResources(ceiloutils.CeilometerScenario):
@ -73,7 +75,8 @@ class GetTenantResources(ceiloutils.CeilometerScenario):
self._get_resource(res_id)
@validation.required_services(consts.Service.CEILOMETER)
@validation.add("required_services",
services=[consts.Service.CEILOMETER])
@validation.required_contexts("ceilometer")
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(name="CeilometerResource.list_matched_resources")

View File

@ -21,7 +21,8 @@ from rally.task import validation
"""Scenarios for Ceilometer Samples API."""
@validation.required_services(consts.Service.CEILOMETER)
@validation.add("required_services",
services=[consts.Service.CEILOMETER])
@validation.required_contexts("ceilometer")
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(name="CeilometerSamples.list_matched_samples")
@ -44,7 +45,8 @@ class ListMatchedSamples(ceiloutils.CeilometerScenario):
self._list_samples(query, limit)
@validation.required_services(consts.Service.CEILOMETER)
@validation.add("required_services",
services=[consts.Service.CEILOMETER])
@validation.required_contexts("ceilometer")
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(name="CeilometerSamples.list_samples")

View File

@ -22,7 +22,8 @@ from rally.task import validation
"""Scenarios for Ceilometer Stats API."""
@validation.required_services(consts.Service.CEILOMETER)
@validation.add("required_services",
services=[consts.Service.CEILOMETER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(name="CeilometerStats.create_meter_and_get_stats")
class CreateMeterAndGetStats(utils.CeilometerScenario):
@ -41,7 +42,8 @@ class CreateMeterAndGetStats(utils.CeilometerScenario):
self._get_stats(meter.counter_name)
@validation.required_services(consts.Service.CEILOMETER)
@validation.add("required_services",
services=[consts.Service.CEILOMETER])
@validation.required_contexts("ceilometer")
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(name="CeilometerStats.get_stats")

View File

@ -26,8 +26,8 @@ from rally.task import validation
# there are no other way except emit suitable notification from one of
# services, for example create new user in keystone.
@validation.required_services(consts.Service.CEILOMETER,
consts.Service.KEYSTONE)
@validation.add("required_services", services=[consts.Service.CEILOMETER,
consts.Service.KEYSTONE])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["keystone"],
"cleanup": ["ceilometer"]},
@ -49,8 +49,8 @@ class CreateUserAndListTraits(cutils.CeilometerScenario,
trait_name=trait_name)
@validation.required_services(consts.Service.CEILOMETER,
consts.Service.KEYSTONE)
@validation.add("required_services", services=[consts.Service.CEILOMETER,
consts.Service.KEYSTONE])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["keystone"],
"cleanup": ["ceilometer"]},

View File

@ -22,7 +22,7 @@ from rally.task import validation
@validation.restricted_parameters("name")
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["cinder"]},
name="CinderQos.create_and_list_qos")
@ -42,7 +42,7 @@ class CreateAndListQos(cinder_utils.CinderBasic):
@validation.restricted_parameters("name")
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["cinder"]},
name="CinderQos.create_and_get_qos")

View File

@ -27,7 +27,7 @@ from rally.task import validation
@validation.restricted_parameters("name",
subdict="create_backup_kwargs")
@validation.required_cinder_services("cinder-backup")
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["cinder"]},
name="CinderVolumeBackups."

View File

@ -26,7 +26,7 @@ LOG = logging.getLogger(__name__)
@validation.restricted_parameters("name")
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["cinder"]},
name="CinderVolumeTypes.create_and_delete_volume_type")
@ -43,7 +43,7 @@ class CreateAndDeleteVolumeType(cinder_utils.CinderBasic):
@validation.restricted_parameters("name")
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["cinder"]},
name="CinderVolumeTypes.create_and_get_volume_type")
@ -59,7 +59,7 @@ class CreateAndGetVolumeType(cinder_utils.CinderBasic):
self.admin_cinder.get_volume_type(volume_type)
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["cinder"]},
name="CinderVolumeTypes.create_and_list_volume_types")
@ -85,8 +85,8 @@ class CreateAndListVolumeTypes(cinder_utils.CinderBasic):
@validation.restricted_parameters("name")
@validation.required_services(consts.Service.CINDER)
@validation.add("required_params", params=[("create_specs", "provider")])
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["cinder"]},
name="CinderVolumeTypes.create_volume_type"
@ -129,9 +129,9 @@ class CreateVolumeTypeAndEncryptionType(cinder_utils.CinderBasic):
specs=specs)
@validation.required_services(consts.Service.CINDER)
@validation.required_contexts("volume_types")
@validation.add("required_params", params=[("create_specs", "provider")])
@validation.restricted_parameters("name")
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["cinder"]},
name="CinderVolumeTypes.create_and_list_"
@ -177,7 +177,7 @@ class CreateAndListEncryptionType(cinder_utils.CinderBasic):
@validation.restricted_parameters("name")
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["cinder"]},
name="CinderVolumeTypes.create_and_set_volume_type_keys")
@ -195,7 +195,7 @@ class CreateAndSetVolumeTypeKeys(cinder_utils.CinderBasic):
metadata=volume_type_key)
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.required_contexts("volume_types")
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["cinder"]},
@ -234,7 +234,7 @@ class CreateGetAndDeleteEncryptionType(cinder_utils.CinderBasic):
self.admin_cinder.delete_encryption_type(volume_type["id"])
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.required_contexts("volume_types")
@validation.add("required_params", params=[("create_specs", "provider")])
@validation.add("required_platform", platform="openstack", admin=True)

View File

@ -34,7 +34,7 @@ LOG = logging.getLogger(__name__)
@types.convert(image={"type": "glance_image"})
@validation.restricted_parameters(["name", "display_name"])
@validation.add("image_exists", param_name="image", nullable=True)
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["cinder"]},
name="CinderVolumes.create_and_list_volume")
@ -70,7 +70,7 @@ class CreateAndListVolume(cinder_utils.CinderBasic):
@types.convert(image={"type": "glance_image"})
@validation.restricted_parameters(["name", "display_name"])
@validation.add("image_exists", param_name="image", nullable=True)
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["cinder"]},
name="CinderVolumes.create_and_get_volume")
@ -95,7 +95,7 @@ class CreateAndGetVolume(cinder_utils.CinderBasic):
self.cinder.get_volume(volume.id)
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["cinder"]},
name="CinderVolumes.list_volumes")
@ -114,7 +114,7 @@ class ListVolumes(cinder_utils.CinderBasic):
self.cinder.list_volumes(detailed)
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(name="CinderVolumes.list_types")
class ListTypes(cinder_utils.CinderBasic):
@ -132,7 +132,7 @@ class ListTypes(cinder_utils.CinderBasic):
self.cinder.list_types(search_opts, is_public=is_public)
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(name="CinderVolumes.list_transfers")
class ListTransfers(cinder_utils.CinderBasic):
@ -157,7 +157,7 @@ class ListTransfers(cinder_utils.CinderBasic):
@validation.restricted_parameters(["name", "display_name"],
subdict="update_volume_kwargs")
@validation.add("image_exists", param_name="image", nullable=True)
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["cinder"]},
name="CinderVolumes.create_and_update_volume")
@ -191,7 +191,7 @@ class CreateAndUpdateVolume(cinder_utils.CinderBasic):
@types.convert(image={"type": "glance_image"})
@validation.restricted_parameters(["name", "display_name"])
@validation.add("image_exists", param_name="image", nullable=True)
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["cinder"]},
name="CinderVolumes.create_and_delete_volume")
@ -227,7 +227,7 @@ class CreateAndDeleteVolume(cinder_utils.CinderBasic):
@types.convert(image={"type": "glance_image"})
@validation.restricted_parameters(["name", "display_name"])
@validation.add("image_exists", param_name="image", nullable=True)
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["cinder"]},
name="CinderVolumes.create_volume")
@ -252,7 +252,7 @@ class CreateVolume(cinder_utils.CinderBasic):
self.cinder.create_volume(size, **kwargs)
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", users=True)
@validation.required_contexts("volumes")
@scenario.configure(context={"cleanup": ["cinder"]},
@ -289,7 +289,7 @@ class ModifyVolumeMetadata(cinder_utils.CinderBasic):
@validation.restricted_parameters(["name", "display_name"])
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["cinder"]},
name="CinderVolumes.create_and_extend_volume")
@ -322,7 +322,7 @@ class CreateAndExtendVolume(cinder_utils.CinderBasic):
@validation.restricted_parameters(["name", "display_name"])
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.required_contexts("volumes")
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["cinder"]},
@ -356,7 +356,7 @@ class CreateFromVolumeAndDeleteVolume(cinder_utils.CinderBasic):
@validation.restricted_parameters(["name", "display_name"])
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.required_contexts("volumes")
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["cinder"]},
@ -391,7 +391,8 @@ class CreateAndDeleteSnapshot(cinder_utils.CinderBasic):
subdict="create_volume_params")
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image")
@validation.required_services(consts.Service.NOVA, consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.NOVA,
consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["cinder", "nova"]},
name="CinderVolumes.create_and_attach_volume")
@ -440,7 +441,8 @@ class CreateAndAttachVolume(cinder_utils.CinderBasic,
@validation.restricted_parameters(["name", "display_name"])
@validation.volume_type_exists("volume_type")
@validation.required_services(consts.Service.NOVA, consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.NOVA,
consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["cinder", "nova"]},
name="CinderVolumes.create_snapshot_and_attach_volume")
@ -478,7 +480,8 @@ class CreateSnapshotAndAttachVolume(cinder_utils.CinderBasic,
subdict="create_volume_kwargs")
@validation.restricted_parameters(["name", "display_name"],
subdict="create_snapshot_kwargs")
@validation.required_services(consts.Service.NOVA, consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.NOVA,
consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["cinder", "nova"]},
name="CinderVolumes.create_nested_snapshots"
@ -544,7 +547,7 @@ class CreateNestedSnapshotsAndAttachVolume(cinder_utils.CinderBasic,
@validation.restricted_parameters(["name", "display_name"])
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.required_contexts("volumes")
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["cinder"]},
@ -568,7 +571,8 @@ class CreateAndListSnapshots(cinder_utils.CinderBasic,
@types.convert(image={"type": "glance_image"})
@validation.restricted_parameters(["name", "display_name"])
@validation.required_services(consts.Service.CINDER, consts.Service.GLANCE)
@validation.add("required_services", services=[consts.Service.CINDER,
consts.Service.GLANCE])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["cinder", "glance"]},
name="CinderVolumes.create_and_upload_volume_to_image")
@ -607,7 +611,7 @@ class CreateAndUploadVolumeToImage(cinder_utils.CinderBasic,
subdict="create_volume_kwargs")
@validation.restricted_parameters("name", subdict="create_backup_kwargs")
@validation.required_cinder_services("cinder-backup")
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["cinder"]},
name="CinderVolumes.create_volume_backup")
@ -638,7 +642,7 @@ class CreateVolumeBackup(cinder_utils.CinderBasic):
subdict="create_volume_kwargs")
@validation.restricted_parameters("name", subdict="create_backup_kwargs")
@validation.required_cinder_services("cinder-backup")
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["cinder"]},
name="CinderVolumes.create_and_restore_volume_backup")
@ -670,7 +674,7 @@ class CreateAndRestoreVolumeBackup(cinder_utils.CinderBasic):
subdict="create_volume_kwargs")
@validation.restricted_parameters("name", subdict="create_backup_kwargs")
@validation.required_cinder_services("cinder-backup")
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["cinder"]},
name="CinderVolumes.create_and_list_volume_backups")
@ -702,7 +706,7 @@ class CreateAndListVolumeBackups(cinder_utils.CinderBasic):
@types.convert(image={"type": "glance_image"})
@validation.restricted_parameters(["name", "display_name"])
@validation.add("image_exists", param_name="image", nullable=True)
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["cinder"]},
name="CinderVolumes.create_volume_and_clone")
@ -743,7 +747,7 @@ class CreateVolumeAndClone(cinder_utils.CinderBasic):
@validation.restricted_parameters(["name", "display_name"])
@validation.restricted_parameters(["name", "display_name"],
subdict="create_snapshot_kwargs")
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.required_contexts("volumes")
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["cinder"]},
@ -775,7 +779,7 @@ class CreateVolumeFromSnapshot(cinder_utils.CinderBasic):
@types.convert(image={"type": "glance_image"})
@validation.restricted_parameters(["name", "display_name"])
@validation.add("image_exists", param_name="image", nullable=True)
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["cinder"]},
name="CinderVolumes.create_volume_"
@ -800,7 +804,7 @@ class CreateVolumeAndUpdateReadonlyFlag(cinder_utils.CinderBasic):
@types.convert(image={"type": "glance_image"})
@validation.restricted_parameters(["name", "display_name"])
@validation.add("image_exists", param_name="image", nullable=True)
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["cinder"]},
name="CinderVolumes.create_and_accept_transfer")

View File

@ -25,7 +25,8 @@ from rally.task import validation
"""Basic scenarios for Designate."""
@validation.required_services(consts.Service.DESIGNATE)
@validation.add("required_services",
services=[consts.Service.DESIGNATE])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["designate"]},
name="DesignateBasic.create_and_list_domains")
@ -49,7 +50,8 @@ class CreateAndListDomains(utils.DesignateScenario):
self.assertIn(domain, list_domains)
@validation.required_services(consts.Service.DESIGNATE)
@validation.add("required_services",
services=[consts.Service.DESIGNATE])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["designate"]},
name="DesignateBasic.list_domains")
@ -68,7 +70,8 @@ class ListDomains(utils.DesignateScenario):
self._list_domains()
@validation.required_services(consts.Service.DESIGNATE)
@validation.add("required_services",
services=[consts.Service.DESIGNATE])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["designate"]},
name="DesignateBasic.create_and_delete_domain")
@ -84,7 +87,8 @@ class CreateAndDeleteDomain(utils.DesignateScenario):
self._delete_domain(domain["id"])
@validation.required_services(consts.Service.DESIGNATE)
@validation.add("required_services",
services=[consts.Service.DESIGNATE])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["designate"]},
name="DesignateBasic.create_and_update_domain")
@ -100,7 +104,8 @@ class CreateAndUpdateDomain(utils.DesignateScenario):
self._update_domain(domain)
@validation.required_services(consts.Service.DESIGNATE)
@validation.add("required_services",
services=[consts.Service.DESIGNATE])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["designate"]},
name="DesignateBasic.create_and_delete_records")
@ -131,7 +136,8 @@ class CreateAndDeleteRecords(utils.DesignateScenario):
domain["id"], record["id"], atomic_action=False)
@validation.required_services(consts.Service.DESIGNATE)
@validation.add("required_services",
services=[consts.Service.DESIGNATE])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["designate"]},
name="DesignateBasic.list_records")
@ -153,7 +159,8 @@ class ListRecords(utils.DesignateScenario):
self._list_records(domain_id)
@validation.required_services(consts.Service.DESIGNATE)
@validation.add("required_services",
services=[consts.Service.DESIGNATE])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["designate"]},
name="DesignateBasic.create_and_list_records")
@ -183,7 +190,8 @@ class CreateAndListRecords(utils.DesignateScenario):
self.assertEqual(records, list_records)
@validation.required_services(consts.Service.DESIGNATE)
@validation.add("required_services",
services=[consts.Service.DESIGNATE])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["designate"]},
name="DesignateBasic.create_and_list_servers")
@ -204,7 +212,8 @@ class CreateAndListServers(utils.DesignateScenario):
self.assertIn(server, list_servers)
@validation.required_services(consts.Service.DESIGNATE)
@validation.add("required_services",
services=[consts.Service.DESIGNATE])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["designate"]},
name="DesignateBasic.create_and_delete_server")
@ -220,7 +229,8 @@ class CreateAndDeleteServer(utils.DesignateScenario):
self._delete_server(server["id"])
@validation.required_services(consts.Service.DESIGNATE)
@validation.add("required_services",
services=[consts.Service.DESIGNATE])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(name="DesignateBasic.list_servers")
class ListServers(utils.DesignateScenario):
@ -235,7 +245,8 @@ class ListServers(utils.DesignateScenario):
# NOTE: API V2
@validation.required_services(consts.Service.DESIGNATE)
@validation.add("required_services",
services=[consts.Service.DESIGNATE])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["designate"]},
name="DesignateBasic.create_and_list_zones")
@ -258,7 +269,8 @@ class CreateAndListZones(utils.DesignateScenario):
self.assertIn(zone, list_zones)
@validation.required_services(consts.Service.DESIGNATE)
@validation.add("required_services",
services=[consts.Service.DESIGNATE])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["designate"]},
name="DesignateBasic.list_zones")
@ -274,7 +286,8 @@ class ListZones(utils.DesignateScenario):
self._list_zones()
@validation.required_services(consts.Service.DESIGNATE)
@validation.add("required_services",
services=[consts.Service.DESIGNATE])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["designate"]},
name="DesignateBasic.create_and_delete_zone")
@ -290,7 +303,8 @@ class CreateAndDeleteZone(utils.DesignateScenario):
self._delete_zone(zone["id"])
@validation.required_services(consts.Service.DESIGNATE)
@validation.add("required_services",
services=[consts.Service.DESIGNATE])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["designate"]},
name="DesignateBasic.list_recordsets")
@ -308,7 +322,8 @@ class ListRecordsets(utils.DesignateScenario):
self._list_recordsets(zone_id)
@validation.required_services(consts.Service.DESIGNATE)
@validation.add("required_services",
services=[consts.Service.DESIGNATE])
@validation.add("required_platform", platform="openstack", users=True)
@validation.required_contexts("zones")
@scenario.configure(context={"cleanup": ["designate"]},
@ -340,7 +355,8 @@ class CreateAndDeleteRecordsets(utils.DesignateScenario):
zone["id"], recordset["id"], atomic_action=False)
@validation.required_services(consts.Service.DESIGNATE)
@validation.add("required_services",
services=[consts.Service.DESIGNATE])
@validation.add("required_platform", platform="openstack", users=True)
@validation.required_contexts("zones")
@scenario.configure(context={"cleanup": ["designate"]},

View File

@ -22,7 +22,7 @@ from rally.task import validation
"""Scenarios for servers using EC2."""
@validation.required_services(consts.Service.EC2)
@validation.add("required_services", services=[consts.Service.EC2])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["ec2"]},
name="EC2Servers.list_servers")
@ -41,7 +41,7 @@ class ListServers(utils.EC2Scenario):
flavor={"type": "ec2_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image")
@validation.required_services(consts.Service.EC2)
@validation.add("required_services", services=[consts.Service.EC2])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["ec2"]},
name="EC2Servers.boot_server")

View File

@ -42,7 +42,7 @@ class GlanceBasic(scenario.OpenStackScenario):
@validation.restricted_parameters(["image_name", "name"])
@types.convert(image_location={"type": "path_or_url"},
kwargs={"type": "glance_image_args"})
@validation.required_services(consts.Service.GLANCE)
@validation.add("required_services", services=[consts.Service.GLANCE])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["glance"]},
name="GlanceImages.create_and_list_image")
@ -78,7 +78,7 @@ class CreateAndListImage(GlanceBasic):
@types.convert(image_location={"type": "path_or_url"},
kwargs={"type": "glance_image_args"})
@validation.required_services(consts.Service.GLANCE)
@validation.add("required_services", services=[consts.Service.GLANCE])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["glance"]},
name="GlanceImages.create_and_get_image")
@ -109,7 +109,7 @@ class CreateAndGetImage(GlanceBasic):
self.assertEqual(image.id, image_info.id)
@validation.required_services(consts.Service.GLANCE)
@validation.add("required_services", services=[consts.Service.GLANCE])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["glance"]},
name="GlanceImages.list_images")
@ -131,7 +131,7 @@ class ListImages(GlanceBasic):
@validation.restricted_parameters(["image_name", "name"])
@types.convert(image_location={"type": "path_or_url"},
kwargs={"type": "glance_image_args"})
@validation.required_services(consts.Service.GLANCE)
@validation.add("required_services", services=[consts.Service.GLANCE])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["glance"]},
name="GlanceImages.create_and_delete_image")
@ -160,7 +160,8 @@ class CreateAndDeleteImage(GlanceBasic):
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.add("required_services", services=[consts.Service.GLANCE,
consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["glance", "nova"]},
name="GlanceImages.create_image_and_boot_instances")
@ -202,7 +203,7 @@ class CreateImageAndBootInstances(GlanceBasic, nova_utils.NovaScenario):
@types.convert(image_location={"type": "path_or_url"},
kwargs={"type": "glance_image_args"})
@validation.required_services(consts.Service.GLANCE)
@validation.add("required_services", services=[consts.Service.GLANCE])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["glance"]},
name="GlanceImages.create_and_update_image")

View File

@ -26,7 +26,7 @@ from rally.task import validation
@types.convert(template_path={"type": "file"}, files={"type": "file_dict"})
@validation.validate_heat_template("template_path")
@validation.required_services(consts.Service.HEAT)
@validation.add("required_services", services=[consts.Service.HEAT])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["heat"]},
name="HeatStacks.create_and_list_stack")
@ -51,7 +51,7 @@ class CreateAndListStack(utils.HeatScenario):
self.assertIn(stack.id, [i.id for i in list_stacks])
@validation.required_services(consts.Service.HEAT)
@validation.add("required_services", services=[consts.Service.HEAT])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(name="HeatStacks.list_stacks_and_resources")
class ListStacksAndResources(utils.HeatScenario):
@ -67,7 +67,7 @@ class ListStacksAndResources(utils.HeatScenario):
@types.convert(template_path={"type": "file"}, files={"type": "file_dict"})
@validation.validate_heat_template("template_path")
@validation.required_services(consts.Service.HEAT)
@validation.add("required_services", services=[consts.Service.HEAT])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["heat"]},
name="HeatStacks.create_and_delete_stack")
@ -93,7 +93,7 @@ class CreateAndDeleteStack(utils.HeatScenario):
@types.convert(template_path={"type": "file"}, files={"type": "file_dict"})
@validation.validate_heat_template("template_path")
@validation.required_services(consts.Service.HEAT)
@validation.add("required_services", services=[consts.Service.HEAT])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["heat"]},
name="HeatStacks.create_check_delete_stack")
@ -125,7 +125,7 @@ class CreateCheckDeleteStack(utils.HeatScenario):
files={"type": "file_dict"},
updated_files={"type": "file_dict"})
@validation.validate_heat_template("template_path")
@validation.required_services(consts.Service.HEAT)
@validation.add("required_services", services=[consts.Service.HEAT])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["heat"]},
name="HeatStacks.create_update_delete_stack")
@ -164,7 +164,7 @@ class CreateUpdateDeleteStack(utils.HeatScenario):
@types.convert(template_path={"type": "file"}, files={"type": "file_dict"})
@validation.validate_heat_template("template_path")
@validation.required_services(consts.Service.HEAT)
@validation.add("required_services", services=[consts.Service.HEAT])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["heat"]},
name="HeatStacks.create_stack_and_scale")
@ -206,7 +206,7 @@ class CreateStackAndScale(utils.HeatScenario):
@types.convert(template_path={"type": "file"}, files={"type": "file_dict"})
@validation.validate_heat_template("template_path")
@validation.required_services(consts.Service.HEAT)
@validation.add("required_services", services=[consts.Service.HEAT])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["heat"]},
name="HeatStacks.create_suspend_resume_delete_stack")
@ -234,7 +234,7 @@ class CreateSuspendResumeDeleteStack(utils.HeatScenario):
self._delete_stack(s)
@validation.required_services(consts.Service.HEAT)
@validation.add("required_services", services=[consts.Service.HEAT])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(name="HeatStacks.list_stacks_and_events")
class ListStacksAndEvents(utils.HeatScenario):
@ -250,7 +250,7 @@ class ListStacksAndEvents(utils.HeatScenario):
@types.convert(template_path={"type": "file"}, files={"type": "file_dict"})
@validation.validate_heat_template("template_path")
@validation.required_services(consts.Service.HEAT)
@validation.add("required_services", services=[consts.Service.HEAT])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["heat"]},
name="HeatStacks.create_snapshot_restore_delete_stack")
@ -280,7 +280,7 @@ class CreateSnapshotRestoreDeleteStack(utils.HeatScenario):
@types.convert(template_path={"type": "file"}, files={"type": "file_dict"})
@validation.required_services(consts.Service.HEAT)
@validation.add("required_services", services=[consts.Service.HEAT])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["heat"]},
name="HeatStacks.create_stack_and_show_output_via_API")
@ -307,7 +307,7 @@ class CreateStackAndShowOutputViaAPI(utils.HeatScenario):
@types.convert(template_path={"type": "file"}, files={"type": "file_dict"})
@validation.required_services(consts.Service.HEAT)
@validation.add("required_services", services=[consts.Service.HEAT])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["heat"]},
name="HeatStacks.create_stack_and_show_output")
@ -334,7 +334,7 @@ class CreateStackAndShowOutput(utils.HeatScenario):
@types.convert(template_path={"type": "file"}, files={"type": "file_dict"})
@validation.required_services(consts.Service.HEAT)
@validation.add("required_services", services=[consts.Service.HEAT])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["heat"]},
name="HeatStacks.create_stack_and_list_output_via_API")
@ -359,7 +359,7 @@ class CreateStackAndListOutputViaAPI(utils.HeatScenario):
@types.convert(template_path={"type": "file"}, files={"type": "file_dict"})
@validation.required_services(consts.Service.HEAT)
@validation.add("required_services", services=[consts.Service.HEAT])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["heat"]},
name="HeatStacks.create_stack_and_list_output")

View File

@ -26,7 +26,7 @@ from rally.task import validation
@logging.log_deprecated_args("Useless arguments detected", "0.10.0",
("marker", "limit", "sort_key"), once=True)
@validation.restricted_parameters(["name"])
@validation.required_services(consts.Service.IRONIC)
@validation.add("required_services", services=[consts.Service.IRONIC])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["ironic"]},
name="IronicNodes.create_and_list_node")
@ -66,7 +66,7 @@ class CreateAndListNode(utils.IronicScenario):
@validation.restricted_parameters(["name"])
@validation.required_services(consts.Service.IRONIC)
@validation.add("required_services", services=[consts.Service.IRONIC])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["ironic"]},
name="IronicNodes.create_and_delete_node")

View File

@ -21,7 +21,7 @@ from rally.task import validation
"""Scenarios for Magnum cluster_templates."""
@validation.required_services(consts.Service.MAGNUM)
@validation.add("required_services", services=[consts.Service.MAGNUM])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["magnum"]},
name="MagnumClusterTemplates.list_cluster_templates")

View File

@ -21,7 +21,7 @@ from rally.task import validation
"""Scenarios for Magnum clusters."""
@validation.required_services(consts.Service.MAGNUM)
@validation.add("required_services", services=[consts.Service.MAGNUM])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["magnum.clusters"]},
name="MagnumClusters.list_clusters")
@ -44,7 +44,7 @@ class ListClusters(utils.MagnumScenario):
self._list_clusters(**kwargs)
@validation.required_services(consts.Service.MAGNUM)
@validation.add("required_services", services=[consts.Service.MAGNUM])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["magnum.clusters", "nova.keypairs"]},
name="MagnumClusters.create_and_list_clusters")

View File

@ -25,7 +25,7 @@ from rally.task import validation
@validation.validate_share_proto()
@validation.required_services(consts.Service.MANILA)
@validation.add("required_services", services=[consts.Service.MANILA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["manila"]},
name="ManilaShares.create_and_delete_share")
@ -53,7 +53,7 @@ class CreateAndDeleteShare(utils.ManilaScenario):
self._delete_share(share)
@validation.required_services(consts.Service.MANILA)
@validation.add("required_services", services=[consts.Service.MANILA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(name="ManilaShares.list_shares")
class ListShares(utils.ManilaScenario):
@ -69,7 +69,7 @@ class ListShares(utils.ManilaScenario):
self._list_shares(detailed=detailed, search_opts=search_opts)
@validation.required_services(consts.Service.MANILA)
@validation.add("required_services", services=[consts.Service.MANILA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["manila"]},
name="ManilaShares.create_share_network_and_delete")
@ -96,7 +96,7 @@ class CreateShareNetworkAndDelete(utils.ManilaScenario):
self._delete_share_network(share_network)
@validation.required_services(consts.Service.MANILA)
@validation.add("required_services", services=[consts.Service.MANILA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["manila"]},
name="ManilaShares.create_share_network_and_list")
@ -131,7 +131,7 @@ class CreateShareNetworkAndList(utils.ManilaScenario):
)
@validation.required_services(consts.Service.MANILA)
@validation.add("required_services", services=[consts.Service.MANILA])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(name="ManilaShares.list_share_servers")
class ListShareServers(utils.ManilaScenario):
@ -147,7 +147,7 @@ class ListShareServers(utils.ManilaScenario):
self._list_share_servers(search_opts=search_opts)
@validation.required_services(consts.Service.MANILA)
@validation.add("required_services", services=[consts.Service.MANILA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["manila"]},
name="ManilaShares.create_security_service_and_delete")
@ -182,7 +182,7 @@ class CreateSecurityServiceAndDelete(utils.ManilaScenario):
self._delete_security_service(security_service)
@validation.required_services(consts.Service.MANILA)
@validation.add("required_services", services=[consts.Service.MANILA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["manila"]},
name=("ManilaShares."
@ -203,7 +203,7 @@ class AttachSecurityServiceToShareNetwork(utils.ManilaScenario):
@validation.validate_share_proto()
@validation.required_services(consts.Service.MANILA)
@validation.add("required_services", services=[consts.Service.MANILA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["manila"]},
name=("ManilaShares.create_and_list_share"))
@ -240,7 +240,7 @@ class CreateAndListShare(utils.ManilaScenario):
integer_only=True)
@validation.add("number", param_name="value_max_length", minval=1, maxval=1024,
integer_only=True)
@validation.required_services(consts.Service.MANILA)
@validation.add("required_services", services=[consts.Service.MANILA])
@validation.add("required_platform", platform="openstack", users=True)
@validation.required_contexts(manila_consts.SHARES_CONTEXT_NAME)
@scenario.configure(

View File

@ -28,7 +28,8 @@ from rally.task import validation
@validation.add("required_platform", platform="openstack", users=True)
@validation.required_services(consts.Service.MISTRAL)
@validation.add("required_services",
services=[consts.Service.MISTRAL])
@scenario.configure(name="MistralExecutions.list_executions",
context={"cleanup": ["mistral"]})
class ListExecutions(utils.MistralScenario):
@ -55,7 +56,8 @@ class ListExecutions(utils.MistralScenario):
@types.convert(params={"type": "file"})
@types.convert(wf_input={"type": "file"})
@validation.add("required_platform", platform="openstack", users=True)
@validation.required_services(consts.Service.MISTRAL)
@validation.add("required_services",
services=[consts.Service.MISTRAL])
@validation.workbook_contains_workflow("definition", "workflow_name")
@scenario.configure(
name="MistralExecutions.create_execution_from_workbook",

View File

@ -24,7 +24,8 @@ from rally.task import validation
@validation.add("required_platform", platform="openstack", users=True)
@validation.required_services(consts.Service.MISTRAL)
@validation.add("required_services",
services=[consts.Service.MISTRAL])
@scenario.configure(name="MistralWorkbooks.list_workbooks")
class ListWorkbooks(utils.MistralScenario):
@ -40,7 +41,8 @@ class ListWorkbooks(utils.MistralScenario):
@validation.file_exists("definition")
@types.convert(definition={"type": "file"})
@validation.add("required_platform", platform="openstack", users=True)
@validation.required_services(consts.Service.MISTRAL)
@validation.add("required_services",
services=[consts.Service.MISTRAL])
@scenario.configure(context={"cleanup": ["mistral"]},
name="MistralWorkbooks.create_workbook")
class CreateWorkbook(utils.MistralScenario):

View File

@ -21,7 +21,8 @@ from rally.task import validation
"""Scenarios for monasca Metrics API."""
@validation.required_services(consts.Service.MONASCA)
@validation.add("required_services",
services=[consts.Service.MONASCA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(name="MonascaMetrics.list_metrics")
class ListMetrics(monascautils.MonascaScenario):

View File

@ -23,7 +23,7 @@ from rally.task import validation
"""Scenarios for Murano environments."""
@validation.required_services(consts.Service.MURANO)
@validation.add("required_services", services=[consts.Service.MURANO])
@scenario.configure(context={"cleanup": ["murano.environments"]},
name="MuranoEnvironments.list_environments")
class ListEnvironments(utils.MuranoScenario):
@ -36,7 +36,7 @@ class ListEnvironments(utils.MuranoScenario):
self._list_environments()
@validation.required_services(consts.Service.MURANO)
@validation.add("required_services", services=[consts.Service.MURANO])
@scenario.configure(context={"cleanup": ["murano.environments"]},
name="MuranoEnvironments.create_and_delete_environment")
class CreateAndDeleteEnvironment(utils.MuranoScenario):
@ -49,7 +49,7 @@ class CreateAndDeleteEnvironment(utils.MuranoScenario):
self._delete_environment(environment)
@validation.required_services(consts.Service.MURANO)
@validation.add("required_services", services=[consts.Service.MURANO])
@validation.required_contexts("murano_packages")
@scenario.configure(context={"cleanup": ["murano"], "roles": ["admin"]},
name="MuranoEnvironments.create_and_deploy_environment")

View File

@ -26,7 +26,7 @@ from rally.task import validation
@validation.file_exists(param_name="package", mode=os.F_OK)
@validation.required_services(consts.Service.MURANO)
@validation.add("required_services", services=[consts.Service.MURANO])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["murano.packages"]},
name="MuranoPackages.import_and_list_packages")
@ -56,7 +56,7 @@ class ImportAndListPackages(utils.MuranoScenario):
@validation.file_exists(param_name="package", mode=os.F_OK)
@validation.required_services(consts.Service.MURANO)
@validation.add("required_services", services=[consts.Service.MURANO])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["murano.packages"]},
name="MuranoPackages.import_and_delete_package")
@ -83,7 +83,7 @@ class ImportAndDeletePackage(utils.MuranoScenario):
@validation.file_exists(param_name="package", mode=os.F_OK)
@validation.required_services(consts.Service.MURANO)
@validation.add("required_services", services=[consts.Service.MURANO])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["murano.packages"]},
name="MuranoPackages.package_lifecycle")
@ -119,7 +119,7 @@ class PackageLifecycle(utils.MuranoScenario):
@validation.file_exists(param_name="package", mode=os.F_OK)
@validation.required_services(consts.Service.MURANO)
@validation.add("required_services", services=[consts.Service.MURANO])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["murano.packages"]},
name="MuranoPackages.import_and_filter_applications")

View File

@ -19,8 +19,9 @@ from rally.task import validation
@validation.add("required_neutron_extensions", extensions=["bgpvpn"])
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_platform", platform="openstack", admin=True)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@scenario.configure(context={"admin_cleanup": ["neutron"]},
name="NeutronBGPVPN.create_and_delete_bgpvpns")
class CreateAndDeleteBgpvpns(utils.NeutronScenario):
@ -50,7 +51,7 @@ class CreateAndDeleteBgpvpns(utils.NeutronScenario):
@validation.add("required_neutron_extensions", extensions=["bgpvpn"])
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services", services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["neutron"]},
name="NeutronBGPVPN.create_and_list_bgpvpns")
@ -81,7 +82,7 @@ class CreateAndListBgpvpns(utils.NeutronScenario):
@validation.add("required_neutron_extensions", extensions=["bgpvpn"])
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services", services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["neutron"]},
name="NeutronBGPVPN.create_and_update_bgpvpns")

View File

@ -25,7 +25,8 @@ from rally.task import validation
@validation.restricted_parameters("subnet_id",
subdict="pool_create_args")
@validation.add("required_neutron_extensions", extensions=["lbaas"])
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@validation.required_contexts("network")
@scenario.configure(context={"cleanup": ["neutron"]},
@ -49,7 +50,8 @@ class CreateAndListPools(utils.NeutronScenario):
@validation.restricted_parameters("subnet_id",
subdict="pool_create_args")
@validation.add("required_neutron_extensions", extensions=["lbaas"])
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@validation.required_contexts("network")
@scenario.configure(context={"cleanup": ["neutron"]},
@ -75,7 +77,8 @@ class CreateAndDeletePools(utils.NeutronScenario):
@validation.restricted_parameters("subnet_id",
subdict="pool_create_args")
@validation.add("required_neutron_extensions", extensions=["lbaas"])
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@validation.required_contexts("network")
@scenario.configure(context={"cleanup": ["neutron"]},
@ -103,7 +106,8 @@ class CreateAndUpdatePools(utils.NeutronScenario):
@validation.restricted_parameters(["pool_id", "subnet_id"],
subdict="vip_create_args")
@validation.add("required_neutron_extensions", extensions=["lbaas"])
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@validation.required_contexts("network")
@scenario.configure(context={"cleanup": ["neutron"]},
@ -133,7 +137,8 @@ class CreateAndListVips(utils.NeutronScenario):
@validation.restricted_parameters(["pool_id", "subnet_id"],
subdict="vip_create_args")
@validation.add("required_neutron_extensions", extensions=["lbaas"])
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@validation.required_contexts("network")
@scenario.configure(context={"cleanup": ["neutron"]},
@ -165,7 +170,8 @@ class CreateAndDeleteVips(utils.NeutronScenario):
@validation.restricted_parameters(["pool_id", "subnet_id"],
subdict="vip_create_args")
@validation.add("required_neutron_extensions", extensions=["lbaas"])
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@validation.required_contexts("network")
@scenario.configure(context={"cleanup": ["neutron"]},
@ -198,7 +204,8 @@ class CreateAndUpdateVips(utils.NeutronScenario):
@validation.add("required_neutron_extensions", extensions=["lbaas"])
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["neutron"]},
name=("NeutronLoadbalancerV1"
@ -220,7 +227,8 @@ class CreateAndListHealthmonitors(utils.NeutronScenario):
@validation.add("required_neutron_extensions", extensions=["lbaas"])
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["neutron"]},
name=("NeutronLoadbalancerV1"
@ -244,7 +252,8 @@ class CreateAndDeleteHealthmonitors(utils.NeutronScenario):
@validation.add("required_neutron_extensions", extensions=["lbaas"])
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["neutron"]},
name=("NeutronLoadbalancerV1"

View File

@ -20,7 +20,8 @@ from rally.task import validation
@validation.add("required_neutron_extensions", extensions=["lbaasv2"])
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@validation.required_contexts("network")
@scenario.configure(context={"cleanup": ["neutron"]},

View File

@ -23,7 +23,8 @@ from rally.task import validation
"""Scenarios for Neutron."""
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["neutron"]},
name="NeutronNetworks.create_and_list_networks")
@ -46,7 +47,8 @@ class CreateAndListNetworks(utils.NeutronScenario):
self._list_networks()
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["neutron"]},
name="NeutronNetworks.create_and_show_network")
@ -63,7 +65,8 @@ class CreateAndShowNetwork(utils.NeutronScenario):
self._show_network(network)
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["neutron"]},
name="NeutronNetworks.create_and_update_networks")
@ -81,7 +84,8 @@ class CreateAndUpdateNetworks(utils.NeutronScenario):
self._update_network(network, network_update_args)
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@scenario.configure(context={"cleanup": ["neutron"]},
name="NeutronNetworks.create_and_delete_networks")
class CreateAndDeleteNetworks(utils.NeutronScenario):
@ -99,7 +103,8 @@ class CreateAndDeleteNetworks(utils.NeutronScenario):
@validation.add("number", param_name="subnets_per_network", minval=1,
integer_only=True)
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["neutron"]},
name="NeutronNetworks.create_and_list_subnets")
@ -126,7 +131,8 @@ class CreateAndListSubnets(utils.NeutronScenario):
@validation.add("number", param_name="subnets_per_network", minval=1,
integer_only=True)
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["neutron"]},
name="NeutronNetworks.create_and_update_subnets")
@ -158,7 +164,8 @@ class CreateAndUpdateSubnets(utils.NeutronScenario):
@validation.add("number", param_name="subnets_per_network", minval=1,
integer_only=True)
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["neutron"]},
name="NeutronNetworks.create_and_show_subnets")
@ -190,7 +197,8 @@ class CreateAndShowSubnets(utils.NeutronScenario):
@validation.number("subnets_per_network", minval=1, integer_only=True)
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@scenario.configure(context={"cleanup": ["neutron"]},
name="NeutronNetworks.create_and_delete_subnets")
class CreateAndDeleteSubnets(utils.NeutronScenario):
@ -218,7 +226,8 @@ class CreateAndDeleteSubnets(utils.NeutronScenario):
@validation.add("number", param_name="subnets_per_network", minval=1,
integer_only=True)
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["neutron"]},
name="NeutronNetworks.create_and_list_routers")
@ -247,7 +256,7 @@ class CreateAndListRouters(utils.NeutronScenario):
@validation.add("number", param_name="subnets_per_network", minval=1,
integer_only=True)
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services", services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["neutron"]},
name="NeutronNetworks.create_and_show_routers")
@ -277,7 +286,8 @@ class CreateAndShowRouters(utils.NeutronScenario):
@validation.number("subnets_per_network", minval=1, integer_only=True)
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@scenario.configure(context={"cleanup": ["neutron"]},
name="NeutronNetworks.create_and_update_routers")
class CreateAndUpdateRouters(utils.NeutronScenario):
@ -307,7 +317,8 @@ class CreateAndUpdateRouters(utils.NeutronScenario):
@validation.number("subnets_per_network", minval=1, integer_only=True)
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@scenario.configure(context={"cleanup": ["neutron"]},
name="NeutronNetworks.create_and_delete_routers")
class CreateAndDeleteRouters(utils.NeutronScenario):
@ -338,7 +349,8 @@ class CreateAndDeleteRouters(utils.NeutronScenario):
self._delete_router(router)
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["neutron"]},
name="NeutronNetworks.set_and_clear_router_gateway")
@ -367,7 +379,8 @@ class SetAndClearRouterGateway(utils.NeutronScenario):
@validation.add("number", param_name="ports_per_network", minval=1,
integer_only=True)
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["neutron"]},
name="NeutronNetworks.create_and_list_ports")
@ -391,7 +404,8 @@ class CreateAndListPorts(utils.NeutronScenario):
@validation.add("number", param_name="ports_per_network", minval=1,
integer_only=True)
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["neutron"]},
name="NeutronNetworks.create_and_update_ports")
@ -418,7 +432,8 @@ class CreateAndUpdatePorts(utils.NeutronScenario):
@validation.add("number", param_name="ports_per_network", minval=1,
integer_only=True)
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["neutron"]},
name="NeutronNetworks.create_and_show_ports")
@ -454,7 +469,8 @@ class CreateAndShowPorts(utils.NeutronScenario):
@validation.number("ports_per_network", minval=1, integer_only=True)
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@scenario.configure(context={"cleanup": ["neutron"]},
name="NeutronNetworks.create_and_delete_ports")
class CreateAndDeletePorts(utils.NeutronScenario):
@ -477,7 +493,8 @@ class CreateAndDeletePorts(utils.NeutronScenario):
self._delete_port(port)
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@validation.add("external_network_exists", param_name="floating_network")
@scenario.configure(context={"cleanup": ["neutron"]},
@ -498,7 +515,8 @@ class CreateAndListFloatingIps(utils.NeutronScenario):
self._list_floating_ips()
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@validation.add("external_network_exists", param_name="floating_network")
@scenario.configure(context={"cleanup": ["neutron"]},
@ -520,7 +538,8 @@ class CreateAndDeleteFloatingIps(utils.NeutronScenario):
self._delete_floating_ip(floating_ip["floatingip"])
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(name="NeutronNetworks.list_agents")
class ListAgents(utils.NeutronScenario):

View File

@ -19,7 +19,8 @@ from rally.task import validation
"""Scenarios for Neutron Security Groups."""
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["neutron"]},
name=("NeutronSecurityGroup"
@ -40,7 +41,8 @@ class CreateAndListSecurityGroups(utils.NeutronScenario):
self._list_security_groups()
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["neutron"]},
name=("NeutronSecurityGroup"
@ -65,7 +67,8 @@ class CreateAndShowSecurityGroup(utils.NeutronScenario):
self._show_security_group(security_group)
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["neutron"]},
name=("NeutronSecurityGroup"
@ -87,7 +90,8 @@ class CreateAndDeleteSecurityGroups(utils.NeutronScenario):
self._delete_security_group(security_group)
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["neutron"]},
name=("NeutronSecurityGroup"

View File

@ -22,7 +22,7 @@ from rally.task import validation
"""Scenarios for Nova agents."""
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(name="NovaAgents.list_agents")
class ListAgents(utils.NovaScenario):

View File

@ -24,7 +24,7 @@ from rally.task import validation
"""Scenarios for Nova aggregates."""
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(name="NovaAggregates.list_aggregates")
class ListAggregates(utils.NovaScenario):
@ -37,7 +37,7 @@ class ListAggregates(utils.NovaScenario):
self._list_aggregates()
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["nova"]},
name="NovaAggregates.create_and_list_aggregates")
@ -59,7 +59,7 @@ class CreateAndListAggregates(utils.NovaScenario):
self.assertIn(aggregate, all_aggregates, err_msg=msg)
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["nova"]},
name="NovaAggregates.create_and_delete_aggregate")
@ -76,7 +76,7 @@ class CreateAndDeleteAggregate(utils.NovaScenario):
self._delete_aggregate(aggregate)
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["nova"]},
name="NovaAggregates.create_and_update_aggregate")
@ -94,7 +94,7 @@ class CreateAndUpdateAggregate(utils.NovaScenario):
self._update_aggregate(aggregate)
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["nova"]},
name="NovaAggregates.create_aggregate_add_and_remove_host")
@ -115,7 +115,7 @@ class CreateAggregateAddAndRemoveHost(utils.NovaScenario):
self._aggregate_remove_host(aggregate, host_name)
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["nova"]},
name="NovaAggregates.create_and_get_aggregate_details")
@ -133,7 +133,7 @@ class CreateAndGetAggregateDetails(utils.NovaScenario):
@types.convert(image={"type": "glance_image"})
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack",
admin=True, users=True)
@scenario.configure(context={"admin_cleanup": ["nova"], "cleanup": ["nova"]},

View File

@ -22,7 +22,7 @@ from rally.task import validation
"""Scenarios for Nova availability-zones."""
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(name="NovaAvailabilityZones.list_availability_zones")
class ListAvailabilityZones(utils.NovaScenario):

View File

@ -27,7 +27,7 @@ from rally.task import validation
LOG = logging.getLogger(__name__)
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(name="NovaFlavors.list_flavors")
class ListFlavors(utils.NovaScenario):
@ -45,7 +45,7 @@ class ListFlavors(utils.NovaScenario):
self._list_flavors(detailed, **kwargs)
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=(consts.Service.NOVA))
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["nova"]},
name="NovaFlavors.create_and_list_flavor_access")
@ -71,7 +71,7 @@ class CreateAndListFlavorAccess(utils.NovaScenario):
self._list_flavor_access(flavor.id)
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["nova"]},
name="NovaFlavors.create_flavor_and_add_tenant_access")
@ -90,7 +90,7 @@ class CreateFlavorAndAddTenantAccess(utils.NovaScenario):
self._add_tenant_access(flavor.id, self.context["tenant"]["id"])
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["nova"]},
name="NovaFlavors.create_flavor")
@ -107,7 +107,7 @@ class CreateFlavor(utils.NovaScenario):
self._create_flavor(ram, vcpus, disk, **kwargs)
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=(consts.Service.NOVA))
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["nova"]},
name="NovaFlavors.create_and_get_flavor")
@ -127,7 +127,7 @@ class CreateAndGetFlavor(utils.NovaScenario):
self._get_flavor(flavor.id)
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["nova"]},
name="NovaFlavors.create_and_delete_flavor")
@ -145,7 +145,7 @@ class CreateAndDeleteFlavor(utils.NovaScenario):
self._delete_flavor(flavor.id)
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["nova"]},
name="NovaFlavors.create_flavor_and_set_keys")

View File

@ -22,7 +22,7 @@ from rally.task import validation
"""Scenarios for Nova hosts."""
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(name="NovaHosts.list_hosts")
class ListHosts(utils.NovaScenario):
@ -39,7 +39,7 @@ class ListHosts(utils.NovaScenario):
self._list_hosts(zone)
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(name="NovaHosts.list_and_get_hosts")
class ListAndGetHosts(utils.NovaScenario):

View File

@ -23,7 +23,7 @@ from rally.task import validation
"""Scenarios for Nova hypervisors."""
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(name="NovaHypervisors.list_hypervisors")
class ListHypervisors(utils.NovaScenario):
@ -39,7 +39,7 @@ class ListHypervisors(utils.NovaScenario):
self._list_hypervisors(detailed)
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(name="NovaHypervisors.list_and_get_hypervisors")
class ListAndGetHypervisors(utils.NovaScenario):
@ -62,7 +62,7 @@ class ListAndGetHypervisors(utils.NovaScenario):
self._get_hypervisor(hypervisor, atomic_action=False)
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(name="NovaHypervisors.statistics_hypervisors")
class StatisticsHypervisors(utils.NovaScenario):
@ -75,7 +75,7 @@ class StatisticsHypervisors(utils.NovaScenario):
self._statistics_hypervisors()
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(name="NovaHypervisors.list_and_get_uptime_hypervisors")
class ListAndGetUptimeHypervisors(utils.NovaScenario):
@ -97,7 +97,7 @@ class ListAndGetUptimeHypervisors(utils.NovaScenario):
self._uptime_hypervisor(hypervisor, atomic_action=False)
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(name="NovaHypervisors.list_and_search_hypervisors")
class ListAndSearchHypervisors(utils.NovaScenario):

View File

@ -22,7 +22,7 @@ from rally.task import validation
"""Scenarios for Nova images."""
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova"]},
name="NovaImages.list_images")

View File

@ -24,7 +24,7 @@ from rally.task import validation
"""Scenarios for Nova keypairs."""
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova"]},
name="NovaKeypair.create_and_list_keypairs")
@ -45,7 +45,7 @@ class CreateAndListKeypairs(utils.NovaScenario):
self.assertIn(keypair_name, [i.id for i in list_keypairs])
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova"]},
name="NovaKeypair.create_and_delete_keypair")
@ -67,7 +67,7 @@ class CreateAndDeleteKeypair(utils.NovaScenario):
flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image")
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova"]},
name="NovaKeypair.boot_and_delete_server_with_keypair")
@ -104,7 +104,7 @@ class BootAndDeleteServerWithKeypair(utils.NovaScenario):
self._delete_keypair(keypair)
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova"]},
name="NovaKeypair.create_and_get_keypair")

View File

@ -22,7 +22,7 @@ from rally.task import validation
"""Scenarios for Nova Group servers."""
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova"]},
name="NovaServerGroups.create_and_list_server_groups")
@ -51,7 +51,7 @@ class CreateAndListServerGroups(utils.NovaScenario):
self.assertIn(server_group, server_groups_list, err_msg=msg)
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova"]},
name="NovaServerGroups.create_and_get_server_group")

View File

@ -37,7 +37,7 @@ LOG = logging.getLogger(__name__)
flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image")
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=(consts.Service.NOVA))
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova"]},
name="NovaServers.boot_and_list_server")
@ -71,7 +71,7 @@ class BootAndListServer(utils.NovaScenario, cinder_utils.CinderScenario):
self.assertIn(server, pool_list, err_msg=msg)
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova"]},
name="NovaServers.list_servers")
@ -93,7 +93,7 @@ class ListServers(utils.NovaScenario, cinder_utils.CinderScenario):
flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image")
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova"]},
name="NovaServers.boot_and_delete_server")
@ -123,7 +123,7 @@ class BootAndDeleteServer(utils.NovaScenario, cinder_utils.CinderScenario):
flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image")
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack",
admin=True, users=True)
@scenario.configure(context={"cleanup": ["nova"]},
@ -156,7 +156,8 @@ class BootAndDeleteMultipleServers(utils.NovaScenario,
flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image", validate_disk=False)
@validation.required_services(consts.Service.NOVA, consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.NOVA,
consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova", "cinder"]},
name="NovaServers.boot_server_from_volume_and_delete")
@ -196,7 +197,7 @@ class BootServerFromVolumeAndDelete(utils.NovaScenario,
flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image")
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova"]},
name="NovaServers.boot_and_bounce_server")
@ -237,7 +238,7 @@ class BootAndBounceServer(utils.NovaScenario, cinder_utils.CinderScenario):
flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image")
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova"]},
name="NovaServers.boot_lock_unlock_and_delete")
@ -271,7 +272,8 @@ class BootLockUnlockAndDelete(utils.NovaScenario, cinder_utils.CinderScenario):
flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image")
@validation.required_services(consts.Service.NOVA, consts.Service.GLANCE)
@validation.add("required_services", services=[consts.Service.NOVA,
consts.Service.GLANCE])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova", "glance"]},
name="NovaServers.snapshot_server")
@ -299,7 +301,7 @@ class SnapshotServer(utils.NovaScenario, cinder_utils.CinderScenario):
flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image")
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova"]},
name="NovaServers.boot_server")
@ -323,7 +325,8 @@ class BootServer(utils.NovaScenario, cinder_utils.CinderScenario):
flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image", validate_disk=False)
@validation.required_services(consts.Service.NOVA, consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.NOVA,
consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova", "cinder"]},
name="NovaServers.boot_server_from_volume")
@ -357,7 +360,7 @@ class BootServerFromVolume(utils.NovaScenario, cinder_utils.CinderScenario):
to_flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image")
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=(consts.Service.NOVA))
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova"]},
name="NovaServers.resize_server")
@ -391,7 +394,7 @@ class ResizeServer(utils.NovaScenario, cinder_utils.CinderScenario):
to_flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image")
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova"]},
name="NovaServers.resize_shutoff_server")
@ -427,7 +430,8 @@ class ResizeShutoffServer(utils.NovaScenario):
to_flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image")
@validation.required_services(consts.Service.NOVA, consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.NOVA,
consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["cinder", "nova"]},
name=("NovaServers.boot_server"
@ -484,7 +488,8 @@ class BootServerAttachCreatedVolumeAndResize(utils.NovaScenario,
to_flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image", validate_disk=False)
@validation.required_services(consts.Service.NOVA, consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.NOVA,
consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova", "cinder"]},
name="NovaServers.boot_server_from_volume_and_resize")
@ -545,7 +550,7 @@ class BootServerFromVolumeAndResize(utils.NovaScenario,
flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image")
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova"]},
name="NovaServers.suspend_and_resume_server")
@ -569,7 +574,7 @@ class SuspendAndResumeServer(utils.NovaScenario, cinder_utils.CinderScenario):
flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image")
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova"]},
name="NovaServers.pause_and_unpause_server")
@ -594,7 +599,7 @@ class PauseAndUnpauseServer(utils.NovaScenario,
flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image")
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova"]},
name="NovaServers.shelve_and_unshelve_server")
@ -619,7 +624,7 @@ class ShelveAndUnshelveServer(utils.NovaScenario,
flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image")
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack",
admin=True, users=True)
@scenario.configure(context={"cleanup": ["nova"]},
@ -662,7 +667,8 @@ class BootAndLiveMigrateServer(utils.NovaScenario,
flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image", validate_disk=False)
@validation.required_services(consts.Service.NOVA, consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.NOVA,
consts.Service.CINDER])
@validation.add("required_platform", platform="openstack",
admin=True, users=True)
@scenario.configure(context={"cleanup": ["nova", "cinder"]},
@ -717,7 +723,8 @@ class BootServerFromVolumeAndLiveMigrate(utils.NovaScenario,
flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image")
@validation.required_services(consts.Service.NOVA, consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.NOVA,
consts.Service.CINDER])
@validation.add("required_platform", platform="openstack",
admin=True, users=True)
@scenario.configure(context={"cleanup": ["cinder", "nova"]},
@ -776,7 +783,7 @@ class BootServerAttachCreatedVolumeAndLiveMigrate(utils.NovaScenario,
flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image")
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack",
admin=True, users=True)
@scenario.configure(context={"cleanup": ["nova"]},
@ -813,7 +820,7 @@ class BootAndMigrateServer(utils.NovaScenario, cinder_utils.CinderScenario):
image_param="from_image")
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="to_image")
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack",
admin=True, users=True)
@scenario.configure(context={"cleanup": ["nova"]},
@ -840,7 +847,7 @@ class BootAndRebuildServer(utils.NovaScenario, cinder_utils.CinderScenario):
flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image")
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", users=True)
@validation.required_contexts("network")
@scenario.configure(context={"cleanup": ["nova", "neutron.floatingip"]},
@ -865,7 +872,8 @@ class BootAndAssociateFloatingIp(utils.NovaScenario,
flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image")
@validation.required_services(consts.Service.NOVA, consts.Service.NEUTRON)
@validation.add("required_services", services=[consts.Service.NOVA,
consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova", "neutron"]},
name="NovaServers.boot_server_and_attach_interface")
@ -898,7 +906,7 @@ class BootServerAndAttachInterface(utils.NovaScenario,
flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image")
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova"]},
name="NovaServers.boot_and_show_server")
@ -923,7 +931,7 @@ class BootAndShowServer(utils.NovaScenario, cinder_utils.CinderScenario):
flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image")
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova"]},
name="NovaServers.boot_and_get_console_output")
@ -950,7 +958,7 @@ class BootAndGetConsoleOutput(utils.NovaScenario, cinder_utils.CinderScenario):
flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image")
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova"]},
name="NovaServers.boot_and_update_server")
@ -975,7 +983,8 @@ class BootAndUpdateServer(utils.NovaScenario, cinder_utils.CinderScenario):
flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image")
@validation.required_services(consts.Service.NOVA, consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.NOVA,
consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova", "cinder"]},
name="NovaServers.boot_server_from_volume_snapshot")
@ -1012,7 +1021,7 @@ class BootServerFromVolumeSnapshot(utils.NovaScenario,
flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image")
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", users=True)
@validation.required_contexts("network")
@scenario.configure(context={"cleanup": ["nova", "neutron.floatingip"]},
@ -1042,7 +1051,7 @@ class BootServerAssociateAndDissociateFloatingIP(utils.NovaScenario):
flavor={"type": "nova_flavor"})
@validation.add("image_valid_on_flavor", flavor_param="flavor",
image_param="image")
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", users=True)
@validation.required_contexts("network")
@scenario.configure(context={"cleanup": ["nova"]},

View File

@ -22,7 +22,7 @@ from rally.task import validation
"""Scenarios for Nova agents."""
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(name="NovaServices.list_services")
class ListServices(utils.NovaScenario):

View File

@ -21,7 +21,7 @@ from rally.task import validation
"""Scenarios for quotas."""
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack",
admin=True, users=True)
@scenario.configure(context={"admin_cleanup": ["nova.quotas"]},
@ -38,7 +38,7 @@ class NovaUpdate(utils.QuotasScenario):
max_quota)
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack",
admin=True, users=True)
@scenario.configure(context={"admin_cleanup": ["nova.quotas"]},
@ -56,7 +56,7 @@ class NovaUpdateAndDelete(utils.QuotasScenario):
self._delete_quotas("nova", self.context["tenant"]["id"])
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.add("required_platform", platform="openstack",
admin=True, users=True)
@scenario.configure(context={"admin_cleanup": ["cinder.quotas"]},
@ -73,7 +73,7 @@ class CinderUpdate(utils.QuotasScenario):
max_quota)
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.add("required_platform", platform="openstack",
admin=True, users=True)
@scenario.configure(context={"admin_cleanup": ["cinder.quotas"]},
@ -89,7 +89,7 @@ class CinderGet(utils.QuotasScenario):
self._get_quotas("cinder", self.context["tenant"]["id"])
@validation.required_services(consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.CINDER])
@validation.add("required_platform", platform="openstack",
admin=True, users=True)
@scenario.configure(context={"admin_cleanup": ["cinder.quotas"]},
@ -107,7 +107,8 @@ class CinderUpdateAndDelete(utils.QuotasScenario):
self._delete_quotas("cinder", self.context["tenant"]["id"])
@validation.required_services(consts.Service.NEUTRON)
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack",
admin=True, users=True)
@scenario.configure(context={"admin_cleanup": ["neutron.quota"]},
@ -125,7 +126,7 @@ class NeutronUpdate(utils.QuotasScenario):
max_quota, quota_update_fn)
@validation.required_services(consts.Service.NOVA)
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack",
admin=True, users=True)
@scenario.configure(context={"admin_cleanup": ["nova.quotas"]},

View File

@ -35,7 +35,7 @@ LOG = logging.getLogger(__name__)
@validation.required_contexts("users", "sahara_image")
@validation.add("number", param_name="workers_count", minval=1,
integer_only=True)
@validation.required_services(consts.Service.SAHARA)
@validation.add("required_services", services=[consts.Service.SAHARA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["sahara"]},
name="SaharaClusters.create_and_delete_cluster")
@ -123,7 +123,7 @@ class CreateAndDeleteCluster(utils.SaharaScenario):
worker_flavor={"type": "nova_flavor"})
@validation.flavor_exists("master_flavor")
@validation.flavor_exists("worker_flavor")
@validation.required_services(consts.Service.SAHARA)
@validation.add("required_services", services=[consts.Service.SAHARA])
@validation.required_contexts("users", "sahara_image")
@validation.add("number", param_name="workers_count", minval=1,
integer_only=True)

View File

@ -25,7 +25,7 @@ LOG = logging.getLogger(__name__)
"""Benchmark scenarios for Sahara jobs."""
@validation.required_services(consts.Service.SAHARA)
@validation.add("required_services", services=[consts.Service.SAHARA])
@validation.required_contexts("users", "sahara_image",
"sahara_job_binaries", "sahara_cluster")
@scenario.configure(context={"cleanup": ["sahara"]},
@ -72,7 +72,7 @@ class CreateLaunchJob(utils.SaharaScenario):
job_idx=job_idx)
@validation.required_services(consts.Service.SAHARA)
@validation.add("required_services", services=[consts.Service.SAHARA])
@validation.required_contexts("users", "sahara_image",
"sahara_job_binaries", "sahara_cluster")
@scenario.configure(context={"cleanup": ["sahara"]},
@ -95,7 +95,7 @@ class CreateLaunchJobSequence(utils.SaharaScenario):
launch_job.run(job["job_type"], job["configs"], idx)
@validation.required_services(consts.Service.SAHARA)
@validation.add("required_services", services=[consts.Service.SAHARA])
@validation.required_contexts("users", "sahara_image",
"sahara_job_binaries", "sahara_cluster")
@scenario.configure(context={"cleanup": ["sahara"]},

View File

@ -24,7 +24,7 @@ from rally.task import validation
@types.convert(flavor={"type": "nova_flavor"})
@validation.flavor_exists("flavor")
@validation.required_services(consts.Service.SAHARA)
@validation.add("required_services", services=[consts.Service.SAHARA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["sahara"]},
name="SaharaNodeGroupTemplates"
@ -69,7 +69,7 @@ class CreateAndListNodeGroupTemplates(utils.SaharaScenario):
@types.convert(flavor={"type": "nova_flavor"})
@validation.flavor_exists("flavor")
@validation.required_services(consts.Service.SAHARA)
@validation.add("required_services", services=[consts.Service.SAHARA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["sahara"]},
name="SaharaNodeGroupTemplates"

View File

@ -20,7 +20,7 @@ from rally.task import validation
@validation.add("required_platform", platform="openstack", admin=True)
@validation.required_services(consts.Service.SENLIN)
@validation.add("required_services", services=[consts.Service.SENLIN])
@validation.required_contexts("profiles")
@scenario.configure(context={"admin_cleanup": ["senlin"]},
name="SenlinClusters.create_and_delete_cluster")

View File

@ -25,7 +25,7 @@ from rally.task import validation
"""Scenarios for Swift Objects."""
@validation.required_services(consts.Service.SWIFT)
@validation.add("required_services", services=[consts.Service.SWIFT])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["swift"]},
name="SwiftObjects.create_container"
@ -56,7 +56,7 @@ class CreateContainerAndObjectThenListObjects(utils.SwiftScenario):
self._list_objects(container_name)
@validation.required_services(consts.Service.SWIFT)
@validation.add("required_services", services=[consts.Service.SWIFT])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["swift"]},
name="SwiftObjects.create_container"
@ -95,7 +95,7 @@ class CreateContainerAndObjectThenDeleteAll(utils.SwiftScenario):
self._delete_container(container_name)
@validation.required_services(consts.Service.SWIFT)
@validation.add("required_services", services=[consts.Service.SWIFT])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["swift"]},
name="SwiftObjects.create_container"
@ -133,7 +133,7 @@ class CreateContainerAndObjectThenDownloadObject(utils.SwiftScenario):
atomic_action=False)
@validation.required_services(consts.Service.SWIFT)
@validation.add("required_services", services=[consts.Service.SWIFT])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"swift_objects": {}},
name="SwiftObjects.list_objects_in_containers")
@ -153,7 +153,7 @@ class ListObjectsInContainers(utils.SwiftScenario):
self._list_objects(container["name"], atomic_action=False)
@validation.required_services(consts.Service.SWIFT)
@validation.add("required_services", services=[consts.Service.SWIFT])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"swift_objects": {}},
name="SwiftObjects.list_and_"

View File

@ -44,7 +44,8 @@ LOG = logging.getLogger(__name__)
@validation.add("external_network_exists", param_name="floating_network")
@validation.required_param_or_context(arg_name="image",
ctx_name="image_command_customizer")
@validation.required_services(consts.Service.NOVA, consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.NOVA,
consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova", "cinder"],
"keypair": {}, "allow_ssh": None},
@ -398,7 +399,8 @@ EOF
@validation.add("number", param_name="port", minval=1, maxval=65535,
nullable=True, integer_only=True)
@validation.add("external_network_exists", param_name="floating_network")
@validation.required_services(consts.Service.NOVA, consts.Service.CINDER)
@validation.add("required_services", services=[consts.Service.NOVA,
consts.Service.CINDER])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(context={"cleanup": ["nova", "cinder"],
"keypair": {}, "allow_ssh": None},

View File

@ -23,7 +23,8 @@ from rally.task import validation
@types.convert(strategy={"type": "watcher_strategy"},
goal={"type": "watcher_goal"})
@validation.required_services(consts.Service.WATCHER)
@validation.add("required_services",
services=[consts.Service.WATCHER])
@validation.add("required_platform", platform="openstack", admin=True)
@scenario.configure(context={"admin_cleanup": ["watcher"]},
name="Watcher.create_audit_template_and_delete")
@ -44,7 +45,8 @@ class CreateAuditTemplateAndDelete(utils.WatcherScenario):
self._delete_audit_template(audit_template.uuid)
@validation.required_services(consts.Service.WATCHER)
@validation.add("required_services",
services=[consts.Service.WATCHER])
@scenario.configure(name="Watcher.list_audit_templates")
class ListAuditTemplates(utils.WatcherScenario):
@ -78,7 +80,8 @@ class ListAuditTemplates(utils.WatcherScenario):
sort_dir=sort_dir, detail=detail)
@validation.required_services(consts.Service.WATCHER)
@validation.add("required_services",
services=[consts.Service.WATCHER])
@validation.required_contexts("audit_templates")
@scenario.configure(context={"admin_cleanup": ["watcher"]},
name="Watcher.create_audit_and_delete")

View File

@ -21,6 +21,7 @@ from rally.task import types
from rally.common import logging
from rally.common import validation
from rally import consts
from rally import exceptions
from rally.plugins.openstack.context.nova import flavors as flavors_ctx
from rally.plugins.openstack import types as openstack_types
@ -341,3 +342,52 @@ class RequiredClientsValidator(validation.Validator):
result = self._check_component(clients)
if result:
return self.fail(result.msg)
@validation.add("required_platform", platform="openstack", admin=True)
@validation.configure(name="required_services", namespace="openstack")
class RequiredServicesValidator(validation.Validator):
def __init__(self, services, *args):
"""Validator checks if specified OpenStack services are available.
:param services: list with names of required services
"""
super(RequiredServicesValidator, self).__init__()
if isinstance(services, (list, tuple)):
# services argument is a list, so it is a new way of validators
# usage, args in this case should not be provided
self.services = services
if args:
LOG.warning("Positional argument is not what "
"'required_services' decorator expects. "
"Use `services` argument instead")
else:
# it is old way validator
self.services = [services]
self.services.extend(args)
def validate(self, config, credentials, plugin_cls, plugin_cfg):
clients = credentials["openstack"]["admin"].clients()
available_services = list(clients.services().values())
if consts.Service.NOVA_NET in self.services:
LOG.warning("We are sorry, but Nova-network was deprecated for "
"a long time and latest novaclient doesn't support "
"it, so we too.")
for service in self.services:
# NOTE(andreykurilin): validator should ignore services configured
# via context(a proper validation should be in context)
service_config = config.get("context", {}).get(
"api_versions", {}).get(service, {})
if (service not in available_services and
not ("service_type" in service_config or
"service_name" in service_config)):
return self.fail(
("'{0}' service is not available. Hint: If '{0}' "
"service has non-default service_type, try to"
" setup it via 'api_versions'"
" context.").format(service))

View File

@ -19,6 +19,8 @@ import mock
from glanceclient import exc as glance_exc
from novaclient import exceptions as nova_exc
from rally import consts
from rally import exceptions
from rally.plugins.openstack import validators
from tests.unit import test
@ -40,7 +42,8 @@ config = dict(args={"image": {"id": "fake_id",
"name": "test"},
"foo_image": {"id": "fake_image_id"}
},
context={"images": {"image_name": "foo_image"}}
context={"images": {"image_name": "foo_image"},
"api_versions": mock.MagicMock()}
)
@ -507,3 +510,77 @@ class RequiredClientsValidatorTestCase(test.TestCase):
self.assertTrue(result)
self.assertEqual("Client for keystone is not installed. To install it "
"run `pip install python-keystoneclient`", result.msg)
class RequiredServicesValidatorTestCase(test.TestCase):
def setUp(self):
super(RequiredServicesValidatorTestCase, self).setUp()
self.validator = validators.RequiredServicesValidator([
consts.Service.KEYSTONE,
consts.Service.NOVA,
consts.Service.NOVA_NET])
self.config = config
self.credentials = credentials
def test_validator(self):
self.config["context"]["api_versions"].get = mock.Mock(
return_value={consts.Service.KEYSTONE: "service_type"})
clients = self.credentials["openstack"]["admin"].clients()
clients.services().values.return_value = [
consts.Service.KEYSTONE, consts.Service.NOVA,
consts.Service.NOVA_NET]
fake_service = mock.Mock(binary="nova-network", status="enabled")
clients.nova.services.list.return_value = [fake_service]
result = self.validator.validate(self.config, self.credentials,
None, None)
self.assertIsNone(result)
fake_service = mock.Mock(binary="keystone", status="enabled")
clients.nova.services.list.return_value = [fake_service]
result = self.validator.validate(self.config, self.credentials,
None, None)
self.assertIsNone(result)
fake_service = mock.Mock(binary="nova-network", status="disabled")
clients.nova.services.list.return_value = [fake_service]
result = self.validator.validate(self.config, self.credentials,
None, None)
self.assertIsNone(result)
validator = validators.RequiredServicesValidator([
consts.Service.NOVA])
clients.services().values.return_value = [
consts.Service.KEYSTONE]
result = validator.validate(self.config, self.credentials, None, None)
self.assertTrue(result)
expected_msg = ("'{0}' service is not available. Hint: If '{0}'"
" service has non-default service_type, try to setup"
" it via 'api_versions' context.").format(
consts.Service.NOVA)
self.assertEqual(expected_msg, result.msg)
def test_validator_wrong_service(self):
self.config["context"]["api_versions"].get = mock.Mock(
return_value={consts.Service.KEYSTONE: "service_type",
consts.Service.NOVA: "service_name"})
clients = self.credentials["openstack"]["admin"].clients()
clients.services().values.return_value = [
consts.Service.KEYSTONE, consts.Service.NOVA]
validator = validators.RequiredServicesValidator([
consts.Service.KEYSTONE,
consts.Service.NOVA, "lol"])
result = validator.validate({}, self.credentials, None, None)
self.assertTrue(result)
expected_msg = ("'{0}' service is not available. Hint: If '{0}'"
" service has non-default service_type, try to setup"
" it via 'api_versions' context.").format("lol")
self.assertEqual(expected_msg, result.msg)