diff options
| author | Hongbin Lu <hongbin.lu@huawei.com> | 2017-10-26 15:35:47 +0000 |
|---|---|---|
| committer | Hongbin Lu <hongbin034@gmail.com> | 2017-11-14 00:13:08 +0000 |
| commit | 809355894fac72908869739b72d44ead1c183072 (patch) | |
| tree | 2a6934446614960895fbeec59e66c6346dc46ad8 /openstackclient/compute/v2 | |
| parent | 4742d4df7089cd10d03635a1b3dbca9e7e80b1cc (diff) | |
| download | python-openstackclient-809355894fac72908869739b72d44ead1c183072.tar.gz | |
Add RemoveNetwork command to server
This command will detach a server from a network. All server's
neutron ports that belongs to the specified networks will be removed.
Change-Id: I83a064ed62ab00c6f1016900b9cf30f1c15b8382
Diffstat (limited to 'openstackclient/compute/v2')
| -rw-r--r-- | openstackclient/compute/v2/server.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py index 03419982..78c56788 100644 --- a/openstackclient/compute/v2/server.py +++ b/openstackclient/compute/v2/server.py @@ -1542,6 +1542,41 @@ class RemovePort(command.Command): server.interface_detach(port_id) +class RemoveNetwork(command.Command): + _description = _("Remove all ports of a network from server") + + def get_parser(self, prog_name): + parser = super(RemoveNetwork, self).get_parser(prog_name) + parser.add_argument( + "server", + metavar="<server>", + help=_("Server to remove the port from (name or ID)"), + ) + parser.add_argument( + "network", + metavar="<network>", + help=_("Network 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 + net_id = network_client.find_network( + parsed_args.network, ignore_missing=False).id + else: + net_id = parsed_args.network + + for inf in server.interface_list(): + if inf.net_id == net_id: + server.interface_detach(inf.port_id) + + class RemoveServerSecurityGroup(command.Command): _description = _("Remove security group from server") |
