summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/common/client_config.py28
-rw-r--r--openstackclient/common/clientmanager.py20
-rw-r--r--openstackclient/identity/v2_0/token.py4
-rw-r--r--openstackclient/identity/v3/token.py4
-rw-r--r--openstackclient/network/v2/subnet.py50
-rw-r--r--openstackclient/shell.py36
-rw-r--r--openstackclient/tests/unit/__init__.py (renamed from openstackclient/tests/api/__init__.py)0
-rw-r--r--openstackclient/tests/unit/api/__init__.py (renamed from openstackclient/tests/common/__init__.py)0
-rw-r--r--openstackclient/tests/unit/api/fakes.py (renamed from openstackclient/tests/api/fakes.py)2
-rw-r--r--openstackclient/tests/unit/api/test_api.py (renamed from openstackclient/tests/api/test_api.py)2
-rw-r--r--openstackclient/tests/unit/api/test_image_v1.py (renamed from openstackclient/tests/api/test_image_v1.py)2
-rw-r--r--openstackclient/tests/unit/api/test_image_v2.py (renamed from openstackclient/tests/api/test_image_v2.py)2
-rw-r--r--openstackclient/tests/unit/api/test_object_store_v1.py (renamed from openstackclient/tests/api/test_object_store_v1.py)2
-rw-r--r--openstackclient/tests/unit/api/test_utils.py (renamed from openstackclient/tests/api/test_utils.py)2
-rw-r--r--openstackclient/tests/unit/common/__init__.py (renamed from openstackclient/tests/compute/__init__.py)0
-rw-r--r--openstackclient/tests/unit/common/test_availability_zone.py (renamed from openstackclient/tests/common/test_availability_zone.py)10
-rw-r--r--openstackclient/tests/unit/common/test_clientmanager.py (renamed from openstackclient/tests/common/test_clientmanager.py)2
-rw-r--r--openstackclient/tests/unit/common/test_command.py (renamed from openstackclient/tests/common/test_command.py)6
-rw-r--r--openstackclient/tests/unit/common/test_commandmanager.py (renamed from openstackclient/tests/common/test_commandmanager.py)2
-rw-r--r--openstackclient/tests/unit/common/test_configuration.py (renamed from openstackclient/tests/common/test_configuration.py)4
-rw-r--r--openstackclient/tests/unit/common/test_extension.py (renamed from openstackclient/tests/common/test_extension.py)12
-rw-r--r--openstackclient/tests/unit/common/test_logs.py (renamed from openstackclient/tests/common/test_logs.py)2
-rw-r--r--openstackclient/tests/unit/common/test_module.py (renamed from openstackclient/tests/common/test_module.py)4
-rw-r--r--openstackclient/tests/unit/common/test_parseractions.py (renamed from openstackclient/tests/common/test_parseractions.py)2
-rw-r--r--openstackclient/tests/unit/common/test_quota.py (renamed from openstackclient/tests/common/test_quota.py)8
-rw-r--r--openstackclient/tests/unit/compute/__init__.py (renamed from openstackclient/tests/compute/v2/__init__.py)0
-rw-r--r--openstackclient/tests/unit/compute/v2/__init__.py (renamed from openstackclient/tests/identity/__init__.py)0
-rw-r--r--openstackclient/tests/unit/compute/v2/fakes.py (renamed from openstackclient/tests/compute/v2/fakes.py)12
-rw-r--r--openstackclient/tests/unit/compute/v2/test_agent.py (renamed from openstackclient/tests/compute/v2/test_agent.py)4
-rw-r--r--openstackclient/tests/unit/compute/v2/test_aggregate.py (renamed from openstackclient/tests/compute/v2/test_aggregate.py)4
-rw-r--r--openstackclient/tests/unit/compute/v2/test_console.py (renamed from openstackclient/tests/compute/v2/test_console.py)2
-rw-r--r--openstackclient/tests/unit/compute/v2/test_flavor.py (renamed from openstackclient/tests/compute/v2/test_flavor.py)6
-rw-r--r--openstackclient/tests/unit/compute/v2/test_host.py (renamed from openstackclient/tests/compute/v2/test_host.py)4
-rw-r--r--openstackclient/tests/unit/compute/v2/test_hypervisor.py (renamed from openstackclient/tests/compute/v2/test_hypervisor.py)4
-rw-r--r--openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py (renamed from openstackclient/tests/compute/v2/test_hypervisor_stats.py)2
-rw-r--r--openstackclient/tests/unit/compute/v2/test_keypair.py (renamed from openstackclient/tests/compute/v2/test_keypair.py)4
-rw-r--r--openstackclient/tests/unit/compute/v2/test_server.py (renamed from openstackclient/tests/compute/v2/test_server.py)8
-rw-r--r--openstackclient/tests/unit/compute/v2/test_server_backup.py (renamed from openstackclient/tests/compute/v2/test_server_backup.py)4
-rw-r--r--openstackclient/tests/unit/compute/v2/test_server_group.py (renamed from openstackclient/tests/compute/v2/test_server_group.py)4
-rw-r--r--openstackclient/tests/unit/compute/v2/test_server_image.py (renamed from openstackclient/tests/compute/v2/test_server_image.py)4
-rw-r--r--openstackclient/tests/unit/compute/v2/test_service.py (renamed from openstackclient/tests/compute/v2/test_service.py)2
-rw-r--r--openstackclient/tests/unit/fakes.py (renamed from openstackclient/tests/fakes.py)0
-rw-r--r--openstackclient/tests/unit/identity/__init__.py (renamed from openstackclient/tests/identity/v2_0/__init__.py)0
-rw-r--r--openstackclient/tests/unit/identity/v2_0/__init__.py (renamed from openstackclient/tests/identity/v3/__init__.py)0
-rw-r--r--openstackclient/tests/unit/identity/v2_0/fakes.py (renamed from openstackclient/tests/identity/v2_0/fakes.py)6
-rw-r--r--openstackclient/tests/unit/identity/v2_0/test_catalog.py (renamed from openstackclient/tests/identity/v2_0/test_catalog.py)4
-rw-r--r--openstackclient/tests/unit/identity/v2_0/test_endpoint.py (renamed from openstackclient/tests/identity/v2_0/test_endpoint.py)2
-rw-r--r--openstackclient/tests/unit/identity/v2_0/test_project.py (renamed from openstackclient/tests/identity/v2_0/test_project.py)2
-rw-r--r--openstackclient/tests/unit/identity/v2_0/test_role.py (renamed from openstackclient/tests/identity/v2_0/test_role.py)2
-rw-r--r--openstackclient/tests/unit/identity/v2_0/test_role_assignment.py (renamed from openstackclient/tests/identity/v2_0/test_role_assignment.py)4
-rw-r--r--openstackclient/tests/unit/identity/v2_0/test_service.py (renamed from openstackclient/tests/identity/v2_0/test_service.py)2
-rw-r--r--openstackclient/tests/unit/identity/v2_0/test_token.py (renamed from openstackclient/tests/identity/v2_0/test_token.py)6
-rw-r--r--openstackclient/tests/unit/identity/v2_0/test_user.py (renamed from openstackclient/tests/identity/v2_0/test_user.py)2
-rw-r--r--openstackclient/tests/unit/identity/v3/__init__.py (renamed from openstackclient/tests/image/__init__.py)0
-rw-r--r--openstackclient/tests/unit/identity/v3/fakes.py (renamed from openstackclient/tests/identity/v3/fakes.py)6
-rw-r--r--openstackclient/tests/unit/identity/v3/test_catalog.py (renamed from openstackclient/tests/identity/v3/test_catalog.py)4
-rw-r--r--openstackclient/tests/unit/identity/v3/test_consumer.py (renamed from openstackclient/tests/identity/v3/test_consumer.py)4
-rw-r--r--openstackclient/tests/unit/identity/v3/test_credential.py (renamed from openstackclient/tests/identity/v3/test_credential.py)4
-rw-r--r--openstackclient/tests/unit/identity/v3/test_domain.py (renamed from openstackclient/tests/identity/v3/test_domain.py)2
-rw-r--r--openstackclient/tests/unit/identity/v3/test_endpoint.py (renamed from openstackclient/tests/identity/v3/test_endpoint.py)2
-rw-r--r--openstackclient/tests/unit/identity/v3/test_group.py (renamed from openstackclient/tests/identity/v3/test_group.py)2
-rw-r--r--openstackclient/tests/unit/identity/v3/test_identity_provider.py (renamed from openstackclient/tests/identity/v3/test_identity_provider.py)4
-rw-r--r--openstackclient/tests/unit/identity/v3/test_mappings.py (renamed from openstackclient/tests/identity/v3/test_mappings.py)4
-rw-r--r--openstackclient/tests/unit/identity/v3/test_oauth.py (renamed from openstackclient/tests/identity/v3/test_oauth.py)4
-rw-r--r--openstackclient/tests/unit/identity/v3/test_project.py (renamed from openstackclient/tests/identity/v3/test_project.py)2
-rw-r--r--openstackclient/tests/unit/identity/v3/test_protocol.py (renamed from openstackclient/tests/identity/v3/test_protocol.py)4
-rw-r--r--openstackclient/tests/unit/identity/v3/test_region.py (renamed from openstackclient/tests/identity/v3/test_region.py)4
-rw-r--r--openstackclient/tests/unit/identity/v3/test_role.py (renamed from openstackclient/tests/identity/v3/test_role.py)4
-rw-r--r--openstackclient/tests/unit/identity/v3/test_role_assignment.py (renamed from openstackclient/tests/identity/v3/test_role_assignment.py)4
-rw-r--r--openstackclient/tests/unit/identity/v3/test_service.py (renamed from openstackclient/tests/identity/v3/test_service.py)2
-rw-r--r--openstackclient/tests/unit/identity/v3/test_service_provider.py (renamed from openstackclient/tests/identity/v3/test_service_provider.py)4
-rw-r--r--openstackclient/tests/unit/identity/v3/test_token.py (renamed from openstackclient/tests/identity/v3/test_token.py)8
-rw-r--r--openstackclient/tests/unit/identity/v3/test_trust.py (renamed from openstackclient/tests/identity/v3/test_trust.py)4
-rw-r--r--openstackclient/tests/unit/identity/v3/test_unscoped_saml.py (renamed from openstackclient/tests/identity/v3/test_unscoped_saml.py)4
-rw-r--r--openstackclient/tests/unit/identity/v3/test_user.py (renamed from openstackclient/tests/identity/v3/test_user.py)2
-rw-r--r--openstackclient/tests/unit/image/__init__.py (renamed from openstackclient/tests/image/v1/__init__.py)0
-rw-r--r--openstackclient/tests/unit/image/v1/__init__.py (renamed from openstackclient/tests/image/v2/__init__.py)0
-rw-r--r--openstackclient/tests/unit/image/v1/fakes.py (renamed from openstackclient/tests/image/v1/fakes.py)6
-rw-r--r--openstackclient/tests/unit/image/v1/test_image.py (renamed from openstackclient/tests/image/v1/test_image.py)4
-rw-r--r--openstackclient/tests/unit/image/v2/__init__.py (renamed from openstackclient/tests/integ/__init__.py)0
-rw-r--r--openstackclient/tests/unit/image/v2/fakes.py (renamed from openstackclient/tests/image/v2/fakes.py)6
-rw-r--r--openstackclient/tests/unit/image/v2/test_image.py (renamed from openstackclient/tests/image/v2/test_image.py)4
-rw-r--r--openstackclient/tests/unit/integ/__init__.py (renamed from openstackclient/tests/integ/cli/__init__.py)0
-rw-r--r--openstackclient/tests/unit/integ/base.py (renamed from openstackclient/tests/integ/base.py)4
-rw-r--r--openstackclient/tests/unit/integ/cli/__init__.py (renamed from openstackclient/tests/network/__init__.py)0
-rw-r--r--openstackclient/tests/unit/integ/cli/test_project.py (renamed from openstackclient/tests/integ/cli/test_project.py)4
-rw-r--r--openstackclient/tests/unit/integ/cli/test_shell.py (renamed from openstackclient/tests/integ/cli/test_shell.py)4
-rw-r--r--openstackclient/tests/unit/network/__init__.py (renamed from openstackclient/tests/network/v2/__init__.py)0
-rw-r--r--openstackclient/tests/unit/network/test_common.py (renamed from openstackclient/tests/network/test_common.py)2
-rw-r--r--openstackclient/tests/unit/network/v2/__init__.py (renamed from openstackclient/tests/object/__init__.py)0
-rw-r--r--openstackclient/tests/unit/network/v2/fakes.py (renamed from openstackclient/tests/network/v2/fakes.py)7
-rw-r--r--openstackclient/tests/unit/network/v2/test_address_scope.py (renamed from openstackclient/tests/network/v2/test_address_scope.py)6
-rw-r--r--openstackclient/tests/unit/network/v2/test_floating_ip.py (renamed from openstackclient/tests/network/v2/test_floating_ip.py)6
-rw-r--r--openstackclient/tests/unit/network/v2/test_floating_ip_pool.py (renamed from openstackclient/tests/network/v2/test_floating_ip_pool.py)4
-rw-r--r--openstackclient/tests/unit/network/v2/test_ip_availability.py (renamed from openstackclient/tests/network/v2/test_ip_availability.py)6
-rw-r--r--openstackclient/tests/unit/network/v2/test_network.py (renamed from openstackclient/tests/network/v2/test_network.py)12
-rw-r--r--openstackclient/tests/unit/network/v2/test_network_agent.py (renamed from openstackclient/tests/network/v2/test_network_agent.py)4
-rw-r--r--openstackclient/tests/unit/network/v2/test_network_rbac.py (renamed from openstackclient/tests/network/v2/test_network_rbac.py)6
-rw-r--r--openstackclient/tests/unit/network/v2/test_network_segment.py (renamed from openstackclient/tests/network/v2/test_network_segment.py)4
-rw-r--r--openstackclient/tests/unit/network/v2/test_port.py (renamed from openstackclient/tests/network/v2/test_port.py)4
-rw-r--r--openstackclient/tests/unit/network/v2/test_router.py (renamed from openstackclient/tests/network/v2/test_router.py)4
-rw-r--r--openstackclient/tests/unit/network/v2/test_security_group.py (renamed from openstackclient/tests/network/v2/test_security_group.py)8
-rw-r--r--openstackclient/tests/unit/network/v2/test_security_group_rule.py (renamed from openstackclient/tests/network/v2/test_security_group_rule.py)10
-rw-r--r--openstackclient/tests/unit/network/v2/test_subnet.py (renamed from openstackclient/tests/network/v2/test_subnet.py)100
-rw-r--r--openstackclient/tests/unit/network/v2/test_subnet_pool.py (renamed from openstackclient/tests/network/v2/test_subnet_pool.py)6
-rw-r--r--openstackclient/tests/unit/object/__init__.py (renamed from openstackclient/tests/object/v1/__init__.py)0
-rw-r--r--openstackclient/tests/unit/object/v1/__init__.py (renamed from openstackclient/tests/volume/__init__.py)0
-rw-r--r--openstackclient/tests/unit/object/v1/fakes.py (renamed from openstackclient/tests/object/v1/fakes.py)2
-rw-r--r--openstackclient/tests/unit/object/v1/test_container.py (renamed from openstackclient/tests/object/v1/test_container.py)2
-rw-r--r--openstackclient/tests/unit/object/v1/test_container_all.py (renamed from openstackclient/tests/object/v1/test_container_all.py)2
-rw-r--r--openstackclient/tests/unit/object/v1/test_object.py (renamed from openstackclient/tests/object/v1/test_object.py)2
-rw-r--r--openstackclient/tests/unit/object/v1/test_object_all.py (renamed from openstackclient/tests/object/v1/test_object_all.py)2
-rw-r--r--openstackclient/tests/unit/test_shell.py (renamed from openstackclient/tests/test_shell.py)0
-rw-r--r--openstackclient/tests/unit/utils.py (renamed from openstackclient/tests/utils.py)2
-rw-r--r--openstackclient/tests/unit/volume/__init__.py (renamed from openstackclient/tests/volume/v1/__init__.py)0
-rw-r--r--openstackclient/tests/unit/volume/test_find_resource.py (renamed from openstackclient/tests/volume/test_find_resource.py)2
-rw-r--r--openstackclient/tests/unit/volume/v1/__init__.py (renamed from openstackclient/tests/volume/v2/__init__.py)0
-rw-r--r--openstackclient/tests/unit/volume/v1/fakes.py (renamed from openstackclient/tests/volume/v1/fakes.py)6
-rw-r--r--openstackclient/tests/unit/volume/v1/test_qos_specs.py (renamed from openstackclient/tests/volume/v1/test_qos_specs.py)4
-rw-r--r--openstackclient/tests/unit/volume/v1/test_service.py286
-rw-r--r--openstackclient/tests/unit/volume/v1/test_transfer_request.py (renamed from openstackclient/tests/volume/v1/test_transfer_request.py)2
-rw-r--r--openstackclient/tests/unit/volume/v1/test_volume.py (renamed from openstackclient/tests/volume/v1/test_volume.py)6
-rw-r--r--openstackclient/tests/unit/volume/v2/__init__.py0
-rw-r--r--openstackclient/tests/unit/volume/v2/fakes.py (renamed from openstackclient/tests/volume/v2/fakes.py)8
-rw-r--r--openstackclient/tests/unit/volume/v2/test_backup.py (renamed from openstackclient/tests/volume/v2/test_backup.py)2
-rw-r--r--openstackclient/tests/unit/volume/v2/test_qos_specs.py (renamed from openstackclient/tests/volume/v2/test_qos_specs.py)2
-rw-r--r--openstackclient/tests/unit/volume/v2/test_service.py (renamed from openstackclient/tests/volume/v2/test_service.py)2
-rw-r--r--openstackclient/tests/unit/volume/v2/test_snapshot.py (renamed from openstackclient/tests/volume/v2/test_snapshot.py)2
-rw-r--r--openstackclient/tests/unit/volume/v2/test_transfer_request.py (renamed from openstackclient/tests/volume/v2/test_transfer_request.py)2
-rw-r--r--openstackclient/tests/unit/volume/v2/test_type.py (renamed from openstackclient/tests/volume/v2/test_type.py)6
-rw-r--r--openstackclient/tests/unit/volume/v2/test_volume.py (renamed from openstackclient/tests/volume/v2/test_volume.py)6
131 files changed, 726 insertions, 221 deletions
diff --git a/openstackclient/common/client_config.py b/openstackclient/common/client_config.py
index 895909e9..30286df8 100644
--- a/openstackclient/common/client_config.py
+++ b/openstackclient/common/client_config.py
@@ -16,6 +16,7 @@
import logging
from os_client_config import config
+from os_client_config import exceptions as occ_exceptions
LOG = logging.getLogger(__name__)
@@ -182,6 +183,14 @@ class OSC_Config(config.OpenStackConfig):
LOG.debug("auth_config_hook(): %s" % config)
return config
+ def load_auth_plugin(self, config):
+ """Get auth plugin and validate args"""
+
+ loader = self._get_auth_loader(config)
+ config = self._validate_auth(config, loader)
+ auth_plugin = loader.load_from_options(**config['auth'])
+ return auth_plugin
+
def _validate_auth_ksc(self, config, cloud, fixed_argparse=None):
"""Old compatibility hack for OSC, no longer needed/wanted"""
return config
@@ -192,6 +201,8 @@ class OSC_Config(config.OpenStackConfig):
plugin_options = loader.get_options()
+ msgs = []
+ prompt_options = []
for p_opt in plugin_options:
# if it's in config, win, move it and kill it from config dict
# if it's in config.auth but not in config we're good
@@ -202,6 +213,16 @@ class OSC_Config(config.OpenStackConfig):
winning_value = self._find_winning_auth_value(
p_opt, config['auth'])
+ # if the plugin tells us that this value is required
+ # then error if it's doesn't exist now
+ if not winning_value and p_opt.required:
+ msgs.append(
+ 'Missing value {auth_key}'
+ ' required for auth plugin {plugin}'.format(
+ auth_key=p_opt.name, plugin=config.get('auth_type'),
+ )
+ )
+
# Clean up after ourselves
for opt in [p_opt.name] + [o.name for o in p_opt.deprecated]:
opt = opt.replace('-', '_')
@@ -224,6 +245,13 @@ class OSC_Config(config.OpenStackConfig):
p_opt.dest not in config['auth'] and
self._pw_callback is not None
):
+ # Defer these until we know all required opts are present
+ prompt_options.append(p_opt)
+
+ if msgs:
+ raise occ_exceptions.OpenStackConfigException('\n'.join(msgs))
+ else:
+ for p_opt in prompt_options:
config['auth'][p_opt.dest] = self._pw_callback(p_opt.prompt)
return config
diff --git a/openstackclient/common/clientmanager.py b/openstackclient/common/clientmanager.py
index 57423aed..23c35a3b 100644
--- a/openstackclient/common/clientmanager.py
+++ b/openstackclient/common/clientmanager.py
@@ -60,6 +60,26 @@ class ClientManager(clientmanager.ClientManager):
self._cacert = self.cacert
self._insecure = not self.verify
+ def setup_auth(self):
+ """Set up authentication"""
+
+ if self._auth_setup_completed:
+ return
+
+ # NOTE(dtroyer): Validate the auth args; this is protected with 'if'
+ # because openstack_config is an optional argument to
+ # CloudConfig.__init__() and we'll die if it was not
+ # passed.
+ if self._cli_options._openstack_config is not None:
+ self._cli_options._openstack_config._pw_callback = \
+ shell.prompt_for_password
+ self._cli_options._auth = \
+ self._cli_options._openstack_config.load_auth_plugin(
+ self._cli_options.config,
+ )
+
+ return super(ClientManager, self).setup_auth()
+
def is_network_endpoint_enabled(self):
"""Check if the network endpoint is enabled"""
diff --git a/openstackclient/identity/v2_0/token.py b/openstackclient/identity/v2_0/token.py
index 56f920f3..4b7e988b 100644
--- a/openstackclient/identity/v2_0/token.py
+++ b/openstackclient/identity/v2_0/token.py
@@ -42,7 +42,9 @@ class IssueToken(command.ShowOne):
if auth_ref.auth_token:
data['id'] = auth_ref.auth_token
if auth_ref.expires:
- data['expires'] = auth_ref.expires
+ datetime_obj = auth_ref.expires
+ expires_str = datetime_obj.strftime('%Y-%m-%dT%H:%M:%S%z')
+ data['expires'] = expires_str
if auth_ref.project_id:
data['project_id'] = auth_ref.project_id
if auth_ref.user_id:
diff --git a/openstackclient/identity/v3/token.py b/openstackclient/identity/v3/token.py
index ecf09693..2cd304e6 100644
--- a/openstackclient/identity/v3/token.py
+++ b/openstackclient/identity/v3/token.py
@@ -183,7 +183,9 @@ class IssueToken(command.ShowOne):
if auth_ref.auth_token:
data['id'] = auth_ref.auth_token
if auth_ref.expires:
- data['expires'] = auth_ref.expires
+ datetime_obj = auth_ref.expires
+ expires_str = datetime_obj.strftime('%Y-%m-%dT%H:%M:%S%z')
+ data['expires'] = expires_str
if auth_ref.project_id:
data['project_id'] = auth_ref.project_id
if auth_ref.user_id:
diff --git a/openstackclient/network/v2/subnet.py b/openstackclient/network/v2/subnet.py
index 22452809..6feb8aa0 100644
--- a/openstackclient/network/v2/subnet.py
+++ b/openstackclient/network/v2/subnet.py
@@ -48,6 +48,7 @@ _formatters = {
'allocation_pools': _format_allocation_pools,
'dns_nameservers': utils.format_list,
'host_routes': _format_host_routes,
+ 'service_types': utils.format_list,
}
@@ -82,6 +83,16 @@ def _get_common_parse_arguments(parser):
"gateway: nexthop IP address "
"(repeat option to add multiple routes)")
)
+ parser.add_argument(
+ '--service-type',
+ metavar='<service-type>',
+ action='append',
+ dest='service_types',
+ help=_("Service type for this subnet "
+ "e.g.: network:floatingip_agent_gateway. "
+ "Must be a valid device owner value for a network port "
+ "(repeat option to set multiple service types)")
+ )
def _get_columns(item):
@@ -177,6 +188,9 @@ def _get_attrs(client_manager, parsed_args, is_create=True):
# Change 'gateway' entry to 'nexthop' to match the API
attrs['host_routes'] = convert_entries_to_nexthop(
parsed_args.host_routes)
+ if ('service_types' in parsed_args and
+ parsed_args.service_types is not None):
+ attrs['service_types'] = parsed_args.service_types
return attrs
@@ -352,6 +366,16 @@ class ListSubnet(command.Lister):
action='store_true',
help=_("List subnets which have DHCP disabled")
)
+ parser.add_argument(
+ '--service-type',
+ metavar='<service-type>',
+ action='append',
+ dest='service_types',
+ help=_("List only subnets of a given service type in output "
+ "e.g.: network:floatingip_agent_gateway. "
+ "Must be a valid device owner value for a network port "
+ "(repeat option to list multiple service types)")
+ )
return parser
def take_action(self, parsed_args):
@@ -362,6 +386,8 @@ class ListSubnet(command.Lister):
filters['enable_dhcp'] = True
elif parsed_args.no_dhcp:
filters['enable_dhcp'] = False
+ if parsed_args.service_types:
+ filters['service_types'] = parsed_args.service_types
data = self.app.client_manager.network.subnets(**filters)
headers = ('ID', 'Name', 'Network', 'Subnet')
@@ -369,10 +395,10 @@ class ListSubnet(command.Lister):
if parsed_args.long:
headers += ('Project', 'DHCP', 'Name Servers',
'Allocation Pools', 'Host Routes', 'IP Version',
- 'Gateway')
+ 'Gateway', 'Service Types')
columns += ('tenant_id', 'enable_dhcp', 'dns_nameservers',
'allocation_pools', 'host_routes', 'ip_version',
- 'gateway_ip')
+ 'gateway_ip', 'service_types')
return (headers,
(utils.get_item_properties(
@@ -430,6 +456,8 @@ class SetSubnet(command.Command):
attrs['host_routes'] += obj.host_routes
if 'allocation_pools' in attrs:
attrs['allocation_pools'] += obj.allocation_pools
+ if 'service_types' in attrs:
+ attrs['service_types'] += obj.service_types
client.update_subnet(obj, **attrs)
return
@@ -490,6 +518,16 @@ class UnsetSubnet(command.Command):
'(repeat option to unset multiple host routes)')
)
parser.add_argument(
+ '--service-type',
+ metavar='<service-type>',
+ action='append',
+ dest='service_types',
+ help=_('Service type to be removed from this subnet '
+ 'e.g.: network:floatingip_agent_gateway. '
+ 'Must be a valid device owner value for a network port '
+ '(repeat option to unset multiple service types)')
+ )
+ parser.add_argument(
'subnet',
metavar="<subnet>",
help=_("Subnet to modify (name or ID)")
@@ -528,5 +566,13 @@ class UnsetSubnet(command.Command):
str(error))
raise exceptions.CommandError(msg)
attrs['allocation_pools'] = tmp_obj.allocation_pools
+ if parsed_args.service_types:
+ try:
+ _update_arguments(tmp_obj.service_types,
+ parsed_args.service_types)
+ except ValueError as error:
+ msg = (_("%s not in service-types") % str(error))
+ raise exceptions.CommandError(msg)
+ attrs['service_types'] = tmp_obj.service_types
if attrs:
client.update_subnet(obj, **attrs)
diff --git a/openstackclient/shell.py b/openstackclient/shell.py
index 26147be9..3971b6ef 100644
--- a/openstackclient/shell.py
+++ b/openstackclient/shell.py
@@ -140,12 +140,11 @@ class OpenStackShell(shell.OpenStackShell):
# First, throw away what has already been done with o-c-c and
# use our own.
try:
- cc = cloud_config.OSC_Config(
+ self.cloud_config = cloud_config.OSC_Config(
override_defaults={
'interface': None,
'auth_type': self._auth_type,
},
- pw_func=shell.prompt_for_password,
)
except (IOError, OSError) as e:
self.log.critical("Could not read clouds.yaml configuration file")
@@ -154,9 +153,13 @@ class OpenStackShell(shell.OpenStackShell):
if not self.options.debug:
self.options.debug = None
- self.cloud = cc.get_one_cloud(
+
+ # NOTE(dtroyer): Need to do this with validate=False to defer the
+ # auth plugin handling to ClientManager.setup_auth()
+ self.cloud = self.cloud_config.get_one_cloud(
cloud=self.options.cloud,
argparse=self.options,
+ validate=False,
)
# Then, re-create the client_manager with the correct arguments
@@ -165,6 +168,33 @@ class OpenStackShell(shell.OpenStackShell):
api_version=self.api_version,
)
+ def prepare_to_run_command(self, cmd):
+ """Set up auth and API versions"""
+
+ # TODO(dtroyer): Move this to osc-lib
+ # NOTE(dtroyer): If auth is not required for a command, force fake
+ # token auth so KSA plugins are happy
+
+ kwargs = {}
+ if not cmd.auth_required:
+ # Build fake token creds to keep ksa and o-c-c hushed
+ kwargs['auth_type'] = 'token_endpoint'
+ kwargs['auth'] = {}
+ kwargs['auth']['token'] = 'x'
+ kwargs['auth']['url'] = 'x'
+
+ # Validate auth options
+ self.cloud = self.cloud_config.get_one_cloud(
+ cloud=self.options.cloud,
+ argparse=self.options,
+ validate=True,
+ **kwargs
+ )
+ # Push the updated args into ClientManager
+ self.client_manager._cli_options = self.cloud
+
+ return super(OpenStackShell, self).prepare_to_run_command(cmd)
+
def main(argv=None):
if argv is None:
diff --git a/openstackclient/tests/api/__init__.py b/openstackclient/tests/unit/__init__.py
index e69de29b..e69de29b 100644
--- a/openstackclient/tests/api/__init__.py
+++ b/openstackclient/tests/unit/__init__.py
diff --git a/openstackclient/tests/common/__init__.py b/openstackclient/tests/unit/api/__init__.py
index e69de29b..e69de29b 100644
--- a/openstackclient/tests/common/__init__.py
+++ b/openstackclient/tests/unit/api/__init__.py
diff --git a/openstackclient/tests/api/fakes.py b/openstackclient/tests/unit/api/fakes.py
index 8d1d88ff..26213a2f 100644
--- a/openstackclient/tests/api/fakes.py
+++ b/openstackclient/tests/unit/api/fakes.py
@@ -16,7 +16,7 @@
from keystoneauth1 import session
from requests_mock.contrib import fixture
-from openstackclient.tests import utils
+from openstackclient.tests.unit import utils
RESP_ITEM_1 = {
diff --git a/openstackclient/tests/api/test_api.py b/openstackclient/tests/unit/api/test_api.py
index b444d9f1..5f4a0c1a 100644
--- a/openstackclient/tests/api/test_api.py
+++ b/openstackclient/tests/unit/api/test_api.py
@@ -16,7 +16,7 @@
from osc_lib import exceptions
from openstackclient.api import api
-from openstackclient.tests.api import fakes as api_fakes
+from openstackclient.tests.unit.api import fakes as api_fakes
class TestKeystoneSession(api_fakes.TestSession):
diff --git a/openstackclient/tests/api/test_image_v1.py b/openstackclient/tests/unit/api/test_image_v1.py
index f8ad6692..e02ef381 100644
--- a/openstackclient/tests/api/test_image_v1.py
+++ b/openstackclient/tests/unit/api/test_image_v1.py
@@ -17,7 +17,7 @@ from keystoneauth1 import session
from requests_mock.contrib import fixture
from openstackclient.api import image_v1
-from openstackclient.tests import utils
+from openstackclient.tests.unit import utils
FAKE_PROJECT = 'xyzpdq'
diff --git a/openstackclient/tests/api/test_image_v2.py b/openstackclient/tests/unit/api/test_image_v2.py
index 28b0d580..5dbb51e0 100644
--- a/openstackclient/tests/api/test_image_v2.py
+++ b/openstackclient/tests/unit/api/test_image_v2.py
@@ -17,7 +17,7 @@ from keystoneauth1 import session
from requests_mock.contrib import fixture
from openstackclient.api import image_v2
-from openstackclient.tests import utils
+from openstackclient.tests.unit import utils
FAKE_PROJECT = 'xyzpdq'
diff --git a/openstackclient/tests/api/test_object_store_v1.py b/openstackclient/tests/unit/api/test_object_store_v1.py
index e6ac203d..acf95550 100644
--- a/openstackclient/tests/api/test_object_store_v1.py
+++ b/openstackclient/tests/unit/api/test_object_store_v1.py
@@ -19,7 +19,7 @@ from keystoneauth1 import session
from requests_mock.contrib import fixture
from openstackclient.api import object_store_v1 as object_store
-from openstackclient.tests import utils
+from openstackclient.tests.unit import utils
FAKE_ACCOUNT = 'q12we34r'
diff --git a/openstackclient/tests/api/test_utils.py b/openstackclient/tests/unit/api/test_utils.py
index b87bdd13..1f528558 100644
--- a/openstackclient/tests/api/test_utils.py
+++ b/openstackclient/tests/unit/api/test_utils.py
@@ -17,7 +17,7 @@ import copy
from openstackclient.api import api
from openstackclient.api import utils as api_utils
-from openstackclient.tests.api import fakes as api_fakes
+from openstackclient.tests.unit.api import fakes as api_fakes
class TestBaseAPIFilter(api_fakes.TestSession):
diff --git a/openstackclient/tests/compute/__init__.py b/openstackclient/tests/unit/common/__init__.py
index e69de29b..e69de29b 100644
--- a/openstackclient/tests/compute/__init__.py
+++ b/openstackclient/tests/unit/common/__init__.py
diff --git a/openstackclient/tests/common/test_availability_zone.py b/openstackclient/tests/unit/common/test_availability_zone.py
index 014ab8bc..6c7adc43 100644
--- a/openstackclient/tests/common/test_availability_zone.py
+++ b/openstackclient/tests/unit/common/test_availability_zone.py
@@ -16,11 +16,11 @@ import mock
import six
from openstackclient.common import availability_zone
-from openstackclient.tests.compute.v2 import fakes as compute_fakes
-from openstackclient.tests import fakes
-from openstackclient.tests.network.v2 import fakes as network_fakes
-from openstackclient.tests import utils
-from openstackclient.tests.volume.v2 import fakes as volume_fakes
+from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit.network.v2 import fakes as network_fakes
+from openstackclient.tests.unit import utils
+from openstackclient.tests.unit.volume.v2 import fakes as volume_fakes
def _build_compute_az_datalist(compute_az, long_datalist=False):
diff --git a/openstackclient/tests/common/test_clientmanager.py b/openstackclient/tests/unit/common/test_clientmanager.py
index 625e175a..7f82c35d 100644
--- a/openstackclient/tests/common/test_clientmanager.py
+++ b/openstackclient/tests/unit/common/test_clientmanager.py
@@ -19,7 +19,7 @@ from keystoneauth1 import token_endpoint
from osc_lib.tests import utils as osc_lib_test_utils
from openstackclient.common import clientmanager
-from openstackclient.tests import fakes
+from openstackclient.tests.unit import fakes
class TestClientManager(osc_lib_test_utils.TestClientManager):
diff --git a/openstackclient/tests/common/test_command.py b/openstackclient/tests/unit/common/test_command.py
index 658bc895..f24b290b 100644
--- a/openstackclient/tests/common/test_command.py
+++ b/openstackclient/tests/unit/common/test_command.py
@@ -17,8 +17,8 @@ import mock
from osc_lib import exceptions
from openstackclient.common import command
-from openstackclient.tests import fakes as test_fakes
-from openstackclient.tests import utils as test_utils
+from openstackclient.tests.unit import fakes as test_fakes
+from openstackclient.tests.unit import utils as test_utils
class FakeCommand(command.Command):
@@ -32,7 +32,7 @@ class TestCommand(test_utils.TestCase):
def test_command_has_logger(self):
cmd = FakeCommand(mock.Mock(), mock.Mock())
self.assertTrue(hasattr(cmd, 'log'))
- self.assertEqual('openstackclient.tests.common.test_command.'
+ self.assertEqual('openstackclient.tests.unit.common.test_command.'
'FakeCommand', cmd.log.name)
def test_validate_os_beta_command_enabled(self):
diff --git a/openstackclient/tests/common/test_commandmanager.py b/openstackclient/tests/unit/common/test_commandmanager.py
index e2b274dc..0c6c99c0 100644
--- a/openstackclient/tests/common/test_commandmanager.py
+++ b/openstackclient/tests/unit/common/test_commandmanager.py
@@ -16,7 +16,7 @@
import mock
from openstackclient.common import commandmanager
-from openstackclient.tests import utils
+from openstackclient.tests.unit import utils
class FakeCommand(object):
diff --git a/openstackclient/tests/common/test_configuration.py b/openstackclient/tests/unit/common/test_configuration.py
index 915e5bd3..e10522b9 100644
--- a/openstackclient/tests/common/test_configuration.py
+++ b/openstackclient/tests/unit/common/test_configuration.py
@@ -14,8 +14,8 @@
import mock
from openstackclient.common import configuration
-from openstackclient.tests import fakes
-from openstackclient.tests import utils
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit import utils
class TestConfiguration(utils.TestCommand):
diff --git a/openstackclient/tests/common/test_extension.py b/openstackclient/tests/unit/common/test_extension.py
index 10023aa6..bf856ed1 100644
--- a/openstackclient/tests/common/test_extension.py
+++ b/openstackclient/tests/unit/common/test_extension.py
@@ -14,12 +14,12 @@
import mock
from openstackclient.common import extension
-from openstackclient.tests.compute.v2 import fakes as compute_fakes
-from openstackclient.tests import fakes
-from openstackclient.tests.identity.v2_0 import fakes as identity_fakes
-from openstackclient.tests.network.v2 import fakes as network_fakes
-from openstackclient.tests import utils
-from openstackclient.tests.volume.v2 import fakes as volume_fakes
+from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit.identity.v2_0 import fakes as identity_fakes
+from openstackclient.tests.unit.network.v2 import fakes as network_fakes
+from openstackclient.tests.unit import utils
+from openstackclient.tests.unit.volume.v2 import fakes as volume_fakes
class TestExtension(utils.TestCommand):
diff --git a/openstackclient/tests/common/test_logs.py b/openstackclient/tests/unit/common/test_logs.py
index 5091510c..4842c8d4 100644
--- a/openstackclient/tests/common/test_logs.py
+++ b/openstackclient/tests/unit/common/test_logs.py
@@ -18,7 +18,7 @@ import logging
import mock
from openstackclient.common import logs
-from openstackclient.tests import utils
+from openstackclient.tests.unit import utils
class TestContext(utils.TestCase):
diff --git a/openstackclient/tests/common/test_module.py b/openstackclient/tests/unit/common/test_module.py
index 8d5bb5f1..eb54dbe0 100644
--- a/openstackclient/tests/common/test_module.py
+++ b/openstackclient/tests/unit/common/test_module.py
@@ -18,8 +18,8 @@
import mock
from openstackclient.common import module as osc_module
-from openstackclient.tests import fakes
-from openstackclient.tests import utils
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit import utils
# NOTE(dtroyer): module_1 must match the version list filter (not --all)
diff --git a/openstackclient/tests/common/test_parseractions.py b/openstackclient/tests/unit/common/test_parseractions.py
index 3038701f..1212ad23 100644
--- a/openstackclient/tests/common/test_parseractions.py
+++ b/openstackclient/tests/unit/common/test_parseractions.py
@@ -19,7 +19,7 @@
import argparse
from openstackclient.common import parseractions
-from openstackclient.tests import utils
+from openstackclient.tests.unit import utils
class TestKeyValueAction(utils.TestCase):
diff --git a/openstackclient/tests/common/test_quota.py b/openstackclient/tests/unit/common/test_quota.py
index 16fa35f6..4a80a2b2 100644
--- a/openstackclient/tests/common/test_quota.py
+++ b/openstackclient/tests/unit/common/test_quota.py
@@ -14,10 +14,10 @@ import copy
import mock
from openstackclient.common import quota
-from openstackclient.tests.compute.v2 import fakes as compute_fakes
-from openstackclient.tests import fakes
-from openstackclient.tests.identity.v2_0 import fakes as identity_fakes
-from openstackclient.tests.network.v2 import fakes as network_fakes
+from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit.identity.v2_0 import fakes as identity_fakes
+from openstackclient.tests.unit.network.v2 import fakes as network_fakes
class FakeQuotaResource(fakes.FakeResource):
diff --git a/openstackclient/tests/compute/v2/__init__.py b/openstackclient/tests/unit/compute/__init__.py
index e69de29b..e69de29b 100644
--- a/openstackclient/tests/compute/v2/__init__.py
+++ b/openstackclient/tests/unit/compute/__init__.py
diff --git a/openstackclient/tests/identity/__init__.py b/openstackclient/tests/unit/compute/v2/__init__.py
index e69de29b..e69de29b 100644
--- a/openstackclient/tests/identity/__init__.py
+++ b/openstackclient/tests/unit/compute/v2/__init__.py
diff --git a/openstackclient/tests/compute/v2/fakes.py b/openstackclient/tests/unit/compute/v2/fakes.py
index 85c11c94..0e3d47ba 100644
--- a/openstackclient/tests/compute/v2/fakes.py
+++ b/openstackclient/tests/unit/compute/v2/fakes.py
@@ -17,12 +17,12 @@ import copy
import mock
import uuid
-from openstackclient.tests import fakes
-from openstackclient.tests.identity.v2_0 import fakes as identity_fakes
-from openstackclient.tests.image.v2 import fakes as image_fakes
-from openstackclient.tests.network.v2 import fakes as network_fakes
-from openstackclient.tests import utils
-from openstackclient.tests.volume.v2 import fakes as volume_fakes
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit.identity.v2_0 import fakes as identity_fakes
+from openstackclient.tests.unit.image.v2 import fakes as image_fakes
+from openstackclient.tests.unit.network.v2 import fakes as network_fakes
+from openstackclient.tests.unit import utils
+from openstackclient.tests.unit.volume.v2 import fakes as volume_fakes
floating_ip_num = 100
fix_ip_num = 100
diff --git a/openstackclient/tests/compute/v2/test_agent.py b/openstackclient/tests/unit/compute/v2/test_agent.py
index 07265bb0..169940e2 100644
--- a/openstackclient/tests/compute/v2/test_agent.py
+++ b/openstackclient/tests/unit/compute/v2/test_agent.py
@@ -19,8 +19,8 @@ from mock import call
from osc_lib import exceptions
from openstackclient.compute.v2 import agent
-from openstackclient.tests.compute.v2 import fakes as compute_fakes
-from openstackclient.tests import utils as tests_utils
+from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
+from openstackclient.tests.unit import utils as tests_utils
class TestAgent(compute_fakes.TestComputev2):
diff --git a/openstackclient/tests/compute/v2/test_aggregate.py b/openstackclient/tests/unit/compute/v2/test_aggregate.py
index 3ebca35f..c636d3de 100644
--- a/openstackclient/tests/compute/v2/test_aggregate.py
+++ b/openstackclient/tests/unit/compute/v2/test_aggregate.py
@@ -20,8 +20,8 @@ from osc_lib import exceptions
from osc_lib import utils
from openstackclient.compute.v2 import aggregate
-from openstackclient.tests.compute.v2 import fakes as compute_fakes
-from openstackclient.tests import utils as tests_utils
+from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
+from openstackclient.tests.unit import utils as tests_utils
class TestAggregate(compute_fakes.TestComputev2):
diff --git a/openstackclient/tests/compute/v2/test_console.py b/openstackclient/tests/unit/compute/v2/test_console.py
index fe4f26ae..d53d241e 100644
--- a/openstackclient/tests/compute/v2/test_console.py
+++ b/openstackclient/tests/unit/compute/v2/test_console.py
@@ -16,7 +16,7 @@
import mock
from openstackclient.compute.v2 import console
-from openstackclient.tests.compute.v2 import fakes as compute_fakes
+from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
class TestConsole(compute_fakes.TestComputev2):
diff --git a/openstackclient/tests/compute/v2/test_flavor.py b/openstackclient/tests/unit/compute/v2/test_flavor.py
index d326ea8a..ace650eb 100644
--- a/openstackclient/tests/compute/v2/test_flavor.py
+++ b/openstackclient/tests/unit/compute/v2/test_flavor.py
@@ -20,9 +20,9 @@ from osc_lib import exceptions
from osc_lib import utils
from openstackclient.compute.v2 import flavor
-from openstackclient.tests.compute.v2 import fakes as compute_fakes
-from openstackclient.tests.identity.v3 import fakes as identity_fakes
-from openstackclient.tests import utils as tests_utils
+from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
+from openstackclient.tests.unit import utils as tests_utils
class TestFlavor(compute_fakes.TestComputev2):
diff --git a/openstackclient/tests/compute/v2/test_host.py b/openstackclient/tests/unit/compute/v2/test_host.py
index 9ebed68d..a388172f 100644
--- a/openstackclient/tests/compute/v2/test_host.py
+++ b/openstackclient/tests/unit/compute/v2/test_host.py
@@ -14,8 +14,8 @@
#
from openstackclient.compute.v2 import host
-from openstackclient.tests.compute.v2 import fakes as compute_fakes
-from openstackclient.tests import utils as tests_utils
+from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
+from openstackclient.tests.unit import utils as tests_utils
class TestHost(compute_fakes.TestComputev2):
diff --git a/openstackclient/tests/compute/v2/test_hypervisor.py b/openstackclient/tests/unit/compute/v2/test_hypervisor.py
index ee0f40ed..d94a107c 100644
--- a/openstackclient/tests/compute/v2/test_hypervisor.py
+++ b/openstackclient/tests/unit/compute/v2/test_hypervisor.py
@@ -18,8 +18,8 @@ import copy
from osc_lib import exceptions
from openstackclient.compute.v2 import hypervisor
-from openstackclient.tests.compute.v2 import fakes as compute_fakes
-from openstackclient.tests import fakes
+from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
+from openstackclient.tests.unit import fakes
class TestHypervisor(compute_fakes.TestComputev2):
diff --git a/openstackclient/tests/compute/v2/test_hypervisor_stats.py b/openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py
index ca5ce29b..40086f9b 100644
--- a/openstackclient/tests/compute/v2/test_hypervisor_stats.py
+++ b/openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py
@@ -14,7 +14,7 @@
#
from openstackclient.compute.v2 import hypervisor_stats
-from openstackclient.tests.compute.v2 import fakes as compute_fakes
+from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
class TestHypervisorStats(compute_fakes.TestComputev2):
diff --git a/openstackclient/tests/compute/v2/test_keypair.py b/openstackclient/tests/unit/compute/v2/test_keypair.py
index 25949e31..cb008545 100644
--- a/openstackclient/tests/compute/v2/test_keypair.py
+++ b/openstackclient/tests/unit/compute/v2/test_keypair.py
@@ -20,8 +20,8 @@ from osc_lib import exceptions
from osc_lib import utils
from openstackclient.compute.v2 import keypair
-from openstackclient.tests.compute.v2 import fakes as compute_fakes
-from openstackclient.tests import utils as tests_utils
+from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
+from openstackclient.tests.unit import utils as tests_utils
class TestKeypair(compute_fakes.TestComputev2):
diff --git a/openstackclient/tests/compute/v2/test_server.py b/openstackclient/tests/unit/compute/v2/test_server.py
index a98398ee..d4843f51 100644
--- a/openstackclient/tests/compute/v2/test_server.py
+++ b/openstackclient/tests/unit/compute/v2/test_server.py
@@ -21,10 +21,10 @@ from osc_lib import exceptions
from osc_lib import utils as common_utils
from openstackclient.compute.v2 import server
-from openstackclient.tests.compute.v2 import fakes as compute_fakes
-from openstackclient.tests.image.v2 import fakes as image_fakes
-from openstackclient.tests import utils
-from openstackclient.tests.volume.v2 import fakes as volume_fakes
+from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
+from openstackclient.tests.unit.image.v2 import fakes as image_fakes
+from openstackclient.tests.unit import utils
+from openstackclient.tests.unit.volume.v2 import fakes as volume_fakes
class TestServer(compute_fakes.TestComputev2):
diff --git a/openstackclient/tests/compute/v2/test_server_backup.py b/openstackclient/tests/unit/compute/v2/test_server_backup.py
index 8eeb0dca..9aa63fc7 100644
--- a/openstackclient/tests/compute/v2/test_server_backup.py
+++ b/openstackclient/tests/unit/compute/v2/test_server_backup.py
@@ -17,8 +17,8 @@ from osc_lib import exceptions
from osc_lib import utils as common_utils
from openstackclient.compute.v2 import server_backup
-from openstackclient.tests.compute.v2 import fakes as compute_fakes
-from openstackclient.tests.image.v2 import fakes as image_fakes
+from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
+from openstackclient.tests.unit.image.v2 import fakes as image_fakes
class TestServerBackup(compute_fakes.TestComputev2):
diff --git a/openstackclient/tests/compute/v2/test_server_group.py b/openstackclient/tests/unit/compute/v2/test_server_group.py
index bd5f8471..d474f41d 100644
--- a/openstackclient/tests/compute/v2/test_server_group.py
+++ b/openstackclient/tests/unit/compute/v2/test_server_group.py
@@ -19,8 +19,8 @@ from osc_lib import exceptions
from osc_lib import utils
from openstackclient.compute.v2 import server_group
-from openstackclient.tests.compute.v2 import fakes as compute_fakes
-from openstackclient.tests import utils as tests_utils
+from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
+from openstackclient.tests.unit import utils as tests_utils
class TestServerGroup(compute_fakes.TestComputev2):
diff --git a/openstackclient/tests/compute/v2/test_server_image.py b/openstackclient/tests/unit/compute/v2/test_server_image.py
index c3c52da0..f53f08e6 100644
--- a/openstackclient/tests/compute/v2/test_server_image.py
+++ b/openstackclient/tests/unit/compute/v2/test_server_image.py
@@ -16,8 +16,8 @@ from osc_lib import exceptions
from osc_lib import utils as common_utils
from openstackclient.compute.v2 import server_image
-from openstackclient.tests.compute.v2 import fakes as compute_fakes
-from openstackclient.tests.image.v2 import fakes as image_fakes
+from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
+from openstackclient.tests.unit.image.v2 import fakes as image_fakes
class TestServerImage(compute_fakes.TestComputev2):
diff --git a/openstackclient/tests/compute/v2/test_service.py b/openstackclient/tests/unit/compute/v2/test_service.py
index 1599f466..1fd3b7d5 100644
--- a/openstackclient/tests/compute/v2/test_service.py
+++ b/openstackclient/tests/unit/compute/v2/test_service.py
@@ -19,7 +19,7 @@ from mock import call
from osc_lib import exceptions
from openstackclient.compute.v2 import service
-from openstackclient.tests.compute.v2 import fakes as compute_fakes
+from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
class TestService(compute_fakes.TestComputev2):
diff --git a/openstackclient/tests/fakes.py b/openstackclient/tests/unit/fakes.py
index 786cd6d4..786cd6d4 100644
--- a/openstackclient/tests/fakes.py
+++ b/openstackclient/tests/unit/fakes.py
diff --git a/openstackclient/tests/identity/v2_0/__init__.py b/openstackclient/tests/unit/identity/__init__.py
index e69de29b..e69de29b 100644
--- a/openstackclient/tests/identity/v2_0/__init__.py
+++ b/openstackclient/tests/unit/identity/__init__.py
diff --git a/openstackclient/tests/identity/v3/__init__.py b/openstackclient/tests/unit/identity/v2_0/__init__.py
index e69de29b..e69de29b 100644
--- a/openstackclient/tests/identity/v3/__init__.py
+++ b/openstackclient/tests/unit/identity/v2_0/__init__.py
diff --git a/openstackclient/tests/identity/v2_0/fakes.py b/openstackclient/tests/unit/identity/v2_0/fakes.py
index a715427c..3d25cadf 100644
--- a/openstackclient/tests/identity/v2_0/fakes.py
+++ b/openstackclient/tests/unit/identity/v2_0/fakes.py
@@ -20,8 +20,8 @@ import uuid
from keystoneauth1 import access
from keystoneauth1 import fixture
-from openstackclient.tests import fakes
-from openstackclient.tests import utils
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit import utils
project_id = '8-9-64'
@@ -80,7 +80,7 @@ USER = {
'enabled': True,
}
-token_expires = '2014-01-01T00:00:00Z'
+token_expires = '2016-09-05T18:04:52+0000'
token_id = 'token-id-' + uuid.uuid4().hex
TOKEN = {
diff --git a/openstackclient/tests/identity/v2_0/test_catalog.py b/openstackclient/tests/unit/identity/v2_0/test_catalog.py
index 487d8f31..c32f9fb8 100644
--- a/openstackclient/tests/identity/v2_0/test_catalog.py
+++ b/openstackclient/tests/unit/identity/v2_0/test_catalog.py
@@ -14,8 +14,8 @@
import mock
from openstackclient.identity.v2_0 import catalog
-from openstackclient.tests.identity.v2_0 import fakes as identity_fakes
-from openstackclient.tests import utils
+from openstackclient.tests.unit.identity.v2_0 import fakes as identity_fakes
+from openstackclient.tests.unit import utils
class TestCatalog(utils.TestCommand):
diff --git a/openstackclient/tests/identity/v2_0/test_endpoint.py b/openstackclient/tests/unit/identity/v2_0/test_endpoint.py
index 26ec654d..915e04a5 100644
--- a/openstackclient/tests/identity/v2_0/test_endpoint.py
+++ b/openstackclient/tests/unit/identity/v2_0/test_endpoint.py
@@ -12,7 +12,7 @@
#
from openstackclient.identity.v2_0 import endpoint
-from openstackclient.tests.identity.v2_0 import fakes as identity_fakes
+from openstackclient.tests.unit.identity.v2_0 import fakes as identity_fakes
class TestEndpoint(identity_fakes.TestIdentityv2):
diff --git a/openstackclient/tests/identity/v2_0/test_project.py b/openstackclient/tests/unit/identity/v2_0/test_project.py
index 96731c0c..c1f00762 100644
--- a/openstackclient/tests/identity/v2_0/test_project.py
+++ b/openstackclient/tests/unit/identity/v2_0/test_project.py
@@ -17,7 +17,7 @@ from keystoneauth1 import exceptions as ks_exc
from osc_lib import exceptions
from openstackclient.identity.v2_0 import project
-from openstackclient.tests.identity.v2_0 import fakes as identity_fakes
+from openstackclient.tests.unit.identity.v2_0 import fakes as identity_fakes
class TestProject(identity_fakes.TestIdentityv2):
diff --git a/openstackclient/tests/identity/v2_0/test_role.py b/openstackclient/tests/unit/identity/v2_0/test_role.py
index 3d379356..68ebf141 100644
--- a/openstackclient/tests/identity/v2_0/test_role.py
+++ b/openstackclient/tests/unit/identity/v2_0/test_role.py
@@ -19,7 +19,7 @@ from keystoneauth1 import exceptions as ks_exc
from osc_lib import exceptions
from openstackclient.identity.v2_0 import role
-from openstackclient.tests.identity.v2_0 import fakes as identity_fakes
+from openstackclient.tests.unit.identity.v2_0 import fakes as identity_fakes
class TestRole(identity_fakes.TestIdentityv2):
diff --git a/openstackclient/tests/identity/v2_0/test_role_assignment.py b/openstackclient/tests/unit/identity/v2_0/test_role_assignment.py
index a356ae0a..27306959 100644
--- a/openstackclient/tests/identity/v2_0/test_role_assignment.py
+++ b/openstackclient/tests/unit/identity/v2_0/test_role_assignment.py
@@ -17,8 +17,8 @@ import mock
from osc_lib import exceptions
from openstackclient.identity.v2_0 import role_assignment
-from openstackclient.tests import fakes
-from openstackclient.tests.identity.v2_0 import fakes as identity_fakes
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit.identity.v2_0 import fakes as identity_fakes
class TestRoleAssignment(identity_fakes.TestIdentityv2):
diff --git a/openstackclient/tests/identity/v2_0/test_service.py b/openstackclient/tests/unit/identity/v2_0/test_service.py
index 7efd2a60..1948bf4a 100644
--- a/openstackclient/tests/identity/v2_0/test_service.py
+++ b/openstackclient/tests/unit/identity/v2_0/test_service.py
@@ -17,7 +17,7 @@ from keystoneclient import exceptions as identity_exc
from osc_lib import exceptions
from openstackclient.identity.v2_0 import service
-from openstackclient.tests.identity.v2_0 import fakes as identity_fakes
+from openstackclient.tests.unit.identity.v2_0 import fakes as identity_fakes
class TestService(identity_fakes.TestIdentityv2):
diff --git a/openstackclient/tests/identity/v2_0/test_token.py b/openstackclient/tests/unit/identity/v2_0/test_token.py
index bb776707..dd7f4f4a 100644
--- a/openstackclient/tests/identity/v2_0/test_token.py
+++ b/openstackclient/tests/unit/identity/v2_0/test_token.py
@@ -16,7 +16,7 @@
import mock
from openstackclient.identity.v2_0 import token
-from openstackclient.tests.identity.v2_0 import fakes as identity_fakes
+from openstackclient.tests.unit.identity.v2_0 import fakes as identity_fakes
class TestToken(identity_fakes.TestIdentityv2):
@@ -58,7 +58,7 @@ class TestTokenIssue(TestToken):
collist = ('expires', 'id', 'project_id', 'user_id')
self.assertEqual(collist, columns)
datalist = (
- auth_ref.expires,
+ identity_fakes.token_expires,
identity_fakes.token_id,
'project-id',
'user-id',
@@ -86,7 +86,7 @@ class TestTokenIssue(TestToken):
)
self.assertEqual(collist, columns)
datalist = (
- auth_ref.expires,
+ identity_fakes.token_expires,
identity_fakes.token_id,
'user-id',
)
diff --git a/openstackclient/tests/identity/v2_0/test_user.py b/openstackclient/tests/unit/identity/v2_0/test_user.py
index ba871247..765f8559 100644
--- a/openstackclient/tests/identity/v2_0/test_user.py
+++ b/openstackclient/tests/unit/identity/v2_0/test_user.py
@@ -19,7 +19,7 @@ from keystoneauth1 import exceptions as ks_exc
from osc_lib import exceptions
from openstackclient.identity.v2_0 import user
-from openstackclient.tests.identity.v2_0 import fakes as identity_fakes
+from openstackclient.tests.unit.identity.v2_0 import fakes as identity_fakes
class TestUser(identity_fakes.TestIdentityv2):
diff --git a/openstackclient/tests/image/__init__.py b/openstackclient/tests/unit/identity/v3/__init__.py
index e69de29b..e69de29b 100644
--- a/openstackclient/tests/image/__init__.py
+++ b/openstackclient/tests/unit/identity/v3/__init__.py
diff --git a/openstackclient/tests/identity/v3/fakes.py b/openstackclient/tests/unit/identity/v3/fakes.py
index c4d24d46..7b76fa60 100644
--- a/openstackclient/tests/identity/v3/fakes.py
+++ b/openstackclient/tests/unit/identity/v3/fakes.py
@@ -20,8 +20,8 @@ import uuid
from keystoneauth1 import access
from keystoneauth1 import fixture
-from openstackclient.tests import fakes
-from openstackclient.tests import utils
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit import utils
base_url = 'http://identity:5000/v3/'
@@ -252,7 +252,7 @@ TRUST = {
'trustor_user_id': user_id,
}
-token_expires = '2014-01-01T00:00:00Z'
+token_expires = '2016-09-05T18:04:52+0000'
token_id = 'tttttttt-tttt-tttt-tttt-tttttttttttt'
UNSCOPED_TOKEN = {
diff --git a/openstackclient/tests/identity/v3/test_catalog.py b/openstackclient/tests/unit/identity/v3/test_catalog.py
index e3c5ed3d..986c05f3 100644
--- a/openstackclient/tests/identity/v3/test_catalog.py
+++ b/openstackclient/tests/unit/identity/v3/test_catalog.py
@@ -14,8 +14,8 @@
import mock
from openstackclient.identity.v3 import catalog
-from openstackclient.tests.identity.v3 import fakes as identity_fakes
-from openstackclient.tests import utils
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
+from openstackclient.tests.unit import utils
class TestCatalog(utils.TestCommand):
diff --git a/openstackclient/tests/identity/v3/test_consumer.py b/openstackclient/tests/unit/identity/v3/test_consumer.py
index d90c7347..403250ef 100644
--- a/openstackclient/tests/identity/v3/test_consumer.py
+++ b/openstackclient/tests/unit/identity/v3/test_consumer.py
@@ -13,8 +13,8 @@
import copy
from openstackclient.identity.v3 import consumer
-from openstackclient.tests import fakes
-from openstackclient.tests.identity.v3 import fakes as identity_fakes
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
class TestOAuth1(identity_fakes.TestOAuth1):
diff --git a/openstackclient/tests/identity/v3/test_credential.py b/openstackclient/tests/unit/identity/v3/test_credential.py
index b272087d..fd3ae6b2 100644
--- a/openstackclient/tests/identity/v3/test_credential.py
+++ b/openstackclient/tests/unit/identity/v3/test_credential.py
@@ -16,8 +16,8 @@ from mock import call
from osc_lib import exceptions
from openstackclient.identity.v3 import credential
-from openstackclient.tests.identity.v3 import fakes as identity_fakes
-from openstackclient.tests import utils
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
+from openstackclient.tests.unit import utils
class TestCredential(identity_fakes.TestIdentityv3):
diff --git a/openstackclient/tests/identity/v3/test_domain.py b/openstackclient/tests/unit/identity/v3/test_domain.py
index 5e094021..36f13d33 100644
--- a/openstackclient/tests/identity/v3/test_domain.py
+++ b/openstackclient/tests/unit/identity/v3/test_domain.py
@@ -11,7 +11,7 @@
# under the License.
from openstackclient.identity.v3 import domain
-from openstackclient.tests.identity.v3 import fakes as identity_fakes
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
class TestDomain(identity_fakes.TestIdentityv3):
diff --git a/openstackclient/tests/identity/v3/test_endpoint.py b/openstackclient/tests/unit/identity/v3/test_endpoint.py
index b2463a0d..765fbedd 100644
--- a/openstackclient/tests/identity/v3/test_endpoint.py
+++ b/openstackclient/tests/unit/identity/v3/test_endpoint.py
@@ -11,7 +11,7 @@
# under the License.
from openstackclient.identity.v3 import endpoint
-from openstackclient.tests.identity.v3 import fakes as identity_fakes
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
class TestEndpoint(identity_fakes.TestIdentityv3):
diff --git a/openstackclient/tests/identity/v3/test_group.py b/openstackclient/tests/unit/identity/v3/test_group.py
index a678dee9..d35e98c6 100644
--- a/openstackclient/tests/identity/v3/test_group.py
+++ b/openstackclient/tests/unit/identity/v3/test_group.py
@@ -18,7 +18,7 @@ from keystoneauth1 import exceptions as ks_exc
from osc_lib import exceptions
from openstackclient.identity.v3 import group
-from openstackclient.tests.identity.v3 import fakes as identity_fakes
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
class TestGroup(identity_fakes.TestIdentityv3):
diff --git a/openstackclient/tests/identity/v3/test_identity_provider.py b/openstackclient/tests/unit/identity/v3/test_identity_provider.py
index d86ac11e..cb672a92 100644
--- a/openstackclient/tests/identity/v3/test_identity_provider.py
+++ b/openstackclient/tests/unit/identity/v3/test_identity_provider.py
@@ -16,8 +16,8 @@ import copy
import mock
from openstackclient.identity.v3 import identity_provider
-from openstackclient.tests import fakes
-from openstackclient.tests.identity.v3 import fakes as identity_fakes
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
class TestIdentityProvider(identity_fakes.TestFederatedIdentity):
diff --git a/openstackclient/tests/identity/v3/test_mappings.py b/openstackclient/tests/unit/identity/v3/test_mappings.py
index 09a383eb..5086724c 100644
--- a/openstackclient/tests/identity/v3/test_mappings.py
+++ b/openstackclient/tests/unit/identity/v3/test_mappings.py
@@ -18,8 +18,8 @@ import mock
from osc_lib import exceptions
from openstackclient.identity.v3 import mapping
-from openstackclient.tests import fakes
-from openstackclient.tests.identity.v3 import fakes as identity_fakes
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
class TestMapping(identity_fakes.TestFederatedIdentity):
diff --git a/openstackclient/tests/identity/v3/test_oauth.py b/openstackclient/tests/unit/identity/v3/test_oauth.py
index d3cf3655..3aabd9b8 100644
--- a/openstackclient/tests/identity/v3/test_oauth.py
+++ b/openstackclient/tests/unit/identity/v3/test_oauth.py
@@ -13,8 +13,8 @@
import copy
from openstackclient.identity.v3 import token
-from openstackclient.tests import fakes
-from openstackclient.tests.identity.v3 import fakes as identity_fakes
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
class TestOAuth1(identity_fakes.TestOAuth1):
diff --git a/openstackclient/tests/identity/v3/test_project.py b/openstackclient/tests/unit/identity/v3/test_project.py
index 65874baa..702d9209 100644
--- a/openstackclient/tests/identity/v3/test_project.py
+++ b/openstackclient/tests/unit/identity/v3/test_project.py
@@ -18,7 +18,7 @@ import mock
from osc_lib import exceptions
from openstackclient.identity.v3 import project
-from openstackclient.tests.identity.v3 import fakes as identity_fakes
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
class TestProject(identity_fakes.TestIdentityv3):
diff --git a/openstackclient/tests/identity/v3/test_protocol.py b/openstackclient/tests/unit/identity/v3/test_protocol.py
index f718b27b..30b4aa4a 100644
--- a/openstackclient/tests/identity/v3/test_protocol.py
+++ b/openstackclient/tests/unit/identity/v3/test_protocol.py
@@ -15,8 +15,8 @@
import copy
from openstackclient.identity.v3 import federation_protocol
-from openstackclient.tests import fakes
-from openstackclient.tests.identity.v3 import fakes as identity_fakes
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
class TestProtocol(identity_fakes.TestFederatedIdentity):
diff --git a/openstackclient/tests/identity/v3/test_region.py b/openstackclient/tests/unit/identity/v3/test_region.py
index 41ee5ce9..e83a4e9f 100644
--- a/openstackclient/tests/identity/v3/test_region.py
+++ b/openstackclient/tests/unit/identity/v3/test_region.py
@@ -14,8 +14,8 @@
import copy
from openstackclient.identity.v3 import region
-from openstackclient.tests import fakes
-from openstackclient.tests.identity.v3 import fakes as identity_fakes
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
class TestRegion(identity_fakes.TestIdentityv3):
diff --git a/openstackclient/tests/identity/v3/test_role.py b/openstackclient/tests/unit/identity/v3/test_role.py
index b4e76d96..448e18d3 100644
--- a/openstackclient/tests/identity/v3/test_role.py
+++ b/openstackclient/tests/unit/identity/v3/test_role.py
@@ -16,8 +16,8 @@
import copy
from openstackclient.identity.v3 import role
-from openstackclient.tests import fakes
-from openstackclient.tests.identity.v3 import fakes as identity_fakes
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
class TestRole(identity_fakes.TestIdentityv3):
diff --git a/openstackclient/tests/identity/v3/test_role_assignment.py b/openstackclient/tests/unit/identity/v3/test_role_assignment.py
index 113cc493..7102a0cd 100644
--- a/openstackclient/tests/identity/v3/test_role_assignment.py
+++ b/openstackclient/tests/unit/identity/v3/test_role_assignment.py
@@ -15,8 +15,8 @@ import copy
import mock
from openstackclient.identity.v3 import role_assignment
-from openstackclient.tests import fakes
-from openstackclient.tests.identity.v3 import fakes as identity_fakes
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
class TestRoleAssignment(identity_fakes.TestIdentityv3):
diff --git a/openstackclient/tests/identity/v3/test_service.py b/openstackclient/tests/unit/identity/v3/test_service.py
index 76c66aa5..4cba445b 100644
--- a/openstackclient/tests/identity/v3/test_service.py
+++ b/openstackclient/tests/unit/identity/v3/test_service.py
@@ -17,7 +17,7 @@ from keystoneclient import exceptions as identity_exc
from osc_lib import exceptions
from openstackclient.identity.v3 import service
-from openstackclient.tests.identity.v3 import fakes as identity_fakes
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
class TestService(identity_fakes.TestIdentityv3):
diff --git a/openstackclient/tests/identity/v3/test_service_provider.py b/openstackclient/tests/unit/identity/v3/test_service_provider.py
index 873ab1e7..57473ef9 100644
--- a/openstackclient/tests/identity/v3/test_service_provider.py
+++ b/openstackclient/tests/unit/identity/v3/test_service_provider.py
@@ -15,8 +15,8 @@
import copy
from openstackclient.identity.v3 import service_provider
-from openstackclient.tests import fakes
-from openstackclient.tests.identity.v3 import fakes as service_fakes
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit.identity.v3 import fakes as service_fakes
class TestServiceProvider(service_fakes.TestFederatedIdentity):
diff --git a/openstackclient/tests/identity/v3/test_token.py b/openstackclient/tests/unit/identity/v3/test_token.py
index 9728c6e1..7321909f 100644
--- a/openstackclient/tests/identity/v3/test_token.py
+++ b/openstackclient/tests/unit/identity/v3/test_token.py
@@ -16,7 +16,7 @@
import mock
from openstackclient.identity.v3 import token
-from openstackclient.tests.identity.v3 import fakes as identity_fakes
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
class TestToken(identity_fakes.TestIdentityv3):
@@ -55,7 +55,7 @@ class TestTokenIssue(TestToken):
collist = ('expires', 'id', 'project_id', 'user_id')
self.assertEqual(collist, columns)
datalist = (
- auth_ref.expires,
+ identity_fakes.token_expires,
identity_fakes.token_id,
identity_fakes.project_id,
identity_fakes.user_id,
@@ -82,7 +82,7 @@ class TestTokenIssue(TestToken):
self.assertEqual(collist, columns)
datalist = (
identity_fakes.domain_id,
- auth_ref.expires,
+ identity_fakes.token_expires,
identity_fakes.token_id,
identity_fakes.user_id,
)
@@ -109,7 +109,7 @@ class TestTokenIssue(TestToken):
)
self.assertEqual(collist, columns)
datalist = (
- auth_ref.expires,
+ identity_fakes.token_expires,
identity_fakes.token_id,
identity_fakes.user_id,
)
diff --git a/openstackclient/tests/identity/v3/test_trust.py b/openstackclient/tests/unit/identity/v3/test_trust.py
index 1ea2feb4..4eeb8bfe 100644
--- a/openstackclient/tests/identity/v3/test_trust.py
+++ b/openstackclient/tests/unit/identity/v3/test_trust.py
@@ -14,8 +14,8 @@
import copy
from openstackclient.identity.v3 import trust
-from openstackclient.tests import fakes
-from openstackclient.tests.identity.v3 import fakes as identity_fakes
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
class TestTrust(identity_fakes.TestIdentityv3):
diff --git a/openstackclient/tests/identity/v3/test_unscoped_saml.py b/openstackclient/tests/unit/identity/v3/test_unscoped_saml.py
index 62623902..9e4e1876 100644
--- a/openstackclient/tests/identity/v3/test_unscoped_saml.py
+++ b/openstackclient/tests/unit/identity/v3/test_unscoped_saml.py
@@ -15,8 +15,8 @@ import copy
from osc_lib import exceptions
from openstackclient.identity.v3 import unscoped_saml
-from openstackclient.tests import fakes
-from openstackclient.tests.identity.v3 import fakes as identity_fakes
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
class TestUnscopedSAML(identity_fakes.TestFederatedIdentity):
diff --git a/openstackclient/tests/identity/v3/test_user.py b/openstackclient/tests/unit/identity/v3/test_user.py
index c3d9e749..6150a5f3 100644
--- a/openstackclient/tests/identity/v3/test_user.py
+++ b/openstackclient/tests/unit/identity/v3/test_user.py
@@ -17,7 +17,7 @@ import contextlib
import mock
from openstackclient.identity.v3 import user
-from openstackclient.tests.identity.v3 import fakes as identity_fakes
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
class TestUser(identity_fakes.TestIdentityv3):
diff --git a/openstackclient/tests/image/v1/__init__.py b/openstackclient/tests/unit/image/__init__.py
index e69de29b..e69de29b 100644
--- a/openstackclient/tests/image/v1/__init__.py
+++ b/openstackclient/tests/unit/image/__init__.py
diff --git a/openstackclient/tests/image/v2/__init__.py b/openstackclient/tests/unit/image/v1/__init__.py
index e69de29b..e69de29b 100644
--- a/openstackclient/tests/image/v2/__init__.py
+++ b/openstackclient/tests/unit/image/v1/__init__.py
diff --git a/openstackclient/tests/image/v1/fakes.py b/openstackclient/tests/unit/image/v1/fakes.py
index 1e49f173..a8e52fa3 100644
--- a/openstackclient/tests/image/v1/fakes.py
+++ b/openstackclient/tests/unit/image/v1/fakes.py
@@ -15,9 +15,9 @@
import mock
-from openstackclient.tests import fakes
-from openstackclient.tests import utils
-from openstackclient.tests.volume.v1 import fakes as volume_fakes
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit import utils
+from openstackclient.tests.unit.volume.v1 import fakes as volume_fakes
image_id = 'im1'
diff --git a/openstackclient/tests/image/v1/test_image.py b/openstackclient/tests/unit/image/v1/test_image.py
index cf08d138..c62c1ff9 100644
--- a/openstackclient/tests/image/v1/test_image.py
+++ b/openstackclient/tests/unit/image/v1/test_image.py
@@ -19,8 +19,8 @@ import mock
from osc_lib import exceptions
from openstackclient.image.v1 import image
-from openstackclient.tests import fakes
-from openstackclient.tests.image.v1 import fakes as image_fakes
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit.image.v1 import fakes as image_fakes
class TestImage(image_fakes.TestImagev1):
diff --git a/openstackclient/tests/integ/__init__.py b/openstackclient/tests/unit/image/v2/__init__.py
index e69de29b..e69de29b 100644
--- a/openstackclient/tests/integ/__init__.py
+++ b/openstackclient/tests/unit/image/v2/__init__.py
diff --git a/openstackclient/tests/image/v2/fakes.py b/openstackclient/tests/unit/image/v2/fakes.py
index d450dec1..4d9f6458 100644
--- a/openstackclient/tests/image/v2/fakes.py
+++ b/openstackclient/tests/unit/image/v2/fakes.py
@@ -22,9 +22,9 @@ from glanceclient.v2 import schemas
from osc_lib import utils as common_utils
import warlock
-from openstackclient.tests import fakes
-from openstackclient.tests.identity.v3 import fakes as identity_fakes
-from openstackclient.tests import utils
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
+from openstackclient.tests.unit import utils
image_id = '0f41529e-7c12-4de8-be2d-181abb825b3c'
image_name = 'graven'
diff --git a/openstackclient/tests/image/v2/test_image.py b/openstackclient/tests/unit/image/v2/test_image.py
index 830590c9..ebc9c3a7 100644
--- a/openstackclient/tests/image/v2/test_image.py
+++ b/openstackclient/tests/unit/image/v2/test_image.py
@@ -22,8 +22,8 @@ from osc_lib import utils as common_utils
import warlock
from openstackclient.image.v2 import image
-from openstackclient.tests.identity.v3 import fakes as identity_fakes
-from openstackclient.tests.image.v2 import fakes as image_fakes
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
+from openstackclient.tests.unit.image.v2 import fakes as image_fakes
class TestImage(image_fakes.TestImagev2):
diff --git a/openstackclient/tests/integ/cli/__init__.py b/openstackclient/tests/unit/integ/__init__.py
index e69de29b..e69de29b 100644
--- a/openstackclient/tests/integ/cli/__init__.py
+++ b/openstackclient/tests/unit/integ/__init__.py
diff --git a/openstackclient/tests/integ/base.py b/openstackclient/tests/unit/integ/base.py
index 9ee84893..caed4f89 100644
--- a/openstackclient/tests/integ/base.py
+++ b/openstackclient/tests/unit/integ/base.py
@@ -13,8 +13,8 @@
from keystoneauth1 import fixture as ksa_fixture
from requests_mock.contrib import fixture
-from openstackclient.tests import test_shell
-from openstackclient.tests import utils
+from openstackclient.tests.unit import test_shell
+from openstackclient.tests.unit import utils
HOST = "192.168.5.41"
diff --git a/openstackclient/tests/network/__init__.py b/openstackclient/tests/unit/integ/cli/__init__.py
index e69de29b..e69de29b 100644
--- a/openstackclient/tests/network/__init__.py
+++ b/openstackclient/tests/unit/integ/cli/__init__.py
diff --git a/openstackclient/tests/integ/cli/test_project.py b/openstackclient/tests/unit/integ/cli/test_project.py
index 16d5f717..6a7c6d1b 100644
--- a/openstackclient/tests/integ/cli/test_project.py
+++ b/openstackclient/tests/unit/integ/cli/test_project.py
@@ -15,8 +15,8 @@ import copy
from osc_lib.tests import utils as osc_lib_utils
from openstackclient import shell
-from openstackclient.tests.integ import base as test_base
-from openstackclient.tests import test_shell
+from openstackclient.tests.unit.integ import base as test_base
+from openstackclient.tests.unit import test_shell
class TestIntegV2ProjectID(test_base.TestInteg):
diff --git a/openstackclient/tests/integ/cli/test_shell.py b/openstackclient/tests/unit/integ/cli/test_shell.py
index dad58f8f..9d819ed2 100644
--- a/openstackclient/tests/integ/cli/test_shell.py
+++ b/openstackclient/tests/unit/integ/cli/test_shell.py
@@ -16,8 +16,8 @@ import mock
from osc_lib.tests import utils as osc_lib_utils
from openstackclient import shell
-from openstackclient.tests.integ import base as test_base
-from openstackclient.tests import test_shell
+from openstackclient.tests.unit.integ import base as test_base
+from openstackclient.tests.unit import test_shell
class TestIntegShellCliV2(test_base.TestInteg):
diff --git a/openstackclient/tests/network/v2/__init__.py b/openstackclient/tests/unit/network/__init__.py
index e69de29b..e69de29b 100644
--- a/openstackclient/tests/network/v2/__init__.py
+++ b/openstackclient/tests/unit/network/__init__.py
diff --git a/openstackclient/tests/network/test_common.py b/openstackclient/tests/unit/network/test_common.py
index 48608734..325aad2a 100644
--- a/openstackclient/tests/network/test_common.py
+++ b/openstackclient/tests/unit/network/test_common.py
@@ -15,7 +15,7 @@ import argparse
import mock
from openstackclient.network import common
-from openstackclient.tests import utils
+from openstackclient.tests.unit import utils
def _add_common_argument(parser):
diff --git a/openstackclient/tests/object/__init__.py b/openstackclient/tests/unit/network/v2/__init__.py
index e69de29b..e69de29b 100644
--- a/openstackclient/tests/object/__init__.py
+++ b/openstackclient/tests/unit/network/v2/__init__.py
diff --git a/openstackclient/tests/network/v2/fakes.py b/openstackclient/tests/unit/network/v2/fakes.py
index a6de75e2..ed30bad3 100644
--- a/openstackclient/tests/network/v2/fakes.py
+++ b/openstackclient/tests/unit/network/v2/fakes.py
@@ -16,9 +16,9 @@ import copy
import mock
import uuid
-from openstackclient.tests import fakes
-from openstackclient.tests.identity.v3 import fakes as identity_fakes_v3
-from openstackclient.tests import utils
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes_v3
+from openstackclient.tests.unit import utils
QUOTA = {
@@ -889,6 +889,7 @@ class FakeSubnet(object):
'ipv6_address_mode': None,
'ipv6_ra_mode': None,
'segment_id': None,
+ 'service_types': [],
'subnetpool_id': None,
}
diff --git a/openstackclient/tests/network/v2/test_address_scope.py b/openstackclient/tests/unit/network/v2/test_address_scope.py
index 342cf49b..6d3f4011 100644
--- a/openstackclient/tests/network/v2/test_address_scope.py
+++ b/openstackclient/tests/unit/network/v2/test_address_scope.py
@@ -17,9 +17,9 @@ from mock import call
from osc_lib import exceptions
from openstackclient.network.v2 import address_scope
-from openstackclient.tests.identity.v3 import fakes as identity_fakes_v3
-from openstackclient.tests.network.v2 import fakes as network_fakes
-from openstackclient.tests import utils as tests_utils
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes_v3
+from openstackclient.tests.unit.network.v2 import fakes as network_fakes
+from openstackclient.tests.unit import utils as tests_utils
class TestAddressScope(network_fakes.TestNetworkV2):
diff --git a/openstackclient/tests/network/v2/test_floating_ip.py b/openstackclient/tests/unit/network/v2/test_floating_ip.py
index 234fe446..a40e48f4 100644
--- a/openstackclient/tests/network/v2/test_floating_ip.py
+++ b/openstackclient/tests/unit/network/v2/test_floating_ip.py
@@ -17,9 +17,9 @@ from mock import call
from osc_lib import exceptions
from openstackclient.network.v2 import floating_ip
-from openstackclient.tests.compute.v2 import fakes as compute_fakes
-from openstackclient.tests.network.v2 import fakes as network_fakes
-from openstackclient.tests import utils as tests_utils
+from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
+from openstackclient.tests.unit.network.v2 import fakes as network_fakes
+from openstackclient.tests.unit import utils as tests_utils
# Tests for Neutron network
diff --git a/openstackclient/tests/network/v2/test_floating_ip_pool.py b/openstackclient/tests/unit/network/v2/test_floating_ip_pool.py
index 22d20d20..11d01d36 100644
--- a/openstackclient/tests/network/v2/test_floating_ip_pool.py
+++ b/openstackclient/tests/unit/network/v2/test_floating_ip_pool.py
@@ -14,8 +14,8 @@
from osc_lib import exceptions
from openstackclient.network.v2 import floating_ip_pool
-from openstackclient.tests.compute.v2 import fakes as compute_fakes
-from openstackclient.tests.network.v2 import fakes as network_fakes
+from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
+from openstackclient.tests.unit.network.v2 import fakes as network_fakes
# Tests for Network API v2
diff --git a/openstackclient/tests/network/v2/test_ip_availability.py b/openstackclient/tests/unit/network/v2/test_ip_availability.py
index f74bf8f7..c929ab82 100644
--- a/openstackclient/tests/network/v2/test_ip_availability.py
+++ b/openstackclient/tests/unit/network/v2/test_ip_availability.py
@@ -16,9 +16,9 @@ import mock
from osc_lib import utils as common_utils
from openstackclient.network.v2 import ip_availability
-from openstackclient.tests.identity.v3 import fakes as identity_fakes
-from openstackclient.tests.network.v2 import fakes as network_fakes
-from openstackclient.tests import utils as tests_utils
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
+from openstackclient.tests.unit.network.v2 import fakes as network_fakes
+from openstackclient.tests.unit import utils as tests_utils
class TestIPAvailability(network_fakes.TestNetworkV2):
diff --git a/openstackclient/tests/network/v2/test_network.py b/openstackclient/tests/unit/network/v2/test_network.py
index bb606819..84ead093 100644
--- a/openstackclient/tests/network/v2/test_network.py
+++ b/openstackclient/tests/unit/network/v2/test_network.py
@@ -18,12 +18,12 @@ from osc_lib import exceptions
from osc_lib import utils
from openstackclient.network.v2 import network
-from openstackclient.tests.compute.v2 import fakes as compute_fakes
-from openstackclient.tests import fakes
-from openstackclient.tests.identity.v2_0 import fakes as identity_fakes_v2
-from openstackclient.tests.identity.v3 import fakes as identity_fakes_v3
-from openstackclient.tests.network.v2 import fakes as network_fakes
-from openstackclient.tests import utils as tests_utils
+from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit.identity.v2_0 import fakes as identity_fakes_v2
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes_v3
+from openstackclient.tests.unit.network.v2 import fakes as network_fakes
+from openstackclient.tests.unit import utils as tests_utils
# Tests for Neutron network
diff --git a/openstackclient/tests/network/v2/test_network_agent.py b/openstackclient/tests/unit/network/v2/test_network_agent.py
index 269d4e1d..2f17f41b 100644
--- a/openstackclient/tests/network/v2/test_network_agent.py
+++ b/openstackclient/tests/unit/network/v2/test_network_agent.py
@@ -18,8 +18,8 @@ from osc_lib import exceptions
from osc_lib import utils
from openstackclient.network.v2 import network_agent
-from openstackclient.tests.network.v2 import fakes as network_fakes
-from openstackclient.tests import utils as tests_utils
+from openstackclient.tests.unit.network.v2 import fakes as network_fakes
+from openstackclient.tests.unit import utils as tests_utils
class TestNetworkAgent(network_fakes.TestNetworkV2):
diff --git a/openstackclient/tests/network/v2/test_network_rbac.py b/openstackclient/tests/unit/network/v2/test_network_rbac.py
index 9250e91b..1cd18a09 100644
--- a/openstackclient/tests/network/v2/test_network_rbac.py
+++ b/openstackclient/tests/unit/network/v2/test_network_rbac.py
@@ -17,9 +17,9 @@ from mock import call
from osc_lib import exceptions
from openstackclient.network.v2 import network_rbac
-from openstackclient.tests.identity.v3 import fakes as identity_fakes_v3
-from openstackclient.tests.network.v2 import fakes as network_fakes
-from openstackclient.tests import utils as tests_utils
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes_v3
+from openstackclient.tests.unit.network.v2 import fakes as network_fakes
+from openstackclient.tests.unit import utils as tests_utils
class TestNetworkRBAC(network_fakes.TestNetworkV2):
diff --git a/openstackclient/tests/network/v2/test_network_segment.py b/openstackclient/tests/unit/network/v2/test_network_segment.py
index a635d845..b9fce078 100644
--- a/openstackclient/tests/network/v2/test_network_segment.py
+++ b/openstackclient/tests/unit/network/v2/test_network_segment.py
@@ -16,8 +16,8 @@ import mock
from osc_lib import exceptions
from openstackclient.network.v2 import network_segment
-from openstackclient.tests.network.v2 import fakes as network_fakes
-from openstackclient.tests import utils as tests_utils
+from openstackclient.tests.unit.network.v2 import fakes as network_fakes
+from openstackclient.tests.unit import utils as tests_utils
class TestNetworkSegment(network_fakes.TestNetworkV2):
diff --git a/openstackclient/tests/network/v2/test_port.py b/openstackclient/tests/unit/network/v2/test_port.py
index a1cecec8..d5d7f330 100644
--- a/openstackclient/tests/network/v2/test_port.py
+++ b/openstackclient/tests/unit/network/v2/test_port.py
@@ -19,8 +19,8 @@ from osc_lib import exceptions
from osc_lib import utils
from openstackclient.network.v2 import port
-from openstackclient.tests.network.v2 import fakes as network_fakes
-from openstackclient.tests import utils as tests_utils
+from openstackclient.tests.unit.network.v2 import fakes as network_fakes
+from openstackclient.tests.unit import utils as tests_utils
class TestPort(network_fakes.TestNetworkV2):
diff --git a/openstackclient/tests/network/v2/test_router.py b/openstackclient/tests/unit/network/v2/test_router.py
index 1ef4707b..26fe655e 100644
--- a/openstackclient/tests/network/v2/test_router.py
+++ b/openstackclient/tests/unit/network/v2/test_router.py
@@ -18,8 +18,8 @@ from osc_lib import exceptions
from osc_lib import utils as osc_utils
from openstackclient.network.v2 import router
-from openstackclient.tests.network.v2 import fakes as network_fakes
-from openstackclient.tests import utils as tests_utils
+from openstackclient.tests.unit.network.v2 import fakes as network_fakes
+from openstackclient.tests.unit import utils as tests_utils
class TestRouter(network_fakes.TestNetworkV2):
diff --git a/openstackclient/tests/network/v2/test_security_group.py b/openstackclient/tests/unit/network/v2/test_security_group.py
index 15f4cffe..4c5b2972 100644
--- a/openstackclient/tests/network/v2/test_security_group.py
+++ b/openstackclient/tests/unit/network/v2/test_security_group.py
@@ -17,10 +17,10 @@ from mock import call
from osc_lib import exceptions
from openstackclient.network.v2 import security_group
-from openstackclient.tests.compute.v2 import fakes as compute_fakes
-from openstackclient.tests.identity.v3 import fakes as identity_fakes
-from openstackclient.tests.network.v2 import fakes as network_fakes
-from openstackclient.tests import utils as tests_utils
+from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
+from openstackclient.tests.unit.network.v2 import fakes as network_fakes
+from openstackclient.tests.unit import utils as tests_utils
class TestSecurityGroupNetwork(network_fakes.TestNetworkV2):
diff --git a/openstackclient/tests/network/v2/test_security_group_rule.py b/openstackclient/tests/unit/network/v2/test_security_group_rule.py
index 170989bf..51e18a65 100644
--- a/openstackclient/tests/network/v2/test_security_group_rule.py
+++ b/openstackclient/tests/unit/network/v2/test_security_group_rule.py
@@ -19,11 +19,11 @@ from osc_lib import exceptions
from openstackclient.network import utils as network_utils
from openstackclient.network.v2 import security_group_rule
-from openstackclient.tests.compute.v2 import fakes as compute_fakes
-from openstackclient.tests import fakes
-from openstackclient.tests.identity.v3 import fakes as identity_fakes
-from openstackclient.tests.network.v2 import fakes as network_fakes
-from openstackclient.tests import utils as tests_utils
+from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
+from openstackclient.tests.unit.network.v2 import fakes as network_fakes
+from openstackclient.tests.unit import utils as tests_utils
class TestSecurityGroupRuleNetwork(network_fakes.TestNetworkV2):
diff --git a/openstackclient/tests/network/v2/test_subnet.py b/openstackclient/tests/unit/network/v2/test_subnet.py
index ba757c98..e31db469 100644
--- a/openstackclient/tests/network/v2/test_subnet.py
+++ b/openstackclient/tests/unit/network/v2/test_subnet.py
@@ -18,9 +18,9 @@ from osc_lib import exceptions
from osc_lib import utils
from openstackclient.network.v2 import subnet as subnet_v2
-from openstackclient.tests.identity.v3 import fakes as identity_fakes_v3
-from openstackclient.tests.network.v2 import fakes as network_fakes
-from openstackclient.tests import utils as tests_utils
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes_v3
+from openstackclient.tests.unit.network.v2 import fakes as network_fakes
+from openstackclient.tests.unit import utils as tests_utils
class TestSubnet(network_fakes.TestNetworkV2):
@@ -61,6 +61,8 @@ class TestCreateSubnet(TestSubnet):
'nexthop': '10.20.20.1'},
{'destination': '10.30.30.0/24',
'nexthop': '10.30.30.1'}],
+ 'service_types': ['network:router_gateway',
+ 'network:floatingip_agent_gateway'],
}
)
@@ -85,6 +87,8 @@ class TestCreateSubnet(TestSubnet):
'ipv6_address_mode': 'slaac',
'ipv6_ra_mode': 'slaac',
'subnetpool_id': 'None',
+ 'service_types': ['network:router_gateway',
+ 'network:floatingip_agent_gateway'],
}
)
@@ -118,6 +122,7 @@ class TestCreateSubnet(TestSubnet):
'network_id',
'project_id',
'segment_id',
+ 'service_types',
'subnetpool_id',
)
@@ -136,6 +141,7 @@ class TestCreateSubnet(TestSubnet):
_subnet.network_id,
_subnet.project_id,
_subnet.segment_id,
+ utils.format_list(_subnet.service_types),
_subnet.subnetpool_id,
)
@@ -154,6 +160,7 @@ class TestCreateSubnet(TestSubnet):
_subnet_from_pool.network_id,
_subnet_from_pool.project_id,
_subnet_from_pool.segment_id,
+ utils.format_list(_subnet_from_pool.service_types),
_subnet_from_pool.subnetpool_id,
)
@@ -172,6 +179,7 @@ class TestCreateSubnet(TestSubnet):
_subnet_ipv6.network_id,
_subnet_ipv6.project_id,
_subnet_ipv6.segment_id,
+ utils.format_list(_subnet_ipv6.service_types),
_subnet_ipv6.subnetpool_id,
)
@@ -259,6 +267,10 @@ class TestCreateSubnet(TestSubnet):
',destination=' + host_route.get('destination', '')
arglist.append(value)
+ for service_type in self._subnet_from_pool.service_types:
+ arglist.append('--service-type')
+ arglist.append(service_type)
+
verifylist = [
('name', self._subnet_from_pool.name),
('prefix_length', '24'),
@@ -270,6 +282,7 @@ class TestCreateSubnet(TestSubnet):
('host_routes', subnet_v2.convert_entries_to_gateway(
self._subnet_from_pool.host_routes)),
('subnet_pool', self._subnet_from_pool.subnetpool_id),
+ ('service_types', self._subnet_from_pool.service_types),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -285,6 +298,7 @@ class TestCreateSubnet(TestSubnet):
'network_id': self._subnet_from_pool.network_id,
'prefixlen': '24',
'subnetpool_id': self._subnet_from_pool.subnetpool_id,
+ 'service_types': self._subnet_from_pool.service_types,
})
self.assertEqual(self.columns, columns)
self.assertEqual(self.data_subnet_pool, data)
@@ -321,6 +335,10 @@ class TestCreateSubnet(TestSubnet):
',end=' + pool.get('end', '')
arglist.append(value)
+ for service_type in self._subnet_ipv6.service_types:
+ arglist.append('--service-type')
+ arglist.append(service_type)
+
verifylist = [
('name', self._subnet_ipv6.name),
('subnet_range', self._subnet_ipv6.cidr),
@@ -334,6 +352,7 @@ class TestCreateSubnet(TestSubnet):
('host_routes', subnet_v2.convert_entries_to_gateway(
self._subnet_ipv6.host_routes)),
('allocation_pools', self._subnet_ipv6.allocation_pools),
+ ('service_types', self._subnet_ipv6.service_types),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -351,6 +370,7 @@ class TestCreateSubnet(TestSubnet):
'name': self._subnet_ipv6.name,
'network_id': self._subnet_ipv6.network_id,
'allocation_pools': self._subnet_ipv6.allocation_pools,
+ 'service_types': self._subnet_ipv6.service_types,
})
self.assertEqual(self.columns, columns)
self.assertEqual(self.data_ipv6, data)
@@ -505,6 +525,7 @@ class TestListSubnet(TestSubnet):
'Host Routes',
'IP Version',
'Gateway',
+ 'Service Types',
)
data = []
@@ -530,6 +551,7 @@ class TestListSubnet(TestSubnet):
utils.format_list(subnet.host_routes),
subnet.ip_version,
subnet.gateway_ip,
+ utils.format_list(subnet.service_types),
))
def setUp(self):
@@ -616,6 +638,41 @@ class TestListSubnet(TestSubnet):
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, list(data))
+ def test_subnet_list_service_type(self):
+ arglist = [
+ '--service-type', 'network:router_gateway',
+ ]
+ verifylist = [
+ ('service_types', ['network:router_gateway']),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+ filters = {'service_types': ['network:router_gateway']}
+
+ self.network.subnets.assert_called_once_with(**filters)
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.data, list(data))
+
+ def test_subnet_list_service_type_multiple(self):
+ arglist = [
+ '--service-type', 'network:router_gateway',
+ '--service-type', 'network:floatingip_agent_gateway',
+ ]
+ verifylist = [
+ ('service_types', ['network:router_gateway',
+ 'network:floatingip_agent_gateway']),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+ filters = {'service_types': ['network:router_gateway',
+ 'network:floatingip_agent_gateway']}
+
+ self.network.subnets.assert_called_once_with(**filters)
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.data, list(data))
+
class TestSetSubnet(TestSubnet):
@@ -688,19 +745,24 @@ class TestSetSubnet(TestSubnet):
def test_append_options(self):
_testsubnet = network_fakes.FakeSubnet.create_one_subnet(
- {'dns_nameservers': ["10.0.0.1"]})
+ {'dns_nameservers': ["10.0.0.1"],
+ 'service_types': ["network:router_gateway"]})
self.network.find_subnet = mock.Mock(return_value=_testsubnet)
arglist = [
'--dns-nameserver', '10.0.0.2',
+ '--service-type', 'network:floatingip_agent_gateway',
_testsubnet.name,
]
verifylist = [
('dns_nameservers', ['10.0.0.2']),
+ ('service_types', ['network:floatingip_agent_gateway']),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
result = self.cmd.take_action(parsed_args)
attrs = {
'dns_nameservers': ['10.0.0.2', '10.0.0.1'],
+ 'service_types': ['network:floatingip_agent_gateway',
+ 'network:router_gateway'],
}
self.network.update_subnet.assert_called_once_with(
_testsubnet, **attrs)
@@ -726,6 +788,7 @@ class TestShowSubnet(TestSubnet):
'network_id',
'project_id',
'segment_id',
+ 'service_types',
'subnetpool_id',
)
@@ -744,6 +807,7 @@ class TestShowSubnet(TestSubnet):
_subnet.network_id,
_subnet.tenant_id,
_subnet.segment_id,
+ utils.format_list(_subnet.service_types),
_subnet.subnetpool_id,
)
@@ -796,7 +860,9 @@ class TestUnsetSubnet(TestSubnet):
'allocation_pools': [{'start': '8.8.8.100',
'end': '8.8.8.150'},
{'start': '8.8.8.160',
- 'end': '8.8.8.170'}], })
+ 'end': '8.8.8.170'}],
+ 'service_types': ['network:router_gateway',
+ 'network:floatingip_agent_gateway'], })
self.network.find_subnet = mock.Mock(return_value=self._testsubnet)
self.network.update_subnet = mock.Mock(return_value=None)
# Get the command object to test
@@ -807,6 +873,7 @@ class TestUnsetSubnet(TestSubnet):
'--dns-nameserver', '8.8.8.8',
'--host-route', 'destination=10.30.30.30/24,gateway=10.30.30.1',
'--allocation-pool', 'start=8.8.8.100,end=8.8.8.150',
+ '--service-type', 'network:router_gateway',
self._testsubnet.name,
]
verifylist = [
@@ -815,6 +882,7 @@ class TestUnsetSubnet(TestSubnet):
"destination": "10.30.30.30/24", "gateway": "10.30.30.1"}]),
('allocation_pools', [{
'start': '8.8.8.100', 'end': '8.8.8.150'}]),
+ ('service_types', ['network:router_gateway']),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -825,6 +893,7 @@ class TestUnsetSubnet(TestSubnet):
'host_routes': [{
"destination": "10.20.20.0/24", "nexthop": "10.20.20.1"}],
'allocation_pools': [{'start': '8.8.8.160', 'end': '8.8.8.170'}],
+ 'service_types': ['network:floatingip_agent_gateway'],
}
self.network.update_subnet.assert_called_once_with(
self._testsubnet, **attrs)
@@ -886,3 +955,24 @@ class TestUnsetSubnet(TestSubnet):
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
self.assertRaises(exceptions.CommandError,
self.cmd.take_action, parsed_args)
+
+ def test_unset_subnet_wrong_service_type(self):
+ arglist = [
+ '--dns-nameserver', '8.8.8.8',
+ '--host-route', 'destination=10.30.30.30/24,gateway=10.30.30.1',
+ '--allocation-pool', 'start=8.8.8.100,end=8.8.8.150',
+ '--service-type', 'network:dhcp',
+ self._testsubnet.name,
+ ]
+ verifylist = [
+ ('dns_nameservers', ['8.8.8.8']),
+ ('host_routes', [{
+ "destination": "10.30.30.30/24", "gateway": "10.30.30.1"}]),
+ ('allocation_pools', [{
+ 'start': '8.8.8.100', 'end': '8.8.8.150'}]),
+ ('service_types', ['network:dhcp']),
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ self.assertRaises(exceptions.CommandError,
+ self.cmd.take_action, parsed_args)
diff --git a/openstackclient/tests/network/v2/test_subnet_pool.py b/openstackclient/tests/unit/network/v2/test_subnet_pool.py
index 4cfecef7..0d9494c0 100644
--- a/openstackclient/tests/network/v2/test_subnet_pool.py
+++ b/openstackclient/tests/unit/network/v2/test_subnet_pool.py
@@ -19,9 +19,9 @@ from osc_lib import exceptions
from osc_lib import utils
from openstackclient.network.v2 import subnet_pool
-from openstackclient.tests.identity.v3 import fakes as identity_fakes_v3
-from openstackclient.tests.network.v2 import fakes as network_fakes
-from openstackclient.tests import utils as tests_utils
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes_v3
+from openstackclient.tests.unit.network.v2 import fakes as network_fakes
+from openstackclient.tests.unit import utils as tests_utils
class TestSubnetPool(network_fakes.TestNetworkV2):
diff --git a/openstackclient/tests/object/v1/__init__.py b/openstackclient/tests/unit/object/__init__.py
index e69de29b..e69de29b 100644
--- a/openstackclient/tests/object/v1/__init__.py
+++ b/openstackclient/tests/unit/object/__init__.py
diff --git a/openstackclient/tests/volume/__init__.py b/openstackclient/tests/unit/object/v1/__init__.py
index e69de29b..e69de29b 100644
--- a/openstackclient/tests/volume/__init__.py
+++ b/openstackclient/tests/unit/object/v1/__init__.py
diff --git a/openstackclient/tests/object/v1/fakes.py b/openstackclient/tests/unit/object/v1/fakes.py
index 6c367111..0ff594bc 100644
--- a/openstackclient/tests/object/v1/fakes.py
+++ b/openstackclient/tests/unit/object/v1/fakes.py
@@ -16,7 +16,7 @@
from keystoneauth1 import session
from openstackclient.api import object_store_v1 as object_store
-from openstackclient.tests import utils
+from openstackclient.tests.unit import utils
ACCOUNT_ID = 'tqbfjotld'
diff --git a/openstackclient/tests/object/v1/test_container.py b/openstackclient/tests/unit/object/v1/test_container.py
index 41bc6e8c..37b8c705 100644
--- a/openstackclient/tests/object/v1/test_container.py
+++ b/openstackclient/tests/unit/object/v1/test_container.py
@@ -18,7 +18,7 @@ import mock
from openstackclient.api import object_store_v1 as object_store
from openstackclient.object.v1 import container
-from openstackclient.tests.object.v1 import fakes as object_fakes
+from openstackclient.tests.unit.object.v1 import fakes as object_fakes
AUTH_TOKEN = "foobar"
diff --git a/openstackclient/tests/object/v1/test_container_all.py b/openstackclient/tests/unit/object/v1/test_container_all.py
index 95e12f47..58c90e36 100644
--- a/openstackclient/tests/object/v1/test_container_all.py
+++ b/openstackclient/tests/unit/object/v1/test_container_all.py
@@ -16,7 +16,7 @@ import copy
from requests_mock.contrib import fixture
from openstackclient.object.v1 import container as container_cmds
-from openstackclient.tests.object.v1 import fakes as object_fakes
+from openstackclient.tests.unit.object.v1 import fakes as object_fakes
class TestContainerAll(object_fakes.TestObjectv1):
diff --git a/openstackclient/tests/object/v1/test_object.py b/openstackclient/tests/unit/object/v1/test_object.py
index e11f78a1..c0ac204d 100644
--- a/openstackclient/tests/object/v1/test_object.py
+++ b/openstackclient/tests/unit/object/v1/test_object.py
@@ -18,7 +18,7 @@ import mock
from openstackclient.api import object_store_v1 as object_store
from openstackclient.object.v1 import object as obj
-from openstackclient.tests.object.v1 import fakes as object_fakes
+from openstackclient.tests.unit.object.v1 import fakes as object_fakes
AUTH_TOKEN = "foobar"
diff --git a/openstackclient/tests/object/v1/test_object_all.py b/openstackclient/tests/unit/object/v1/test_object_all.py
index 2a1bf059..a0948b1b 100644
--- a/openstackclient/tests/object/v1/test_object_all.py
+++ b/openstackclient/tests/unit/object/v1/test_object_all.py
@@ -16,7 +16,7 @@ import copy
from requests_mock.contrib import fixture
from openstackclient.object.v1 import object as object_cmds
-from openstackclient.tests.object.v1 import fakes as object_fakes
+from openstackclient.tests.unit.object.v1 import fakes as object_fakes
class TestObjectAll(object_fakes.TestObjectv1):
diff --git a/openstackclient/tests/test_shell.py b/openstackclient/tests/unit/test_shell.py
index 87cd7f51..87cd7f51 100644
--- a/openstackclient/tests/test_shell.py
+++ b/openstackclient/tests/unit/test_shell.py
diff --git a/openstackclient/tests/utils.py b/openstackclient/tests/unit/utils.py
index f3ab5ea6..3c5c8683 100644
--- a/openstackclient/tests/utils.py
+++ b/openstackclient/tests/unit/utils.py
@@ -18,7 +18,7 @@ import fixtures
import os
import testtools
-from openstackclient.tests import fakes
+from openstackclient.tests.unit import fakes
class ParserException(Exception):
diff --git a/openstackclient/tests/volume/v1/__init__.py b/openstackclient/tests/unit/volume/__init__.py
index e69de29b..e69de29b 100644
--- a/openstackclient/tests/volume/v1/__init__.py
+++ b/openstackclient/tests/unit/volume/__init__.py
diff --git a/openstackclient/tests/volume/test_find_resource.py b/openstackclient/tests/unit/volume/test_find_resource.py
index 982b02f0..d2509315 100644
--- a/openstackclient/tests/volume/test_find_resource.py
+++ b/openstackclient/tests/unit/volume/test_find_resource.py
@@ -20,7 +20,7 @@ from cinderclient.v1 import volumes
from osc_lib import exceptions
from osc_lib import utils
-from openstackclient.tests import utils as test_utils
+from openstackclient.tests.unit import utils as test_utils
from openstackclient.volume import client # noqa
diff --git a/openstackclient/tests/volume/v2/__init__.py b/openstackclient/tests/unit/volume/v1/__init__.py
index e69de29b..e69de29b 100644
--- a/openstackclient/tests/volume/v2/__init__.py
+++ b/openstackclient/tests/unit/volume/v1/__init__.py
diff --git a/openstackclient/tests/volume/v1/fakes.py b/openstackclient/tests/unit/volume/v1/fakes.py
index b96f925d..c6fee7d1 100644
--- a/openstackclient/tests/volume/v1/fakes.py
+++ b/openstackclient/tests/unit/volume/v1/fakes.py
@@ -15,9 +15,9 @@
import mock
-from openstackclient.tests import fakes
-from openstackclient.tests.identity.v2_0 import fakes as identity_fakes
-from openstackclient.tests import utils
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit.identity.v2_0 import fakes as identity_fakes
+from openstackclient.tests.unit import utils
volume_id = 'vvvvvvvv-vvvv-vvvv-vvvvvvvv'
diff --git a/openstackclient/tests/volume/v1/test_qos_specs.py b/openstackclient/tests/unit/volume/v1/test_qos_specs.py
index 4e1733fd..7b87ccb3 100644
--- a/openstackclient/tests/volume/v1/test_qos_specs.py
+++ b/openstackclient/tests/unit/volume/v1/test_qos_specs.py
@@ -17,8 +17,8 @@ import copy
from osc_lib import utils
-from openstackclient.tests import fakes
-from openstackclient.tests.volume.v1 import fakes as volume_fakes
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit.volume.v1 import fakes as volume_fakes
from openstackclient.volume.v1 import qos_specs
diff --git a/openstackclient/tests/unit/volume/v1/test_service.py b/openstackclient/tests/unit/volume/v1/test_service.py
new file mode 100644
index 00000000..82d21bfc
--- /dev/null
+++ b/openstackclient/tests/unit/volume/v1/test_service.py
@@ -0,0 +1,286 @@
+#
+# 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 osc_lib import exceptions
+
+from openstackclient.tests.unit.volume.v1 import fakes as service_fakes
+from openstackclient.volume.v1 import service
+
+
+class TestService(service_fakes.TestVolumev1):
+
+ def setUp(self):
+ super(TestService, self).setUp()
+
+ # Get a shortcut to the ServiceManager Mock
+ self.service_mock = self.app.client_manager.volume.services
+ self.service_mock.reset_mock()
+
+
+class TestServiceList(TestService):
+
+ # The service to be listed
+ services = service_fakes.FakeService.create_one_service()
+
+ def setUp(self):
+ super(TestServiceList, self).setUp()
+
+ self.service_mock.list.return_value = [self.services]
+
+ # Get the command object to test
+ self.cmd = service.ListService(self.app, None)
+
+ def test_service_list(self):
+ arglist = [
+ '--host', self.services.host,
+ '--service', self.services.binary,
+ ]
+ verifylist = [
+ ('host', self.services.host),
+ ('service', self.services.binary),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ # In base command class Lister in cliff, abstract method take_action()
+ # returns a tuple containing the column names and an iterable
+ # containing the data to be listed.
+ columns, data = self.cmd.take_action(parsed_args)
+
+ expected_columns = [
+ 'Binary',
+ 'Host',
+ 'Zone',
+ 'Status',
+ 'State',
+ 'Updated At',
+ ]
+
+ # confirming if all expected columns are present in the result.
+ self.assertEqual(expected_columns, columns)
+
+ datalist = ((
+ self.services.binary,
+ self.services.host,
+ self.services.zone,
+ self.services.status,
+ self.services.state,
+ self.services.updated_at,
+ ), )
+
+ # confirming if all expected values are present in the result.
+ self.assertEqual(datalist, tuple(data))
+
+ # checking if proper call was made to list services
+ self.service_mock.list.assert_called_with(
+ self.services.host,
+ self.services.binary,
+ )
+
+ # checking if prohibited columns are present in output
+ self.assertNotIn("Disabled Reason", columns)
+ self.assertNotIn(self.services.disabled_reason,
+ tuple(data))
+
+ def test_service_list_with_long_option(self):
+ arglist = [
+ '--host', self.services.host,
+ '--service', self.services.binary,
+ '--long'
+ ]
+ verifylist = [
+ ('host', self.services.host),
+ ('service', self.services.binary),
+ ('long', True)
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ # In base command class Lister in cliff, abstract method take_action()
+ # returns a tuple containing the column names and an iterable
+ # containing the data to be listed.
+ columns, data = self.cmd.take_action(parsed_args)
+
+ expected_columns = [
+ 'Binary',
+ 'Host',
+ 'Zone',
+ 'Status',
+ 'State',
+ 'Updated At',
+ 'Disabled Reason'
+ ]
+
+ # confirming if all expected columns are present in the result.
+ self.assertEqual(expected_columns, columns)
+
+ datalist = ((
+ self.services.binary,
+ self.services.host,
+ self.services.zone,
+ self.services.status,
+ self.services.state,
+ self.services.updated_at,
+ self.services.disabled_reason,
+ ), )
+
+ # confirming if all expected values are present in the result.
+ self.assertEqual(datalist, tuple(data))
+
+ self.service_mock.list.assert_called_with(
+ self.services.host,
+ self.services.binary,
+ )
+
+
+class TestServiceSet(TestService):
+
+ service = service_fakes.FakeService.create_one_service()
+
+ def setUp(self):
+ super(TestServiceSet, self).setUp()
+
+ self.service_mock.enable.return_value = self.service
+ self.service_mock.disable.return_value = self.service
+ self.service_mock.disable_log_reason.return_value = self.service
+
+ self.cmd = service.SetService(self.app, None)
+
+ def test_service_set_nothing(self):
+ arglist = [
+ self.service.host,
+ self.service.binary,
+ ]
+ verifylist = [
+ ('host', self.service.host),
+ ('service', self.service.binary),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ result = self.cmd.take_action(parsed_args)
+
+ self.service_mock.enable.assert_not_called()
+ self.service_mock.disable.assert_not_called()
+ self.service_mock.disable_log_reason.assert_not_called()
+ self.assertIsNone(result)
+
+ def test_service_set_enable(self):
+ arglist = [
+ '--enable',
+ self.service.host,
+ self.service.binary,
+ ]
+ verifylist = [
+ ('enable', True),
+ ('host', self.service.host),
+ ('service', self.service.binary),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ result = self.cmd.take_action(parsed_args)
+
+ self.service_mock.enable.assert_called_with(
+ self.service.host,
+ self.service.binary
+ )
+ self.service_mock.disable.assert_not_called()
+ self.service_mock.disable_log_reason.assert_not_called()
+ self.assertIsNone(result)
+
+ def test_service_set_disable(self):
+ arglist = [
+ '--disable',
+ self.service.host,
+ self.service.binary,
+ ]
+ verifylist = [
+ ('disable', True),
+ ('host', self.service.host),
+ ('service', self.service.binary),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ result = self.cmd.take_action(parsed_args)
+
+ self.service_mock.disable.assert_called_with(
+ self.service.host,
+ self.service.binary
+ )
+ self.service_mock.enable.assert_not_called()
+ self.service_mock.disable_log_reason.assert_not_called()
+ self.assertIsNone(result)
+
+ def test_service_set_disable_with_reason(self):
+ reason = 'earthquake'
+ arglist = [
+ '--disable',
+ '--disable-reason', reason,
+ self.service.host,
+ self.service.binary,
+ ]
+ verifylist = [
+ ('disable', True),
+ ('disable_reason', reason),
+ ('host', self.service.host),
+ ('service', self.service.binary),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ result = self.cmd.take_action(parsed_args)
+
+ self.service_mock.disable_log_reason.assert_called_with(
+ self.service.host,
+ self.service.binary,
+ reason
+ )
+ self.assertIsNone(result)
+
+ def test_service_set_only_with_disable_reason(self):
+ reason = 'earthquake'
+ arglist = [
+ '--disable-reason', reason,
+ self.service.host,
+ self.service.binary,
+ ]
+ verifylist = [
+ ('disable_reason', reason),
+ ('host', self.service.host),
+ ('service', self.service.binary),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ try:
+ self.cmd.take_action(parsed_args)
+ self.fail("CommandError should be raised.")
+ except exceptions.CommandError as e:
+ self.assertEqual("Cannot specify option --disable-reason without "
+ "--disable specified.", str(e))
+
+ def test_service_set_enable_with_disable_reason(self):
+ reason = 'earthquake'
+ arglist = [
+ '--enable',
+ '--disable-reason', reason,
+ self.service.host,
+ self.service.binary,
+ ]
+ verifylist = [
+ ('enable', True),
+ ('disable_reason', reason),
+ ('host', self.service.host),
+ ('service', self.service.binary),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ try:
+ self.cmd.take_action(parsed_args)
+ self.fail("CommandError should be raised.")
+ except exceptions.CommandError as e:
+ self.assertEqual("Cannot specify option --disable-reason without "
+ "--disable specified.", str(e))
diff --git a/openstackclient/tests/volume/v1/test_transfer_request.py b/openstackclient/tests/unit/volume/v1/test_transfer_request.py
index 91f5f4b2..f7980c34 100644
--- a/openstackclient/tests/volume/v1/test_transfer_request.py
+++ b/openstackclient/tests/unit/volume/v1/test_transfer_request.py
@@ -13,7 +13,7 @@
#
-from openstackclient.tests.volume.v1 import fakes as transfer_fakes
+from openstackclient.tests.unit.volume.v1 import fakes as transfer_fakes
from openstackclient.volume.v1 import volume_transfer_request
diff --git a/openstackclient/tests/volume/v1/test_volume.py b/openstackclient/tests/unit/volume/v1/test_volume.py
index e41c2a72..f90566fd 100644
--- a/openstackclient/tests/volume/v1/test_volume.py
+++ b/openstackclient/tests/unit/volume/v1/test_volume.py
@@ -16,9 +16,9 @@
import copy
import mock
-from openstackclient.tests import fakes
-from openstackclient.tests.identity.v2_0 import fakes as identity_fakes
-from openstackclient.tests.volume.v1 import fakes as volume_fakes
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit.identity.v2_0 import fakes as identity_fakes
+from openstackclient.tests.unit.volume.v1 import fakes as volume_fakes
from openstackclient.volume.v1 import volume
diff --git a/openstackclient/tests/unit/volume/v2/__init__.py b/openstackclient/tests/unit/volume/v2/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/openstackclient/tests/unit/volume/v2/__init__.py
diff --git a/openstackclient/tests/volume/v2/fakes.py b/openstackclient/tests/unit/volume/v2/fakes.py
index 49384bd8..a958c468 100644
--- a/openstackclient/tests/volume/v2/fakes.py
+++ b/openstackclient/tests/unit/volume/v2/fakes.py
@@ -19,10 +19,10 @@ import uuid
from osc_lib import utils as common_utils
-from openstackclient.tests import fakes
-from openstackclient.tests.identity.v3 import fakes as identity_fakes
-from openstackclient.tests.image.v2 import fakes as image_fakes
-from openstackclient.tests import utils
+from openstackclient.tests.unit import fakes
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
+from openstackclient.tests.unit.image.v2 import fakes as image_fakes
+from openstackclient.tests.unit import utils
class FakeTransfer(object):
diff --git a/openstackclient/tests/volume/v2/test_backup.py b/openstackclient/tests/unit/volume/v2/test_backup.py
index 67064352..45633870 100644
--- a/openstackclient/tests/volume/v2/test_backup.py
+++ b/openstackclient/tests/unit/volume/v2/test_backup.py
@@ -18,7 +18,7 @@ from mock import call
from osc_lib import exceptions
from osc_lib import utils
-from openstackclient.tests.volume.v2 import fakes as volume_fakes
+from openstackclient.tests.unit.volume.v2 import fakes as volume_fakes
from openstackclient.volume.v2 import backup
diff --git a/openstackclient/tests/volume/v2/test_qos_specs.py b/openstackclient/tests/unit/volume/v2/test_qos_specs.py
index 56b8ae03..7597e852 100644
--- a/openstackclient/tests/volume/v2/test_qos_specs.py
+++ b/openstackclient/tests/unit/volume/v2/test_qos_specs.py
@@ -19,7 +19,7 @@ from mock import call
from osc_lib import exceptions
from osc_lib import utils
-from openstackclient.tests.volume.v2 import fakes as volume_fakes
+from openstackclient.tests.unit.volume.v2 import fakes as volume_fakes
from openstackclient.volume.v2 import qos_specs
diff --git a/openstackclient/tests/volume/v2/test_service.py b/openstackclient/tests/unit/volume/v2/test_service.py
index 5959a5e3..3e9b2df9 100644
--- a/openstackclient/tests/volume/v2/test_service.py
+++ b/openstackclient/tests/unit/volume/v2/test_service.py
@@ -14,7 +14,7 @@
from osc_lib import exceptions
-from openstackclient.tests.volume.v2 import fakes as service_fakes
+from openstackclient.tests.unit.volume.v2 import fakes as service_fakes
from openstackclient.volume.v2 import service
diff --git a/openstackclient/tests/volume/v2/test_snapshot.py b/openstackclient/tests/unit/volume/v2/test_snapshot.py
index 3eb740ba..333d8d72 100644
--- a/openstackclient/tests/volume/v2/test_snapshot.py
+++ b/openstackclient/tests/unit/volume/v2/test_snapshot.py
@@ -19,7 +19,7 @@ from mock import call
from osc_lib import exceptions
from osc_lib import utils
-from openstackclient.tests.volume.v2 import fakes as volume_fakes
+from openstackclient.tests.unit.volume.v2 import fakes as volume_fakes
from openstackclient.volume.v2 import snapshot
diff --git a/openstackclient/tests/volume/v2/test_transfer_request.py b/openstackclient/tests/unit/volume/v2/test_transfer_request.py
index ea39caa7..32108c02 100644
--- a/openstackclient/tests/volume/v2/test_transfer_request.py
+++ b/openstackclient/tests/unit/volume/v2/test_transfer_request.py
@@ -13,7 +13,7 @@
#
-from openstackclient.tests.volume.v2 import fakes as transfer_fakes
+from openstackclient.tests.unit.volume.v2 import fakes as transfer_fakes
from openstackclient.volume.v2 import volume_transfer_request
diff --git a/openstackclient/tests/volume/v2/test_type.py b/openstackclient/tests/unit/volume/v2/test_type.py
index b0316aef..84f87e3b 100644
--- a/openstackclient/tests/volume/v2/test_type.py
+++ b/openstackclient/tests/unit/volume/v2/test_type.py
@@ -17,9 +17,9 @@ import mock
from osc_lib import exceptions
from osc_lib import utils
-from openstackclient.tests.identity.v3 import fakes as identity_fakes
-from openstackclient.tests import utils as tests_utils
-from openstackclient.tests.volume.v2 import fakes as volume_fakes
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
+from openstackclient.tests.unit import utils as tests_utils
+from openstackclient.tests.unit.volume.v2 import fakes as volume_fakes
from openstackclient.volume.v2 import volume_type
diff --git a/openstackclient/tests/volume/v2/test_volume.py b/openstackclient/tests/unit/volume/v2/test_volume.py
index 74181a25..66f8f74d 100644
--- a/openstackclient/tests/volume/v2/test_volume.py
+++ b/openstackclient/tests/unit/volume/v2/test_volume.py
@@ -18,9 +18,9 @@ from mock import call
from osc_lib import exceptions
from osc_lib import utils
-from openstackclient.tests.identity.v3 import fakes as identity_fakes
-from openstackclient.tests.image.v2 import fakes as image_fakes
-from openstackclient.tests.volume.v2 import fakes as volume_fakes
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
+from openstackclient.tests.unit.image.v2 import fakes as image_fakes
+from openstackclient.tests.unit.volume.v2 import fakes as volume_fakes
from openstackclient.volume.v2 import volume