Skip to content

Commit e2843d7

Browse files
committed
[openwrt] Fixed invalid UCI name bug in default renderer
1 parent b78edf2 commit e2843d7

2 files changed

Lines changed: 31 additions & 1 deletion

File tree

netjsonconfig/backends/openwrt/converters/default.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,12 @@ def to_intermediate(self):
3939
'{0}\n\n'.format(json_block))
4040
continue
4141
block['.type'] = block.pop('config_name')
42-
block['.name'] = block.pop('config_value', '{0}_{1}'.format(block['.type'], i))
42+
block['.name'] = block.pop('config_value',
43+
# default value in case the
44+
# UCI name is not defined
45+
'{0}_{1}'.format(block['.type'], i))
46+
# ensure UCI name is valid
47+
block['.name'] = self._get_uci_name(block['.name'])
4348
block_list.append(sorted_dict(block))
4449
i += 1
4550
if block_list:

tests/openwrt/test_default.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,3 +238,28 @@ def test_merge(self):
238238
def test_skip_nonlists(self):
239239
o = OpenWrt({"custom_package": {'unknown': True}})
240240
self.assertEqual(o.render(), '')
241+
242+
def test_render_invalid_uci_name(self):
243+
o = OpenWrt({
244+
"olsrd2": [
245+
{
246+
"lan": "10.150.25.0/24 domain=0",
247+
"config_value": "lan-hna",
248+
"config_name": "olsrv2"
249+
},
250+
{
251+
"lan": "0.0.0.0/24 domain=1",
252+
"config_value": "internet-hna",
253+
"config_name": "olsrv2"
254+
}
255+
],
256+
})
257+
expected = self._tabs("""package olsrd2
258+
259+
config olsrv2 'lan_hna'
260+
option lan '10.150.25.0/24 domain=0'
261+
262+
config olsrv2 'internet_hna'
263+
option lan '0.0.0.0/24 domain=1'
264+
""")
265+
self.assertEqual(o.render(), expected)

0 commit comments

Comments
 (0)