Skip to content

Commit 805e8f8

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Migrate network client to SDK."
2 parents 7663549 + 4be716e commit 805e8f8

6 files changed

Lines changed: 48 additions & 163 deletions

File tree

openstackclient/network/client.py

Lines changed: 10 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313

1414
import logging
1515

16+
from openstack import connection
17+
1618
from openstackclient.common import utils
1719

1820

@@ -22,62 +24,18 @@
2224
API_VERSION_OPTION = 'os_network_api_version'
2325
API_NAME = "network"
2426
API_VERSIONS = {
25-
"2.0": "neutronclient.v2_0.client.Client",
26-
"2": "neutronclient.v2_0.client.Client",
27-
}
28-
# Translate our API version to auth plugin version prefix
29-
API_VERSION_MAP = {
30-
'2.0': 'v2.0',
31-
'2': 'v2.0',
32-
}
33-
34-
NETWORK_API_TYPE = 'network'
35-
NETWORK_API_VERSIONS = {
36-
'2.0': 'openstackclient.api.network_v2.APIv2',
37-
'2': 'openstackclient.api.network_v2.APIv2',
27+
"2.0": "openstack.connection.Connection",
28+
"2": "openstack.connection.Connection",
3829
}
3930

4031

4132
def make_client(instance):
42-
"""Returns an network service client"""
43-
network_client = utils.get_client_class(
44-
API_NAME,
45-
instance._api_version[API_NAME],
46-
API_VERSIONS)
47-
LOG.debug('Instantiating network client: %s', network_client)
48-
49-
endpoint = instance.get_endpoint_for_service_type(
50-
API_NAME,
51-
region_name=instance._region_name,
52-
interface=instance._interface,
53-
)
54-
55-
# Remember endpoint_type only if it is set
56-
kwargs = utils.build_kwargs_dict('endpoint_type', instance._interface)
57-
58-
client = network_client(
59-
session=instance.session,
60-
region_name=instance._region_name,
61-
**kwargs
62-
)
63-
64-
network_api = utils.get_client_class(
65-
API_NAME,
66-
instance._api_version[API_NAME],
67-
NETWORK_API_VERSIONS)
68-
LOG.debug('Instantiating network api: %s', network_client)
69-
70-
# v2 is hard-coded until discovery is completed, neutron only has one atm
71-
client.api = network_api(
72-
session=instance.session,
73-
service_type=NETWORK_API_TYPE,
74-
endpoint='/'.join([
75-
endpoint,
76-
API_VERSION_MAP[instance._api_version[API_NAME]],
77-
])
78-
)
79-
80-
return client
33+
"""Returns a network proxy"""
34+
conn = connection.Connection(authenticator=instance.session.auth)
35+
LOG.debug('Connection: %s', conn)
36+
LOG.debug('Network client initialized using OpenStack SDK: %s',
37+
conn.network)
38+
return conn.network
8139

8240

8341
def build_option_parser(parser):

openstackclient/network/common.py

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111
# under the License.
1212
#
1313

14-
from openstackclient.common import exceptions
15-
1614

1715
def find(client, resource, resources, name_or_id, name_attr='name'):
1816
"""Find a network resource
@@ -26,22 +24,6 @@ def find(client, resource, resources, name_or_id, name_attr='name'):
2624
For example:
2725
n = find(netclient, 'network', 'networks', 'matrix')
2826
"""
29-
list_method = getattr(client, "list_%s" % resources)
30-
31-
# Search by name
32-
kwargs = {name_attr: name_or_id, 'fields': 'id'}
33-
data = list_method(**kwargs)
34-
info = data[resources]
35-
if len(info) == 1:
36-
return info[0]['id']
37-
if len(info) > 1:
38-
msg = "More than one %s exists with the name '%s'."
39-
raise exceptions.CommandError(msg % (resource, name_or_id))
40-
41-
# Search by id
42-
data = list_method(id=name_or_id, fields='id')
43-
info = data[resources]
44-
if len(info) == 1:
45-
return info[0]['id']
46-
msg = "No %s with a name or ID of '%s' exists." % (resource, name_or_id)
47-
raise exceptions.CommandError(msg)
27+
list_method = getattr(client, "find_%s" % resource)
28+
data = list_method(name_or_id, ignore_missing=False)
29+
return data.id

openstackclient/network/v2/network.py

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919
from cliff import lister
2020
from cliff import show
2121

22-
from openstack import connection
23-
2422
from openstackclient.common import exceptions
2523
from openstackclient.common import utils
2624
from openstackclient.identity import common as identity_common
@@ -41,12 +39,6 @@ def _format_router_external(item):
4139
}
4240

4341

44-
def _make_client_sdk(instance):
45-
"""Return a network proxy"""
46-
conn = connection.Connection(authenticator=instance.session.auth)
47-
return conn.network
48-
49-
5042
class CreateNetwork(show.ShowOne):
5143
"""Create new network"""
5244

@@ -96,8 +88,6 @@ def get_parser(self, prog_name):
9688

9789
def take_action(self, parsed_args):
9890
self.log.debug('take_action(%s)' % parsed_args)
99-
self.app.client_manager.network = \
100-
_make_client_sdk(self.app.client_manager)
10191
client = self.app.client_manager.network
10292
body = self.get_body(parsed_args)
10393
obj = client.create_network(**body)
@@ -138,8 +128,6 @@ def get_parser(self, prog_name):
138128

