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
|
@@ -7,25 +7,35 @@ from uuid import UUID
|
|
|
7
7
|
from pydantic import BaseModel, ConfigDict, Field
|
|
8
8
|
from typing_extensions import Annotated
|
|
9
9
|
|
|
10
|
+
from catalystwan.models.common import PolicyModeType
|
|
10
11
|
from catalystwan.models.misc.application_protocols import ApplicationProtocol
|
|
11
12
|
from catalystwan.models.policy.policy_definition import (
|
|
13
|
+
AdvancedInspectionProfileAction,
|
|
12
14
|
AppListEntry,
|
|
15
|
+
AppListFlatEntry,
|
|
16
|
+
ConnectionEventsAction,
|
|
13
17
|
DefinitionWithSequencesCommonBase,
|
|
14
18
|
DestinationDataPrefixListEntry,
|
|
15
19
|
DestinationFQDNEntry,
|
|
20
|
+
DestinationFQDNListEntry,
|
|
16
21
|
DestinationGeoLocationEntry,
|
|
17
22
|
DestinationGeoLocationListEntry,
|
|
18
23
|
DestinationIPEntry,
|
|
19
24
|
DestinationPortEntry,
|
|
20
25
|
DestinationPortListEntry,
|
|
26
|
+
DestinationScalableGroupTagListEntry,
|
|
27
|
+
DestinationSecurityGroupEntry,
|
|
21
28
|
LogAction,
|
|
22
29
|
Match,
|
|
23
|
-
|
|
30
|
+
PolicyActionBase,
|
|
24
31
|
PolicyDefinitionBase,
|
|
32
|
+
PolicyDefinitionGetResponse,
|
|
33
|
+
PolicyDefinitionId,
|
|
25
34
|
PolicyDefinitionSequenceBase,
|
|
26
35
|
ProtocolEntry,
|
|
27
36
|
ProtocolNameEntry,
|
|
28
37
|
ProtocolNameListEntry,
|
|
38
|
+
ReferenceWithId,
|
|
29
39
|
RuleSetListEntry,
|
|
30
40
|
SourceDataPrefixListEntry,
|
|
31
41
|
SourceFQDNEntry,
|
|
@@ -35,18 +45,24 @@ from catalystwan.models.policy.policy_definition import (
|
|
|
35
45
|
SourceIPEntry,
|
|
36
46
|
SourcePortEntry,
|
|
37
47
|
SourcePortListEntry,
|
|
48
|
+
SourceScalableGroupTagListEntry,
|
|
49
|
+
SourceSecurityGroupEntry,
|
|
38
50
|
)
|
|
39
51
|
|
|
40
52
|
ZoneBasedFWPolicySequenceEntry = Annotated[
|
|
41
53
|
Union[
|
|
42
54
|
AppListEntry,
|
|
55
|
+
AppListFlatEntry,
|
|
43
56
|
DestinationDataPrefixListEntry,
|
|
44
57
|
DestinationFQDNEntry,
|
|
58
|
+
DestinationFQDNListEntry,
|
|
45
59
|
DestinationGeoLocationEntry,
|
|
46
60
|
DestinationGeoLocationListEntry,
|
|
47
61
|
DestinationIPEntry,
|
|
48
62
|
DestinationPortEntry,
|
|
49
63
|
DestinationPortListEntry,
|
|
64
|
+
DestinationScalableGroupTagListEntry,
|
|
65
|
+
DestinationSecurityGroupEntry,
|
|
50
66
|
ProtocolEntry,
|
|
51
67
|
ProtocolNameEntry,
|
|
52
68
|
ProtocolNameListEntry,
|
|
@@ -59,10 +75,14 @@ ZoneBasedFWPolicySequenceEntry = Annotated[
|
|
|
59
75
|
SourceIPEntry,
|
|
60
76
|
SourcePortEntry,
|
|
61
77
|
SourcePortListEntry,
|
|
78
|
+
SourceScalableGroupTagListEntry,
|
|
79
|
+
SourceSecurityGroupEntry,
|
|
62
80
|
],
|
|
63
81
|
Field(discriminator="field"),
|
|
64
82
|
]
|
|
65
83
|
|
|
84
|
+
ZonePair = Literal["self", "default"]
|
|
85
|
+
|
|
66
86
|
ZoneBasedFWPolicySequenceEntryWithRuleSets = Annotated[
|
|
67
87
|
Union[
|
|
68
88
|
AppListEntry,
|
|
@@ -71,6 +91,22 @@ ZoneBasedFWPolicySequenceEntryWithRuleSets = Annotated[
|
|
|
71
91
|
Field(discriminator="field"),
|
|
72
92
|
]
|
|
73
93
|
|
|
94
|
+
ZoneBasedFWPolicyActions = Annotated[
|
|
95
|
+
Union[
|
|
96
|
+
AdvancedInspectionProfileAction,
|
|
97
|
+
ConnectionEventsAction,
|
|
98
|
+
LogAction,
|
|
99
|
+
],
|
|
100
|
+
Field(discriminator="type"),
|
|
101
|
+
]
|
|
102
|
+
|
|
103
|
+
ZoneBasedFirewallDefaultActionType = Literal["drop", "pass"]
|
|
104
|
+
ZoneBasedFirewallBaseActionType = Literal["drop", "pass", "inspect"]
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
class ZoneBasedFirewallDefaultAction(PolicyActionBase):
|
|
108
|
+
type: ZoneBasedFirewallDefaultActionType
|
|
109
|
+
|
|
74
110
|
|
|
75
111
|
class ZoneBasedFWPolicyMatches(Match):
|
|
76
112
|
entries: List[ZoneBasedFWPolicySequenceEntry] = []
|
|
@@ -82,13 +118,13 @@ class ZoneBasedFWPolicySequenceWithRuleSets(PolicyDefinitionSequenceBase):
|
|
|
82
118
|
)
|
|
83
119
|
match: ZoneBasedFWPolicyMatches
|
|
84
120
|
ruleset: bool = True
|
|
85
|
-
actions: List[
|
|
121
|
+
actions: List[ZoneBasedFWPolicyActions] = []
|
|
86
122
|
model_config = ConfigDict(populate_by_name=True)
|
|
87
123
|
|
|
88
124
|
def match_rule_set_lists(self, rule_set_ids: Set[UUID]) -> None:
|
|
89
|
-
self._insert_match(RuleSetListEntry
|
|
125
|
+
self._insert_match(RuleSetListEntry(ref=list(rule_set_ids)))
|
|
90
126
|
|
|
91
|
-
def match_app_list(self, app_list_id: UUID) -> None:
|
|
127
|
+
def match_app_list(self, app_list_id: List[UUID]) -> None:
|
|
92
128
|
if self.base_action != "inspect":
|
|
93
129
|
raise ValueError("Action must be inspect when Application/Application Family List is selected.")
|
|
94
130
|
self._insert_match(AppListEntry(ref=app_list_id))
|
|
@@ -99,16 +135,25 @@ class ZoneBasedFWPolicySequence(PolicyDefinitionSequenceBase):
|
|
|
99
135
|
default="zoneBasedFW", serialization_alias="sequenceType", validation_alias="sequenceType"
|
|
100
136
|
)
|
|
101
137
|
match: ZoneBasedFWPolicyMatches
|
|
102
|
-
actions: List[LogAction] = []
|
|
138
|
+
actions: List[Union[LogAction, AdvancedInspectionProfileAction, ConnectionEventsAction]] = []
|
|
103
139
|
model_config = ConfigDict(populate_by_name=True)
|
|
104
140
|
|
|
105
|
-
def
|
|
141
|
+
def set_log_action(self):
|
|
142
|
+
self.actions.append(LogAction())
|
|
143
|
+
|
|
144
|
+
def set_advanced_inspection_profile_action(self, profile_id: UUID):
|
|
145
|
+
self.actions.append(AdvancedInspectionProfileAction(parameter=ReferenceWithId(ref=profile_id)))
|
|
146
|
+
|
|
147
|
+
def set_conection_events_action(self):
|
|
148
|
+
self.actions.append(ConnectionEventsAction())
|
|
149
|
+
|
|
150
|
+
def match_app_list(self, app_list_id: List[UUID]) -> None:
|
|
106
151
|
if self.base_action != "inspect":
|
|
107
152
|
raise ValueError("Action must be inspect when Application/Application Family List is selected.")
|
|
108
153
|
self._insert_match(AppListEntry(ref=app_list_id))
|
|
109
154
|
|
|
110
|
-
def match_destination_data_prefix_list(self,
|
|
111
|
-
self._insert_match(DestinationDataPrefixListEntry(ref=
|
|
155
|
+
def match_destination_data_prefix_list(self, data_prefix_lists: List[UUID]) -> None:
|
|
156
|
+
self._insert_match(DestinationDataPrefixListEntry(ref=data_prefix_lists))
|
|
112
157
|
|
|
113
158
|
def match_destination_fqdn(self, fqdn: str) -> None:
|
|
114
159
|
self._insert_match(DestinationFQDNEntry(value=fqdn))
|
|
@@ -116,7 +161,7 @@ class ZoneBasedFWPolicySequence(PolicyDefinitionSequenceBase):
|
|
|
116
161
|
def match_destination_geo_location(self, geo_location: str) -> None:
|
|
117
162
|
self._insert_match(DestinationGeoLocationEntry(value=geo_location))
|
|
118
163
|
|
|
119
|
-
def match_destination_geo_location_list(self, geo_location_list_id: UUID) -> None:
|
|
164
|
+
def match_destination_geo_location_list(self, geo_location_list_id: List[UUID]) -> None:
|
|
120
165
|
self._insert_match(DestinationGeoLocationListEntry(ref=geo_location_list_id))
|
|
121
166
|
|
|
122
167
|
def match_destination_ip(self, networks: List[IPv4Network]) -> None:
|
|
@@ -125,8 +170,11 @@ class ZoneBasedFWPolicySequence(PolicyDefinitionSequenceBase):
|
|
|
125
170
|
def match_destination_ports(self, ports: Set[int] = set(), port_ranges: List[Tuple[int, int]] = []) -> None:
|
|
126
171
|
self._insert_match(DestinationPortEntry.from_port_set_and_ranges(ports, port_ranges))
|
|
127
172
|
|
|
128
|
-
def match_destination_port_list(self,
|
|
129
|
-
self._insert_match(DestinationPortListEntry(ref=
|
|
173
|
+
def match_destination_port_list(self, data_prefix_lists: List[UUID]) -> None:
|
|
174
|
+
self._insert_match(DestinationPortListEntry(ref=data_prefix_lists))
|
|
175
|
+
|
|
176
|
+
def match_destination_security_group_list(self, security_group_list: List[UUID]) -> None:
|
|
177
|
+
self._insert_match(DestinationSecurityGroupEntry(ref=security_group_list))
|
|
130
178
|
|
|
131
179
|
def match_protocols(self, protocols: Set[int]) -> None:
|
|
132
180
|
self._insert_match(ProtocolEntry.from_protocol_set(protocols))
|
|
@@ -136,17 +184,17 @@ class ZoneBasedFWPolicySequence(PolicyDefinitionSequenceBase):
|
|
|
136
184
|
for name in names:
|
|
137
185
|
app_protocol = protocol_map.get(name, None)
|
|
138
186
|
if app_protocol is None:
|
|
139
|
-
raise ValueError(f"{name} not found in protocol map keys: {protocol_map.keys()}")
|
|
187
|
+
raise ValueError(f"{name} not found in protocol map keys: {protocol_map.keys()}") # noqa: E713
|
|
140
188
|
app_protocols.append(app_protocol)
|
|
141
189
|
self._insert_match(ProtocolNameEntry.from_application_protocols(app_protocols))
|
|
142
190
|
self._insert_match(DestinationPortEntry.from_application_protocols(app_protocols), False)
|
|
143
191
|
self._insert_match(ProtocolEntry.from_application_protocols(app_protocols), False)
|
|
144
192
|
|
|
145
|
-
def match_protocol_name_list(self, protocol_name_list_id: UUID) -> None:
|
|
193
|
+
def match_protocol_name_list(self, protocol_name_list_id: List[UUID]) -> None:
|
|
146
194
|
self._insert_match(ProtocolNameListEntry(ref=protocol_name_list_id))
|
|
147
195
|
|
|
148
|
-
def match_source_data_prefix_list(self,
|
|
149
|
-
self._insert_match(SourceDataPrefixListEntry(ref=
|
|
196
|
+
def match_source_data_prefix_list(self, data_prefix_lists: List[UUID]) -> None:
|
|
197
|
+
self._insert_match(SourceDataPrefixListEntry(ref=data_prefix_lists))
|
|
150
198
|
|
|
151
199
|
def match_source_fqdn(self, fqdn: str) -> None:
|
|
152
200
|
self._insert_match(SourceFQDNEntry(value=fqdn))
|
|
@@ -157,7 +205,7 @@ class ZoneBasedFWPolicySequence(PolicyDefinitionSequenceBase):
|
|
|
157
205
|
def match_source_geo_location(self, geo_location: str) -> None:
|
|
158
206
|
self._insert_match(SourceGeoLocationEntry(value=geo_location))
|
|
159
207
|
|
|
160
|
-
def match_source_geo_location_list(self, geo_location_list_id: UUID) -> None:
|
|
208
|
+
def match_source_geo_location_list(self, geo_location_list_id: List[UUID]) -> None:
|
|
161
209
|
self._insert_match(SourceGeoLocationListEntry(ref=geo_location_list_id))
|
|
162
210
|
|
|
163
211
|
def match_source_ip(self, networks: List[IPv4Network]) -> None:
|
|
@@ -166,36 +214,41 @@ class ZoneBasedFWPolicySequence(PolicyDefinitionSequenceBase):
|
|
|
166
214
|
def match_source_port(self, ports: Set[int] = set(), port_ranges: List[Tuple[int, int]] = []) -> None:
|
|
167
215
|
self._insert_match(SourcePortEntry.from_port_set_and_ranges(ports, port_ranges))
|
|
168
216
|
|
|
169
|
-
def match_source_port_list(self, port_list_id: UUID) -> None:
|
|
217
|
+
def match_source_port_list(self, port_list_id: List[UUID]) -> None:
|
|
170
218
|
self._insert_match(SourcePortListEntry(ref=port_list_id))
|
|
171
219
|
|
|
220
|
+
def match_source_security_group_list(self, security_group_list: List[UUID]) -> None:
|
|
221
|
+
self._insert_match(SourceSecurityGroupEntry(ref=security_group_list))
|
|
222
|
+
|
|
172
223
|
|
|
173
224
|
class ZoneBasedFWPolicyEntry(BaseModel):
|
|
174
|
-
source_zone_id: Union[UUID,
|
|
225
|
+
source_zone_id: Union[UUID, ZonePair] = Field(
|
|
175
226
|
default="self", serialization_alias="sourceZone", validation_alias="sourceZone"
|
|
176
227
|
)
|
|
177
|
-
destination_zone_id: UUID = Field(
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
class ZoneBasedFWPolicyHeader(PolicyDefinitionBase):
|
|
182
|
-
type: Literal["zoneBasedFW"] = "zoneBasedFW"
|
|
183
|
-
mode: str = Field(default="security")
|
|
228
|
+
destination_zone_id: Union[UUID, ZonePair] = Field(
|
|
229
|
+
serialization_alias="destinationZone", validation_alias="destinationZone"
|
|
230
|
+
)
|
|
184
231
|
model_config = ConfigDict(populate_by_name=True)
|
|
185
232
|
|
|
186
233
|
|
|
187
234
|
class ZoneBasedFWPolicyDefinition(DefinitionWithSequencesCommonBase):
|
|
235
|
+
default_action: ZoneBasedFirewallDefaultAction = Field(
|
|
236
|
+
default=ZoneBasedFirewallDefaultAction(type="drop"),
|
|
237
|
+
serialization_alias="defaultAction",
|
|
238
|
+
validation_alias="defaultAction",
|
|
239
|
+
)
|
|
188
240
|
sequences: List[Union[ZoneBasedFWPolicySequence, ZoneBasedFWPolicySequenceWithRuleSets]] = []
|
|
189
241
|
entries: List[ZoneBasedFWPolicyEntry] = []
|
|
190
242
|
|
|
191
243
|
|
|
192
|
-
class ZoneBasedFWPolicy(
|
|
244
|
+
class ZoneBasedFWPolicy(PolicyDefinitionBase):
|
|
245
|
+
model_config = ConfigDict(populate_by_name=True)
|
|
193
246
|
type: Literal["zoneBasedFW"] = "zoneBasedFW"
|
|
194
|
-
mode:
|
|
247
|
+
mode: PolicyModeType = "security"
|
|
195
248
|
definition: ZoneBasedFWPolicyDefinition = ZoneBasedFWPolicyDefinition()
|
|
196
249
|
|
|
197
250
|
def add_ipv4_rule(
|
|
198
|
-
self, name: str, base_action:
|
|
251
|
+
self, name: str, base_action: ZoneBasedFirewallBaseActionType = "drop", log: bool = False
|
|
199
252
|
) -> ZoneBasedFWPolicySequence:
|
|
200
253
|
"""Adds new IPv4 Rule to Zone Based Firewall Policy
|
|
201
254
|
|
|
@@ -219,7 +272,7 @@ class ZoneBasedFWPolicy(ZoneBasedFWPolicyHeader):
|
|
|
219
272
|
return sequence
|
|
220
273
|
|
|
221
274
|
def add_ipv4_rule_sets(
|
|
222
|
-
self, name: str, base_action:
|
|
275
|
+
self, name: str, base_action: ZoneBasedFirewallBaseActionType = "drop", log: bool = False
|
|
223
276
|
) -> ZoneBasedFWPolicySequenceWithRuleSets:
|
|
224
277
|
sequence = ZoneBasedFWPolicySequenceWithRuleSets(
|
|
225
278
|
sequence_name=name,
|
|
@@ -232,9 +285,17 @@ class ZoneBasedFWPolicy(ZoneBasedFWPolicyHeader):
|
|
|
232
285
|
self.definition.add(sequence)
|
|
233
286
|
return sequence
|
|
234
287
|
|
|
235
|
-
def add_zone_pair(self,
|
|
288
|
+
def add_zone_pair(self, source_zone: Union[UUID, ZonePair], destination_zone: Union[UUID, ZonePair]) -> None:
|
|
236
289
|
entry = ZoneBasedFWPolicyEntry(
|
|
237
|
-
source_zone_id=
|
|
238
|
-
destination_zone_id=
|
|
290
|
+
source_zone_id=source_zone,
|
|
291
|
+
destination_zone_id=destination_zone,
|
|
239
292
|
)
|
|
240
293
|
self.definition.entries.append(entry)
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
class ZoneBasedFWPolicyEditPayload(ZoneBasedFWPolicy, PolicyDefinitionId):
|
|
297
|
+
pass
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
class ZoneBasedFWPolicyGetResponse(ZoneBasedFWPolicy, PolicyDefinitionGetResponse):
|
|
301
|
+
pass
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Copyright 2024 Cisco Systems, Inc. and its affiliates
|
|
2
|
+
from typing import List, Literal, Optional
|
|
3
|
+
|
|
4
|
+
from pydantic import BaseModel, ConfigDict, Field, model_validator
|
|
5
|
+
|
|
6
|
+
from catalystwan.models.common import check_fields_exclusive
|
|
7
|
+
from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class AppListEntry(BaseModel):
|
|
11
|
+
model_config = ConfigDict(populate_by_name=True)
|
|
12
|
+
|
|
13
|
+
app_family: Optional[str] = Field(default=None, serialization_alias="appFamily", validation_alias="appFamily")
|
|
14
|
+
app: Optional[str] = None
|
|
15
|
+
|
|
16
|
+
@model_validator(mode="after")
|
|
17
|
+
def check_app_xor_appfamily(self):
|
|
18
|
+
check_fields_exclusive(self.__dict__, {"app", "app_family"}, True)
|
|
19
|
+
return self
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class AppList(PolicyListBase):
|
|
23
|
+
type: Literal["app"] = "app"
|
|
24
|
+
entries: List[AppListEntry] = []
|
|
25
|
+
|
|
26
|
+
def add_app(self, app: str) -> None:
|
|
27
|
+
self._add_entry(AppListEntry(app=app))
|
|
28
|
+
|
|
29
|
+
def add_app_family(self, app_family: str) -> None:
|
|
30
|
+
self._add_entry(AppListEntry(app_family=app_family))
|
|
31
|
+
|
|
32
|
+
def list_all_app(self) -> List[str]:
|
|
33
|
+
return [e.app for e in self.entries if e.app is not None]
|
|
34
|
+
|
|
35
|
+
def list_all_app_family(self) -> List[str]:
|
|
36
|
+
return [e.app_family for e in self.entries if e.app_family is not None]
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class AppListEditPayload(AppList, PolicyListId):
|
|
40
|
+
pass
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class AppListInfo(AppList, PolicyListInfo):
|
|
44
|
+
pass
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Copyright 2024 Cisco Systems, Inc. and its affiliates
|
|
2
|
+
|
|
3
|
+
from typing import List, Literal, Optional
|
|
4
|
+
|
|
5
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
6
|
+
|
|
7
|
+
from catalystwan.models.common import TLOCColor
|
|
8
|
+
from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ColorDSCPMap(BaseModel):
|
|
12
|
+
color: TLOCColor
|
|
13
|
+
dscp: Optional[int] = Field(default=None, ge=0, le=63)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class AppProbeClassListEntry(BaseModel):
|
|
17
|
+
model_config = ConfigDict(populate_by_name=True)
|
|
18
|
+
|
|
19
|
+
forwarding_class: str = Field(serialization_alias="forwardingClass", validation_alias="forwardingClass")
|
|
20
|
+
map: List[ColorDSCPMap] = []
|
|
21
|
+
|
|
22
|
+
def add_color_mapping(self, color: TLOCColor, dscp: Optional[int] = None) -> None:
|
|
23
|
+
self.map.append(ColorDSCPMap(color=color, dscp=dscp))
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class AppProbeClassList(PolicyListBase):
|
|
27
|
+
type: Literal["appProbe"] = "appProbe"
|
|
28
|
+
entries: List[AppProbeClassListEntry] = []
|
|
29
|
+
|
|
30
|
+
def assign_forwarding_class(self, name: str) -> AppProbeClassListEntry:
|
|
31
|
+
# App probe class list must have only one entry!
|
|
32
|
+
entry = AppProbeClassListEntry(forwarding_class=name)
|
|
33
|
+
self._add_entry(entry, single=True)
|
|
34
|
+
return entry
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class AppProbeClassListEditPayload(AppProbeClassList, PolicyListId):
|
|
38
|
+
pass
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class AppProbeClassListInfo(AppProbeClassList, PolicyListInfo):
|
|
42
|
+
pass
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Copyright 2022 Cisco Systems, Inc. and its affiliates
|
|
2
|
+
|
|
3
|
+
from typing import List, Literal
|
|
4
|
+
|
|
5
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
6
|
+
|
|
7
|
+
from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class ASPathListEntry(BaseModel):
|
|
11
|
+
model_config = ConfigDict(populate_by_name=True)
|
|
12
|
+
|
|
13
|
+
as_path: str = Field(serialization_alias="asPath", validation_alias="asPath")
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class ASPathList(PolicyListBase):
|
|
17
|
+
type: Literal["asPath"] = "asPath"
|
|
18
|
+
entries: List[ASPathListEntry] = []
|
|
19
|
+
|
|
20
|
+
def add_as_path(self, as_path: str):
|
|
21
|
+
as_path_entry = ASPathListEntry(as_path=as_path)
|
|
22
|
+
self._add_entry(entry=as_path_entry)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class ASPathListEditPayload(ASPathList, PolicyListId):
|
|
26
|
+
pass
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class ASPathListInfo(ASPathList, PolicyListInfo):
|
|
30
|
+
pass
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Copyright 2022 Cisco Systems, Inc. and its affiliates
|
|
2
|
+
|
|
3
|
+
from typing import List, Literal
|
|
4
|
+
|
|
5
|
+
from pydantic import BaseModel, Field
|
|
6
|
+
|
|
7
|
+
from catalystwan.models.common import IntStr
|
|
8
|
+
from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ClassMapListEntry(BaseModel):
|
|
12
|
+
queue: IntStr = Field(ge=0, le=7)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class ClassMapList(PolicyListBase):
|
|
16
|
+
type: Literal["class"] = "class"
|
|
17
|
+
entries: List[ClassMapListEntry] = []
|
|
18
|
+
|
|
19
|
+
def assign_queue(self, queue: int) -> None:
|
|
20
|
+
# Class map list must have only one entry!
|
|
21
|
+
entry = ClassMapListEntry(queue=queue)
|
|
22
|
+
self._add_entry(entry, single=True)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class ClassMapListEditPayload(ClassMapList, PolicyListId):
|
|
26
|
+
pass
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class ClassMapListInfo(ClassMapList, PolicyListInfo):
|
|
30
|
+
pass
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Copyright 2022 Cisco Systems, Inc. and its affiliates
|
|
2
|
+
|
|
3
|
+
from typing import List, Literal
|
|
4
|
+
|
|
5
|
+
from pydantic import BaseModel
|
|
6
|
+
|
|
7
|
+
from catalystwan.models.common import TLOCColor
|
|
8
|
+
from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ColorListEntry(BaseModel):
|
|
12
|
+
color: TLOCColor
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class ColorList(PolicyListBase):
|
|
16
|
+
type: Literal["color"] = "color"
|
|
17
|
+
entries: List[ColorListEntry] = []
|
|
18
|
+
|
|
19
|
+
def add_color(self, color: TLOCColor) -> None:
|
|
20
|
+
self._add_entry(ColorListEntry(color=color))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class ColorListEditPayload(ColorList, PolicyListId):
|
|
24
|
+
pass
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class ColorListInfo(ColorList, PolicyListInfo):
|
|
28
|
+
pass
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Copyright 2024 Cisco Systems, Inc. and its affiliates
|
|
2
|
+
|
|
3
|
+
from ipaddress import IPv4Address, IPv6Address
|
|
4
|
+
from typing import List, Literal, Optional, Union
|
|
5
|
+
|
|
6
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
7
|
+
|
|
8
|
+
from catalystwan.models.common import WellKnownBGPCommunities
|
|
9
|
+
from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class CommunityListEntry(BaseModel):
|
|
13
|
+
model_config = ConfigDict(populate_by_name=True)
|
|
14
|
+
|
|
15
|
+
community: str = Field(examples=["1000:10000", "internet", "local-AS"])
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class ExtendedCommunityListEntry(BaseModel):
|
|
19
|
+
model_config = ConfigDict(populate_by_name=True)
|
|
20
|
+
community: str = Field(examples=["soo 1.2.3.4:1000", "rt 10:100"])
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class CommunityListBase(PolicyListBase):
|
|
24
|
+
entries: List[CommunityListEntry] = []
|
|
25
|
+
|
|
26
|
+
def add_well_known_community(self, community: WellKnownBGPCommunities) -> None:
|
|
27
|
+
self._add_entry(CommunityListEntry(community=community))
|
|
28
|
+
|
|
29
|
+
def add_community(self, as_number: int, community_number: int) -> None:
|
|
30
|
+
self._add_entry(CommunityListEntry(community=f"{as_number}:{community_number}"))
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class CommunityList(CommunityListBase):
|
|
34
|
+
type: Literal["community"] = "community"
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class CommunityListEditPayload(CommunityList, PolicyListId):
|
|
38
|
+
pass
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class CommunityListInfo(CommunityList, PolicyListInfo):
|
|
42
|
+
pass
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class ExpandedCommunityList(CommunityListBase):
|
|
46
|
+
type: Literal["expandedCommunity"] = "expandedCommunity"
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class ExpandedCommunityListEditPayload(ExpandedCommunityList, PolicyListId):
|
|
50
|
+
pass
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class ExpandedCommunityListInfo(ExpandedCommunityList, PolicyListInfo):
|
|
54
|
+
pass
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
class ExtendedCommunityList(PolicyListBase):
|
|
58
|
+
entries: List[ExtendedCommunityListEntry] = []
|
|
59
|
+
type: Literal["extCommunity"] = "extCommunity"
|
|
60
|
+
|
|
61
|
+
def add_site_of_origin_community(
|
|
62
|
+
self, ip_address: Union[IPv4Address, IPv6Address], port: int, name: Optional[str] = None
|
|
63
|
+
):
|
|
64
|
+
entry = f"soo {ip_address}:{port}"
|
|
65
|
+
self.entries.append(ExtendedCommunityListEntry(community=self._append_name(entry, name)))
|
|
66
|
+
|
|
67
|
+
def add_route_target_community(self, as_number: int, community_number: int, name: Optional[str] = None):
|
|
68
|
+
entry = f"rt {as_number}:{community_number}"
|
|
69
|
+
self.entries.append(ExtendedCommunityListEntry(community=self._append_name(entry, name)))
|
|
70
|
+
|
|
71
|
+
def _append_name(self, entry: str, name: Optional[str] = None) -> str:
|
|
72
|
+
if not name:
|
|
73
|
+
return entry
|
|
74
|
+
|
|
75
|
+
return f"{name} {entry}"
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
class ExtendedCommunityListEditPayload(ExtendedCommunityList, PolicyListId):
|
|
79
|
+
pass
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
class ExtendedCommunityListInfo(ExtendedCommunityList, PolicyListInfo):
|
|
83
|
+
pass
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Copyright 2022 Cisco Systems, Inc. and its affiliates
|
|
2
|
+
|
|
3
|
+
from ipaddress import IPv6Interface
|
|
4
|
+
from typing import List, Literal
|
|
5
|
+
|
|
6
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
7
|
+
|
|
8
|
+
from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class DataIPv6PrefixListEntry(BaseModel):
|
|
12
|
+
model_config = ConfigDict(populate_by_name=True)
|
|
13
|
+
|
|
14
|
+
ipv6_prefix: IPv6Interface = Field(serialization_alias="ipv6Prefix", validation_alias="ipv6Prefix")
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class DataIPv6PrefixList(PolicyListBase):
|
|
18
|
+
type: Literal["dataIpv6Prefix"] = "dataIpv6Prefix"
|
|
19
|
+
entries: List[DataIPv6PrefixListEntry] = []
|
|
20
|
+
|
|
21
|
+
def add_prefix(self, ipv6_prefix: IPv6Interface) -> None:
|
|
22
|
+
self._add_entry(DataIPv6PrefixListEntry(ipv6_prefix=ipv6_prefix))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class DataIPv6PrefixListEditPayload(DataIPv6PrefixList, PolicyListId):
|
|
26
|
+
pass
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class DataIPv6PrefixListInfo(DataIPv6PrefixList, PolicyListInfo):
|
|
30
|
+
pass
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Copyright 2022 Cisco Systems, Inc. and its affiliates
|
|
2
|
+
|
|
3
|
+
from ipaddress import IPv4Network
|
|
4
|
+
from typing import List, Literal
|
|
5
|
+
|
|
6
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
7
|
+
|
|
8
|
+
from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class DataPrefixListEntry(BaseModel):
|
|
12
|
+
model_config = ConfigDict(populate_by_name=True)
|
|
13
|
+
|
|
14
|
+
ip_prefix: IPv4Network = Field(serialization_alias="ipPrefix", validation_alias="ipPrefix")
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class DataPrefixList(PolicyListBase):
|
|
18
|
+
type: Literal["dataPrefix"] = "dataPrefix"
|
|
19
|
+
entries: List[DataPrefixListEntry] = []
|
|
20
|
+
|
|
21
|
+
def add_prefix(self, ip_prefix: IPv4Network) -> None:
|
|
22
|
+
self._add_entry(DataPrefixListEntry(ip_prefix=ip_prefix))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class DataPrefixListEditPayload(DataPrefixList, PolicyListId):
|
|
26
|
+
pass
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class DataPrefixListInfo(DataPrefixList, PolicyListInfo):
|
|
30
|
+
pass
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Copyright 2024 Cisco Systems, Inc. and its affiliates
|
|
2
|
+
|
|
3
|
+
from typing import List, Literal, Optional
|
|
4
|
+
|
|
5
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
6
|
+
|
|
7
|
+
from catalystwan.models.common import FaxFallBackProtocols, FaxPrimaryProtocols
|
|
8
|
+
from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class T38Options(BaseModel):
|
|
12
|
+
model_config = ConfigDict(populate_by_name=True)
|
|
13
|
+
version: int = Field(ge=0)
|
|
14
|
+
rate: str
|
|
15
|
+
nse: str
|
|
16
|
+
lowSpeed: int = Field(ge=0, validation_alias="lowSpeed", serialization_alias="lowSpeed")
|
|
17
|
+
highSpeed: int = Field(ge=0, validation_alias="highSpeed", serialization_alias="highSpeed")
|
|
18
|
+
fallbackProtocol: FaxFallBackProtocols = Field(
|
|
19
|
+
validation_alias="fallbackProtocol", serialization_alias="fallbackProtocol"
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class FaxProtocolListEntry(BaseModel):
|
|
24
|
+
model_config = ConfigDict(populate_by_name=True)
|
|
25
|
+
primary_protocol: FaxPrimaryProtocols = Field(
|
|
26
|
+
validation_alias="primaryProtocol", serialization_alias="primaryProtocol"
|
|
27
|
+
)
|
|
28
|
+
ecm: bool = Field(default=False)
|
|
29
|
+
t38_options: Optional[T38Options] = Field(
|
|
30
|
+
default=None, serialization_alias="t38Options", validation_alias="t38Options"
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class FaxProtocolList(PolicyListBase):
|
|
35
|
+
model_config = ConfigDict(populate_by_name=True)
|
|
36
|
+
type: Literal["faxProtocol", "faxprotocol"] = "faxProtocol"
|
|
37
|
+
entries: List[FaxProtocolListEntry] = Field(default_factory=list)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class FaxProtocolListEditPayload(FaxProtocolList, PolicyListId):
|
|
41
|
+
pass
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class FaxProtocolListInfo(FaxProtocolList, PolicyListInfo):
|
|
45
|
+
pass
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Copyright 2022 Cisco Systems, Inc. and its affiliates
|
|
2
|
+
|
|
3
|
+
from typing import List, Literal
|
|
4
|
+
|
|
5
|
+
from pydantic import BaseModel
|
|
6
|
+
|
|
7
|
+
from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class FQDNListEntry(BaseModel):
|
|
11
|
+
pattern: str
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class FQDNList(PolicyListBase):
|
|
15
|
+
type: Literal["fqdn"] = "fqdn"
|
|
16
|
+
entries: List[FQDNListEntry] = []
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class FQDNListEditPayload(FQDNList, PolicyListId):
|
|
20
|
+
pass
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class FQDNListInfo(FQDNList, PolicyListInfo):
|
|
24
|
+
pass
|