Transfer "ip floating add/remove" to "server add/remove
floating ip" This patch does the following things to transfer "ip floating add/remove" to "server add/remove floating ip": * Add new command "server add/remove floating ip", and unit tests and doc. * Deprecate "ip floating add/remove" command. compute/v2/floatingip.py is not removed because the arguments' positions are different between the new and old commands. * ip floating add <ip-address> <server> server add floating ip <server> <ip-address> * ip floating remove <ip-address> <server> server remove floating ip <server> <ip-address> Change-Id: Ic0dd22ca6fb7b7bc3e820fd5a14d7c551e7ab963 Implements: blueprint rework-ip-commands Partial-bug: 1555990 Co-Authored-By: Dean Troyer <dtroyer@gmail.com>
This commit is contained in:
parent
50bd56db25
commit
d1f9ea3f75
@ -8,6 +8,7 @@ ip floating add
|
|||||||
---------------
|
---------------
|
||||||
|
|
||||||
Add floating IP address to server
|
Add floating IP address to server
|
||||||
|
(Deprecated, please use ``server add floating ip`` instead)
|
||||||
|
|
||||||
.. program:: ip floating add
|
.. program:: ip floating add
|
||||||
.. code:: bash
|
.. code:: bash
|
||||||
@ -92,6 +93,7 @@ ip floating remove
|
|||||||
------------------
|
------------------
|
||||||
|
|
||||||
Remove floating IP address from server
|
Remove floating IP address from server
|
||||||
|
(Deprecated, please use ``server remove floating ip`` instead)
|
||||||
|
|
||||||
.. program:: ip floating remove
|
.. program:: ip floating remove
|
||||||
.. code:: bash
|
.. code:: bash
|
||||||
|
@ -4,6 +4,26 @@ server
|
|||||||
|
|
||||||
Compute v2
|
Compute v2
|
||||||
|
|
||||||
|
server add floating ip
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
Add floating IP address to server
|
||||||
|
|
||||||
|
.. program:: server add floating ip
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
os server add floating ip
|
||||||
|
<server>
|
||||||
|
<ip-address>
|
||||||
|
|
||||||
|
.. describe:: <server>
|
||||||
|
|
||||||
|
Server (name or ID) to receive the floating IP address
|
||||||
|
|
||||||
|
.. describe:: <ip-address>
|
||||||
|
|
||||||
|
Floating IP address (IP address only) to assign to server
|
||||||
|
|
||||||
server add security group
|
server add security group
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
@ -418,6 +438,26 @@ Rebuild server
|
|||||||
|
|
||||||
Server (name or ID)
|
Server (name or ID)
|
||||||
|
|
||||||
|
server remove floating ip
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
Remove floating IP address from server
|
||||||
|
|
||||||
|
.. program:: server remove floating ip
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
os server remove floating ip
|
||||||
|
<server>
|
||||||
|
<ip-address>
|
||||||
|
|
||||||
|
.. describe:: <server>
|
||||||
|
|
||||||
|
Server (name or ID) to remove the floating IP address from
|
||||||
|
|
||||||
|
.. describe:: <ip-address>
|
||||||
|
|
||||||
|
Floating IP address (IP address only) to remove from server
|
||||||
|
|
||||||
server remove security group
|
server remove security group
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
|
@ -91,6 +91,7 @@ referring to both Compute and Volume quotas.
|
|||||||
* ``extension``: (**Compute**, **Identity**, **Network**, **Volume**) OpenStack server API extensions
|
* ``extension``: (**Compute**, **Identity**, **Network**, **Volume**) OpenStack server API extensions
|
||||||
* ``federation protocol``: (**Identity**) the underlying protocol used while federating identities
|
* ``federation protocol``: (**Identity**) the underlying protocol used while federating identities
|
||||||
* ``flavor``: (**Compute**) predefined server configurations: ram, root disk and so on
|
* ``flavor``: (**Compute**) predefined server configurations: ram, root disk and so on
|
||||||
|
* ``floating ip``: (**Compute**, **Network**) - a public IP address that can be mapped to a server
|
||||||
* ``floating ip pool``: (**Compute**, **Network**) - a pool of public IP addresses
|
* ``floating ip pool``: (**Compute**, **Network**) - a pool of public IP addresses
|
||||||
* ``group``: (**Identity**) a grouping of users
|
* ``group``: (**Identity**) a grouping of users
|
||||||
* ``host``: (**Compute**) - the physical computer running compute services
|
* ``host``: (**Compute**) - the physical computer running compute services
|
||||||
|
@ -15,28 +15,43 @@
|
|||||||
|
|
||||||
"""Floating IP action implementations"""
|
"""Floating IP action implementations"""
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
from osc_lib.command import command
|
from osc_lib.command import command
|
||||||
from osc_lib import utils
|
from osc_lib import utils
|
||||||
|
|
||||||
|
from openstackclient.i18n import _
|
||||||
|
|
||||||
|
|
||||||
class AddFloatingIP(command.Command):
|
class AddFloatingIP(command.Command):
|
||||||
"""Add floating IP address to server"""
|
"""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):
|
def get_parser(self, prog_name):
|
||||||
parser = super(AddFloatingIP, self).get_parser(prog_name)
|
parser = super(AddFloatingIP, self).get_parser(prog_name)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"ip_address",
|
"ip_address",
|
||||||
metavar="<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(
|
parser.add_argument(
|
||||||
"server",
|
"server",
|
||||||
metavar="<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
|
return parser
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
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
|
compute_client = self.app.client_manager.compute
|
||||||
|
|
||||||
server = utils.find_resource(
|
server = utils.find_resource(
|
||||||
@ -48,21 +63,32 @@ class AddFloatingIP(command.Command):
|
|||||||
class RemoveFloatingIP(command.Command):
|
class RemoveFloatingIP(command.Command):
|
||||||
"""Remove floating IP address from server"""
|
"""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):
|
def get_parser(self, prog_name):
|
||||||
parser = super(RemoveFloatingIP, self).get_parser(prog_name)
|
parser = super(RemoveFloatingIP, self).get_parser(prog_name)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"ip_address",
|
"ip_address",
|
||||||
metavar="<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(
|
parser.add_argument(
|
||||||
"server",
|
"server",
|
||||||
metavar="<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
|
return parser
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
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
|
compute_client = self.app.client_manager.compute
|
||||||
|
|
||||||
server = utils.find_resource(
|
server = utils.find_resource(
|
||||||
|
@ -174,6 +174,33 @@ def _show_progress(progress):
|
|||||||
sys.stdout.flush()
|
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):
|
class AddServerSecurityGroup(command.Command):
|
||||||
"""Add security group to server"""
|
"""Add security group to server"""
|
||||||
|
|
||||||
@ -1081,6 +1108,34 @@ class RebuildServer(command.ShowOne):
|
|||||||
return zip(*sorted(six.iteritems(details)))
|
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):
|
class RemoveServerSecurityGroup(command.Command):
|
||||||
"""Remove security group from server"""
|
"""Remove security group from server"""
|
||||||
|
|
||||||
|
@ -88,6 +88,41 @@ class TestServer(compute_fakes.TestComputev2):
|
|||||||
self.assertIsNone(result)
|
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):
|
class TestServerCreate(TestServer):
|
||||||
|
|
||||||
columns = (
|
columns = (
|
||||||
@ -843,6 +878,38 @@ class TestServerRebuild(TestServer):
|
|||||||
self.server.rebuild.assert_called_with(self.image, None)
|
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):
|
class TestServerResize(TestServer):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
@ -4,6 +4,11 @@ features:
|
|||||||
pools. This command is used to replace the old command
|
pools. This command is used to replace the old command
|
||||||
``ip floating pool list``.
|
``ip floating pool list``.
|
||||||
[Blueprint rework-ip-commands `<https://blueprints.launchpad.net/python-openstackclient/+spec/rework-ip-commands>`_]
|
[Blueprint rework-ip-commands `<https://blueprints.launchpad.net/python-openstackclient/+spec/rework-ip-commands>`_]
|
||||||
|
- Add new commands ``server add/remove floating ip``. They are used to
|
||||||
|
replace the old commands ``ip floating add/remove``.
|
||||||
|
[Blueprint rework-ip-commands `<https://blueprints.launchpad.net/python-openstackclient/+spec/rework-ip-commands>`_]
|
||||||
deprecations:
|
deprecations:
|
||||||
- Deprecate command ``ip floating pool list``.
|
- Deprecate command ``ip floating pool list``.
|
||||||
[Blueprint rework-ip-commands `<https://blueprints.launchpad.net/python-openstackclient/+spec/rework-ip-commands>`_]
|
[Blueprint rework-ip-commands `<https://blueprints.launchpad.net/python-openstackclient/+spec/rework-ip-commands>`_]
|
||||||
|
- Deprecate commands ``ip floating add/remove``.
|
||||||
|
[Blueprint rework-ip-commands `<https://blueprints.launchpad.net/python-openstackclient/+spec/rework-ip-commands>`_]
|
||||||
|
@ -98,6 +98,7 @@ openstack.compute.v2 =
|
|||||||
keypair_list = openstackclient.compute.v2.keypair:ListKeypair
|
keypair_list = openstackclient.compute.v2.keypair:ListKeypair
|
||||||
keypair_show = openstackclient.compute.v2.keypair:ShowKeypair
|
keypair_show = openstackclient.compute.v2.keypair:ShowKeypair
|
||||||
|
|
||||||
|
server_add_floating_ip = openstackclient.compute.v2.server:AddFloatingIP
|
||||||
server_add_security_group = openstackclient.compute.v2.server:AddServerSecurityGroup
|
server_add_security_group = openstackclient.compute.v2.server:AddServerSecurityGroup
|
||||||
server_add_volume = openstackclient.compute.v2.server:AddServerVolume
|
server_add_volume = openstackclient.compute.v2.server:AddServerVolume
|
||||||
server_create = openstackclient.compute.v2.server:CreateServer
|
server_create = openstackclient.compute.v2.server:CreateServer
|
||||||
@ -108,6 +109,7 @@ openstack.compute.v2 =
|
|||||||
server_pause = openstackclient.compute.v2.server:PauseServer
|
server_pause = openstackclient.compute.v2.server:PauseServer
|
||||||
server_reboot = openstackclient.compute.v2.server:RebootServer
|
server_reboot = openstackclient.compute.v2.server:RebootServer
|
||||||
server_rebuild = openstackclient.compute.v2.server:RebuildServer
|
server_rebuild = openstackclient.compute.v2.server:RebuildServer
|
||||||
|
server_remove_floating_ip = openstackclient.compute.v2.server:RemoveFloatingIP
|
||||||
server_remove_security_group = openstackclient.compute.v2.server:RemoveServerSecurityGroup
|
server_remove_security_group = openstackclient.compute.v2.server:RemoveServerSecurityGroup
|
||||||
server_remove_volume = openstackclient.compute.v2.server:RemoveServerVolume
|
server_remove_volume = openstackclient.compute.v2.server:RemoveServerVolume
|
||||||
server_rescue = openstackclient.compute.v2.server:RescueServer
|
server_rescue = openstackclient.compute.v2.server:RescueServer
|
||||||
|
Loading…
Reference in New Issue
Block a user