summaryrefslogtreecommitdiff
path: root/openstackclient/network/v2/floating_ip.py
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2017-04-06 01:55:24 +0000
committerGerrit Code Review <review@openstack.org>2017-04-06 01:55:24 +0000
commit80726b1340631b2b7d1c962d22a122e0c36486ac (patch)
treeb3338fae3075f60cf53db38553fd4a752f28c3b9 /openstackclient/network/v2/floating_ip.py
parent8983373e52e49ee8d6fa603f689957a915191759 (diff)
parent763c8c5670f238920398165e670592e006213f32 (diff)
downloadpython-openstackclient-80726b1340631b2b7d1c962d22a122e0c36486ac.tar.gz
Merge ""floating ip set/unset port" for OSC"
Diffstat (limited to 'openstackclient/network/v2/floating_ip.py')
-rw-r--r--openstackclient/network/v2/floating_ip.py74
1 files changed, 74 insertions, 0 deletions
diff --git a/openstackclient/network/v2/floating_ip.py b/openstackclient/network/v2/floating_ip.py
index bc347b72..eaf27420 100644
--- a/openstackclient/network/v2/floating_ip.py
+++ b/openstackclient/network/v2/floating_ip.py
@@ -17,6 +17,7 @@ import logging
from openstack import exceptions as sdk_exceptions
from openstack.network.v2 import floating_ip as _floating_ip
+from osc_lib.command import command
from osc_lib import utils
from openstackclient.i18n import _
@@ -446,6 +447,47 @@ class ListIPFloating(ListFloatingIP):
client, parsed_args)
+class SetFloatingIP(command.Command):
+ _description = _("Set floating IP Properties")
+
+ def get_parser(self, prog_name):
+ parser = super(SetFloatingIP, self).get_parser(prog_name)
+ parser.add_argument(
+ 'floating_ip',
+ metavar='<floating-ip>',
+ help=_("Floating IP to associate (IP address or ID)"))
+ parser.add_argument(
+ '--port',
+ metavar='<port>',
+ required=True,
+ help=_("Assocaite the floating IP with port (name or ID)")),
+ parser.add_argument(
+ '--fixed-ip-address',
+ metavar='<ip-address>',
+ dest='fixed_ip_address',
+ help=_("Fixed IP of the port "
+ "(required only if port has multiple IPs)")
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ client = self.app.client_manager.network
+ attrs = {}
+ # TODO(sindhu) Use client.find_ip() once SDK 0.9.15 is released
+ obj = _find_floating_ip(
+ self.app.client_manager.sdk_connection.session,
+ parsed_args.floating_ip,
+ ignore_missing=False,
+ )
+ port = client.find_port(parsed_args.port,
+ ignore_missing=False)
+ attrs['port_id'] = port.id
+ if parsed_args.fixed_ip_address:
+ attrs['fixed_ip_address'] = parsed_args.fixed_ip_address
+
+ client.update_ip(obj, **attrs)
+
+
class ShowFloatingIP(common.NetworkAndComputeShowOne):
_description = _("Display floating IP details")
@@ -499,3 +541,35 @@ class ShowIPFloating(ShowFloatingIP):
'Please use "floating ip show" instead.'))
return super(ShowIPFloating, self).take_action_compute(
client, parsed_args)
+
+
+class UnsetFloatingIP(command.Command):
+ _description = _("Unset floating IP Properties")
+
+ def get_parser(self, prog_name):
+ parser = super(UnsetFloatingIP, self).get_parser(prog_name)
+ parser.add_argument(
+ 'floating_ip',
+ metavar='<floating-ip>',
+ help=_("Floating IP to disassociate (IP address or ID)"))
+ parser.add_argument(
+ '--port',
+ action='store_true',
+ default=False,
+ help=_("Disassociate any port associated with the floating IP")
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ client = self.app.client_manager.network
+ # TODO(sindhu) Use client.find_ip() once SDK 0.9.15 is released
+ obj = _find_floating_ip(
+ self.app.client_manager.sdk_connection.session,
+ parsed_args.floating_ip,
+ ignore_missing=False,
+ )
+ if parsed_args.port:
+ attrs = {
+ 'port_id': None,
+ }
+ client.update_ip(obj, **attrs)