catalystwan 0.41.2__py3-none-any.whl → 0.41.2.dev0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- catalystwan/__init__.py +3 -2
- catalystwan/api/administration.py +13 -2
- catalystwan/api/api_container.py +4 -1
- catalystwan/api/builders/__init__.py +14 -0
- catalystwan/api/builders/feature_profiles/__init__.py +0 -0
- catalystwan/api/builders/feature_profiles/application_priority.py +58 -0
- catalystwan/api/builders/feature_profiles/builder_factory.py +59 -0
- catalystwan/api/builders/feature_profiles/cli.py +76 -0
- catalystwan/api/builders/feature_profiles/mixins.py +44 -0
- catalystwan/api/builders/feature_profiles/other.py +79 -0
- catalystwan/api/builders/feature_profiles/report.py +155 -0
- catalystwan/api/builders/feature_profiles/service.py +248 -0
- catalystwan/api/builders/feature_profiles/system.py +80 -0
- catalystwan/api/builders/feature_profiles/transport.py +256 -0
- catalystwan/api/builders/feature_profiles/uc_voice.py +287 -0
- catalystwan/api/config_group_api.py +41 -16
- catalystwan/api/configuration_groups/parcel.py +100 -30
- catalystwan/api/feature_profile_api.py +2021 -242
- catalystwan/api/policy_api.py +470 -116
- catalystwan/api/template_api.py +113 -44
- catalystwan/api/templates/README.md +61 -47
- catalystwan/api/templates/cli_template.py +17 -7
- catalystwan/api/templates/device_template/device_template.py +127 -32
- catalystwan/api/templates/feature_template.py +3 -3
- catalystwan/api/templates/models/aaa_model.py +387 -0
- catalystwan/api/templates/models/cisco_aaa_model.py +289 -42
- catalystwan/api/templates/models/cisco_banner_model.py +11 -2
- catalystwan/api/templates/models/cisco_bfd_model.py +31 -36
- catalystwan/api/templates/models/cisco_bgp_model.py +382 -131
- catalystwan/api/templates/models/cisco_logging_model.py +80 -43
- catalystwan/api/templates/models/cisco_ntp_model.py +34 -15
- catalystwan/api/templates/models/cisco_omp_model.py +70 -60
- catalystwan/api/templates/models/cisco_ospf.py +143 -74
- catalystwan/api/templates/models/cisco_ospfv3.py +217 -95
- catalystwan/api/templates/models/cisco_secure_internet_gateway.py +304 -142
- catalystwan/api/templates/models/cisco_snmp_model.py +66 -52
- catalystwan/api/templates/models/cisco_system.py +238 -129
- catalystwan/api/templates/models/cisco_vpn_interface_model.py +632 -275
- catalystwan/api/templates/models/cisco_vpn_model.py +433 -270
- catalystwan/api/templates/models/cli_template.py +3 -2
- catalystwan/api/templates/models/omp_vsmart_model.py +46 -10
- catalystwan/api/templates/models/security_vsmart_model.py +11 -8
- catalystwan/api/templates/models/supported.py +10 -4
- catalystwan/api/templates/models/system_vsmart_model.py +164 -27
- catalystwan/api/templates/models/vpn_vsmart_interface_model.py +198 -0
- catalystwan/api/templates/models/vpn_vsmart_model.py +124 -0
- catalystwan/apigw_auth.py +6 -2
- catalystwan/dataclasses.py +2 -53
- catalystwan/endpoints/__init__.py +41 -41
- catalystwan/endpoints/certificate_management_device.py +4 -0
- catalystwan/endpoints/cluster_management.py +27 -7
- catalystwan/endpoints/configuration/feature_profile/sdwan/application_priority.py +107 -0
- catalystwan/endpoints/configuration/feature_profile/sdwan/cli.py +60 -0
- catalystwan/endpoints/configuration/feature_profile/sdwan/dns_security.py +83 -0
- catalystwan/endpoints/configuration/feature_profile/sdwan/embedded_security.py +88 -0
- catalystwan/endpoints/configuration/feature_profile/sdwan/other.py +62 -0
- catalystwan/endpoints/configuration/feature_profile/sdwan/policy_object.py +35 -12
- catalystwan/endpoints/configuration/feature_profile/sdwan/service.py +154 -0
- catalystwan/endpoints/configuration/feature_profile/sdwan/sig_security.py +88 -0
- catalystwan/endpoints/configuration/feature_profile/sdwan/system.py +164 -11
- catalystwan/endpoints/configuration/feature_profile/sdwan/topology.py +93 -0
- catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py +144 -26
- catalystwan/endpoints/configuration/feature_profile/sdwan/uc_voice.py +77 -0
- catalystwan/endpoints/configuration/network_hierarchy.py +32 -0
- catalystwan/endpoints/configuration/policy/abstractions.py +49 -0
- catalystwan/endpoints/configuration/policy/definition/access_control_list.py +6 -11
- catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py +6 -11
- catalystwan/endpoints/configuration/policy/definition/aip.py +52 -0
- catalystwan/endpoints/configuration/policy/definition/amp.py +52 -0
- catalystwan/endpoints/configuration/policy/definition/app_route.py +50 -0
- catalystwan/endpoints/configuration/policy/definition/cflowd.py +46 -0
- catalystwan/endpoints/configuration/policy/definition/control.py +6 -11
- catalystwan/endpoints/configuration/policy/definition/device_access.py +6 -11
- catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py +6 -11
- catalystwan/endpoints/configuration/policy/definition/dial_peer.py +57 -0
- catalystwan/endpoints/configuration/policy/definition/dns_security.py +50 -0
- catalystwan/endpoints/configuration/policy/definition/fxo_port.py +57 -0
- catalystwan/endpoints/configuration/policy/definition/fxs_did_port.py +57 -0
- catalystwan/endpoints/configuration/policy/definition/fxs_port.py +57 -0
- catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py +6 -11
- catalystwan/endpoints/configuration/policy/definition/intrusion_prevention.py +52 -0
- catalystwan/endpoints/configuration/policy/definition/mesh.py +2 -11
- catalystwan/endpoints/configuration/policy/definition/pri_isdn_port.py +57 -0
- catalystwan/endpoints/configuration/policy/definition/qos_map.py +2 -11
- catalystwan/endpoints/configuration/policy/definition/rewrite.py +6 -11
- catalystwan/endpoints/configuration/policy/definition/route_policy.py +50 -0
- catalystwan/endpoints/configuration/policy/definition/rule_set.py +2 -11
- catalystwan/endpoints/configuration/policy/definition/security_group.py +6 -11
- catalystwan/endpoints/configuration/policy/definition/srst_phone_profile.py +59 -0
- catalystwan/endpoints/configuration/policy/definition/ssl_decryption.py +50 -0
- catalystwan/endpoints/configuration/policy/definition/ssl_decryption_utd_profile.py +52 -0
- catalystwan/endpoints/configuration/policy/definition/traffic_data.py +6 -11
- catalystwan/endpoints/configuration/policy/definition/url_filtering.py +50 -0
- catalystwan/endpoints/configuration/policy/definition/vpn_membership.py +6 -11
- catalystwan/endpoints/configuration/policy/definition/vpn_qos_map.py +50 -0
- catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py +6 -11
- catalystwan/endpoints/configuration/policy/list/app.py +3 -16
- catalystwan/endpoints/configuration/policy/list/app_probe.py +6 -15
- catalystwan/endpoints/configuration/policy/list/as_path.py +3 -16
- catalystwan/endpoints/configuration/policy/list/class_map.py +3 -16
- catalystwan/endpoints/configuration/policy/list/color.py +3 -16
- catalystwan/endpoints/configuration/policy/list/community.py +3 -16
- catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py +6 -15
- catalystwan/endpoints/configuration/policy/list/data_prefix.py +3 -16
- catalystwan/endpoints/configuration/policy/list/expanded_community.py +6 -15
- catalystwan/endpoints/configuration/policy/list/extended_community.py +52 -0
- catalystwan/endpoints/configuration/policy/list/fax_protocol.py +48 -0
- catalystwan/endpoints/configuration/policy/list/fqdn.py +3 -16
- catalystwan/endpoints/configuration/policy/list/geo_location.py +3 -16
- catalystwan/endpoints/configuration/policy/list/identity.py +48 -0
- catalystwan/endpoints/configuration/policy/list/ips_signature.py +6 -15
- catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py +3 -16
- catalystwan/endpoints/configuration/policy/list/local_app.py +3 -16
- catalystwan/endpoints/configuration/policy/list/local_domain.py +3 -16
- catalystwan/endpoints/configuration/policy/list/media_profile.py +52 -0
- catalystwan/endpoints/configuration/policy/list/mirror.py +3 -16
- catalystwan/endpoints/configuration/policy/list/modem_pass_through.py +52 -0
- catalystwan/endpoints/configuration/policy/list/policer.py +3 -16
- catalystwan/endpoints/configuration/policy/list/port.py +3 -16
- catalystwan/endpoints/configuration/policy/list/preferred_color_group.py +6 -15
- catalystwan/endpoints/configuration/policy/list/prefix.py +4 -16
- catalystwan/endpoints/configuration/policy/list/protocol_name.py +6 -15
- catalystwan/endpoints/configuration/policy/list/region.py +2 -10
- catalystwan/endpoints/configuration/policy/list/scalable_group_tag.py +52 -0
- catalystwan/endpoints/configuration/policy/list/site.py +3 -16
- catalystwan/endpoints/configuration/policy/list/sla.py +3 -16
- catalystwan/endpoints/configuration/policy/list/supervisory_disconnect.py +52 -0
- catalystwan/endpoints/configuration/policy/list/threat_grid_api_key.py +52 -0
- catalystwan/endpoints/configuration/policy/list/tloc.py +3 -16
- catalystwan/endpoints/configuration/policy/list/translation_profile.py +52 -0
- catalystwan/endpoints/configuration/policy/list/translation_rules.py +52 -0
- catalystwan/endpoints/configuration/policy/list/trunkgroup.py +48 -0
- catalystwan/endpoints/configuration/policy/list/umbrella_data.py +52 -0
- catalystwan/endpoints/configuration/policy/list/url_allow_list.py +3 -16
- catalystwan/endpoints/configuration/policy/list/url_block_list.py +3 -16
- catalystwan/endpoints/configuration/policy/list/vpn.py +3 -16
- catalystwan/endpoints/configuration/policy/list/zone.py +3 -16
- catalystwan/endpoints/configuration/policy/security_template.py +2 -3
- catalystwan/endpoints/configuration/policy/voice_template.py +39 -0
- catalystwan/endpoints/configuration/policy_group.py +30 -0
- catalystwan/endpoints/configuration/software_actions.py +2 -4
- catalystwan/endpoints/configuration/topology_group.py +51 -0
- catalystwan/endpoints/configuration_dashboard_status.py +2 -2
- catalystwan/endpoints/configuration_device_template.py +15 -1
- catalystwan/endpoints/configuration_feature_profile.py +8 -11
- catalystwan/endpoints/configuration_general_template.py +31 -0
- catalystwan/endpoints/configuration_group.py +28 -5
- catalystwan/endpoints/configuration_settings.py +90 -1
- catalystwan/endpoints/configuration_template_master.py +48 -0
- catalystwan/endpoints/endpoints_container.py +79 -19
- catalystwan/endpoints/real_time_monitoring/reboot_history.py +1 -3
- catalystwan/endpoints/tenant_migration.py +2 -0
- catalystwan/exceptions.py +17 -0
- catalystwan/integration_tests/base.py +81 -0
- catalystwan/integration_tests/feature_profile/sdwan/__init__.py +0 -0
- catalystwan/integration_tests/feature_profile/sdwan/policy/__init__.py +0 -0
- catalystwan/integration_tests/feature_profile/sdwan/policy/base.py +33 -0
- catalystwan/integration_tests/feature_profile/sdwan/policy/test_extended_community.py +33 -0
- catalystwan/integration_tests/feature_profile/sdwan/policy/test_security_app_list.py +32 -0
- catalystwan/integration_tests/feature_profile/sdwan/test_application_priority.py +433 -0
- catalystwan/integration_tests/feature_profile/sdwan/test_cli.py +54 -0
- catalystwan/integration_tests/feature_profile/sdwan/test_dns_security.py +106 -0
- catalystwan/integration_tests/feature_profile/sdwan/test_other.py +49 -0
- catalystwan/integration_tests/feature_profile/sdwan/test_service.py +1078 -0
- catalystwan/integration_tests/feature_profile/sdwan/test_sig_security.py +322 -0
- catalystwan/integration_tests/feature_profile/sdwan/test_ssl_decryption.py +85 -0
- catalystwan/integration_tests/feature_profile/sdwan/test_system.py +368 -0
- catalystwan/integration_tests/feature_profile/sdwan/test_tracker.py +127 -0
- catalystwan/integration_tests/feature_profile/sdwan/test_transport.py +1698 -0
- catalystwan/integration_tests/feature_profile/sdwan/topology/test_topology.py +93 -0
- catalystwan/integration_tests/profile_builder/__init__.py +0 -0
- catalystwan/integration_tests/profile_builder/test_pb_service.py +197 -0
- catalystwan/integration_tests/profile_builder/test_pb_transport.py +226 -0
- catalystwan/integration_tests/profile_builder/test_pb_uc_voice.py +277 -0
- catalystwan/integration_tests/test_data/__init__.py +117 -0
- catalystwan/integration_tests/test_find_template_values.py +7 -18
- catalystwan/integration_tests/test_network_hierarchy.py +82 -0
- catalystwan/integration_tests/test_settings.py +30 -0
- catalystwan/models/common.py +1898 -2
- catalystwan/models/configuration/common.py +1 -0
- catalystwan/models/configuration/feature_profile/common.py +634 -149
- catalystwan/models/configuration/feature_profile/parcel.py +238 -0
- catalystwan/models/configuration/feature_profile/sdwan/acl/__init__.py +13 -0
- catalystwan/models/configuration/feature_profile/sdwan/acl/ipv4acl.py +298 -0
- catalystwan/models/configuration/feature_profile/sdwan/acl/ipv6acl.py +344 -0
- catalystwan/models/configuration/feature_profile/sdwan/application_priority/__init__.py +218 -0
- catalystwan/models/configuration/feature_profile/sdwan/application_priority/cloud_probe.py +61 -0
- catalystwan/models/configuration/feature_profile/sdwan/application_priority/policy_settings.py +31 -0
- catalystwan/models/configuration/feature_profile/sdwan/application_priority/qos_policy.py +102 -0
- catalystwan/models/configuration/feature_profile/sdwan/application_priority/traffic_policy.py +1057 -0
- catalystwan/models/configuration/feature_profile/sdwan/cli/__init__.py +23 -0
- catalystwan/models/configuration/feature_profile/sdwan/cli/config.py +18 -0
- catalystwan/models/configuration/feature_profile/sdwan/cli/full_config.py +15 -0
- catalystwan/models/configuration/feature_profile/sdwan/dns_security/__init__.py +13 -0
- catalystwan/models/configuration/feature_profile/sdwan/dns_security/dns.py +110 -0
- catalystwan/models/configuration/feature_profile/sdwan/embedded_security/__init__.py +23 -0
- catalystwan/models/configuration/feature_profile/sdwan/embedded_security/ngfirewall.py +493 -0
- catalystwan/models/configuration/feature_profile/sdwan/embedded_security/policy.py +171 -0
- catalystwan/models/configuration/feature_profile/sdwan/other/__init__.py +25 -0
- catalystwan/models/configuration/feature_profile/sdwan/other/cybervision.py +44 -0
- catalystwan/models/configuration/feature_profile/sdwan/other/thousandeyes.py +147 -0
- catalystwan/models/configuration/feature_profile/sdwan/other/ucse.py +110 -0
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/__init__.py +62 -48
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/app_probe.py +34 -20
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/application_list.py +8 -6
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/as_path.py +22 -0
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/color_list.py +7 -5
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/data_prefix.py +13 -4
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/expanded_community_list.py +9 -7
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/extended_community.py +34 -0
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/fowarding_class.py +7 -5
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv4_network_object.py +15 -0
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv4_service_object.py +254 -0
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv6_data_prefix.py +11 -9
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv6_prefix_list.py +25 -10
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/mirror.py +27 -0
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/network_object_group.py +15 -0
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/object_group.py +15 -0
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/{policier.py → policer.py} +12 -10
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/prefered_group_color.py +29 -10
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/prefix_list.py +23 -8
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/service_object_group.py +21 -0
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/sla_class.py +12 -31
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/standard_community.py +16 -10
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/tloc_list.py +8 -7
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/aip.py +64 -0
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/amp.py +79 -0
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/application_list.py +8 -6
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/data_prefix.py +7 -5
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/fqdn.py +7 -5
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/geolocation_list.py +7 -5
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/identity.py +30 -0
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/intrusion_prevention.py +58 -0
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ips_signature.py +7 -5
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/local_domain.py +7 -5
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/object_group.py +72 -0
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/protocol_list.py +7 -5
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/rule_set.py +137 -0
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/scalable_group_tag.py +26 -0
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/security_port.py +21 -11
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ssl_decryption.py +126 -0
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ssl_decryption_profile.py +165 -0
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/url.py +15 -10
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/url_filtering.py +148 -0
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/zone.py +14 -18
- catalystwan/models/configuration/feature_profile/sdwan/routing/__init__.py +26 -0
- catalystwan/models/configuration/feature_profile/sdwan/routing/bgp.py +609 -0
- catalystwan/models/configuration/feature_profile/sdwan/{service → routing}/ospf.py +55 -47
- catalystwan/models/configuration/feature_profile/sdwan/{service → routing}/ospfv3.py +74 -72
- catalystwan/models/configuration/feature_profile/sdwan/service/__init__.py +91 -0
- catalystwan/models/configuration/feature_profile/sdwan/service/appqoe.py +76 -41
- catalystwan/models/configuration/feature_profile/sdwan/service/dhcp_server.py +107 -64
- catalystwan/models/configuration/feature_profile/sdwan/service/dual_router_ha.py +26 -0
- catalystwan/models/configuration/feature_profile/sdwan/service/eigrp.py +39 -42
- catalystwan/models/configuration/feature_profile/sdwan/service/lan/common.py +7 -88
- catalystwan/models/configuration/feature_profile/sdwan/service/lan/ethernet.py +231 -155
- catalystwan/models/configuration/feature_profile/sdwan/service/lan/gre.py +38 -108
- catalystwan/models/configuration/feature_profile/sdwan/service/lan/ipsec.py +77 -84
- catalystwan/models/configuration/feature_profile/sdwan/service/lan/multilink.py +101 -0
- catalystwan/models/configuration/feature_profile/sdwan/service/lan/svi.py +62 -56
- catalystwan/models/configuration/feature_profile/sdwan/service/lan/vpn.py +111 -120
- catalystwan/models/configuration/feature_profile/sdwan/service/multicast.py +56 -57
- catalystwan/models/configuration/feature_profile/sdwan/service/object_tracker.py +15 -21
- catalystwan/models/configuration/feature_profile/sdwan/service/route_policy.py +358 -110
- catalystwan/models/configuration/feature_profile/sdwan/service/service_chain.py +38 -0
- catalystwan/models/configuration/feature_profile/sdwan/service/service_insertion_attachment.py +17 -25
- catalystwan/models/configuration/feature_profile/sdwan/service/switchport.py +50 -58
- catalystwan/models/configuration/feature_profile/sdwan/service/tracker.py +12 -21
- catalystwan/models/configuration/feature_profile/sdwan/service/wireless_lan.py +27 -31
- catalystwan/models/configuration/feature_profile/sdwan/sig_security/__init__.py +19 -0
- catalystwan/models/configuration/feature_profile/sdwan/sig_security/sig_security.py +379 -0
- catalystwan/models/configuration/feature_profile/sdwan/system/__init__.py +59 -0
- catalystwan/models/configuration/feature_profile/sdwan/system/aaa.py +58 -10
- catalystwan/models/configuration/feature_profile/sdwan/system/banner.py +30 -0
- catalystwan/models/configuration/feature_profile/sdwan/system/basic.py +290 -0
- catalystwan/models/configuration/feature_profile/sdwan/system/bfd.py +69 -0
- catalystwan/models/configuration/feature_profile/sdwan/system/device_access.py +157 -0
- catalystwan/models/configuration/feature_profile/sdwan/system/device_access_ipv6.py +157 -0
- catalystwan/models/configuration/feature_profile/sdwan/system/global_parcel.py +163 -0
- catalystwan/models/configuration/feature_profile/sdwan/system/logging_parcel.py +162 -0
- catalystwan/models/configuration/feature_profile/sdwan/system/mrf.py +75 -0
- catalystwan/models/configuration/feature_profile/sdwan/system/ntp.py +103 -0
- catalystwan/models/configuration/feature_profile/sdwan/system/omp.py +120 -0
- catalystwan/models/configuration/feature_profile/sdwan/system/security.py +179 -0
- catalystwan/models/configuration/feature_profile/sdwan/system/snmp.py +173 -0
- catalystwan/models/configuration/feature_profile/sdwan/topology/__init__.py +29 -0
- catalystwan/models/configuration/feature_profile/sdwan/topology/custom_control.py +425 -0
- catalystwan/models/configuration/feature_profile/sdwan/topology/hubspoke.py +60 -0
- catalystwan/models/configuration/feature_profile/sdwan/topology/mesh.py +23 -0
- catalystwan/models/configuration/feature_profile/sdwan/trackers/__init__.py +36 -0
- catalystwan/models/configuration/feature_profile/sdwan/trackers/tracker.py +96 -0
- catalystwan/models/configuration/feature_profile/sdwan/trackers/tracker_group.py +63 -0
- catalystwan/models/configuration/feature_profile/sdwan/transport/__init__.py +93 -0
- catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_controller.py +26 -23
- catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_profile.py +71 -0
- catalystwan/models/configuration/feature_profile/sdwan/transport/gps.py +37 -0
- catalystwan/models/configuration/feature_profile/sdwan/transport/management/ethernet.py +121 -0
- catalystwan/models/configuration/feature_profile/sdwan/transport/t1e1controller.py +124 -0
- catalystwan/models/configuration/feature_profile/sdwan/transport/vpn.py +285 -0
- catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/cellular.py +173 -0
- catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/ethernet.py +389 -0
- catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/gre.py +46 -0
- catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/ipsec.py +137 -0
- catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/multilink.py +219 -0
- catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/protocol_over.py +405 -0
- catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/t1e1serial.py +195 -0
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/__init__.py +62 -0
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/analog_interface.py +436 -0
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/call_routing.py +179 -0
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/digital_interface.py +380 -0
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/dsp_farm.py +193 -0
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/media_profile.py +17 -0
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/server_group.py +51 -0
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/srst.py +86 -0
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/supervisory_disconnect.py +69 -0
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/translation_profile.py +42 -0
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/translation_rule.py +31 -0
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/trunk_group.py +26 -0
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/voice_global.py +55 -0
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/voice_tenant.py +40 -0
- catalystwan/models/configuration/network_hierarchy/__init__.py +22 -0
- catalystwan/models/configuration/network_hierarchy/cflowd.py +120 -0
- catalystwan/models/configuration/network_hierarchy/node.py +88 -0
- catalystwan/models/configuration/policy_group.py +74 -0
- catalystwan/models/configuration/profile_type.py +1 -6
- catalystwan/models/configuration/topology_group.py +52 -0
- catalystwan/models/policy/__init__.py +275 -69
- catalystwan/models/policy/centralized.py +26 -29
- catalystwan/models/policy/{definitions → definition}/access_control_list.py +47 -17
- catalystwan/models/policy/{definitions → definition}/access_control_list_ipv6.py +42 -18
- catalystwan/models/policy/definition/aip.py +60 -0
- catalystwan/models/policy/definition/amp.py +65 -0
- catalystwan/models/policy/definition/app_route.py +246 -0
- catalystwan/models/policy/definition/cflowd.py +95 -0
- catalystwan/models/policy/{definitions → definition}/control.py +48 -25
- catalystwan/models/policy/{definitions → definition}/device_access.py +22 -11
- catalystwan/models/policy/{definitions → definition}/device_access_ipv6.py +20 -11
- catalystwan/models/policy/definition/dial_peer.py +60 -0
- catalystwan/models/policy/definition/dns_security.py +130 -0
- catalystwan/models/policy/definition/fxo_port.py +63 -0
- catalystwan/models/policy/definition/fxs_did_port.py +58 -0
- catalystwan/models/policy/definition/fxs_port.py +56 -0
- catalystwan/models/policy/{definitions → definition}/hub_and_spoke.py +18 -4
- catalystwan/models/policy/definition/intrusion_prevention.py +55 -0
- catalystwan/models/policy/{definitions → definition}/mesh.py +13 -1
- catalystwan/models/policy/definition/pri_isdn_port.py +48 -0
- catalystwan/models/policy/{definitions → definition}/qos_map.py +39 -32
- catalystwan/models/policy/{definitions → definition}/rewrite.py +12 -2
- catalystwan/models/policy/definition/route_policy.py +187 -0
- catalystwan/models/policy/{definitions → definition}/rule_set.py +66 -48
- catalystwan/models/policy/{definitions → definition}/security_group.py +38 -14
- catalystwan/models/policy/definition/srst_phone_profile.py +37 -0
- catalystwan/models/policy/definition/ssl_decryption.py +209 -0
- catalystwan/models/policy/definition/ssl_decryption_utd_profile.py +87 -0
- catalystwan/models/policy/{definitions → definition}/traffic_data.py +184 -61
- catalystwan/models/policy/definition/url_filtering.py +70 -0
- catalystwan/models/policy/{definitions → definition}/vpn_membership.py +13 -1
- catalystwan/models/policy/definition/vpn_qos_map.py +46 -0
- catalystwan/models/policy/{definitions → definition}/zone_based_firewall.py +93 -32
- catalystwan/models/policy/list/app.py +44 -0
- catalystwan/models/policy/list/app_probe.py +42 -0
- catalystwan/models/policy/list/as_path.py +30 -0
- catalystwan/models/policy/list/class_map.py +30 -0
- catalystwan/models/policy/list/color.py +28 -0
- catalystwan/models/policy/list/communities.py +83 -0
- catalystwan/models/policy/list/data_ipv6_prefix.py +30 -0
- catalystwan/models/policy/list/data_prefix.py +30 -0
- catalystwan/models/policy/list/fax_protocol.py +45 -0
- catalystwan/models/policy/list/fqdn.py +24 -0
- catalystwan/models/policy/list/geo_location.py +33 -0
- catalystwan/models/policy/list/identity.py +29 -0
- catalystwan/models/policy/list/ips_signature.py +27 -0
- catalystwan/models/policy/list/ipv6_prefix.py +33 -0
- catalystwan/models/policy/list/local_app.py +45 -0
- catalystwan/models/policy/list/local_domain.py +36 -0
- catalystwan/models/policy/list/media_profile.py +44 -0
- catalystwan/models/policy/list/mirror.py +27 -0
- catalystwan/models/policy/list/modem_pass_through.py +27 -0
- catalystwan/models/policy/list/policer.py +39 -0
- catalystwan/models/policy/list/port.py +33 -0
- catalystwan/models/policy/list/preferred_color_group.py +82 -0
- catalystwan/models/policy/list/prefix.py +33 -0
- catalystwan/models/policy/list/protocol_name.py +26 -0
- catalystwan/models/policy/list/region.py +45 -0
- catalystwan/models/policy/list/scalable_group_tag.py +30 -0
- catalystwan/models/policy/list/site.py +34 -0
- catalystwan/models/policy/list/sla.py +77 -0
- catalystwan/models/policy/list/supervisory_disconnect.py +62 -0
- catalystwan/models/policy/list/threat_grid_api_key.py +32 -0
- catalystwan/models/policy/list/tloc.py +32 -0
- catalystwan/models/policy/list/translation_profile.py +32 -0
- catalystwan/models/policy/list/translation_rules.py +29 -0
- catalystwan/models/policy/list/trunkgroup.py +56 -0
- catalystwan/models/policy/list/umbrella_data.py +30 -0
- catalystwan/models/policy/list/url.py +39 -0
- catalystwan/models/policy/list/vpn.py +40 -0
- catalystwan/models/policy/list/zone.py +46 -0
- catalystwan/models/policy/localized.py +34 -16
- catalystwan/models/policy/policy.py +13 -9
- catalystwan/models/policy/policy_definition.py +673 -173
- catalystwan/models/policy/policy_list.py +38 -27
- catalystwan/models/policy/security.py +145 -46
- catalystwan/models/policy/voice.py +77 -0
- catalystwan/models/settings.py +41 -0
- catalystwan/models/templates.py +79 -0
- catalystwan/response.py +6 -2
- catalystwan/session.py +1 -1
- catalystwan/tests/builders/test_report.py +60 -0
- catalystwan/tests/builders/uc_voice.py +85 -0
- catalystwan/tests/models/__init__.py +0 -0
- catalystwan/tests/models/test_digital_interface.py +56 -0
- catalystwan/tests/templates/definitions/aaa_basic.json +96 -0
- catalystwan/tests/templates/definitions/aaa_complex.json +464 -0
- catalystwan/tests/templates/definitions/{iuo.json → cisco_aaa.json} +44 -15
- catalystwan/tests/templates/definitions/cisco_aaa_complex.json +361 -0
- catalystwan/tests/templates/definitions/cisco_logging_complex.json +268 -0
- catalystwan/tests/templates/definitions/cisco_ntp_complex.json +143 -0
- catalystwan/tests/templates/definitions/cisco_omp_complex.json +175 -0
- catalystwan/tests/templates/definitions/cisco_ospf_complex.json +302 -0
- catalystwan/tests/templates/definitions/cisco_sig.json +405 -0
- catalystwan/tests/templates/definitions/cisco_snmp_complex.json +258 -0
- catalystwan/tests/templates/definitions/cisco_system_complex.json +502 -0
- catalystwan/tests/templates/definitions/{Basic_Cisco_VPN_Model.json → cisco_vpn_basic.json} +2 -2
- catalystwan/tests/templates/definitions/{complex_cisco_vpn.json → cisco_vpn_complex.json} +27 -12
- catalystwan/tests/templates/definitions/cisco_vpn_interface_complex.json +821 -0
- catalystwan/tests/templates/definitions/omp_vsmart_1.json +26 -0
- catalystwan/tests/templates/definitions/{omp_2.json → omp_vsmart_2.json} +16 -2
- catalystwan/tests/templates/definitions/{omp_3.json → omp_vsmart_3.json} +16 -2
- catalystwan/tests/templates/definitions/omp_vsmart_complex.json +73 -0
- catalystwan/tests/templates/definitions/security_vsmart_complex.json +24 -0
- catalystwan/tests/templates/definitions/system_vsmart_complex.json +193 -0
- catalystwan/tests/templates/definitions/vpn_vsmart_basic.json +17 -0
- catalystwan/tests/templates/definitions/vpn_vsmart_complex.json +179 -0
- catalystwan/tests/templates/definitions/vpn_vsmart_interface_basic.json +42 -0
- catalystwan/tests/templates/definitions/vpn_vsmart_interface_complex.json +208 -0
- catalystwan/tests/templates/models/__init__.py +46 -13
- catalystwan/tests/templates/models/aaa.py +106 -0
- catalystwan/tests/templates/models/cisco_aaa.py +81 -48
- catalystwan/tests/templates/models/cisco_banner.py +2 -2
- catalystwan/tests/templates/models/cisco_bfd.py +4 -6
- catalystwan/tests/templates/models/cisco_logging.py +65 -0
- catalystwan/tests/templates/models/cisco_ntp.py +17 -0
- catalystwan/tests/templates/models/cisco_omp.py +37 -0
- catalystwan/tests/templates/models/cisco_ospf.py +60 -0
- catalystwan/tests/templates/models/cisco_secure_internet_gateway.py +95 -0
- catalystwan/tests/templates/models/cisco_snmp.py +40 -0
- catalystwan/tests/templates/models/cisco_system.py +108 -3
- catalystwan/tests/templates/models/cisco_vpn.py +42 -72
- catalystwan/tests/templates/models/cisco_vpn_interface.py +200 -0
- catalystwan/tests/templates/models/omp_vsmart.py +28 -8
- catalystwan/tests/templates/models/security_vsmart.py +11 -0
- catalystwan/tests/templates/models/system_vsmart.py +37 -0
- catalystwan/tests/templates/models/vpn_vsmart.py +32 -0
- catalystwan/tests/templates/models/vpn_vsmart_interface.py +54 -0
- catalystwan/tests/templates/schemas/aaa.json +1096 -0
- catalystwan/tests/templates/schemas/cedge_aaa.json +1 -1
- catalystwan/tests/templates/schemas/cisco_logging.json +577 -0
- catalystwan/tests/templates/schemas/cisco_ntp.json +265 -0
- catalystwan/tests/templates/schemas/cisco_omp.json +479 -0
- catalystwan/tests/templates/schemas/cisco_ospf.json +908 -0
- catalystwan/tests/templates/schemas/cisco_secure_internet_gateway.json +1520 -0
- catalystwan/tests/templates/schemas/cisco_snmp.json +561 -0
- catalystwan/tests/templates/schemas/cisco_system.json +242 -0
- catalystwan/tests/templates/schemas/cisco_vpn.json +53 -1
- catalystwan/tests/templates/schemas/cisco_vpn_interface.json +3348 -0
- catalystwan/tests/templates/schemas/omp-vsmart.json +20 -0
- catalystwan/tests/templates/schemas/security-vsmart.json +58 -0
- catalystwan/tests/templates/schemas/system-vsmart.json +2585 -0
- catalystwan/tests/templates/schemas/vpn-vsmart-interface.json +859 -0
- catalystwan/tests/templates/schemas/vpn-vsmart.json +445 -0
- catalystwan/tests/templates/test_chose_model.py +6 -10
- catalystwan/tests/templates/test_deserialize_model.py +4 -4
- catalystwan/tests/templates/test_find_template_values.py +229 -0
- catalystwan/tests/templates/test_find_template_values_2.py +193 -0
- catalystwan/tests/templates/test_serialize_model.py +1 -2
- catalystwan/tests/test_cli_template.py +8 -9
- catalystwan/tests/test_endpoints.py +42 -11
- catalystwan/tests/test_feature_profile_api.py +282 -0
- catalystwan/tests/test_models_common.py +53 -0
- catalystwan/tests/test_templates.py +16 -19
- catalystwan/utils/feature_template/find_template_values.py +17 -4
- catalystwan/utils/model.py +45 -0
- catalystwan/utils/persona.py +5 -0
- catalystwan/utils/type_check.py +22 -0
- catalystwan/workflows/backup_restore_device_templates.py +467 -0
- catalystwan/workflows/tenant_migration.py +1 -1
- {catalystwan-0.41.2.dist-info → catalystwan-0.41.2.dev0.dist-info}/METADATA +20 -1
- catalystwan-0.41.2.dev0.dist-info/RECORD +636 -0
- catalystwan/ENDPOINTS.md +0 -611
- catalystwan/api/configuration_groups/parcels/cellular_controller.py +0 -33
- catalystwan/api/templates/device_template/device_template_payload.json.j2 +0 -19
- catalystwan/models/configuration/config_migration.py +0 -36
- catalystwan/models/configuration/feature_profile/sdwan/management/vpn.py +0 -26
- catalystwan/models/configuration/feature_profile/sdwan/service/acl.py +0 -409
- catalystwan/models/configuration/feature_profile/sdwan/service/bgp.py +0 -288
- catalystwan/models/policy/lists.py +0 -330
- catalystwan/models/policy/lists_entries.py +0 -444
- catalystwan/tests/templates/definitions/complex_aaa.json +0 -277
- catalystwan/tests/templates/definitions/omp_1.json +0 -11
- catalystwan/utils/timezone.py +0 -422
- catalystwan-0.41.2.dist-info/RECORD +0 -353
- /catalystwan/tests/templates/definitions/{banner_1.json → cisco_banner.json} +0 -0
- {catalystwan-0.41.2.dist-info → catalystwan-0.41.2.dev0.dist-info}/LICENSE +0 -0
- {catalystwan-0.41.2.dist-info → catalystwan-0.41.2.dev0.dist-info}/WHEEL +0 -0
|
@@ -1,152 +1,214 @@
|
|
|
1
1
|
# Copyright 2023 Cisco Systems, Inc. and its affiliates
|
|
2
2
|
|
|
3
3
|
import ipaddress
|
|
4
|
-
from enum import Enum
|
|
5
4
|
from pathlib import Path
|
|
6
|
-
from typing import ClassVar, List, Optional
|
|
5
|
+
from typing import ClassVar, List, Literal, Optional
|
|
7
6
|
|
|
8
7
|
from pydantic import ConfigDict, Field
|
|
9
8
|
|
|
10
9
|
from catalystwan.api.templates.bool_str import BoolStr
|
|
11
10
|
from catalystwan.api.templates.feature_template import FeatureTemplate, FeatureTemplateValidator
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class Protocol(str, Enum):
|
|
20
|
-
BGP = "bgp"
|
|
21
|
-
CONNECTED = "connected"
|
|
22
|
-
EIGRP = "eigrp"
|
|
23
|
-
ISIS = "isis"
|
|
24
|
-
LISP = "lisp"
|
|
25
|
-
NAT_ROUTE = "nat-route"
|
|
26
|
-
OMP = "omp"
|
|
27
|
-
STATIC = "static"
|
|
12
|
+
MetricType = Literal["type1", "type2"]
|
|
13
|
+
Protocol = Literal["bgp", "connected", "eigrp", "isis", "lisp", "nat-route", "omp", "static"]
|
|
14
|
+
AdType = Literal["on-startup"]
|
|
15
|
+
Translate = Literal["always"]
|
|
16
|
+
Network = Literal["broadcast", "point-to-point", "non-broadcast", "point-to-multipoint"]
|
|
17
|
+
Type = Literal["md5", "sha1"]
|
|
28
18
|
|
|
29
19
|
|
|
30
20
|
class Redistribute(FeatureTemplateValidator):
|
|
31
|
-
protocol: Protocol
|
|
32
|
-
route_policy: Optional[str] = Field(
|
|
33
|
-
|
|
21
|
+
protocol: Protocol = Field(description="The routing protocol for redistribution")
|
|
22
|
+
route_policy: Optional[str] = Field(
|
|
23
|
+
default=None,
|
|
24
|
+
json_schema_extra={"vmanage_key": "route-policy"},
|
|
25
|
+
description="The route policy to filter routes for redistribution",
|
|
26
|
+
)
|
|
27
|
+
dia: Optional[BoolStr] = Field(
|
|
28
|
+
default=True, description="Whether to include Direct Internet Access (DIA) routes in redistribution"
|
|
29
|
+
)
|
|
34
30
|
model_config = ConfigDict(populate_by_name=True)
|
|
35
31
|
|
|
36
32
|
|
|
37
|
-
class AdType(str, Enum):
|
|
38
|
-
ON_STARTUP = "on-startup"
|
|
39
|
-
|
|
40
|
-
|
|
41
33
|
class RouterLsa(FeatureTemplateValidator):
|
|
42
|
-
ad_type: AdType = Field(
|
|
43
|
-
|
|
34
|
+
ad_type: AdType = Field(
|
|
35
|
+
json_schema_extra={"vmanage_key": "ad-type"}, description="Advertisement type for the router LSA"
|
|
36
|
+
)
|
|
37
|
+
time: int = Field(description="Time configuration for the router LSA advertisement")
|
|
44
38
|
model_config = ConfigDict(populate_by_name=True)
|
|
45
39
|
|
|
46
40
|
|
|
47
|
-
class Translate(str, Enum):
|
|
48
|
-
ALWAYS = "always"
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
class Network(str, Enum):
|
|
52
|
-
BROADCAST = "broadcast"
|
|
53
|
-
POINT_TO_POINT = "point-to-point"
|
|
54
|
-
NON_BROADCAST = "non-broadcast"
|
|
55
|
-
POINT_TO_MULTIPOINT = "point-to-multipoint"
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
class Type(str, Enum):
|
|
59
|
-
MD5 = "md5"
|
|
60
|
-
SHA1 = "sha1"
|
|
61
|
-
|
|
62
|
-
|
|
63
41
|
class Interface(FeatureTemplateValidator):
|
|
64
|
-
name: str
|
|
65
|
-
hello_interval: Optional[int] = Field(
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
42
|
+
name: str = Field(description="The name of the interface")
|
|
43
|
+
hello_interval: Optional[int] = Field(
|
|
44
|
+
default=10,
|
|
45
|
+
json_schema_extra={"vmanage_key": "hello-interval"},
|
|
46
|
+
description="The interval between HELLO packets in seconds",
|
|
47
|
+
)
|
|
48
|
+
dead_interval: Optional[int] = Field(
|
|
49
|
+
default=40,
|
|
50
|
+
json_schema_extra={"vmanage_key": "dead-interval"},
|
|
51
|
+
description="The interval after which a neighbor is declared down if no HELLO packets are received",
|
|
52
|
+
)
|
|
53
|
+
retransmit_interval: Optional[int] = Field(
|
|
54
|
+
default=5,
|
|
55
|
+
json_schema_extra={"vmanage_key": "retransmit-interval"},
|
|
56
|
+
description="The interval between LSA retransmissions",
|
|
57
|
+
)
|
|
58
|
+
cost: Optional[int] = Field(description="The cost metric for the interface")
|
|
59
|
+
network: Optional[Network] = Field(default="broadcast", description="The network type for the OSPF interface")
|
|
60
|
+
passive_interface: Optional[bool] = Field(
|
|
61
|
+
default=False,
|
|
62
|
+
json_schema_extra={"vmanage_key": "passive-interface"},
|
|
63
|
+
description="Whether the interface is passive (not sending OSPF packets)",
|
|
64
|
+
)
|
|
65
|
+
type: Type = Field(
|
|
66
|
+
json_schema_extra={"data_path": ["authentication"]},
|
|
67
|
+
description="The type of authentication for OSPF (MD5 or SHA1)",
|
|
68
|
+
)
|
|
72
69
|
authentication_key: str = Field(
|
|
73
|
-
json_schema_extra={"vmanage_key": "authentication-key", "data_path": ["authentication"]}
|
|
70
|
+
json_schema_extra={"vmanage_key": "authentication-key", "data_path": ["authentication"]},
|
|
71
|
+
description="The authentication key for OSPF",
|
|
72
|
+
)
|
|
73
|
+
spi: Optional[int] = Field(
|
|
74
|
+
default=None,
|
|
75
|
+
json_schema_extra={"data_path": ["authentication", "ipsec"]},
|
|
76
|
+
description="The Security Parameter Index for IPsec authentication",
|
|
74
77
|
)
|
|
75
|
-
spi: Optional[int] = Field(default=None, json_schema_extra={"data_path": ["authentication", "ipsec"]})
|
|
76
78
|
model_config = ConfigDict(populate_by_name=True)
|
|
77
79
|
|
|
78
80
|
|
|
79
81
|
class Range(FeatureTemplateValidator):
|
|
80
|
-
address: ipaddress.IPv4Interface
|
|
81
|
-
cost: Optional[int] = None
|
|
82
|
-
no_advertise: Optional[bool] = Field(
|
|
82
|
+
address: ipaddress.IPv4Interface = Field(..., description="The IPv4 interface address and subnet")
|
|
83
|
+
cost: Optional[int] = Field(default=None, description="The cost metric for the address range")
|
|
84
|
+
no_advertise: Optional[bool] = Field(
|
|
85
|
+
default=False,
|
|
86
|
+
json_schema_extra={"vmanage_key": "no-advertise"},
|
|
87
|
+
description="Whether to advertise this range or not",
|
|
88
|
+
)
|
|
83
89
|
model_config = ConfigDict(populate_by_name=True)
|
|
84
90
|
|
|
85
91
|
|
|
86
92
|
class Area(FeatureTemplateValidator):
|
|
87
|
-
a_num: int = Field(json_schema_extra={"vmanage_key": "a-num"})
|
|
93
|
+
a_num: int = Field(json_schema_extra={"vmanage_key": "a-num"}, description="The area number for OSPF configuration")
|
|
88
94
|
stub: Optional[BoolStr] = Field(
|
|
89
|
-
default=None,
|
|
95
|
+
default=None,
|
|
96
|
+
json_schema_extra={"vmanage_key": "no-summary", "data_path": ["stub"]},
|
|
97
|
+
description="Configuration for the stub area type with the option to suppress summary LSA",
|
|
90
98
|
)
|
|
91
99
|
nssa: Optional[BoolStr] = Field(
|
|
92
|
-
default=None,
|
|
100
|
+
default=None,
|
|
101
|
+
json_schema_extra={"vmanage_key": "no-summary", "data_path": ["nssa"]},
|
|
102
|
+
description="Configuration for the NSSA area type with the option to suppress summary LSA",
|
|
103
|
+
)
|
|
104
|
+
translate: Optional[Translate] = Field(
|
|
105
|
+
default=None,
|
|
106
|
+
json_schema_extra={"data_path": ["nssa"]},
|
|
107
|
+
description="Control for translating type 7 LSAs to type 5 LSAs in NSSA",
|
|
93
108
|
)
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
109
|
+
normal: Optional[BoolStr] = Field(description="Whether the area is a normal OSPF area")
|
|
110
|
+
interface: Optional[List[Interface]] = Field(
|
|
111
|
+
default=None, description="List of OSPF interface configurations for the area"
|
|
112
|
+
)
|
|
113
|
+
range: Optional[List[Range]] = Field(default=None, description="List of address ranges for the area")
|
|
98
114
|
model_config = ConfigDict(populate_by_name=True)
|
|
99
115
|
|
|
100
116
|
|
|
101
117
|
class RedistributeV6(FeatureTemplateValidator):
|
|
102
|
-
protocol: Protocol
|
|
103
|
-
route_policy: Optional[str] = Field(
|
|
118
|
+
protocol: Protocol = Field(description="The IPv6 routing protocol for redistribution")
|
|
119
|
+
route_policy: Optional[str] = Field(
|
|
120
|
+
default=None,
|
|
121
|
+
json_schema_extra={"vmanage_key": "route-policy"},
|
|
122
|
+
description="The route policy to filter IPv6 routes for redistribution",
|
|
123
|
+
)
|
|
104
124
|
model_config = ConfigDict(populate_by_name=True)
|
|
105
125
|
|
|
106
126
|
|
|
107
127
|
class InterfaceV6(FeatureTemplateValidator):
|
|
108
|
-
name: str
|
|
109
|
-
hello_interval: Optional[int] = Field(
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
128
|
+
name: str = Field(description="The name of the IPv6 interface")
|
|
129
|
+
hello_interval: Optional[int] = Field(
|
|
130
|
+
default=10,
|
|
131
|
+
json_schema_extra={"vmanage_key": "hello-interval"},
|
|
132
|
+
description="The interval between HELLO packets in seconds for IPv6",
|
|
133
|
+
)
|
|
134
|
+
dead_interval: Optional[int] = Field(
|
|
135
|
+
default=40,
|
|
136
|
+
json_schema_extra={"vmanage_key": "dead-interval"},
|
|
137
|
+
description="The interval after which a neighbor is declared down if no HELLO packets are received for IPv6",
|
|
138
|
+
)
|
|
139
|
+
retransmit_interval: Optional[int] = Field(
|
|
140
|
+
default=5,
|
|
141
|
+
json_schema_extra={"vmanage_key": "retransmit-interval"},
|
|
142
|
+
description="The interval between LSA retransmissions for IPv6",
|
|
143
|
+
)
|
|
144
|
+
cost: Optional[int] = Field(description="The cost metric for the IPv6 interface")
|
|
145
|
+
network: Optional[Network] = Field(default="broadcast", description="The network type for the OSPFv3 interface")
|
|
146
|
+
passive_interface: Optional[bool] = Field(
|
|
147
|
+
default=False,
|
|
148
|
+
json_schema_extra={"vmanage_key": "passive-interface"},
|
|
149
|
+
description="Whether the IPv6 interface is passive (not sending OSPF packets)",
|
|
150
|
+
)
|
|
151
|
+
type: Type = Field(
|
|
152
|
+
json_schema_extra={"data_path": ["authentication"]},
|
|
153
|
+
description="The type of authentication for OSPFv3 (MD5 or SHA1)",
|
|
154
|
+
)
|
|
116
155
|
authentication_key: str = Field(
|
|
117
|
-
json_schema_extra={"vmanage_key": "authentication-key", "data_path": ["authentication"]}
|
|
156
|
+
json_schema_extra={"vmanage_key": "authentication-key", "data_path": ["authentication"]},
|
|
157
|
+
description="The authentication key for OSPFv3",
|
|
158
|
+
)
|
|
159
|
+
spi: Optional[int] = Field(
|
|
160
|
+
default=None,
|
|
161
|
+
json_schema_extra={"data_path": ["authentication", "ipsec"]},
|
|
118
162
|
)
|
|
119
|
-
spi: Optional[int] = Field(default=None, json_schema_extra={"data_path": ["authentication", "ipsec"]})
|
|
120
163
|
model_config = ConfigDict(populate_by_name=True)
|
|
121
164
|
|
|
122
165
|
|
|
123
166
|
class RangeV6(FeatureTemplateValidator):
|
|
124
|
-
address: ipaddress.IPv6Interface
|
|
125
|
-
cost: Optional[int] = None
|
|
126
|
-
no_advertise: Optional[bool] = Field(
|
|
167
|
+
address: ipaddress.IPv6Interface = Field(..., description="The IPv6 interface address and subnet")
|
|
168
|
+
cost: Optional[int] = Field(default=None, description="The cost metric for the IPv6 address range")
|
|
169
|
+
no_advertise: Optional[bool] = Field(
|
|
170
|
+
default=False,
|
|
171
|
+
json_schema_extra={"vmanage_key": "no-advertise"},
|
|
172
|
+
description="Whether to advertise this IPv6 range or not",
|
|
173
|
+
)
|
|
127
174
|
model_config = ConfigDict(populate_by_name=True)
|
|
128
175
|
|
|
129
176
|
|
|
130
177
|
class AreaV6(FeatureTemplateValidator):
|
|
131
|
-
a_num: int = Field(
|
|
178
|
+
a_num: int = Field(
|
|
179
|
+
json_schema_extra={"vmanage_key": "a-num"}, description="The IPv6 area number for OSPFv3 configuration"
|
|
180
|
+
)
|
|
132
181
|
stub: Optional[BoolStr] = Field(
|
|
133
|
-
default=None,
|
|
182
|
+
default=None,
|
|
183
|
+
json_schema_extra={"vmanage_key": "no-summary", "data_path": ["stub"]},
|
|
184
|
+
description="Configuration for the IPv6 stub area type with the option to suppress summary LSA",
|
|
134
185
|
)
|
|
135
186
|
nssa: Optional[BoolStr] = Field(
|
|
136
|
-
default=None,
|
|
187
|
+
default=None,
|
|
188
|
+
json_schema_extra={"vmanage_key": "no-summary", "data_path": ["nssa"]},
|
|
189
|
+
description="Configuration for the IPv6 NSSA area type with the option to suppress summary LSA",
|
|
190
|
+
)
|
|
191
|
+
translate: Optional[Translate] = Field(
|
|
192
|
+
default=None,
|
|
193
|
+
json_schema_extra={"data_path": ["nssa"]},
|
|
194
|
+
description="Control for translating type 7 LSAs to type 5 LSAs in NSSA for IPv6",
|
|
137
195
|
)
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
196
|
+
normal: Optional[BoolStr] = Field(description="Whether the IPv6 area is a normal OSPFv3 area")
|
|
197
|
+
interface: Optional[List[InterfaceV6]] = Field(
|
|
198
|
+
default=None, description="List of OSPFv3 interface configurations for the IPv6 area"
|
|
199
|
+
)
|
|
200
|
+
range: Optional[List[RangeV6]] = Field(default=None, description="List of IPv6 address ranges for the OSPFv3 area")
|
|
142
201
|
model_config = ConfigDict(populate_by_name=True)
|
|
143
202
|
|
|
144
203
|
|
|
145
204
|
class CiscoOspfv3Model(FeatureTemplate):
|
|
146
205
|
model_config = ConfigDict(arbitrary_types_allowed=True, populate_by_name=True)
|
|
206
|
+
_docs_description: str = "Cisco OSPFv3 (Open Shortest Path First v3) configuration"
|
|
147
207
|
|
|
148
208
|
router_id_v4: Optional[ipaddress.IPv4Address] = Field(
|
|
149
|
-
default=None,
|
|
209
|
+
default=None,
|
|
210
|
+
json_schema_extra={"vmanage_key": "router-id", "data_path": ["ospfv3", "address-family", "ipv4"]},
|
|
211
|
+
description="IPv4 address to be used as the router ID for the OSPFv3 process",
|
|
150
212
|
)
|
|
151
213
|
reference_bandwidth_v4: Optional[int] = Field(
|
|
152
214
|
100,
|
|
@@ -154,10 +216,12 @@ class CiscoOspfv3Model(FeatureTemplate):
|
|
|
154
216
|
"vmanage_key": "reference-bandwidth",
|
|
155
217
|
"data_path": ["ospfv3", "address-family", "ipv4", "auto-cost"],
|
|
156
218
|
},
|
|
219
|
+
description="Reference bandwidth in Mbps for calculating the OSPFv3 cost on IPv4 interfaces",
|
|
157
220
|
)
|
|
158
221
|
rfc1583_v4: Optional[BoolStr] = Field(
|
|
159
222
|
default=True,
|
|
160
223
|
json_schema_extra={"vmanage_key": "rfc1583", "data_path": ["ospfv3", "address-family", "ipv4", "compatible"]},
|
|
224
|
+
description="Compatibility flag for RFC 1583 to influence OSPFv3 route selection and preferences on IPv4",
|
|
161
225
|
)
|
|
162
226
|
originate_v4: Optional[BoolStr] = Field(
|
|
163
227
|
default=None,
|
|
@@ -165,6 +229,7 @@ class CiscoOspfv3Model(FeatureTemplate):
|
|
|
165
229
|
"vmanage_key": "originate",
|
|
166
230
|
"data_path": ["ospfv3", "address-family", "ipv4", "default-information"],
|
|
167
231
|
},
|
|
232
|
+
description="Flag to control the origination of default information/routes into the OSPFv3 domain for IPv4",
|
|
168
233
|
)
|
|
169
234
|
always_v4: Optional[BoolStr] = Field(
|
|
170
235
|
default=None,
|
|
@@ -172,6 +237,10 @@ class CiscoOspfv3Model(FeatureTemplate):
|
|
|
172
237
|
"vmanage_key": "always",
|
|
173
238
|
"data_path": ["ospfv3", "address-family", "ipv4", "default-information", "originate"],
|
|
174
239
|
},
|
|
240
|
+
description=(
|
|
241
|
+
"Flag indicating if the default route should always be advertised in OSPFv3 for IPv4, "
|
|
242
|
+
"irrespective of its presence in the routing table"
|
|
243
|
+
),
|
|
175
244
|
)
|
|
176
245
|
metric_v4: Optional[int] = Field(
|
|
177
246
|
default=None,
|
|
@@ -179,6 +248,7 @@ class CiscoOspfv3Model(FeatureTemplate):
|
|
|
179
248
|
"vmanage_key": "metric",
|
|
180
249
|
"data_path": ["ospfv3", "address-family", "ipv4", "default-information", "originate"],
|
|
181
250
|
},
|
|
251
|
+
description="The OSPFv3 metric value to use for the default route advertisement in IPv4",
|
|
182
252
|
)
|
|
183
253
|
metric_type_v4: Optional[MetricType] = Field(
|
|
184
254
|
default=None,
|
|
@@ -186,6 +256,7 @@ class CiscoOspfv3Model(FeatureTemplate):
|
|
|
186
256
|
"vmanage_key": "metric-type",
|
|
187
257
|
"data_path": ["ospfv3", "address-family", "ipv4", "default-information", "originate"],
|
|
188
258
|
},
|
|
259
|
+
description="The OSPFv3 metric type (E1 or E2) for the default route advertisement in IPv4",
|
|
189
260
|
)
|
|
190
261
|
external_v4: Optional[int] = Field(
|
|
191
262
|
110,
|
|
@@ -193,6 +264,7 @@ class CiscoOspfv3Model(FeatureTemplate):
|
|
|
193
264
|
"vmanage_key": "external",
|
|
194
265
|
"data_path": ["ospfv3", "address-family", "ipv4", "distance-ipv4", "ospf"],
|
|
195
266
|
},
|
|
267
|
+
description="Administrative distance for OSPFv3 external routes in IPv4",
|
|
196
268
|
)
|
|
197
269
|
inter_area_v4: Optional[int] = Field(
|
|
198
270
|
110,
|
|
@@ -200,13 +272,7 @@ class CiscoOspfv3Model(FeatureTemplate):
|
|
|
200
272
|
"vmanage_key": "inter-area",
|
|
201
273
|
"data_path": ["ospfv3", "address-family", "ipv4", "distance-ipv4", "ospf"],
|
|
202
274
|
},
|
|
203
|
-
|
|
204
|
-
intra_area_v4: Optional[int] = Field(
|
|
205
|
-
110,
|
|
206
|
-
json_schema_extra={
|
|
207
|
-
"vmanage_key": "intra-area",
|
|
208
|
-
"data_path": ["ospfv3", "address-family", "ipv4", "distance-ipv4", "ospf"],
|
|
209
|
-
},
|
|
275
|
+
description="Administrative distance for OSPFv3 inter-area routes in IPv4",
|
|
210
276
|
)
|
|
211
277
|
delay_v4: Optional[int] = Field(
|
|
212
278
|
200,
|
|
@@ -214,6 +280,10 @@ class CiscoOspfv3Model(FeatureTemplate):
|
|
|
214
280
|
"vmanage_key": "delay",
|
|
215
281
|
"data_path": ["ospfv3", "address-family", "ipv4", "timers", "throttle", "spf"],
|
|
216
282
|
},
|
|
283
|
+
description=(
|
|
284
|
+
"Initial delay time in milliseconds before the OSPFv3 SPF algorithm starts "
|
|
285
|
+
"after a topology change for IPv4"
|
|
286
|
+
),
|
|
217
287
|
)
|
|
218
288
|
initial_hold_v4: Optional[int] = Field(
|
|
219
289
|
1000,
|
|
@@ -221,6 +291,10 @@ class CiscoOspfv3Model(FeatureTemplate):
|
|
|
221
291
|
"vmanage_key": "initial-hold",
|
|
222
292
|
"data_path": ["ospfv3", "address-family", "ipv4", "timers", "throttle", "spf"],
|
|
223
293
|
},
|
|
294
|
+
description=(
|
|
295
|
+
"Initial hold time in milliseconds for the OSPFv3 SPF algorithm to wait "
|
|
296
|
+
"between two successive SPF calculations for IPv4"
|
|
297
|
+
),
|
|
224
298
|
)
|
|
225
299
|
max_hold_v4: Optional[int] = Field(
|
|
226
300
|
10000,
|
|
@@ -228,6 +302,10 @@ class CiscoOspfv3Model(FeatureTemplate):
|
|
|
228
302
|
"vmanage_key": "max-hold",
|
|
229
303
|
"data_path": ["ospfv3", "address-family", "ipv4", "timers", "throttle", "spf"],
|
|
230
304
|
},
|
|
305
|
+
description=(
|
|
306
|
+
"Maximum hold time in milliseconds for the OSPFv3 SPF algorithm to wait "
|
|
307
|
+
"between two successive SPF calculations for IPv4"
|
|
308
|
+
),
|
|
231
309
|
)
|
|
232
310
|
distance_v4: Optional[int] = Field(
|
|
233
311
|
110,
|
|
@@ -235,18 +313,22 @@ class CiscoOspfv3Model(FeatureTemplate):
|
|
|
235
313
|
"vmanage_key": "distance",
|
|
236
314
|
"data_path": ["ospfv3", "address-family", "ipv4", "distance-ipv4"],
|
|
237
315
|
},
|
|
316
|
+
description="Administrative distance for OSPFv3 routes in IPv4",
|
|
238
317
|
)
|
|
239
318
|
name_v4: Optional[str] = Field(
|
|
240
319
|
default=None,
|
|
241
320
|
json_schema_extra={"vmanage_key": "name", "data_path": ["ospfv3", "address-family", "ipv4", "table-map"]},
|
|
321
|
+
description="Name of the route map used for OSPFv3 IPv4 route redistribution",
|
|
242
322
|
)
|
|
243
323
|
filter_v4: Optional[BoolStr] = Field(
|
|
244
324
|
default=None,
|
|
245
325
|
json_schema_extra={"vmanage_key": "filter", "data_path": ["ospfv3", "address-family", "ipv4", "table-map"]},
|
|
326
|
+
description="Flag indicating whether filtering is applied to OSPFv3 IPv4 routes using the specified route map",
|
|
246
327
|
)
|
|
247
328
|
redistribute_v4: Optional[List[Redistribute]] = Field(
|
|
248
329
|
default=None,
|
|
249
330
|
json_schema_extra={"vmanage_key": "redistribute", "data_path": ["ospfv3", "address-family", "ipv4"]},
|
|
331
|
+
description="List of redistribution configurations for OSPFv3 IPv4 address family",
|
|
250
332
|
)
|
|
251
333
|
router_lsa_v4: Optional[List[RouterLsa]] = Field(
|
|
252
334
|
default=None,
|
|
@@ -254,12 +336,19 @@ class CiscoOspfv3Model(FeatureTemplate):
|
|
|
254
336
|
"vmanage_key": "router-lsa",
|
|
255
337
|
"data_path": ["ospfv3", "address-family", "ipv4", "max-metric"],
|
|
256
338
|
},
|
|
339
|
+
description=(
|
|
340
|
+
"List of configurations to set the maximum metric for router LSAs in the OSPFv3 IPv4 address family"
|
|
341
|
+
),
|
|
257
342
|
)
|
|
258
343
|
area_v4: Optional[List[Area]] = Field(
|
|
259
|
-
default=None,
|
|
344
|
+
default=None,
|
|
345
|
+
json_schema_extra={"vmanage_key": "area", "data_path": ["ospfv3", "address-family", "ipv4"]},
|
|
346
|
+
description="List of OSPFv3 area configurations for the IPv4 address family",
|
|
260
347
|
)
|
|
261
348
|
router_id_v6: Optional[ipaddress.IPv4Address] = Field(
|
|
262
|
-
default=None,
|
|
349
|
+
default=None,
|
|
350
|
+
json_schema_extra={"vmanage_key": "router-id", "data_path": ["ospfv3", "address-family", "ipv6"]},
|
|
351
|
+
description="IPv4 address to be used as the router ID for the OSPFv3 process for IPv6",
|
|
263
352
|
)
|
|
264
353
|
reference_bandwidth_v6: Optional[int] = Field(
|
|
265
354
|
100,
|
|
@@ -267,10 +356,12 @@ class CiscoOspfv3Model(FeatureTemplate):
|
|
|
267
356
|
"vmanage_key": "reference-bandwidth",
|
|
268
357
|
"data_path": ["ospfv3", "address-family", "ipv6", "auto-cost"],
|
|
269
358
|
},
|
|
359
|
+
description="Reference bandwidth in Mbps for calculating the OSPFv3 cost on IPv6 interfaces",
|
|
270
360
|
)
|
|
271
361
|
rfc1583_v6: Optional[BoolStr] = Field(
|
|
272
362
|
default=True,
|
|
273
363
|
json_schema_extra={"vmanage_key": "rfc1583", "data_path": ["ospfv3", "address-family", "ipv6", "compatible"]},
|
|
364
|
+
description="Compatibility flag for RFC 1583 to influence OSPFv3 route selection and preferences on IPv6",
|
|
274
365
|
)
|
|
275
366
|
originate_v6: Optional[BoolStr] = Field(
|
|
276
367
|
default=None,
|
|
@@ -278,6 +369,7 @@ class CiscoOspfv3Model(FeatureTemplate):
|
|
|
278
369
|
"vmanage_key": "originate",
|
|
279
370
|
"data_path": ["ospfv3", "address-family", "ipv6", "default-information"],
|
|
280
371
|
},
|
|
372
|
+
description="Flag to control the origination of default information/routes into the OSPFv3 domain for IPv6",
|
|
281
373
|
)
|
|
282
374
|
always_v6: Optional[BoolStr] = Field(
|
|
283
375
|
default=None,
|
|
@@ -285,6 +377,10 @@ class CiscoOspfv3Model(FeatureTemplate):
|
|
|
285
377
|
"vmanage_key": "always",
|
|
286
378
|
"data_path": ["ospfv3", "address-family", "ipv6", "default-information", "originate"],
|
|
287
379
|
},
|
|
380
|
+
description=(
|
|
381
|
+
"Flag indicating if the default route should always be advertised in OSPFv3 for IPv6, "
|
|
382
|
+
"irrespective of its presence in the routing table"
|
|
383
|
+
),
|
|
288
384
|
)
|
|
289
385
|
metric_v6: Optional[int] = Field(
|
|
290
386
|
default=None,
|
|
@@ -292,6 +388,7 @@ class CiscoOspfv3Model(FeatureTemplate):
|
|
|
292
388
|
"vmanage_key": "metric",
|
|
293
389
|
"data_path": ["ospfv3", "address-family", "ipv6", "default-information", "originate"],
|
|
294
390
|
},
|
|
391
|
+
description="The OSPFv3 metric value to use for the default route advertisement in IPv6",
|
|
295
392
|
)
|
|
296
393
|
metric_type_v6: Optional[MetricType] = Field(
|
|
297
394
|
default=None,
|
|
@@ -299,6 +396,7 @@ class CiscoOspfv3Model(FeatureTemplate):
|
|
|
299
396
|
"vmanage_key": "metric-type",
|
|
300
397
|
"data_path": ["ospfv3", "address-family", "ipv6", "default-information", "originate"],
|
|
301
398
|
},
|
|
399
|
+
description="The OSPFv3 metric type (E1 or E2) for the default route advertisement in IPv6",
|
|
302
400
|
)
|
|
303
401
|
external_v6: Optional[int] = Field(
|
|
304
402
|
110,
|
|
@@ -306,6 +404,7 @@ class CiscoOspfv3Model(FeatureTemplate):
|
|
|
306
404
|
"vmanage_key": "external",
|
|
307
405
|
"data_path": ["ospfv3", "address-family", "ipv6", "distance-ipv6", "ospf"],
|
|
308
406
|
},
|
|
407
|
+
description="Administrative distance for OSPFv3 external routes in IPv6",
|
|
309
408
|
)
|
|
310
409
|
inter_area_v6: Optional[int] = Field(
|
|
311
410
|
110,
|
|
@@ -313,6 +412,7 @@ class CiscoOspfv3Model(FeatureTemplate):
|
|
|
313
412
|
"vmanage_key": "inter-area",
|
|
314
413
|
"data_path": ["ospfv3", "address-family", "ipv6", "distance-ipv6", "ospf"],
|
|
315
414
|
},
|
|
415
|
+
description="Administrative distance for OSPFv3 inter-area routes in IPv6",
|
|
316
416
|
)
|
|
317
417
|
intra_area_v6: Optional[int] = Field(
|
|
318
418
|
110,
|
|
@@ -320,6 +420,7 @@ class CiscoOspfv3Model(FeatureTemplate):
|
|
|
320
420
|
"vmanage_key": "intra-area",
|
|
321
421
|
"data_path": ["ospfv3", "address-family", "ipv6", "distance-ipv6", "ospf"],
|
|
322
422
|
},
|
|
423
|
+
description="Administrative distance for OSPFv3 intra-area routes in IPv6",
|
|
323
424
|
)
|
|
324
425
|
delay_v6: Optional[int] = Field(
|
|
325
426
|
200,
|
|
@@ -327,6 +428,10 @@ class CiscoOspfv3Model(FeatureTemplate):
|
|
|
327
428
|
"vmanage_key": "delay",
|
|
328
429
|
"data_path": ["ospfv3", "address-family", "ipv6", "timers", "throttle", "spf"],
|
|
329
430
|
},
|
|
431
|
+
description=(
|
|
432
|
+
"Initial delay time in milliseconds before the OSPFv3 SPF algorithm starts "
|
|
433
|
+
"after a topology change for IPv6"
|
|
434
|
+
),
|
|
330
435
|
)
|
|
331
436
|
initial_hold_v6: Optional[int] = Field(
|
|
332
437
|
1000,
|
|
@@ -334,6 +439,10 @@ class CiscoOspfv3Model(FeatureTemplate):
|
|
|
334
439
|
"vmanage_key": "initial-hold",
|
|
335
440
|
"data_path": ["ospfv3", "address-family", "ipv6", "timers", "throttle", "spf"],
|
|
336
441
|
},
|
|
442
|
+
description=(
|
|
443
|
+
"Initial hold time in milliseconds for the OSPFv3 SPF algorithm to "
|
|
444
|
+
"wait between two successive SPF calculations for IPv6"
|
|
445
|
+
),
|
|
337
446
|
)
|
|
338
447
|
max_hold_v6: Optional[int] = Field(
|
|
339
448
|
10000,
|
|
@@ -341,6 +450,10 @@ class CiscoOspfv3Model(FeatureTemplate):
|
|
|
341
450
|
"vmanage_key": "max-hold",
|
|
342
451
|
"data_path": ["ospfv3", "address-family", "ipv6", "timers", "throttle", "spf"],
|
|
343
452
|
},
|
|
453
|
+
description=(
|
|
454
|
+
"Maximum hold time in milliseconds for the OSPFv3 SPF algorithm "
|
|
455
|
+
"to wait between two successive SPF calculations for IPv6"
|
|
456
|
+
),
|
|
344
457
|
)
|
|
345
458
|
distance_v6: Optional[int] = Field(
|
|
346
459
|
110,
|
|
@@ -348,18 +461,22 @@ class CiscoOspfv3Model(FeatureTemplate):
|
|
|
348
461
|
"vmanage_key": "distance",
|
|
349
462
|
"data_path": ["ospfv3", "address-family", "ipv6", "distance-ipv6"],
|
|
350
463
|
},
|
|
464
|
+
description="Administrative distance for OSPFv3 routes in IPv6",
|
|
351
465
|
)
|
|
352
466
|
name_v6: Optional[str] = Field(
|
|
353
467
|
default=None,
|
|
354
468
|
json_schema_extra={"vmanage_key": "name", "data_path": ["ospfv3", "address-family", "ipv6", "table-map"]},
|
|
469
|
+
description="Name of the route map used for OSPFv3 IPv6 route redistribution",
|
|
355
470
|
)
|
|
356
471
|
filter_v6: Optional[BoolStr] = Field(
|
|
357
472
|
default=None,
|
|
358
473
|
json_schema_extra={"vmanage_key": "filter", "data_path": ["ospfv3", "address-family", "ipv6", "table-map"]},
|
|
474
|
+
description="Flag indicating whether filtering is applied to OSPFv3 IPv6 routes using the specified route map",
|
|
359
475
|
)
|
|
360
476
|
redistribute_v6: Optional[List[RedistributeV6]] = Field(
|
|
361
477
|
default=None,
|
|
362
478
|
json_schema_extra={"vmanage_key": "redistribute", "data_path": ["ospfv3", "address-family", "ipv6"]},
|
|
479
|
+
description="List of redistribution configurations for OSPFv3 IPv6 address family",
|
|
363
480
|
)
|
|
364
481
|
router_lsa_v6: Optional[List[RouterLsa]] = Field(
|
|
365
482
|
default=None,
|
|
@@ -367,9 +484,14 @@ class CiscoOspfv3Model(FeatureTemplate):
|
|
|
367
484
|
"vmanage_key": "router-lsa",
|
|
368
485
|
"data_path": ["ospfv3", "address-family", "ipv6", "max-metric"],
|
|
369
486
|
},
|
|
487
|
+
description=(
|
|
488
|
+
"List of configurations to set the maximum metric for router LSAs in the OSPFv3 IPv6 address family"
|
|
489
|
+
),
|
|
370
490
|
)
|
|
371
491
|
area_v6: Optional[List[AreaV6]] = Field(
|
|
372
|
-
default=None,
|
|
492
|
+
default=None,
|
|
493
|
+
json_schema_extra={"vmanage_key": "area", "data_path": ["ospfv3", "address-family", "ipv6"]},
|
|
494
|
+
description="List of OSPFv3 area configurations for the IPv6 address family",
|
|
373
495
|
)
|
|
374
496
|
|
|
375
497
|
payload_path: ClassVar[Path] = Path(__file__).parent / "DEPRECATED"
|