summaryrefslogtreecommitdiff
path: root/openstackclient/compute
diff options
context:
space:
mode:
authorCedric Brandily <zzelle@gmail.com>2017-03-31 23:11:47 +0200
committerCedric Brandily <zzelle@gmail.com>2017-04-03 20:19:40 +0200
commit21510ac1a94eeb8de218a0edfe81db5ef0437249 (patch)
treecf15fd62742d34c1e77cc94b0feca1e912bc81d9 /openstackclient/compute
parent659115448803f1a6181ad0f592e0b61a86ad83fc (diff)
downloadpython-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.py66
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")