Skip to content

Commit 761657c

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Migrate "network create" command to use SDK."
2 parents 9bff399 + 0b4fb0b commit 761657c

2 files changed

Lines changed: 114 additions & 59 deletions

File tree

openstackclient/network/v2/network.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -114,15 +114,14 @@ def get_parser(self, prog_name):
114114

115115
def take_action(self, parsed_args):
116116
self.log.debug('take_action(%s)' % parsed_args)
117+
self.app.client_manager.network = \
118+
_make_client_sdk(self.app.client_manager)
117119
client = self.app.client_manager.network
118120
body = self.get_body(parsed_args)
119-
create_method = getattr(client, "create_network")
120-
data = create_method(body)['network']
121-
if data:
122-
data = _prep_network_detail(data)
123-
else:
124-
data = {'': ''}
125-
return zip(*sorted(six.iteritems(data)))
121+
obj = client.create_network(**body)
122+
columns = sorted(obj.keys())
123+
data = utils.get_item_properties(obj, columns, formatters=_formatters)
124+
return (tuple(columns), data)
126125

127126
def get_body(self, parsed_args):
128127
body = {'name': str(parsed_args.name),
@@ -137,7 +136,7 @@ def get_body(self, parsed_args):
137136
parsed_args.project_domain,
138137
).id
139138
body['tenant_id'] = project_id
140-
return {'network': body}
139+
return body
141140

142141

143142
class DeleteNetwork(command.Command):

openstackclient/tests/network/v2/test_network.py

Lines changed: 107 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,38 @@ def setUp(self):
7171
self.api = self.app.client_manager.network.api
7272

7373

74+
@mock.patch('openstackclient.network.v2.network._make_client_sdk')
7475
class TestCreateNetworkIdentityV3(TestNetwork):
7576

77+
# The new network created.
78+
_network = network_fakes.FakeNetwork.create_one_network(
79+
attrs={'tenant_id': identity_fakes_v3.project_id}
80+
)
81+
82+
columns = (
83+
'admin_state_up',
84+
'id',
85+
'name',
86+
'router_external',
87+
'status',
88+
'subnets',
89+
'tenant_id',
90+
)
91+
92+
data = (
93+
network._format_admin_state(_network.admin_state_up),
94+
_network.id,
95+
_network.name,
96+
network._format_router_external(_network.router_external),
97+
_network.status,
98+
utils.format_list(_network.subnets),
99+
_network.tenant_id,
100+
)
101+
76102
def setUp(self):
77103
super(TestCreateNetworkIdentityV3, self).setUp()
78104

79-
self.new_network = mock.Mock(return_value=copy.deepcopy(RESPONSE))
80-
self.network.create_network = self.new_network
105+
self.network.create_network = mock.Mock(return_value=self._network)
81106

82107
# Get the command object to test
83108
self.cmd = network.CreateNetwork(self.app, self.namespace)
@@ -106,89 +131,117 @@ def setUp(self):
106131
loaded=True,
107132
)
108133

109-
def test_create_no_options(self):
134+
def test_create_no_options(self, _make_client_sdk):
135+
_make_client_sdk.return_value = self.app.client_manager.network
136+
110137
arglist = [
111-
FAKE_NAME,
138+
self._network.name,
112139
]
113140
verifylist = [
114-
('name', FAKE_NAME),
141+
('name', self._network.name),
115142
('admin_state', True),
116143
('shared', None),
117144
('project', None),
118145
]
119146

120147
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
121-
result = list(self.cmd.take_action(parsed_args))
148+
columns, data = self.cmd.take_action(parsed_args)
122149

