summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2017-10-30 04:21:41 +0000
committerGerrit Code Review <review@openstack.org>2017-10-30 04:21:41 +0000
commita51ac0a8894d677a326281bcb62d8f58fce348c1 (patch)
tree2b259db59d4c5ba7a15601e2ca271e07cb146cd8 /openstackclient
parentb7388dc9e33e85303186a5b25c57c9aeae1e8b43 (diff)
parente3ad82164dc5c51b5f3cb75b826bc15a6778b8b0 (diff)
downloadpython-openstackclient-a51ac0a8894d677a326281bcb62d8f58fce348c1.tar.gz
Merge "Added AddNetwork command to server"
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/compute/v2/server.py33
-rw-r--r--openstackclient/tests/unit/compute/v2/test_server.py47
2 files changed, 80 insertions, 0 deletions
diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py
index d4edf8c5..03419982 100644
--- a/openstackclient/compute/v2/server.py
+++ b/openstackclient/compute/v2/server.py
@@ -300,6 +300,39 @@ class AddPort(command.Command):
server.interface_attach(port_id=port_id, net_id=None, fixed_ip=None)
+class AddNetwork(command.Command):
+ _description = _("Add network to server")
+
+ def get_parser(self, prog_name):
+ parser = super(AddNetwork, self).get_parser(prog_name)
+ parser.add_argument(
+ "server",
+ metavar="<server>",
+ help=_("Server to add the network to (name or ID)"),
+ )
+ parser.add_argument(
+ "network",
+ metavar="<network>",
+ help=_("Network to add to the server (name or ID)"),
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ compute_client = self.app.client_manager.compute
+
+ server = utils.find_resource(
+ compute_client.servers, parsed_args.server)
+
+ if self.app.client_manager.is_network_endpoint_enabled():
+ network_client = self.app.client_manager.network
+ net_id = network_client.find_network(
+ parsed_args.network, ignore_missing=False).id
+ else:
+ net_id = parsed_args.network
+
+ server.interface_attach(port_id=None, net_id=net_id, fixed_ip=None)
+
+
class AddServerSecurityGroup(command.Command):
_description = _("Add security group to server")
diff --git a/openstackclient/tests/unit/compute/v2/test_server.py b/openstackclient/tests/unit/compute/v2/test_server.py
index 660f4f97..ad52e232 100644
--- a/openstackclient/tests/unit/compute/v2/test_server.py
+++ b/openstackclient/tests/unit/compute/v2/test_server.py
@@ -232,6 +232,53 @@ class TestServerAddPort(TestServer):
self.find_port.assert_not_called()
+class TestServerAddNetwork(TestServer):
+
+ def setUp(self):
+ super(TestServerAddNetwork, self).setUp()
+
+ # Get the command object to test
+ self.cmd = server.AddNetwork(self.app, None)
+
+ # Set add_fixed_ip method to be tested.
+ self.methods = {
+ 'interface_attach': None,
+ }
+
+ self.find_network = mock.Mock()
+ self.app.client_manager.network.find_network = self.find_network
+
+ def _test_server_add_network(self, net_id):
+ servers = self.setup_servers_mock(count=1)
+ network = 'fake-network'
+
+ arglist = [
+ servers[0].id,
+ network,
+ ]
+ verifylist = [
+ ('server', servers[0].id),
+ ('network', network)
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ result = self.cmd.take_action(parsed_args)
+
+ servers[0].interface_attach.assert_called_once_with(
+ port_id=None, net_id=net_id, fixed_ip=None)
+ self.assertIsNone(result)
+
+ def test_server_add_network(self):
+ self._test_server_add_network(self.find_network.return_value.id)
+ self.find_network.assert_called_once_with(
+ 'fake-network', ignore_missing=False)
+
+ def test_server_add_network_no_neutron(self):
+ self.app.client_manager.network_endpoint_enabled = False
+ self._test_server_add_network('fake-network')
+ self.find_network.assert_not_called()
+
+
@mock.patch(
'openstackclient.api.compute_v2.APIv2.security_group_find'
)