Skip to content

Commit

Permalink
Allowed empty bridges #22
Browse files Browse the repository at this point in the history
  • Loading branch information
nemesifier committed Nov 3, 2015
1 parent 77d8cf1 commit d5ea68d
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 8 deletions.
10 changes: 8 additions & 2 deletions netjsonconfig/backends/openwrt/renderers.py
Expand Up @@ -79,8 +79,14 @@ def _get_interfaces(self):
})
# bridging
if is_bridge:
uci_interface['ifname'] = bridge_members
uci_interface['type'] = 'bridge'
# put bridge members in ifname attribute
if bridge_members:
uci_interface['ifname'] = bridge_members
# if no members, this is an empty bridge
else:
uci_interface['bridge_empty'] = True
del uci_interface['ifname']
# ensure type "bridge" is only given to one logical interface
is_bridge = False
# bridge has already been defined
Expand All @@ -91,7 +97,7 @@ def _get_interfaces(self):
# to these physical names
uci_interface['ifname'] = 'br-{0}'.format(interface['name'])
# delete bridge_members attribtue
if uci_interface.get('bridge_members'):
if uci_interface.get('bridge_members') is not None:
del uci_interface['bridge_members']
# add address if any (with correct option name)
if address_key and address_value:
Expand Down
9 changes: 3 additions & 6 deletions netjsonconfig/schema.py
Expand Up @@ -224,12 +224,9 @@
"bridge_members": {
"type": "array",
"title": "Bridge Members",
"minItems": 1,
"items": [
{
"type": "string"
}
]
"items": {
"type": "string"
}
}
}
}
Expand Down
23 changes: 23 additions & 0 deletions tests/openwrt/test_network.py
Expand Up @@ -418,6 +418,26 @@ def test_eth_bridge(self):
""")
self.assertEqual(o.render(), expected)

def test_empty_bridge(self):
o = OpenWrt({
"interfaces": [
{
"network": "lan",
"name": "br-lan",
"type": "bridge",
"bridge_members": []
}
]
})
expected = self._tabs("""package network
config interface 'lan'
option bridge_empty '1'
option proto 'none'
option type 'bridge'
""")
self.assertEqual(o.render(), expected)

def test_dns(self):
o = OpenWrt({
"interfaces": [
Expand Down Expand Up @@ -604,6 +624,9 @@ def test_bridge_members_schema(self):
}
]
})
with self.assertRaises(ValidationError):
o.validate()
o.config['interfaces'][0]['bridge_members'] = [3]
with self.assertRaises(ValidationError):
o.validate()
# ensure fix works
Expand Down

0 comments on commit d5ea68d

Please sign in to comment.