Summary
Verify() checks for external at the top level of the VXLAN dictionary. The configured node is parameters external. This causes a configuration that includes both external mode and GPE to be rejected by the external-mode check.
if 'gpe' in vxlan and 'external' not in vxlan:
raise ConfigError(...)Reproduce
Reported environment: VyOS 1.5-rolling
set interfaces vxlan vxlan1 parameters external set interfaces vxlan vxlan1 source-address 192.0.2.5 set interfaces vxlan vxlan1 gpe
Actual: the commit reports that VXLAN-GPE requires external mode, although parameters external is configured.
Expected: that combination passes this validation, subject to the remaining VXLAN requirements.
Suggested correction
if 'gpe' in vxlan and dict_search('parameters.external', vxlan) is None:
raise ConfigError('VXLAN-GPE requires parameters external.')