diff options
author | Jenkins <jenkins@review.openstack.org> | 2017-04-06 01:55:24 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2017-04-06 01:55:24 +0000 |
commit | 80726b1340631b2b7d1c962d22a122e0c36486ac (patch) | |
tree | b3338fae3075f60cf53db38553fd4a752f28c3b9 /openstackclient/network/v2/floating_ip.py | |
parent | 8983373e52e49ee8d6fa603f689957a915191759 (diff) | |
parent | 763c8c5670f238920398165e670592e006213f32 (diff) | |
download | python-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.py | 74 |
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) |