Add --enable/disable-port-security option to port set and port create

This patch adds the currently missing options
`--enable-port-security` and `--disable-port-security`
in the `os port set` and `os port create` commands.

Partially-Implements: blueprint network-commands-options

Change-Id: I4dc11cdf32bf482a5937f5464fe8a3b418644ec3
This commit is contained in:
Sindhu Devale 2016-11-09 16:30:55 -06:00
parent e07b0e0919
commit 246f60ab13
4 changed files with 136 additions and 0 deletions
doc/source/command-objects
openstackclient
network/v2
tests/unit/network/v2
releasenotes/notes

@ -28,6 +28,7 @@ Create new port
[--mac-address <mac-address>] [--mac-address <mac-address>]
[--security-group <security-group> | --no-security-group] [--security-group <security-group> | --no-security-group]
[--project <project> [--project-domain <project-domain>]] [--project <project> [--project-domain <project-domain>]]
[--enable-port-security | --disable-port-security]
<name> <name>
.. option:: --network <network> .. option:: --network <network>
@ -94,6 +95,14 @@ Create new port
Domain the project belongs to (name or ID). Domain the project belongs to (name or ID).
This can be used in case collisions between project names exist. This can be used in case collisions between project names exist.
.. option:: --enable-port-security
Enable port security for this port (Default)
.. option:: --disable-port-security
Disable port security for this port
.. _port_create-name: .. _port_create-name:
.. describe:: <name> .. describe:: <name>
@ -171,6 +180,7 @@ Set port properties
[--name <name>] [--name <name>]
[--security-group <security-group>] [--security-group <security-group>]
[--no-security-group] [--no-security-group]
[--enable-port-security | --disable-port-security]
<port> <port>
.. option:: --fixed-ip subnet=<subnet>,ip-address=<ip-address> .. option:: --fixed-ip subnet=<subnet>,ip-address=<ip-address>
@ -236,6 +246,14 @@ Set port properties
Clear existing security groups associated with this port Clear existing security groups associated with this port
.. option:: --enable-port-security
Enable port security for this port
.. option:: --disable-port-security
Disable port security for this port
.. _port_set-port: .. _port_set-port:
.. describe:: <port> .. describe:: <port>

@ -146,6 +146,12 @@ def _get_attrs(client_manager, parsed_args):
).id ).id
attrs['tenant_id'] = project_id attrs['tenant_id'] = project_id
if parsed_args.disable_port_security:
attrs['port_security_enabled'] = False
if parsed_args.enable_port_security:
attrs['port_security_enabled'] = True
return attrs return attrs
@ -297,6 +303,17 @@ class CreatePort(command.ShowOne):
action='store_true', action='store_true',
help=_("Associate no security groups with this port") help=_("Associate no security groups with this port")
) )
port_security = parser.add_mutually_exclusive_group()
port_security.add_argument(
'--enable-port-security',
action='store_true',
help=_("Enable port security for this port (Default)")
)
port_security.add_argument(
'--disable-port-security',
action='store_true',
help=_("Disable port security for this port")
)
return parser return parser
@ -512,6 +529,17 @@ class SetPort(command.Command):
action='store_true', action='store_true',
help=_("Clear existing security groups associated with this port") help=_("Clear existing security groups associated with this port")
) )
port_security = parser.add_mutually_exclusive_group()
port_security.add_argument(
'--enable-port-security',
action='store_true',
help=_("Enable port security for this port")
)
port_security.add_argument(
'--disable-port-security',
action='store_true',
help=_("Disable port security for this port")
)
return parser return parser

@ -315,6 +315,54 @@ class TestCreatePort(TestPort):
self.assertEqual(ref_columns, columns) self.assertEqual(ref_columns, columns)
self.assertEqual(ref_data, data) self.assertEqual(ref_data, data)
def test_create_port_security_enabled(self):
arglist = [
'--network', self._port.network_id,
'--enable-port-security',
'test-port',
]
verifylist = [
('network', self._port.network_id,),
('enable', True),
('enable_port_security', True),
('name', 'test-port'),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
self.cmd.take_action(parsed_args)
self.network.create_port.assert_called_once_with(**{
'admin_state_up': True,
'network_id': self._port.network_id,
'port_security_enabled': True,
'name': 'test-port',
})
def test_create_port_security_disabled(self):
arglist = [
'--network', self._port.network_id,
'--disable-port-security',
'test-port',
]
verifylist = [
('network', self._port.network_id,),
('enable', True),
('disable_port_security', True),
('name', 'test-port'),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
self.cmd.take_action(parsed_args)
self.network.create_port.assert_called_once_with(**{
'admin_state_up': True,
'network_id': self._port.network_id,
'port_security_enabled': False,
'name': 'test-port',
})
class TestDeletePort(TestPort): class TestDeletePort(TestPort):
@ -868,6 +916,42 @@ class TestSetPort(TestPort):
self.network.update_port.assert_called_once_with(_testport, **attrs) self.network.update_port.assert_called_once_with(_testport, **attrs)
self.assertIsNone(result) self.assertIsNone(result)
def test_port_security_enabled(self):
arglist = [
'--enable-port-security',
self._port.id,
]
verifylist = [
('enable_port_security', True),
('port', self._port.id,)
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
self.cmd.take_action(parsed_args)
self.network.update_port.assert_called_once_with(self._port, **{
'port_security_enabled': True,
})
def test_port_security_disabled(self):
arglist = [
'--disable-port-security',
self._port.id,
]
verifylist = [
('disable_port_security', True),
('port', self._port.id,)
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
self.cmd.take_action(parsed_args)
self.network.update_port.assert_called_once_with(self._port, **{
'port_security_enabled': False,
})
class TestShowPort(TestPort): class TestShowPort(TestPort):

@ -0,0 +1,6 @@
---
features:
- |
Added ``--enable-port-security`` and ``--disable-port-security``
options to ``port set`` and ``port create`` commands.
[Blueprint :oscbp:`network-commands-options`]