summaryrefslogtreecommitdiff
path: root/openstackclient/compute/v2
diff options
context:
space:
mode:
authorHongbin Lu <hongbin.lu@huawei.com>2017-10-26 15:35:47 +0000
committerHongbin Lu <hongbin034@gmail.com>2017-11-14 00:13:08 +0000
commit809355894fac72908869739b72d44ead1c183072 (patch)
tree2a6934446614960895fbeec59e66c6346dc46ad8 /openstackclient/compute/v2
parent4742d4df7089cd10d03635a1b3dbca9e7e80b1cc (diff)
downloadpython-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.py35
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")