123-
self.network.create_network.assert_called_with({
124-
RESOURCE: {
125-
'admin_state_up': True,
126-
'name': FAKE_NAME,
127-
}
150+
self.network.create_network.assert_called_with(**{
151+
'admin_state_up': True,
152+
'name': self._network.name,
128153
})
129-
self.assertEqual(FILTERED, result)
154+
self.assertEqual(self.columns, columns)
155+
self.assertEqual(self.data, data)
156+
157+
def test_create_all_options(self, _make_client_sdk):
158+
_make_client_sdk.return_value = self.app.client_manager.network
130159

131-
def test_create_all_options(self):
132160
arglist = [
133161
"--disable",
134162
"--share",
135163
"--project", identity_fakes_v3.project_name,
136164
"--project-domain", identity_fakes_v3.domain_name,
137-
FAKE_NAME,
165+
self._network.name,
138166
]
139167
verifylist = [
140168
('admin_state', False),
141169
('shared', True),
142170
('project', identity_fakes_v3.project_name),
143171
('project_domain', identity_fakes_v3.domain_name),
144-
('name', FAKE_NAME),
172+
('name', self._network.name),
145173
]
146174

147175
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
148-
result = list(self.cmd.take_action(parsed_args))
176+
columns, data = (self.cmd.take_action(parsed_args))
149177

150-
self.network.create_network.assert_called_with({
151-
RESOURCE: {
152-
'admin_state_up': False,
153-
'name': FAKE_NAME,
154-
'shared': True,
155-
'tenant_id': identity_fakes_v3.project_id,
156-
}
178+
self.network.create_network.assert_called_with(**{
179+
'admin_state_up': False,
180+
'name': self._network.name,
181+
'shared': True,
182+
'tenant_id': identity_fakes_v3.project_id,
157183
})
158-
self.assertEqual(FILTERED, result)
184+
self.assertEqual(self.columns, columns)
185+
self.assertEqual(self.data, data)
186+
187+
def test_create_other_options(self, _make_client_sdk):
188+
_make_client_sdk.return_value = self.app.client_manager.network
159189

160-
def test_create_other_options(self):
161190
arglist = [
162191
"--enable",
163192
"--no-share",
164-
FAKE_NAME,
193+
self._network.name,
165194
]
166195
verifylist = [
167196
('admin_state', True),
168197
('shared', False),
169-
('name', FAKE_NAME),
198+
('name', self._network.name),
170199
]
171200

172201
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
173-
result = list(self.cmd.take_action(parsed_args))
202+
columns, data = self.cmd.take_action(parsed_args)
174203

175-
self.network.create_network.assert_called_with({
176-
RESOURCE: {
177-
'admin_state_up': True,
178-
'name': FAKE_NAME,
179-
'shared': False,
180-
}
204+
self.network.create_network.assert_called_with(**{
205+
'admin_state_up': True,
206+
'name': self._network.name,
207+
'shared': False,
181208
})
182-
self.assertEqual(FILTERED, result)
209+
self.assertEqual(self.columns, columns)
210+
self.assertEqual(self.data, data)
183211

184212

213+
@mock.patch('openstackclient.network.v2.network._make_client_sdk')
185214
class TestCreateNetworkIdentityV2(TestNetwork):
186215

216+
# The new network created.
217+
_network = network_fakes.FakeNetwork.create_one_network(
218+
attrs={'tenant_id': identity_fakes_v2.project_id}
219+
)
220+
221+
columns = (
222+
'admin_state_up',
223+
'id',
224+
'name',
225+
'router_external',
226+
'status',
227+
'subnets',
228+
'tenant_id',
229+
)
230+
231+
data = (
232+
network._format_admin_state(_network.admin_state_up),
233+
_network.id,
234+
_network.name,
235+
network._format_router_external(_network.router_external),
236+
_network.status,
237+
utils.format_list(_network.subnets),
238+
_network.tenant_id,
239+
)
240+
187241
def setUp(self):
188242
super(TestCreateNetworkIdentityV2, self).setUp()
189243

190-
self.new_network = mock.Mock(return_value=copy.deepcopy(RESPONSE))
191-
self.network.create_network = self.new_network
244+
self.network.create_network = mock.Mock(return_value=self._network)
192245

193246
# Get the command object to test
194247
self.cmd = network.CreateNetwork(self.app, self.namespace)
@@ -211,42 +264,45 @@ def setUp(self):
211264

212265
# There is no DomainManager Mock in fake identity v2.
213266

214-
def test_create_with_project_identityv2(self):
267+
def test_create_with_project_identityv2(self, _make_client_sdk):
268+
_make_client_sdk.return_value = self.app.client_manager.network
269+
215270
arglist = [
216271
"--project", identity_fakes_v2.project_name,
217-
FAKE_NAME,
272+
self._network.name,
218273
]
219274
verifylist = [
220275
('admin_state', True),
221276
('shared', None),
222-
('name', FAKE_NAME),
277+
('name', self._network.name),
223278
('project', identity_fakes_v2.project_name),
224279
]
225280

226281
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
227-
result = list(self.cmd.take_action(parsed_args))
282+
columns, data = self.cmd.take_action(parsed_args)
228283

229-
self.network.create_network.assert_called_with({
230-
RESOURCE: {
231-
'admin_state_up': True,
232-
'name': FAKE_NAME,
233-
'tenant_id': identity_fakes_v2.project_id,
234-
}
284+
self.network.create_network.assert_called_with(**{
285+
'admin_state_up': True,
286+
'name': self._network.name,
287+
'tenant_id': identity_fakes_v2.project_id,
235288
})
236-
self.assertEqual(FILTERED, result)
289+
self.assertEqual(self.columns, columns)
290+
self.assertEqual(self.data, data)
291+
292+
def test_create_with_domain_identityv2(self, _make_client_sdk):
293+
_make_client_sdk.return_value = self.app.client_manager.network
237294

238-
def test_create_with_domain_identityv2(self):
239295
arglist = [
240296
"--project", identity_fakes_v3.project_name,
241297
"--project-domain", identity_fakes_v3.domain_name,
242-
FAKE_NAME,
298+
self._network.name,
243299
]
244300
verifylist = [
245301
('admin_state', True),
246302
('shared', None),
247303
('project', identity_fakes_v3.project_name),
248304
('project_domain', identity_fakes_v3.domain_name),
249-
('name', FAKE_NAME),
305+
('name', self._network.name),
250306
]
251307

252308
parsed_args = self.check_parser(self.cmd, arglist, verifylist)

0 commit comments

Comments
 (0)