Merge "Migrate network client to SDK."
This commit is contained in:
commit
805e8f89c9
openstackclient
network
tests
@ -13,6 +13,8 @@
|
||||
|
||||
import logging
|
||||
|
||||
from openstack import connection
|
||||
|
||||
from openstackclient.common import utils
|
||||
|
||||
|
||||
@ -22,62 +24,18 @@ DEFAULT_API_VERSION = '2.0'
|
||||
API_VERSION_OPTION = 'os_network_api_version'
|
||||
API_NAME = "network"
|
||||
API_VERSIONS = {
|
||||
"2.0": "neutronclient.v2_0.client.Client",
|
||||
"2": "neutronclient.v2_0.client.Client",
|
||||
}
|
||||
# Translate our API version to auth plugin version prefix
|
||||
API_VERSION_MAP = {
|
||||
'2.0': 'v2.0',
|
||||
'2': 'v2.0',
|
||||
}
|
||||
|
||||
NETWORK_API_TYPE = 'network'
|
||||
NETWORK_API_VERSIONS = {
|
||||
'2.0': 'openstackclient.api.network_v2.APIv2',
|
||||
'2': 'openstackclient.api.network_v2.APIv2',
|
||||
"2.0": "openstack.connection.Connection",
|
||||
"2": "openstack.connection.Connection",
|
||||
}
|
||||
|
||||
|
||||
def make_client(instance):
|
||||
"""Returns an network service client"""
|
||||
network_client = utils.get_client_class(
|
||||
API_NAME,
|
||||
instance._api_version[API_NAME],
|
||||
API_VERSIONS)
|
||||
LOG.debug('Instantiating network client: %s', network_client)
|
||||
|
||||
endpoint = instance.get_endpoint_for_service_type(
|
||||
API_NAME,
|
||||
region_name=instance._region_name,
|
||||
interface=instance._interface,
|
||||
)
|
||||
|
||||
# Remember endpoint_type only if it is set
|
||||
kwargs = utils.build_kwargs_dict('endpoint_type', instance._interface)
|
||||
|
||||
client = network_client(
|
||||
session=instance.session,
|
||||
region_name=instance._region_name,
|
||||
**kwargs
|
||||
)
|
||||
|
||||
network_api = utils.get_client_class(
|
||||
API_NAME,
|
||||
instance._api_version[API_NAME],
|
||||
NETWORK_API_VERSIONS)
|
||||
LOG.debug('Instantiating network api: %s', network_client)
|
||||
|
||||
# v2 is hard-coded until discovery is completed, neutron only has one atm
|
||||
client.api = network_api(
|
||||
session=instance.session,
|
||||
service_type=NETWORK_API_TYPE,
|
||||
endpoint='/'.join([
|
||||
endpoint,
|
||||
API_VERSION_MAP[instance._api_version[API_NAME]],
|
||||
])
|
||||
)
|
||||
|
||||
return client
|
||||
"""Returns a network proxy"""
|
||||
conn = connection.Connection(authenticator=instance.session.auth)
|
||||
LOG.debug('Connection: %s', conn)
|
||||
LOG.debug('Network client initialized using OpenStack SDK: %s',
|
||||
conn.network)
|
||||
return conn.network
|
||||
|
||||
|
||||
def build_option_parser(parser):
|
||||
|
@ -11,8 +11,6 @@
|
||||
# under the License.
|
||||
#
|
||||
|
||||
from openstackclient.common import exceptions
|
||||
|
||||
|
||||
def find(client, resource, resources, name_or_id, name_attr='name'):
|
||||
"""Find a network resource
|
||||
@ -26,22 +24,6 @@ def find(client, resource, resources, name_or_id, name_attr='name'):
|
||||
For example:
|
||||
n = find(netclient, 'network', 'networks', 'matrix')
|
||||
"""
|
||||
list_method = getattr(client, "list_%s" % resources)
|
||||
|
||||
# Search by name
|
||||
kwargs = {name_attr: name_or_id, 'fields': 'id'}
|
||||
data = list_method(**kwargs)
|
||||
info = data[resources]
|
||||
if len(info) == 1:
|
||||
return info[0]['id']
|
||||
if len(info) > 1:
|
||||
msg = "More than one %s exists with the name '%s'."
|
||||
raise exceptions.CommandError(msg % (resource, name_or_id))
|
||||
|
||||
# Search by id
|
||||
data = list_method(id=name_or_id, fields='id')
|
||||
info = data[resources]
|
||||
if len(info) == 1:
|
||||
return info[0]['id']
|
||||
msg = "No %s with a name or ID of '%s' exists." % (resource, name_or_id)
|
||||
raise exceptions.CommandError(msg)
|
||||
list_method = getattr(client, "find_%s" % resource)
|
||||
data = list_method(name_or_id, ignore_missing=False)
|
||||
return data.id
|
||||
|
@ -19,8 +19,6 @@ from cliff import command
|
||||
from cliff import lister
|
||||
from cliff import show
|
||||
|
||||
from openstack import connection
|
||||
|
||||
from openstackclient.common import exceptions
|
||||
from openstackclient.common import utils
|
||||
from openstackclient.identity import common as identity_common
|
||||
@ -41,12 +39,6 @@ _formatters = {
|
||||
}
|
||||
|
||||
|
||||
def _make_client_sdk(instance):
|
||||
"""Return a network proxy"""
|
||||
conn = connection.Connection(authenticator=instance.session.auth)
|
||||
return conn.network
|
||||
|
||||
|
||||
class CreateNetwork(show.ShowOne):
|
||||
"""Create new network"""
|
||||
|
||||
@ -96,8 +88,6 @@ class CreateNetwork(show.ShowOne):
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
self.log.debug('take_action(%s)' % parsed_args)
|
||||
self.app.client_manager.network = \
|
||||
_make_client_sdk(self.app.client_manager)
|
||||
client = self.app.client_manager.network
|
||||
body = self.get_body(parsed_args)
|
||||
obj = client.create_network(**body)
|
||||
@ -138,8 +128,6 @@ class DeleteNetwork(command.Command):
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
self.log.debug('take_action(%s)' % parsed_args)
|
||||
self.app.client_manager.network = \
|
||||
_make_client_sdk(self.app.client_manager)
|
||||
client = self.app.client_manager.network
|
||||
for network in parsed_args.networks:
|
||||
obj = client.find_network(network)
|
||||
@ -170,8 +158,6 @@ class ListNetwork(lister.Lister):
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
self.log.debug('take_action(%s)' % parsed_args)
|
||||
self.app.client_manager.network = \
|
||||
_make_client_sdk(self.app.client_manager)
|
||||
client = self.app.client_manager.network
|
||||
|
||||
if parsed_args.long:
|
||||
@ -270,8 +256,6 @@ class SetNetwork(command.Command):
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
self.log.debug('take_action(%s)' % parsed_args)
|
||||
self.app.client_manager.network = \
|
||||
_make_client_sdk(self.app.client_manager)
|
||||
client = self.app.client_manager.network
|
||||
obj = client.find_network(parsed_args.identifier, ignore_missing=False)
|
||||
|
||||
@ -306,8 +290,6 @@ class ShowNetwork(show.ShowOne):
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
self.log.debug('take_action(%s)' % parsed_args)
|
||||
self.app.client_manager.network = \
|
||||
_make_client_sdk(self.app.client_manager)
|
||||
client = self.app.client_manager.network
|
||||
obj = client.find_network(parsed_args.identifier, ignore_missing=False)
|
||||
columns = sorted(obj.keys())
|
||||
|
@ -231,6 +231,18 @@ class TestServerCreate(TestServer):
|
||||
list_networks.return_value = {'networks': [{'id': 'net1_uuid'}]}
|
||||
list_ports.return_value = {'ports': [{'id': 'port1_uuid'}]}
|
||||
|
||||
# Mock sdk APIs.
|
||||
_network = mock.Mock()
|
||||
_network.id = 'net1_uuid'
|
||||
_port = mock.Mock()
|
||||
_port.id = 'port1_uuid'
|
||||
find_network = mock.Mock()
|
||||
find_port = mock.Mock()
|
||||
find_network.return_value = _network
|
||||
find_port.return_value = _port
|
||||
self.app.client_manager.network.find_network = find_network
|
||||
self.app.client_manager.network.find_port = find_port
|
||||
|
||||
# DisplayCommandBase.take_action() returns two tuples
|
||||
columns, data = self.cmd.take_action(parsed_args)
|
||||
|
||||
|
@ -13,7 +13,6 @@
|
||||
|
||||
import mock
|
||||
|
||||
from openstackclient.common import exceptions
|
||||
from openstackclient.network import common
|
||||
from openstackclient.tests import utils
|
||||
|
||||
@ -28,45 +27,31 @@ class TestFind(utils.TestCase):
|
||||
super(TestFind, self).setUp()
|
||||
self.mock_client = mock.Mock()
|
||||
self.list_resources = mock.Mock()
|
||||
self.mock_client.list_resources = self.list_resources
|
||||
self.matrix = {'id': ID}
|
||||
self.mock_client.find_resource = self.list_resources
|
||||
self.resource = mock.Mock()
|
||||
self.resource.id = ID
|
||||
|
||||
def test_name(self):
|
||||
self.list_resources.return_value = {RESOURCES: [self.matrix]}
|
||||
self.list_resources.return_value = self.resource
|
||||
|
||||
result = common.find(self.mock_client, RESOURCE, RESOURCES, NAME)
|
||||
|
||||
self.assertEqual(ID, result)
|
||||
self.list_resources.assert_called_with(fields='id', name=NAME)
|
||||
self.list_resources.assert_called_with(NAME, ignore_missing=False)
|
||||
|
||||
def test_id(self):
|
||||
self.list_resources.side_effect = [{RESOURCES: []},
|
||||
{RESOURCES: [self.matrix]}]
|
||||
self.list_resources.return_value = self.resource
|
||||
|
||||
result = common.find(self.mock_client, RESOURCE, RESOURCES, NAME)
|
||||
|
||||
self.assertEqual(ID, result)
|
||||
self.list_resources.assert_called_with(fields='id', id=NAME)
|
||||
self.list_resources.assert_called_with(NAME, ignore_missing=False)
|
||||
|
||||
def test_nameo(self):
|
||||
self.list_resources.return_value = {RESOURCES: [self.matrix]}
|
||||
self.list_resources.return_value = self.resource
|
||||
|
||||
result = common.find(self.mock_client, RESOURCE, RESOURCES, NAME,
|
||||
name_attr='nameo')
|
||||
|
||||
self.assertEqual(ID, result)
|
||||
self.list_resources.assert_called_with(fields='id', nameo=NAME)
|
||||
|
||||
def test_dups(self):
|
||||
dup = {'id': 'Larry'}
|
||||
self.list_resources.return_value = {RESOURCES: [self.matrix, dup]}
|
||||
|
||||
self.assertRaises(exceptions.CommandError, common.find,
|
||||
self.mock_client, RESOURCE, RESOURCES, NAME)
|
||||
|
||||
def test_nada(self):
|
||||
self.list_resources.side_effect = [{RESOURCES: []},
|
||||
{RESOURCES: []}]
|
||||
|
||||
self.assertRaises(exceptions.CommandError, common.find,
|
||||
self.mock_client, RESOURCE, RESOURCES, NAME)
|
||||
self.list_resources.assert_called_with(NAME, ignore_missing=False)
|
||||
|
@ -72,7 +72,6 @@ class TestNetwork(network_fakes.TestNetworkV2):
|
||||
self.api = self.app.client_manager.network.api
|
||||
|
||||
|
||||
@mock.patch('openstackclient.network.v2.network._make_client_sdk')
|
||||
class TestCreateNetworkIdentityV3(TestNetwork):
|
||||
|
||||
# The new network created.
|
||||
@ -132,9 +131,7 @@ class TestCreateNetworkIdentityV3(TestNetwork):
|
||||
loaded=True,
|
||||
)
|
||||
|
||||
def test_create_no_options(self, _make_client_sdk):
|
||||
_make_client_sdk.return_value = self.app.client_manager.network
|
||||
|
||||
def test_create_no_options(self):
|
||||
arglist = [
|
||||
self._network.name,
|
||||
]
|
||||
@ -155,9 +152,7 @@ class TestCreateNetworkIdentityV3(TestNetwork):
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, data)
|
||||
|
||||
def test_create_all_options(self, _make_client_sdk):
|
||||
_make_client_sdk.return_value = self.app.client_manager.network
|
||||
|
||||
def test_create_all_options(self):
|
||||
arglist = [
|
||||
"--disable",
|
||||
"--share",
|
||||
@ -185,9 +180,7 @@ class TestCreateNetworkIdentityV3(TestNetwork):
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, data)
|
||||
|
||||
def test_create_other_options(self, _make_client_sdk):
|
||||
_make_client_sdk.return_value = self.app.client_manager.network
|
||||
|
||||
def test_create_other_options(self):
|
||||
arglist = [
|
||||
"--enable",
|
||||
"--no-share",
|
||||
@ -211,7 +204,6 @@ class TestCreateNetworkIdentityV3(TestNetwork):
|
||||
self.assertEqual(self.data, data)
|
||||
|
||||
|
||||
@mock.patch('openstackclient.network.v2.network._make_client_sdk')
|
||||
class TestCreateNetworkIdentityV2(TestNetwork):
|
||||
|
||||
# The new network created.
|
||||
@ -265,9 +257,7 @@ class TestCreateNetworkIdentityV2(TestNetwork):
|
||||
|
||||
# There is no DomainManager Mock in fake identity v2.
|
||||
|
||||
def test_create_with_project_identityv2(self, _make_client_sdk):
|
||||
_make_client_sdk.return_value = self.app.client_manager.network
|
||||
|
||||
def test_create_with_project_identityv2(self):
|
||||
arglist = [
|
||||
"--project", identity_fakes_v2.project_name,
|
||||
self._network.name,
|
||||
@ -290,9 +280,7 @@ class TestCreateNetworkIdentityV2(TestNetwork):
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, data)
|
||||
|
||||
def test_create_with_domain_identityv2(self, _make_client_sdk):
|
||||
_make_client_sdk.return_value = self.app.client_manager.network
|
||||
|
||||
def test_create_with_domain_identityv2(self):
|
||||
arglist = [
|
||||
"--project", identity_fakes_v3.project_name,
|
||||
"--project-domain", identity_fakes_v3.domain_name,
|
||||
@ -315,7 +303,6 @@ class TestCreateNetworkIdentityV2(TestNetwork):
|
||||
)
|
||||
|
||||
|
||||
@mock.patch('openstackclient.network.v2.network._make_client_sdk')
|
||||
class TestDeleteNetwork(TestNetwork):
|
||||
|
||||
# The network to delete.
|
||||
@ -331,9 +318,7 @@ class TestDeleteNetwork(TestNetwork):
|
||||
# Get the command object to test
|
||||
self.cmd = network.DeleteNetwork(self.app, self.namespace)
|
||||
|
||||
def test_delete(self, _make_client_sdk):
|
||||
_make_client_sdk.return_value = self.app.client_manager.network
|
||||
|
||||
def test_delete(self):
|
||||
arglist = [
|
||||
self._network.name,
|
||||
]
|
||||
@ -348,7 +333,6 @@ class TestDeleteNetwork(TestNetwork):
|
||||
self.assertEqual(None, result)
|
||||
|
||||
|
||||
@mock.patch('openstackclient.network.v2.network._make_client_sdk')
|
||||
class TestListNetwork(TestNetwork):
|
||||
|
||||
# The networks going to be listed up.
|
||||
@ -401,9 +385,7 @@ class TestListNetwork(TestNetwork):
|
||||
|
||||
self.network.networks = mock.Mock(return_value=self._network)
|
||||
|
||||
def test_network_list_no_options(self, _make_client_sdk):
|
||||
_make_client_sdk.return_value = self.app.client_manager.network
|
||||
|
||||
def test_network_list_no_options(self):
|
||||
arglist = []
|
||||
verifylist = [
|
||||
('external', False),
|
||||
@ -418,9 +400,7 @@ class TestListNetwork(TestNetwork):
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, list(data))
|
||||
|
||||
def test_list_external(self, _make_client_sdk):
|
||||
_make_client_sdk.return_value = self.app.client_manager.network
|
||||
|
||||
def test_list_external(self):
|
||||
arglist = [
|
||||
'--external',
|
||||
]
|
||||
@ -439,9 +419,7 @@ class TestListNetwork(TestNetwork):
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, list(data))
|
||||
|
||||
def test_network_list_long(self, _make_client_sdk):
|
||||
_make_client_sdk.return_value = self.app.client_manager.network
|
||||
|
||||
def test_network_list_long(self):
|
||||
arglist = [
|
||||
'--long',
|
||||
]
|
||||
@ -459,7 +437,6 @@ class TestListNetwork(TestNetwork):
|
||||
self.assertEqual(self.data_long, list(data))
|
||||
|
||||
|
||||
@mock.patch('openstackclient.network.v2.network._make_client_sdk')
|
||||
class TestSetNetwork(TestNetwork):
|
||||
|
||||
# The network to set.
|
||||
@ -475,9 +452,7 @@ class TestSetNetwork(TestNetwork):
|
||||
# Get the command object to test
|
||||
self.cmd = network.SetNetwork(self.app, self.namespace)
|
||||
|
||||
def test_set_this(self, _make_client_sdk):
|
||||
_make_client_sdk.return_value = self.app.client_manager.network
|
||||
|
||||
def test_set_this(self):
|
||||
self._network.is_dirty = True
|
||||
|
||||
arglist = [
|
||||
@ -499,9 +474,7 @@ class TestSetNetwork(TestNetwork):
|
||||
self.network.update_network.assert_called_with(self._network)
|
||||
self.assertEqual(None, result)
|
||||
|
||||
def test_set_that(self, _make_client_sdk):
|
||||
_make_client_sdk.return_value = self.app.client_manager.network
|
||||
|
||||
def test_set_that(self):
|
||||
self._network.is_dirty = True
|
||||
|
||||
arglist = [
|
||||
@ -521,9 +494,7 @@ class TestSetNetwork(TestNetwork):
|
||||
self.network.update_network.assert_called_with(self._network)
|
||||
self.assertEqual(None, result)
|
||||
|
||||
def test_set_nothing(self, _make_client_sdk):
|
||||
_make_client_sdk.return_value = self.app.client_manager.network
|
||||
|
||||
def test_set_nothing(self):
|
||||
self._network.is_dirty = False
|
||||
|
||||
arglist = [self._network.name, ]
|
||||
@ -534,7 +505,6 @@ class TestSetNetwork(TestNetwork):
|
||||
parsed_args)
|
||||
|
||||
|
||||
@mock.patch('openstackclient.network.v2.network._make_client_sdk')
|
||||
class TestShowNetwork(TestNetwork):
|
||||
|
||||
# The network to set.
|
||||
@ -568,9 +538,7 @@ class TestShowNetwork(TestNetwork):
|
||||
# Get the command object to test
|
||||
self.cmd = network.ShowNetwork(self.app, self.namespace)
|
||||
|
||||
def test_show_no_options(self, _make_client_sdk):
|
||||
_make_client_sdk.return_value = self.app.client_manager.network
|
||||
|
||||
def test_show_no_options(self):
|
||||
arglist = []
|
||||
verifylist = []
|
||||
|
||||
@ -580,9 +548,7 @@ class TestShowNetwork(TestNetwork):
|
||||
except tests_utils.ParserException:
|
||||
pass
|
||||
|
||||
def test_show_all_options(self, _make_client_sdk):
|
||||
_make_client_sdk.return_value = self.app.client_manager.network
|
||||
|
||||
def test_show_all_options(self):
|
||||
arglist = [
|
||||
self._network.name,
|
||||
]
|
||||
|
Loading…
x
Reference in New Issue
Block a user