139129
def take_action(self, parsed_args):
140130
self.log.debug('take_action(%s)' % parsed_args)
141-
self.app.client_manager.network = \
142-
_make_client_sdk(self.app.client_manager)
143131
client = self.app.client_manager.network
144132
for network in parsed_args.networks:
145133
obj = client.find_network(network)
@@ -170,8 +158,6 @@ def get_parser(self, prog_name):
170158

171159
def take_action(self, parsed_args):
172160
self.log.debug('take_action(%s)' % parsed_args)
173-
self.app.client_manager.network = \
174-
_make_client_sdk(self.app.client_manager)
175161
client = self.app.client_manager.network
176162

177163
if parsed_args.long:
@@ -270,8 +256,6 @@ def get_parser(self, prog_name):
270256

271257
def take_action(self, parsed_args):
272258
self.log.debug('take_action(%s)' % parsed_args)
273-
self.app.client_manager.network = \
274-
_make_client_sdk(self.app.client_manager)
275259
client = self.app.client_manager.network
276260
obj = client.find_network(parsed_args.identifier, ignore_missing=False)
277261

@@ -306,8 +290,6 @@ def get_parser(self, prog_name):
306290

307291
def take_action(self, parsed_args):
308292
self.log.debug('take_action(%s)' % parsed_args)
309-
self.app.client_manager.network = \
310-
_make_client_sdk(self.app.client_manager)
311293
client = self.app.client_manager.network
312294
obj = client.find_network(parsed_args.identifier, ignore_missing=False)
313295
columns = sorted(obj.keys())

openstackclient/tests/compute/v2/test_server.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,18 @@ def test_server_create_with_network(self):
231231
list_networks.return_value = {'networks': [{'id': 'net1_uuid'}]}
232232
list_ports.return_value = {'ports': [{'id': 'port1_uuid'}]}
233233

234+
# Mock sdk APIs.
235+
_network = mock.Mock()
236+
_network.id = 'net1_uuid'
237+
_port = mock.Mock()
238+
_port.id = 'port1_uuid'
239+
find_network = mock.Mock()
240+
find_port = mock.Mock()
241+
find_network.return_value = _network
242+
find_port.return_value = _port
243+
self.app.client_manager.network.find_network = find_network
244+
self.app.client_manager.network.find_port = find_port
245+
234246
# DisplayCommandBase.take_action() returns two tuples
235247
columns, data = self.cmd.take_action(parsed_args)
236248

openstackclient/tests/network/test_common.py

Lines changed: 9 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
import mock
1515

16-
from openstackclient.common import exceptions
1716
from openstackclient.network import common
1817
from openstackclient.tests import utils
1918

@@ -28,45 +27,31 @@ def setUp(self):
2827
super(TestFind, self).setUp()
2928
self.mock_client = mock.Mock()
3029
self.list_resources = mock.Mock()
31-
self.mock_client.list_resources = self.list_resources
32-
self.matrix = {'id': ID}
30+
self.mock_client.find_resource = self.list_resources
31+
self.resource = mock.Mock()
32+
self.resource.id = ID
3333

3434
def test_name(self):
35-
self.list_resources.return_value = {RESOURCES: [self.matrix]}
35+
self.list_resources.return_value = self.resource
3636

3737
result = common.find(self.mock_client, RESOURCE, RESOURCES, NAME)
3838

3939
self.assertEqual(ID, result)
40-
self.list_resources.assert_called_with(fields='id', name=NAME)
40+
self.list_resources.assert_called_with(NAME, ignore_missing=False)
4141

4242
def test_id(self):
43-
self.list_resources.side_effect = [{RESOURCES: []},
44-
{RESOURCES: [self.matrix]}]
43+
self.list_resources.return_value = self.resource
4544

4645
result = common.find(self.mock_client, RESOURCE, RESOURCES, NAME)
4746

4847
self.assertEqual(ID, result)
49-
self.list_resources.assert_called_with(fields='id', id=NAME)
48+
self.list_resources.assert_called_with(NAME, ignore_missing=False)
5049

5150
def test_nameo(self):
52-
self.list_resources.return_value = {RESOURCES: [self.matrix]}
51+
self.list_resources.return_value = self.resource
5352

5453
result = common.find(self.mock_client, RESOURCE, RESOURCES, NAME,
5554
name_attr='nameo')
5655

5756
self.assertEqual(ID, result)
58-
self.list_resources.assert_called_with(fields='id', nameo=NAME)
59-
60-
def test_dups(self):
61-
dup = {'id': 'Larry'}
62-
self.list_resources.return_value = {RESOURCES: [self.matrix, dup]}
63-
64-
self.assertRaises(exceptions.CommandError, common.find,
65-
self.mock_client, RESOURCE, RESOURCES, NAME)
66-
67-
def test_nada(self):
68-
self.list_resources.side_effect = [{RESOURCES: []},
69-
{RESOURCES: []}]
70-
71-
self.assertRaises(exceptions.CommandError, common.find,
72-
self.mock_client, RESOURCE, RESOURCES, NAME)
57+
self.list_resources.assert_called_with(NAME, ignore_missing=False)

0 commit comments

Comments
 (0)