diff --git a/plugins/module_utils/network/vyos/argspec/vpn_ipsec_s2s/vpn_ipsec_s2s.py b/plugins/module_utils/network/vyos/argspec/vpn_ipsec_s2s/vpn_ipsec_s2s.py index 759acee3..bd23d4d3 100644 --- a/plugins/module_utils/network/vyos/argspec/vpn_ipsec_s2s/vpn_ipsec_s2s.py +++ b/plugins/module_utils/network/vyos/argspec/vpn_ipsec_s2s/vpn_ipsec_s2s.py @@ -1,186 +1,186 @@ # -*- coding: utf-8 -*- # Copyright 2026 Red Hat # GNU General Public License v3.0+ # (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) from __future__ import absolute_import, division, print_function __metaclass__ = type ############################################# # WARNING # ############################################# # # This file is auto generated by the # cli_rm_builder. # # Manually editing this file is not advised. # # To update the argspec make the desired changes # in the module docstring and re-run # cli_rm_builder. # ############################################# """ The arg spec for the vyos_vpn_ipsec_s2s module """ class Vpn_ipsec_s2sArgs(object): # pylint: disable=R0903 """The arg spec for the vyos_vpn_ipsec_s2s module""" argument_spec = { "config": { "type": "dict", "options": { "peer": { "type": "list", "elements": "dict", "options": { "name": {"type": "str", "required": True}, "disable": {"type": "bool"}, "authentication": { "type": "dict", "options": { "local_id": {"type": "str"}, "ppk": { "type": "dict", "options": { "id": {"type": "str"}, "required": {"type": "bool"}, }, }, "rsa": { "type": "dict", "options": { - "local_key": {"type": "str"}, + "local_key": {"type": "str", "no_log": True}, "passphrase": {"type": "str", "no_log": True}, - "remote_key": {"type": "str"}, + "remote_key": {"type": "str", "no_log": True}, }, }, "x509": { "type": "dict", "options": { "certificate": {"type": "str"}, "passphrase": {"type": "str", "no_log": True}, "ca_certificate": { "type": "list", "elements": "str", }, }, }, "mode": { "type": "str", "choices": [ "pre-shared-secret", "rsa", "x509", ], }, "remote_id": {"type": "str"}, "use_x509_id": {"type": "bool"}, }, }, "childless": { "type": "str", "choices": ["allow", "prefer", "force", "never"], }, "connection_type": { "type": "str", "choices": ["initiate", "trap", "none"], }, "default_esp_group": {"type": "str"}, "description": {"type": "str"}, "dhcp_interface": {"type": "str"}, "force_udp_encapsulation": {"type": "bool"}, "ike_group": {"type": "str"}, "ikev2_reauth": { "type": "str", "choices": ["yes", "no", "inherit"], }, "local_address": {"type": "str"}, "remote_address": {"type": "list", "elements": "str"}, "replay_window": {"type": "int"}, "tunnel": { "type": "list", "elements": "dict", "options": { "tunnel_id": {"type": "int", "required": True}, "disable": {"type": "bool"}, "esp_group": {"type": "str"}, "local": { "type": "dict", "options": { "port": {"type": "int"}, "prefix": { "type": "list", "elements": "str", }, }, }, "protocol": {"type": "str"}, "priority": {"type": "int"}, "remote": { "type": "dict", "options": { "port": {"type": "int"}, "prefix": { "type": "list", "elements": "str", }, }, }, }, }, "virtual_address": {"type": "list", "elements": "str"}, "vti": { "type": "dict", "options": { "bind": {"type": "str"}, "esp_group": {"type": "str"}, "traffic_selector": { "type": "dict", "options": { "local": { "type": "dict", "options": { "prefix": { "type": "list", "elements": "str", }, }, }, "remote": { "type": "dict", "options": { "prefix": { "type": "list", "elements": "str", }, }, }, }, }, }, }, }, }, }, }, "running_config": {"type": "str"}, "state": { "type": "str", "choices": [ "merged", "replaced", "overridden", "deleted", "gathered", "rendered", "parsed", ], "default": "merged", }, } # pylint: disable=C0301 diff --git a/plugins/module_utils/network/vyos/rm_templates/vpn_ipsec_s2s.py b/plugins/module_utils/network/vyos/rm_templates/vpn_ipsec_s2s.py index 8897bb0a..4319019c 100644 --- a/plugins/module_utils/network/vyos/rm_templates/vpn_ipsec_s2s.py +++ b/plugins/module_utils/network/vyos/rm_templates/vpn_ipsec_s2s.py @@ -1,610 +1,670 @@ # # -*- coding: utf-8 -*- # Copyright 2026 Red Hat # GNU General Public License v3.0+ # (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) # from __future__ import absolute_import, division, print_function __metaclass__ = type import re from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.network_template import ( NetworkTemplate, ) class Vpn_ipsec_s2sTemplate(NetworkTemplate): def __init__(self, lines=None, module=None): prefix = {"set": "set", "remove": "delete"} super(Vpn_ipsec_s2sTemplate, self).__init__( lines=lines, tmplt=self, module=module, prefix=prefix, ) # fmt: off PARSERS = [ { "name": "peer", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+)$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }}", "result": { "site_to_site": { "peer": { "{{ name }}": { "name": "{{ name }}", }, }, }, }, }, { "name": "peer.disable", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+)\sdisable$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} disable", "result": { "site_to_site": {"peer": {"{{ name }}": {"name": "{{ name }}", "disable": True}}}, }, }, { "name": "peer.authentication.local_id", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \sauthentication\slocal-id\s'(?P[^']+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} authentication local-id '{{ local_id }}'", "result": { "site_to_site": { "peer": {"{{ name }}": {"name": "{{ name }}", "authentication": {"local_id": "{{ local_id }}"}}}, }, }, }, { "name": "peer.authentication.remote_id", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \sauthentication\sremote-id\s'(?P[^']+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} authentication remote-id '{{ remote_id }}'", "result": { "site_to_site": { "peer": {"{{ name }}": {"name": "{{ name }}", "authentication": {"remote_id": "{{ remote_id }}"}}}, }, }, }, { "name": "peer.authentication.mode", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \sauthentication\smode\s'(?P[^']+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} authentication mode '{{ mode }}'", "result": { "site_to_site": { "peer": {"{{ name }}": {"name": "{{ name }}", "authentication": {"mode": "{{ mode }}"}}}, }, }, }, { "name": "peer.authentication.use_x509_id", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \sauthentication\suse-x509-id$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} authentication use-x509-id", "result": { "site_to_site": { "peer": {"{{ name }}": {"name": "{{ name }}", "authentication": {"use_x509_id": True}}}, }, }, }, { "name": "peer.authentication.ppk.id", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \sauthentication\sppk\sid\s'(?P[^']+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} authentication ppk id '{{ id }}'", "result": { "site_to_site": { "peer": {"{{ name }}": {"name": "{{ name }}", "authentication": {"ppk": {"id": "{{ id }}"}}}}, }, }, }, { "name": "peer.authentication.ppk.required", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \sauthentication\sppk\srequired$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} authentication ppk required", "result": { "site_to_site": { "peer": {"{{ name }}": {"name": "{{ name }}", "authentication": {"ppk": {"required": True}}}}, }, }, }, { "name": "peer.authentication.rsa.local_key", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \sauthentication\srsa\slocal-key\s'(?P[^']+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} authentication rsa local-key '{{ local_key }}'", "result": { "site_to_site": { "peer": {"{{ name }}": {"name": "{{ name }}", "authentication": {"rsa": {"local_key": "{{ local_key }}"}}}}, }, }, }, { "name": "peer.authentication.rsa.remote_key", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \sauthentication\srsa\sremote-key\s'(?P[^']+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} authentication rsa remote-key '{{ remote_key }}'", "result": { "site_to_site": { "peer": {"{{ name }}": {"name": "{{ name }}", "authentication": {"rsa": {"remote_key": "{{ remote_key }}"}}}}, }, }, }, { "name": "peer.authentication.rsa.passphrase", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \sauthentication\srsa\spassphrase\s'(?P[^']+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} authentication rsa passphrase '{{ passphrase }}'", "result": { "site_to_site": { "peer": {"{{ name }}": {"name": "{{ name }}", "authentication": {"rsa": {"passphrase": "{{ passphrase }}"}}}}, }, }, }, { "name": "peer.authentication.x509.certificate", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \sauthentication\sx509\scertificate\s'(?P[^']+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} authentication x509 certificate '{{ certificate }}'", "result": { "site_to_site": { "peer": {"{{ name }}": {"name": "{{ name }}", "authentication": {"x509": {"certificate": "{{ certificate }}"}}}}, }, }, }, { "name": "peer.authentication.x509.passphrase", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \sauthentication\sx509\spassphrase\s'(?P[^']+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} authentication x509 passphrase '{{ passphrase }}'", "result": { "site_to_site": { "peer": {"{{ name }}": {"name": "{{ name }}", "authentication": {"x509": {"passphrase": "{{ passphrase }}"}}}}, }, }, }, { "name": "peer.authentication.x509.ca_certificate", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \sauthentication\sx509\sca-certificate\s'(?P[^']+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} authentication x509 ca-certificate '{{ ca_certificate }}'", "result": { "site_to_site": { "peer": {"{{ name }}": {"name": "{{ name }}", "authentication": {"x509": {"ca_certificate": ["{{ ca_certificate }}"]}}}}, }, }, }, { "name": "peer.childless", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \schildless\s'(?P[^']+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} childless '{{ childless }}'", "result": { "site_to_site": {"peer": {"{{ name }}": {"name": "{{ name }}", "childless": "{{ childless }}"}}}, }, }, { "name": "peer.connection_type", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \sconnection-type\s'(?P[^']+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} connection-type '{{ connection_type }}'", "result": { "site_to_site": {"peer": {"{{ name }}": {"name": "{{ name }}", "connection_type": "{{ connection_type }}"}}}, }, }, { "name": "peer.default_esp_group", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \sdefault-esp-group\s'(?P[^']+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} default-esp-group '{{ default_esp_group }}'", "result": { "site_to_site": {"peer": {"{{ name }}": {"name": "{{ name }}", "default_esp_group": "{{ default_esp_group }}"}}}, }, }, { "name": "peer.description", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \sdescription\s'(?P[^']+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} description '{{ description }}'", "result": { "site_to_site": {"peer": {"{{ name }}": {"name": "{{ name }}", "description": "{{ description }}"}}}, }, }, { "name": "peer.dhcp_interface", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \sdhcp-interface\s'(?P[^']+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} dhcp-interface '{{ dhcp_interface }}'", "result": { "site_to_site": {"peer": {"{{ name }}": {"name": "{{ name }}", "dhcp_interface": "{{ dhcp_interface }}"}}}, }, }, { "name": "peer.force_udp_encapsulation", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \sforce-udp-encapsulation$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} force-udp-encapsulation", "result": { "site_to_site": {"peer": {"{{ name }}": {"name": "{{ name }}", "force_udp_encapsulation": True}}}, }, }, { "name": "peer.ike_group", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \sike-group\s'(?P[^']+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} ike-group '{{ ike_group }}'", "result": { "site_to_site": {"peer": {"{{ name }}": {"name": "{{ name }}", "ike_group": "{{ ike_group }}"}}}, }, }, { "name": "peer.ikev2_reauth", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \sikev2-reauth\s'(?P[^']+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} ikev2-reauth '{{ ikev2_reauth }}'", "result": { "site_to_site": {"peer": {"{{ name }}": {"name": "{{ name }}", "ikev2_reauth": "{{ ikev2_reauth }}"}}}, }, }, { "name": "peer.local_address", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \slocal-address\s'(?P[^']+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} local-address '{{ local_address }}'", "result": { "site_to_site": {"peer": {"{{ name }}": {"name": "{{ name }}", "local_address": "{{ local_address }}"}}}, }, }, { "name": "peer.remote_address", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \sremote-address\s'(?P[^']+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} remote-address '{{ remote_address }}'", "result": { "site_to_site": {"peer": {"{{ name }}": {"name": "{{ name }}", "remote_address": ["{{ remote_address }}"]}}}, }, }, { "name": "peer.replay_window", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \sreplay-window\s'(?P\d+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} replay-window '{{ replay_window }}'", "result": { "site_to_site": {"peer": {"{{ name }}": {"name": "{{ name }}", "replay_window": "{{ replay_window }}"}}}, }, }, { "name": "peer.virtual_address", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \svirtual-address\s'(?P[^']+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} virtual-address '{{ virtual_address }}'", "result": { "site_to_site": {"peer": {"{{ name }}": {"name": "{{ name }}", "virtual_address": ["{{ virtual_address }}"]}}}, }, }, { "name": "peer.tunnel", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \stunnel\s(?P\d+)$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} tunnel {{ tunnel_id }}", "result": { "site_to_site": { "peer": {"{{ name }}": {"name": "{{ name }}", "tunnel": {"{{ tunnel_id }}": {"tunnel_id": "{{ tunnel_id }}"}}}}, }, }, }, { "name": "peer.tunnel.disable", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \stunnel\s(?P\d+)\sdisable$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} tunnel {{ tunnel_id }} disable", "result": { "site_to_site": { - "peer": {"{{ name }}": {"name": "{{ name }}", "tunnel": {"{{ tunnel_id }}": {"tunnel_id": "{{ tunnel_id }}", "disable": True}}}}, + "peer": { + "{{ name }}": { + "name": "{{ name }}", + "tunnel": { + "{{ tunnel_id }}": { + "tunnel_id": "{{ tunnel_id }}", + "disable": True, + }, + }, + }, + }, }, }, }, { "name": "peer.tunnel.esp_group", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \stunnel\s(?P\d+)\sesp-group\s'(?P[^']+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} tunnel {{ tunnel_id }} esp-group '{{ esp_group }}'", "result": { "site_to_site": { - "peer": {"{{ name }}": {"name": "{{ name }}", "tunnel": {"{{ tunnel_id }}": {"tunnel_id": "{{ tunnel_id }}", "esp_group": "{{ esp_group }}"}}}}, + "peer": { + "{{ name }}": { + "name": "{{ name }}", + "tunnel": { + "{{ tunnel_id }}": { + "tunnel_id": "{{ tunnel_id }}", + "esp_group": "{{ esp_group }}", + }, + }, + }, + }, }, }, }, { "name": "peer.tunnel.protocol", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \stunnel\s(?P\d+)\sprotocol\s'(?P[^']+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} tunnel {{ tunnel_id }} protocol '{{ protocol }}'", "result": { "site_to_site": { - "peer": {"{{ name }}": {"name": "{{ name }}", "tunnel": {"{{ tunnel_id }}": {"tunnel_id": "{{ tunnel_id }}", "protocol": "{{ protocol }}"}}}}, + "peer": { + "{{ name }}": { + "name": "{{ name }}", + "tunnel": { + "{{ tunnel_id }}": { + "tunnel_id": "{{ tunnel_id }}", + "protocol": "{{ protocol }}", + }, + }, + }, + }, }, }, }, { "name": "peer.tunnel.priority", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \stunnel\s(?P\d+)\spriority\s'(?P\d+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} tunnel {{ tunnel_id }} priority '{{ priority }}'", "result": { "site_to_site": { - "peer": {"{{ name }}": {"name": "{{ name }}", "tunnel": {"{{ tunnel_id }}": {"tunnel_id": "{{ tunnel_id }}", "priority": "{{ priority }}"}}}}, + "peer": { + "{{ name }}": { + "name": "{{ name }}", + "tunnel": { + "{{ tunnel_id }}": { + "tunnel_id": "{{ tunnel_id }}", + "priority": "{{ priority }}", + }, + }, + }, + }, }, }, }, { "name": "peer.tunnel.local.port", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \stunnel\s(?P\d+)\slocal\sport\s'(?P\d+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} tunnel {{ tunnel_id }} local port '{{ port }}'", "result": { "site_to_site": { - "peer": {"{{ name }}": {"name": "{{ name }}", "tunnel": {"{{ tunnel_id }}": {"tunnel_id": "{{ tunnel_id }}", "local": {"port": "{{ port }}"}}}}}, + "peer": { + "{{ name }}": { + "name": "{{ name }}", + "tunnel": { + "{{ tunnel_id }}": { + "tunnel_id": "{{ tunnel_id }}", + "local": {"port": "{{ port }}"}, + }, + }, + }, + }, }, }, }, { "name": "peer.tunnel.local.prefix", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \stunnel\s(?P\d+)\slocal\sprefix\s'(?P[^']+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} tunnel {{ tunnel_id }} local prefix '{{ prefix }}'", "result": { "site_to_site": { "peer": { "{{ name }}": { "name": "{{ name }}", "tunnel": {"{{ tunnel_id }}": {"tunnel_id": "{{ tunnel_id }}", "local": {"prefix": ["{{ prefix }}"]}}}, }, }, }, }, }, { "name": "peer.tunnel.remote.port", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \stunnel\s(?P\d+)\sremote\sport\s'(?P\d+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} tunnel {{ tunnel_id }} remote port '{{ port }}'", "result": { "site_to_site": { - "peer": {"{{ name }}": {"name": "{{ name }}", "tunnel": {"{{ tunnel_id }}": {"tunnel_id": "{{ tunnel_id }}", "remote": {"port": "{{ port }}"}}}}}, + "peer": { + "{{ name }}": { + "name": "{{ name }}", + "tunnel": { + "{{ tunnel_id }}": { + "tunnel_id": "{{ tunnel_id }}", + "remote": {"port": "{{ port }}"}, + }, + }, + }, + }, }, }, }, { "name": "peer.tunnel.remote.prefix", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \stunnel\s(?P\d+)\sremote\sprefix\s'(?P[^']+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} tunnel {{ tunnel_id }} remote prefix '{{ prefix }}'", "result": { "site_to_site": { "peer": { "{{ name }}": { "name": "{{ name }}", "tunnel": {"{{ tunnel_id }}": {"tunnel_id": "{{ tunnel_id }}", "remote": {"prefix": ["{{ prefix }}"]}}}, }, }, }, }, }, { "name": "peer.vti.bind", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \svti\sbind\s'(?P[^']+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} vti bind '{{ bind }}'", "result": { "site_to_site": {"peer": {"{{ name }}": {"name": "{{ name }}", "vti": {"bind": "{{ bind }}"}}}}, }, }, { "name": "peer.vti.esp_group", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \svti\sesp-group\s'(?P[^']+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} vti esp-group '{{ esp_group }}'", "result": { "site_to_site": {"peer": {"{{ name }}": {"name": "{{ name }}", "vti": {"esp_group": "{{ esp_group }}"}}}}, }, }, { "name": "peer.vti.traffic_selector.local.prefix", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \svti\straffic-selector\slocal\sprefix\s'(?P[^']+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} vti traffic-selector local prefix '{{ prefix }}'", "result": { "site_to_site": { "peer": { "{{ name }}": { "name": "{{ name }}", "vti": {"traffic_selector": {"local": {"prefix": ["{{ prefix }}"]}}}, }, }, }, }, }, { "name": "peer.vti.traffic_selector.remote.prefix", "getval": re.compile( r""" ^set\svpn\sipsec\ssite-to-site\speer\s(?P\S+) \svti\straffic-selector\sremote\sprefix\s'(?P[^']+)'$ """, re.VERBOSE, ), "setval": "vpn ipsec site-to-site peer {{ name }} vti traffic-selector remote prefix '{{ prefix }}'", "result": { "site_to_site": { "peer": { "{{ name }}": { "name": "{{ name }}", "vti": {"traffic_selector": {"remote": {"prefix": ["{{ prefix }}"]}}}, }, }, }, }, }, ] # fmt: on