Skip to content

Commit 317f5ce

Browse files
committed
[openvpn] Fixed double rendering bug
Takeaway: introducing side effects to data structures when rendering templates is a bad idea.
1 parent e2d89da commit 317f5ce

2 files changed

Lines changed: 15 additions & 9 deletions

File tree

netjsonconfig/backends/openvpn/templates/openvpn.jinja2

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
{% for vpn in data.openvpn %}
2-
# openvpn config: {{ vpn.pop('name') }}
2+
# openvpn config: {{ vpn.name }}
33

44
{% for key, value in vpn.items() %}
55
{% set key = key.replace('_', '-') %}
6-
{% if value is sameas True %}
7-
{{ key }}
8-
{% elif value is string or value is number %}
9-
{{ key }} {{ value }}
10-
{% elif value is iterable %}
11-
{% for element in value %}
12-
{{ key }} {{ element }}
13-
{% endfor %}
6+
{% if key != 'name' %}
7+
{% if value is sameas True %}
8+
{{ key }}
9+
{% elif value is string or value is number %}
10+
{{ key }} {{ value }}
11+
{% elif value is iterable %}
12+
{% for element in value %}
13+
{{ key }} {{ element }}
14+
{% endfor %}
15+
{% endif %}
1416
{% endif %}
1517
{% endfor %}
1618

tests/openvpn/test_backend.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -679,3 +679,7 @@ def test_resolv_retry_invalid(self):
679679
o = OpenVpn(client)
680680
with self.assertRaises(ValidationError):
681681
o.validate()
682+
683+
def test_double_rendering(self):
684+
o = OpenVpn(self._simple_conf)
685+
self.assertEqual(o.render(), o.render())

0 commit comments

Comments
 (0)