Merge "Don't require passing in port_security=False if security_groups present"

This commit is contained in:
Jenkins 2014-02-21 09:18:46 +00:00 committed by Gerrit Code Review
commit 2ba6894ff5
2 changed files with 29 additions and 0 deletions

View File

@ -161,6 +161,13 @@ class PortSecurityDbMixin(object):
if (psec.PORTSECURITY in port and if (psec.PORTSECURITY in port and
isinstance(port[psec.PORTSECURITY], bool)): isinstance(port[psec.PORTSECURITY], bool)):
port_security_enabled = port[psec.PORTSECURITY] port_security_enabled = port[psec.PORTSECURITY]
# If port has an ip and security_groups are passed in
# conveniently set port_security_enabled to true this way
# user doesn't also have to pass in port_security_enabled=True
# when creating ports.
elif (has_ip and attrs.is_attr_set('security_groups')):
port_security_enabled = True
else: else:
port_security_enabled = self._get_network_security_binding( port_security_enabled = self._get_network_security_binding(
context, port['network_id']) context, port['network_id'])

View File

@ -263,6 +263,28 @@ class TestPortSecurity(PortSecurityDBTestCase):
self.assertEqual(len(port['port'][ext_sg.SECURITYGROUPS]), 1) self.assertEqual(len(port['port'][ext_sg.SECURITYGROUPS]), 1)
self._delete('ports', port['port']['id']) self._delete('ports', port['port']['id'])
def test_create_port_with_security_group_and_net_sec_false(self):
# This tests that port_security_enabled is true when creating
# a port on a network that is marked as port_security_enabled=False
# that has a subnet and securiy_groups are passed it.
if self._skip_security_group:
self.skipTest("Plugin does not support security groups")
res = self._create_network('json', 'net1', True,
arg_list=('port_security_enabled',),
port_security_enabled=False)
net = self.deserialize('json', res)
self._create_subnet('json', net['network']['id'], '10.0.0.0/24')
security_group = self.deserialize(
'json', self._create_security_group(self.fmt, 'asdf', 'asdf'))
security_group_id = security_group['security_group']['id']
res = self._create_port('json', net['network']['id'],
arg_list=('security_groups',),
security_groups=[security_group_id])
port = self.deserialize('json', res)
self.assertEqual(port['port'][psec.PORTSECURITY], True)
self.assertEqual(port['port']['security_groups'], [security_group_id])
self._delete('ports', port['port']['id'])
def test_update_port_security_off_with_security_group(self): def test_update_port_security_off_with_security_group(self):
if self._skip_security_group: if self._skip_security_group:
self.skipTest("Plugin does not support security groups") self.skipTest("Plugin does not support security groups")