Skip to content

Commit a51ac0a

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "Added AddNetwork command to server"
2 parents b7388dc + e3ad821 commit a51ac0a

4 files changed

Lines changed: 87 additions & 0 deletions

File tree

openstackclient/compute/v2/server.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,39 @@ def take_action(self, parsed_args):
300300
server.interface_attach(port_id=port_id, net_id=None, fixed_ip=None)
301301

302302

303+
class AddNetwork(command.Command):
304+
_description = _("Add network to server")
305+
306+
def get_parser(self, prog_name):
307+
parser = super(AddNetwork, self).get_parser(prog_name)
308+
parser.add_argument(
309+
"server",
310+
metavar="<server>",
311+
help=_("Server to add the network to (name or ID)"),
312+
)
313+
parser.add_argument(
314+
"network",
315+
metavar="<network>",
316+
help=_("Network to add to the server (name or ID)"),
317+
)
318+
return parser
319+
320+
def take_action(self, parsed_args):
321+
compute_client = self.app.client_manager.compute
322+
323+
server = utils.find_resource(
324+
compute_client.servers, parsed_args.server)
325+
326+
if self.app.client_manager.is_network_endpoint_enabled():
327+
network_client = self.app.client_manager.network
328+
net_id = network_client.find_network(
329+
parsed_args.network, ignore_missing=False).id
330+
else:
331+
net_id = parsed_args.network
332+
333+
server.interface_attach(port_id=None, net_id=net_id, fixed_ip=None)
334+
335+
303336
class AddServerSecurityGroup(command.Command):
304337
_description = _("Add security group to server")
305338

openstackclient/tests/unit/compute/v2/test_server.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,53 @@ def test_server_add_port_no_neutron(self):
232232
self.find_port.assert_not_called()
233233

234234

235+
class TestServerAddNetwork(TestServer):
236+
237+
def setUp(self):
238+
super(TestServerAddNetwork, self).setUp()
239+
240+
# Get the command object to test
241+
self.cmd = server.AddNetwork(self.app, None)
242+
243+
# Set add_fixed_ip method to be tested.
244+
self.methods = {
245+
'interface_attach': None,
246+
}
247+
248+
self.find_network = mock.Mock()
249+
self.app.client_manager.network.find_network = self.find_network
250+
251+
def _test_server_add_network(self, net_id):
252+
servers = self.setup_servers_mock(count=1)
253+
network = 'fake-network'
254+
255+
arglist = [
256+
servers[0].id,
257+
network,
258+
]
259+
verifylist = [
260+
('server', servers[0].id),
261+
('network', network)
262+
]
263+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
264+
265+
result = self.cmd.take_action(parsed_args)
266+
267+
servers[0].interface_attach.assert_called_once_with(
268+
port_id=None, net_id=net_id, fixed_ip=None)
269+
self.assertIsNone(result)
270+
271+
def test_server_add_network(self):
272+
self._test_server_add_network(self.find_network.return_value.id)
273+
self.find_network.assert_called_once_with(
274+
'fake-network', ignore_missing=False)
275+
276+
def test_server_add_network_no_neutron(self):
277+
self.app.client_manager.network_endpoint_enabled = False
278+
self._test_server_add_network('fake-network')
279+
self.find_network.assert_not_called()
280+
281+
235282
@mock.patch(
236283
'openstackclient.api.compute_v2.APIv2.security_group_find'
237284
)
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
features:
3+
- |
4+
Add ``server add network`` command. This command will create a neutron
5+
port from the specified neutron network and attach the port to the
6+
specified instance.

setup.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ openstack.compute.v2 =
104104
server_add_fixed_ip = openstackclient.compute.v2.server:AddFixedIP
105105
server_add_floating_ip = openstackclient.compute.v2.server:AddFloatingIP
106106
server_add_port = openstackclient.compute.v2.server:AddPort
107+
server_add_network = openstackclient.compute.v2.server:AddNetwork
107108
server_add_security_group = openstackclient.compute.v2.server:AddServerSecurityGroup
108109
server_add_volume = openstackclient.compute.v2.server:AddServerVolume
109110
server_create = openstackclient.compute.v2.server:CreateServer

0 commit comments

Comments
 (0)