summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-07-06 13:59:05 +0000
committerGerrit Code Review <review@openstack.org>2016-07-06 13:59:06 +0000
commit2b8213df889af6399b556361c99a187a2c719a3a (patch)
tree8348621927009a5cbd30f24ff0f897428660e7a7 /openstackclient
parent8d5a0fd86e24bc8d992308c63a85e5bd7e76bb90 (diff)
parentd1f9ea3f750bb4c1f440ebfa93d06a40673ec0aa (diff)
downloadpython-openstackclient-2b8213df889af6399b556361c99a187a2c719a3a.tar.gz
Merge "Transfer "ip floating add/remove" to "server add/remove floating ip""
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/compute/v2/floatingip.py34
-rw-r--r--openstackclient/compute/v2/server.py55
-rw-r--r--openstackclient/tests/compute/v2/test_server.py67
3 files changed, 152 insertions, 4 deletions
diff --git a/openstackclient/compute/v2/floatingip.py b/openstackclient/compute/v2/floatingip.py
index 98079fbc..8398ea57 100644
--- a/openstackclient/compute/v2/floatingip.py
+++ b/openstackclient/compute/v2/floatingip.py
@@ -15,28 +15,43 @@
"""Floating IP action implementations"""
+import logging
+
from osc_lib.command import command
from osc_lib import utils
+from openstackclient.i18n import _
+
class AddFloatingIP(command.Command):
"""Add floating IP address to server"""
+ # TODO(tangchen): Remove this class and ``ip floating add`` command
+ # two cycles after Mitaka.
+
+ # This notifies cliff to not display the help for this command
+ deprecated = True
+
+ log = logging.getLogger('deprecated')
+
def get_parser(self, prog_name):
parser = super(AddFloatingIP, self).get_parser(prog_name)
parser.add_argument(
"ip_address",
metavar="<ip-address>",
- help="IP address to add to server (name only)",
+ help=_("IP address to add to server (name only)"),
)
parser.add_argument(
"server",
metavar="<server>",
- help="Server to receive the IP address (name or ID)",
+ help=_("Server to receive the IP address (name or ID)"),
)
return parser
def take_action(self, parsed_args):
+ self.log.warning(_('This command has been deprecated. '
+ 'Please use "server add floating ip" instead.'))
+
compute_client = self.app.client_manager.compute
server = utils.find_resource(
@@ -48,21 +63,32 @@ class AddFloatingIP(command.Command):
class RemoveFloatingIP(command.Command):
"""Remove floating IP address from server"""
+ # TODO(tangchen): Remove this class and ``ip floating remove`` command
+ # two cycles after Mitaka.
+
+ # This notifies cliff to not display the help for this command
+ deprecated = True
+
+ log = logging.getLogger('deprecated')
+
def get_parser(self, prog_name):
parser = super(RemoveFloatingIP, self).get_parser(prog_name)
parser.add_argument(
"ip_address",
metavar="<ip-address>",
- help="IP address to remove from server (name only)",
+ help=_("IP address to remove from server (name only)"),
)
parser.add_argument(
"server",
metavar="<server>",
- help="Server to remove the IP address from (name or ID)",
+ help=_("Server to remove the IP address from (name or ID)"),
)
return parser
def take_action(self, parsed_args):
+ self.log.warning(_('This command has been deprecated. '
+ 'Please use "server remove floating ip" instead.'))
+
compute_client = self.app.client_manager.compute
server = utils.find_resource(
diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py
index 7e4b0dc1..d7c3a656 100644
--- a/openstackclient/compute/v2/server.py
+++ b/openstackclient/compute/v2/server.py
@@ -174,6 +174,33 @@ def _show_progress(progress):
sys.stdout.flush()
+class AddFloatingIP(command.Command):
+ """Add floating IP address to server"""
+
+ def get_parser(self, prog_name):
+ parser = super(AddFloatingIP, self).get_parser(prog_name)
+ parser.add_argument(
+ "server",
+ metavar="<server>",
+ help=_("Server (name or ID) to receive the floating IP address"),
+ )
+ parser.add_argument(
+ "ip_address",
+ metavar="<ip-address>",
+ help=_("Floating IP address (IP address only) to assign "
+ "to server"),
+ )
+ 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)
+
+ server.add_floating_ip(parsed_args.ip_address)
+
+
class AddServerSecurityGroup(command.Command):
"""Add security group to server"""
@@ -1081,6 +1108,34 @@ class RebuildServer(command.ShowOne):
return zip(*sorted(six.iteritems(details)))
+class RemoveFloatingIP(command.Command):
+ """Remove floating IP address from server"""
+
+ def get_parser(self, prog_name):
+ parser = super(RemoveFloatingIP, self).get_parser(prog_name)
+ parser.add_argument(
+ "server",
+ metavar="<server>",
+ help=_("Server (name or ID) to remove the "
+ "floating IP address from"),
+ )
+ parser.add_argument(
+ "ip_address",
+ metavar="<ip-address>",
+ help=_("Floating IP address (IP address only) "
+ "to remove from server"),
+ )
+ 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)
+
+ server.remove_floating_ip(parsed_args.ip_address)
+
+
class RemoveServerSecurityGroup(command.Command):
"""Remove security group from server"""
diff --git a/openstackclient/tests/compute/v2/test_server.py b/openstackclient/tests/compute/v2/test_server.py
index 0bfe1310..6f9a0fbc 100644
--- a/openstackclient/tests/compute/v2/test_server.py
+++ b/openstackclient/tests/compute/v2/test_server.py
@@ -88,6 +88,41 @@ class TestServer(compute_fakes.TestComputev2):
self.assertIsNone(result)
+class TestServerAddFloatingIP(TestServer):
+
+ def setUp(self):
+ super(TestServerAddFloatingIP, self).setUp()
+
+ # Get a shortcut to the compute client ServerManager Mock
+ self.networks_mock = self.app.client_manager.compute.networks
+
+ # Get the command object to test
+ self.cmd = server.AddFloatingIP(self.app, None)
+
+ # Set add_floating_ip method to be tested.
+ self.methods = {
+ 'add_floating_ip': None,
+ }
+
+ def test_server_add_floating_ip(self):
+ servers = self.setup_servers_mock(count=1)
+
+ arglist = [
+ servers[0].id,
+ '1.2.3.4',
+ ]
+ verifylist = [
+ ('server', servers[0].id),
+ ('ip_address', '1.2.3.4'),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ result = self.cmd.take_action(parsed_args)
+
+ servers[0].add_floating_ip.assert_called_once_with('1.2.3.4')
+ self.assertIsNone(result)
+
+
class TestServerCreate(TestServer):
columns = (
@@ -843,6 +878,38 @@ class TestServerRebuild(TestServer):
self.server.rebuild.assert_called_with(self.image, None)
+class TestServerRemoveFloatingIP(TestServer):
+
+ def setUp(self):
+ super(TestServerRemoveFloatingIP, self).setUp()
+
+ # Get the command object to test
+ self.cmd = server.RemoveFloatingIP(self.app, None)
+
+ # Set unshelve method to be tested.
+ self.methods = {
+ 'remove_floating_ip': None,
+ }
+
+ def test_server_remove_floating_ip(self):
+ servers = self.setup_servers_mock(count=1)
+
+ arglist = [
+ servers[0].id,
+ '1.2.3.4',
+ ]
+ verifylist = [
+ ('server', servers[0].id),
+ ('ip_address', '1.2.3.4'),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ result = self.cmd.take_action(parsed_args)
+
+ servers[0].remove_floating_ip.assert_called_once_with('1.2.3.4')
+ self.assertIsNone(result)
+
+
class TestServerResize(TestServer):
def setUp(self):