9639e72692
At Austin 2016 summit there were several improvements to Share migration feature discussed. This patch implements these changes. Changes are: - Added 'Writable' API parameter: user chooses whether share must remain writable during migration. - Added 'Preserve Metadata' API parameter: user chooses whether share must preserve all file metadata on migration. - Added 'Non-disruptive' API parameter: user chooses whether migration of share must be performed non-disruptively. - Removed existing 'Notify', thus removing 1-phase migration possibility. - Renamed existing 'Force Host Copy' parameter to 'Force Host-assisted Migration'. - Renamed all 'migration_info' and 'migration_get_info' entries to 'connection_info' and 'connection_get_info'. - Updated driver interfaces with the new API parameters, drivers must respect them. - Changed share/api => scheduler RPCAPI back to asynchronous. - Added optional SHA-256 validation to perform additional check if bytes were corrupted during copying. - Added mount options configuration to Data Service so CIFS shares can be mounted. - Driver may override _get_access_mapping if supports a different access_type/protocol combination than what is defined by default. - Added CIFS share protocol support and 'user' access type support to Data Service. - Reset Task State API now allows task_state to be unset using 'None' value. - Added possibility to change share-network when migrating a share. - Bumped microversion to 2.22. - Removed support of all previous versions of Share Migration APIs. APIImpact DocImpact Implements: blueprint newton-migration-improvements Change-Id: Ief49a46c86ed3c22d3b31021aff86a9ce0ecbe3b
221 lines
10 KiB
Python
221 lines
10 KiB
Python
# Copyright 2014 Mirantis Inc.
|
|
# All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
from __future__ import print_function
|
|
|
|
from oslo_config import cfg
|
|
|
|
service_available_group = cfg.OptGroup(name="service_available",
|
|
title="Available OpenStack Services")
|
|
|
|
ServiceAvailableGroup = [
|
|
cfg.BoolOpt("manila",
|
|
default=True,
|
|
help="Whether or not manila is expected to be available"),
|
|
]
|
|
|
|
share_group = cfg.OptGroup(name="share", title="Share Service Options")
|
|
|
|
ShareGroup = [
|
|
cfg.StrOpt("min_api_microversion",
|
|
default="2.0",
|
|
help="The minimum api microversion is configured to be the "
|
|
"value of the minimum microversion supported by Manila."),
|
|
cfg.StrOpt("max_api_microversion",
|
|
default="2.22",
|
|
help="The maximum api microversion is configured to be the "
|
|
"value of the latest microversion supported by Manila."),
|
|
cfg.StrOpt("region",
|
|
default="",
|
|
help="The share region name to use. If empty, the value "
|
|
"of identity.region is used instead. If no such region "
|
|
"is found in the service catalog, the first found one is "
|
|
"used."),
|
|
cfg.StrOpt("catalog_type",
|
|
default="share",
|
|
help="Catalog type of the Share service."),
|
|
cfg.StrOpt('endpoint_type',
|
|
default='publicURL',
|
|
choices=['public', 'admin', 'internal',
|
|
'publicURL', 'adminURL', 'internalURL'],
|
|
help="The endpoint type to use for the share service."),
|
|
cfg.BoolOpt("multitenancy_enabled",
|
|
default=True,
|
|
help="This option used to determine backend driver type, "
|
|
"multitenant driver uses share-networks, but "
|
|
"single-tenant doesn't."),
|
|
cfg.BoolOpt("create_networks_when_multitenancy_enabled",
|
|
default=True,
|
|
help="This option is used only when other "
|
|
"'multitenancy_enabled' option is set to 'True'. "
|
|
"If this one is set to True, then tempest will create "
|
|
"neutron networks for each new manila share-network "
|
|
"it creates. Else it will use manila share-networks with "
|
|
"empty values (case of StandAloneNetworkPlugin and "
|
|
"NeutronSingleNetworkPlugin)."),
|
|
cfg.ListOpt("enable_protocols",
|
|
default=["nfs", "cifs"],
|
|
help="First value of list is protocol by default, "
|
|
"items of list show enabled protocols at all."),
|
|
cfg.ListOpt("enable_ip_rules_for_protocols",
|
|
default=["nfs", "cifs", ],
|
|
help="Selection of protocols, that should "
|
|
"be covered with ip rule tests"),
|
|
cfg.ListOpt("enable_user_rules_for_protocols",
|
|
default=[],
|
|
help="Selection of protocols, that should "
|
|
"be covered with user rule tests"),
|
|
cfg.ListOpt("enable_cert_rules_for_protocols",
|
|
default=["glusterfs", ],
|
|
help="Protocols that should be covered with cert rule tests."),
|
|
cfg.ListOpt("enable_cephx_rules_for_protocols",
|
|
default=["cephfs", ],
|
|
help="Protocols to be covered with cephx rule tests."),
|
|
cfg.StrOpt("username_for_user_rules",
|
|
default="Administrator",
|
|
help="Username, that will be used in user tests."),
|
|
cfg.ListOpt("enable_ro_access_level_for_protocols",
|
|
default=["nfs", ],
|
|
help="List of protocols to run tests with ro access level."),
|
|
|
|
# Capabilities
|
|
cfg.StrOpt("capability_storage_protocol",
|
|
deprecated_name="storage_protocol",
|
|
default="NFS_CIFS",
|
|
help="Backend protocol to target when creating volume types."),
|
|
cfg.BoolOpt("capability_snapshot_support",
|
|
help="Defines extra spec that satisfies specific back end "
|
|
"capability called 'snapshot_support' and will be used "
|
|
"for setting up custom share type. Defaults to value of "
|
|
"other config option 'run_snapshot_tests'."),
|
|
|
|
cfg.StrOpt("share_network_id",
|
|
default="",
|
|
help="Some backend drivers requires share network "
|
|
"for share creation. Share network id, that will be "
|
|
"used for shares. If not set, it won't be used."),
|
|
cfg.StrOpt("alt_share_network_id",
|
|
default="",
|
|
help="Share network id, that will be used for shares"
|
|
" in alt tenant. If not set, it won't be used"),
|
|
cfg.StrOpt("admin_share_network_id",
|
|
default="",
|
|
help="Share network id, that will be used for shares"
|
|
" in admin tenant. If not set, it won't be used"),
|
|
cfg.BoolOpt("multi_backend",
|
|
default=False,
|
|
help="Runs Manila multi-backend tests."),
|
|
cfg.ListOpt("backend_names",
|
|
default=[],
|
|
help="Names of share backends, that will be used with "
|
|
"multibackend tests. Tempest will use first two values."),
|
|
cfg.IntOpt("share_creation_retry_number",
|
|
default=0,
|
|
help="Defines number of retries for share creation. "
|
|
"It is useful to avoid failures caused by unstable "
|
|
"environment."),
|
|
cfg.IntOpt("build_interval",
|
|
default=3,
|
|
help="Time in seconds between share availability checks."),
|
|
cfg.IntOpt("build_timeout",
|
|
default=500,
|
|
help="Timeout in seconds to wait for a share to become"
|
|
"available."),
|
|
cfg.BoolOpt("suppress_errors_in_cleanup",
|
|
default=False,
|
|
help="Whether to suppress errors with clean up operation "
|
|
"or not. There are cases when we may want to skip "
|
|
"such errors and catch only test errors."),
|
|
|
|
# Switching ON/OFF test suites filtered by features
|
|
cfg.BoolOpt("run_quota_tests",
|
|
default=True,
|
|
help="Defines whether to run quota tests or not."),
|
|
cfg.BoolOpt("run_extend_tests",
|
|
default=True,
|
|
help="Defines whether to run share extend tests or not. "
|
|
"Disable this feature if used driver doesn't "
|
|
"support it."),
|
|
cfg.BoolOpt("run_shrink_tests",
|
|
default=True,
|
|
help="Defines whether to run share shrink tests or not. "
|
|
"Disable this feature if used driver doesn't "
|
|
"support it."),
|
|
cfg.BoolOpt("run_snapshot_tests",
|
|
default=True,
|
|
help="Defines whether to run tests that use share snapshots "
|
|
"or not. Disable this feature if used driver doesn't "
|
|
"support it."),
|
|
cfg.BoolOpt("run_consistency_group_tests",
|
|
default=True,
|
|
help="Defines whether to run consistency group tests or not. "
|
|
"Disable this feature if used driver doesn't support "
|
|
"it."),
|
|
cfg.BoolOpt("run_replication_tests",
|
|
default=False,
|
|
help="Defines whether to run replication tests or not. "
|
|
"Enable this feature if the driver is configured "
|
|
"for replication."),
|
|
cfg.BoolOpt("run_multiple_share_replicas_tests",
|
|
default=True,
|
|
help="Defines whether to run multiple replicas creation test "
|
|
"or not. Enable this if the driver can create more than "
|
|
"one replica for a share."),
|
|
cfg.BoolOpt("run_host_assisted_migration_tests",
|
|
deprecated_name="run_migration_tests",
|
|
default=False,
|
|
help="Enable or disable host-assisted migration tests."),
|
|
cfg.BoolOpt("run_driver_assisted_migration_tests",
|
|
deprecated_name="run_migration_tests",
|
|
default=False,
|
|
help="Enable or disable driver-assisted migration tests."),
|
|
cfg.BoolOpt("run_manage_unmanage_tests",
|
|
default=False,
|
|
help="Defines whether to run manage/unmanage tests or not. "
|
|
"These test may leave orphaned resources, so be careful "
|
|
"enabling this opt."),
|
|
cfg.BoolOpt("run_manage_unmanage_snapshot_tests",
|
|
default=False,
|
|
help="Defines whether to run manage/unmanage snapshot tests "
|
|
"or not. These tests may leave orphaned resources, so be "
|
|
"careful enabling this opt."),
|
|
|
|
cfg.StrOpt("image_with_share_tools",
|
|
default="manila-service-image",
|
|
help="Image name for vm booting with nfs/smb clients tool."),
|
|
cfg.StrOpt("image_username",
|
|
default="manila",
|
|
help="Image username."),
|
|
cfg.StrOpt("image_password",
|
|
help="Image password. Should be used for "
|
|
"'image_with_share_tools' without Nova Metadata support."),
|
|
cfg.StrOpt("client_vm_flavor_ref",
|
|
default="100",
|
|
help="Flavor used for client vm in scenario tests."),
|
|
cfg.IntOpt("migration_timeout",
|
|
default=1500,
|
|
help="Time to wait for share migration before "
|
|
"timing out (seconds)."),
|
|
cfg.StrOpt("default_share_type_name",
|
|
help="Default share type name to use in tempest tests."),
|
|
cfg.StrOpt("backend_replication_type",
|
|
default='none',
|
|
choices=['none', 'writable', 'readable', 'dr'],
|
|
help="Specify the replication type supported by the backend."),
|
|
cfg.IntOpt("share_size",
|
|
default=1,
|
|
help="Default size in GB for shares created by share tests."),
|
|
]
|