summaryrefslogtreecommitdiff
path: root/openstackclient/compute
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient/compute')
-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")