diff options
| author | Cedric Brandily <zzelle@gmail.com> | 2017-03-31 23:11:47 +0200 |
|---|---|---|
| committer | Cedric Brandily <zzelle@gmail.com> | 2017-04-03 20:19:40 +0200 |
| commit | 21510ac1a94eeb8de218a0edfe81db5ef0437249 (patch) | |
| tree | cf15fd62742d34c1e77cc94b0feca1e912bc81d9 /openstackclient/compute | |
| parent | 659115448803f1a6181ad0f592e0b61a86ad83fc (diff) | |
| download | python-openstackclient-21510ac1a94eeb8de218a0edfe81db5ef0437249.tar.gz | |
Enable to add/remove port to/from a server
This change enables to add/remove a specific port to/from a server using
the new commands:
openstack server add port <vm> <port>
openstack server remove port <vm> <port>
Closes-Bug: #1678137
Change-Id: I6ee57df089235ccc1fb9d38316bd484956b1134d
Diffstat (limited to 'openstackclient/compute')
| -rw-r--r-- | openstackclient/compute/v2/server.py | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py index 1fe5bb0d..c6345a92 100644 --- a/openstackclient/compute/v2/server.py +++ b/openstackclient/compute/v2/server.py @@ -253,6 +253,39 @@ class AddFloatingIP(command.Command): parsed_args.fixed_ip_address) +class AddPort(command.Command): + _description = _("Add port to server") + + def get_parser(self, prog_name): + parser = super(AddPort, self).get_parser(prog_name) + parser.add_argument( + "server", + metavar="<server>", + help=_("Server to add the port to (name or ID)"), + ) + parser.add_argument( + "port", + metavar="<port>", + help=_("Port 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 + port_id = network_client.find_port( + parsed_args.port, ignore_missing=False).id + else: + port_id = parsed_args.port + + server.interface_attach(port_id=port_id, net_id=None, fixed_ip=None) + + class AddServerSecurityGroup(command.Command): _description = _("Add security group to server") @@ -1342,6 +1375,39 @@ class RemoveFloatingIP(command.Command): server.remove_floating_ip(parsed_args.ip_address) +class RemovePort(command.Command): + _description = _("Remove port from server") + + def get_parser(self, prog_name): + parser = super(RemovePort, self).get_parser(prog_name) + parser.add_argument( + "server", + metavar="<server>", + help=_("Server to remove the port from (name or ID)"), + ) + parser.add_argument( + "port", + metavar="<port>", + help=_("Port to remove from 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 + port_id = network_client.find_port( + parsed_args.port, ignore_missing=False).id + else: + port_id = parsed_args.port + + server.interface_detach(port_id) + + class RemoveServerSecurityGroup(command.Command): _description = _("Remove security group from server") |
