Merge "Disallow without vlan id when creating vlan interface"

This commit is contained in:
Zuul 2022-07-12 12:53:35 +00:00 committed by Gerrit Code Review
commit fb7eb9664c
2 changed files with 19 additions and 7 deletions

View File

@ -724,15 +724,19 @@ def _set_defaults(interface):
def _check_interface_vlan_id(op, interface, ihost): def _check_interface_vlan_id(op, interface, ihost):
# Check vlan_id # Check vlan_id
if 'vlan_id' in interface.keys() and interface['vlan_id'] is not None: if 'vlan_id' in interface.keys():
if not str(interface['vlan_id']).isdigit(): if interface['vlan_id'] is not None:
raise wsme.exc.ClientSideError(_("VLAN id is an integer value.")) if not str(interface['vlan_id']).isdigit():
raise wsme.exc.ClientSideError(_("VLAN id is an integer value."))
interface['vlan_id'] = int(interface['vlan_id']) interface['vlan_id'] = int(interface['vlan_id'])
if interface['vlan_id'] < 1 or interface['vlan_id'] > 4094: if interface['vlan_id'] < 1 or interface['vlan_id'] > 4094:
raise wsme.exc.ClientSideError(_("VLAN id must be between 1 and 4094.")) raise wsme.exc.ClientSideError(_("VLAN id must be between 1 and 4094."))
else:
interface['vlan_id'] = six.text_type(interface['vlan_id'])
else: else:
interface['vlan_id'] = six.text_type(interface['vlan_id']) if interface['iftype'] == constants.INTERFACE_TYPE_VLAN:
raise wsme.exc.ClientSideError(_("VLAN id must be specified."))
return interface return interface

View File

@ -1381,6 +1381,14 @@ class TestPostMixin(object):
datanetworks='group0-ext0', datanetworks='group0-ext0',
expect_errors=True) expect_errors=True)
# Expected message: VLAN id must be specified.
def test_create_without_vlan_id(self):
self._create_worker_vlan('vlan0', constants.NETWORK_TYPE_DATA,
ifclass=constants.INTERFACE_CLASS_DATA,
vlan_id=None,
datanetworks='group0-ext0',
expect_errors=True)
# Expected message: Interface eth0 is already used by another VLAN # Expected message: Interface eth0 is already used by another VLAN
# interface vlan0 # interface vlan0
def test_create_bond_invalid_overlap_vlan(self): def test_create_bond_invalid_overlap_vlan(self):