Page MenuHomeVyOS Platform

Jinja2: add plugin to test if a variable is defined and not none to reduce template complexity
Closed, ResolvedPublicFEATURE REQUEST

Description

We have a lot of boiler plate template code like

{%   if config.interface is defined and config.interface.remote_as is defined and config.interface.remote_as is not none %}
...
{%   endif %}

This can be stripped down using a custom test to:

{%   if config.interface.remote_as is vyos_defined %}
...
{%   endif %}

In addition the new vyos_defined test supports comparison

{%   if foo.bar.baz is vyos_defined('zoo') %}
...
{%   endif %}

So the above will only evaluate to true if the variable foo.bar.baz is defined and its content is zoo

This is inspired from https://github.com/aristanetworks/ansible-avd/ which make heavy use of it.

All new templates should be written in this new style.

Details

Version
-
Is it a breaking change?
Perfectly compatible
Issue type
Internal change (not visible to end users)

Related Objects

Mentioned In
rVYOSONEX6e82d5d87f0f: ocserv: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX0e02a8321f34: dns: hosts: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEXb9e749215600: pppoe: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX291a161106f5: ndppd: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEXe5aa31eb2738: macsec: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX52cbc585cda8: lcd: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX8aa760711331: http: api: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX19859c09dd33: login: radius: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX4df48d571339: conntrack: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEXf5dc3db1fb62: dhcp: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX32ad92cd87b2: udp-broadcast-relay: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX90a84a0bb1f7: firewall: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX97ffa1cc71bc: lldp: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX24f136fe08fb: ntp: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX7dd2249e43ee: nhrp: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEXd93daa4e6d21: netflow: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX681b9448ba24: squid: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEXfe7f40b6ee4f: ids: fastnetmon: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEXe8a637eec0cc: ipsec: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEXfc36d67b051b: ocserv: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX2b066e2cb8fe: openvpn: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEXc8ae06b581cb: system-option: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX129e7f1d2661: pppoe: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEXb42ad4bf7291: router-advert: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX7e946dc26f62: snmp: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX47838b888aa3: accel-ppp: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX5f164e59aac8: ssh: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX679415a515d1: Revert "https: T4333: migrate to new vyos_defined Jinja2 test"
rVYOSONEX4dc4bbc6ce6a: tftp-server: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX5eed0cba04ce: vrf: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEXa7ccf0a9543f: ids: T4333: bugfix - threshold loop
rVYOSONEX264f86db9b7a: wifi: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX653d2fbce855: igmp-proxy: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEXb90a3133468c: vrrp: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX66dd2792a800: ids: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX77bbf766e802: https: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEXde407ab8971d: firewall: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX7d75e4a37727: policy: route: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX869c34b9c2c2: nat(66): T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX85e4bae1ef9e: eapol: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEXaa4cb50bdf99: dns: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX654dbc9aa3b0: dhcp(v6): T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEXd8f778456761: container: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEXe02d8145e4f1: static: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEXf2a5b57223c6: vrf/vni: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX807d054d8abb: rip(ng): T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX76abe709cd90: rpki: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX96e1fd6f574e: policy: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX5cff7b0de269: ospf: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX63e7f444c685: ospfv3: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX8fb6e715d32e: mpls: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEXde9e6122e0b2: isis: T4333: fix remaining "is defined" instances
rVYOSONEX6f5e5119330e: isis: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX9cde173dcfab: bfd: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEXd49cd1085f8f: conntrack: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEXcf8a8c0def7e: udp-broadcast-relay: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEXc6fcab97ed5c: bgp: T4333: migrate to new vyos_defined Jinja2 test
rVYOSONEX1684773712b9: vyos.template: T4333: add Jinja2 plugin to test if a variable is defined and…

Event Timeline

c-po changed the task status from Open to In progress.
c-po claimed this task.
c-po triaged this task as Wishlist priority.
c-po edited a custom field.
c-po changed Is it a breaking change? from Unspecified (possibly destroys the router) to Perfectly compatible.
c-po changed Issue type from Unspecified (please specify) to Internal change (not visible to end users).
c-po updated the task description. (Show Details)