catalystwan 0.41.2.dev9__py3-none-any.whl → 0.41.3__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/ENDPOINTS.md +611 -0
- catalystwan/__init__.py +2 -3
- catalystwan/api/administration.py +2 -13
- catalystwan/api/api_container.py +1 -4
- catalystwan/api/config_group_api.py +16 -41
- catalystwan/api/configuration_groups/parcel.py +30 -100
- catalystwan/api/configuration_groups/parcels/cellular_controller.py +33 -0
- catalystwan/api/feature_profile_api.py +237 -2016
- catalystwan/api/policy_api.py +116 -470
- catalystwan/api/template_api.py +44 -113
- catalystwan/api/templates/README.md +47 -61
- catalystwan/api/templates/cli_template.py +7 -17
- catalystwan/api/templates/device_template/device_template.py +32 -127
- catalystwan/api/templates/device_template/device_template_payload.json.j2 +19 -0
- catalystwan/api/templates/feature_template.py +3 -3
- catalystwan/api/templates/models/cisco_aaa_model.py +42 -289
- catalystwan/api/templates/models/cisco_banner_model.py +2 -11
- catalystwan/api/templates/models/cisco_bfd_model.py +36 -31
- catalystwan/api/templates/models/cisco_bgp_model.py +131 -382
- catalystwan/api/templates/models/cisco_logging_model.py +43 -80
- catalystwan/api/templates/models/cisco_ntp_model.py +15 -34
- catalystwan/api/templates/models/cisco_omp_model.py +60 -70
- catalystwan/api/templates/models/cisco_ospf.py +74 -143
- catalystwan/api/templates/models/cisco_ospfv3.py +95 -217
- catalystwan/api/templates/models/cisco_secure_internet_gateway.py +142 -304
- catalystwan/api/templates/models/cisco_snmp_model.py +52 -66
- catalystwan/api/templates/models/cisco_system.py +129 -238
- catalystwan/api/templates/models/cisco_vpn_interface_model.py +275 -632
- catalystwan/api/templates/models/cisco_vpn_model.py +270 -433
- catalystwan/api/templates/models/cli_template.py +2 -3
- catalystwan/api/templates/models/omp_vsmart_model.py +10 -46
- catalystwan/api/templates/models/security_vsmart_model.py +8 -11
- catalystwan/api/templates/models/supported.py +4 -10
- catalystwan/api/templates/models/system_vsmart_model.py +27 -164
- catalystwan/apigw_auth.py +2 -6
- catalystwan/dataclasses.py +53 -2
- catalystwan/endpoints/__init__.py +41 -41
- catalystwan/endpoints/certificate_management_device.py +0 -4
- catalystwan/endpoints/cluster_management.py +9 -30
- catalystwan/endpoints/configuration/feature_profile/sdwan/policy_object.py +12 -35
- catalystwan/endpoints/configuration/feature_profile/sdwan/system.py +11 -164
- catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py +26 -144
- catalystwan/endpoints/configuration/policy/definition/access_control_list.py +11 -6
- catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py +11 -6
- catalystwan/endpoints/configuration/policy/definition/control.py +11 -6
- catalystwan/endpoints/configuration/policy/definition/device_access.py +11 -6
- catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py +11 -6
- catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py +11 -6
- catalystwan/endpoints/configuration/policy/definition/mesh.py +11 -2
- catalystwan/endpoints/configuration/policy/definition/qos_map.py +11 -2
- catalystwan/endpoints/configuration/policy/definition/rewrite.py +11 -6
- catalystwan/endpoints/configuration/policy/definition/rule_set.py +11 -2
- catalystwan/endpoints/configuration/policy/definition/security_group.py +11 -6
- catalystwan/endpoints/configuration/policy/definition/traffic_data.py +11 -6
- catalystwan/endpoints/configuration/policy/definition/vpn_membership.py +11 -6
- catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py +11 -6
- catalystwan/endpoints/configuration/policy/list/app.py +16 -3
- catalystwan/endpoints/configuration/policy/list/app_probe.py +15 -6
- catalystwan/endpoints/configuration/policy/list/as_path.py +16 -3
- catalystwan/endpoints/configuration/policy/list/class_map.py +16 -3
- catalystwan/endpoints/configuration/policy/list/color.py +16 -3
- catalystwan/endpoints/configuration/policy/list/community.py +16 -3
- catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py +15 -6
- catalystwan/endpoints/configuration/policy/list/data_prefix.py +16 -3
- catalystwan/endpoints/configuration/policy/list/expanded_community.py +15 -6
- catalystwan/endpoints/configuration/policy/list/fqdn.py +16 -3
- catalystwan/endpoints/configuration/policy/list/geo_location.py +16 -3
- catalystwan/endpoints/configuration/policy/list/ips_signature.py +15 -6
- catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py +16 -3
- catalystwan/endpoints/configuration/policy/list/local_app.py +16 -3
- catalystwan/endpoints/configuration/policy/list/local_domain.py +16 -3
- catalystwan/endpoints/configuration/policy/list/mirror.py +16 -3
- catalystwan/endpoints/configuration/policy/list/policer.py +16 -3
- catalystwan/endpoints/configuration/policy/list/port.py +16 -3
- catalystwan/endpoints/configuration/policy/list/preferred_color_group.py +15 -6
- catalystwan/endpoints/configuration/policy/list/prefix.py +16 -4
- catalystwan/endpoints/configuration/policy/list/protocol_name.py +15 -6
- catalystwan/endpoints/configuration/policy/list/region.py +10 -2
- catalystwan/endpoints/configuration/policy/list/site.py +16 -3
- catalystwan/endpoints/configuration/policy/list/sla.py +16 -3
- catalystwan/endpoints/configuration/policy/list/tloc.py +16 -3
- catalystwan/endpoints/configuration/policy/list/url_allow_list.py +16 -3
- catalystwan/endpoints/configuration/policy/list/url_block_list.py +16 -3
- catalystwan/endpoints/configuration/policy/list/vpn.py +16 -3
- catalystwan/endpoints/configuration/policy/list/zone.py +16 -3
- catalystwan/endpoints/configuration/policy/security_template.py +3 -2
- catalystwan/endpoints/configuration/software_actions.py +4 -2
- catalystwan/endpoints/configuration_dashboard_status.py +2 -2
- catalystwan/endpoints/configuration_device_template.py +1 -15
- catalystwan/endpoints/configuration_feature_profile.py +11 -8
- catalystwan/endpoints/configuration_group.py +5 -28
- catalystwan/endpoints/configuration_settings.py +1 -90
- catalystwan/endpoints/endpoints_container.py +18 -82
- catalystwan/endpoints/real_time_monitoring/reboot_history.py +3 -1
- catalystwan/endpoints/tenant_migration.py +0 -2
- catalystwan/exceptions.py +0 -24
- catalystwan/integration_tests/test_find_template_values.py +18 -7
- catalystwan/models/common.py +2 -1898
- catalystwan/models/configuration/common.py +0 -1
- catalystwan/models/configuration/config_migration.py +36 -0
- catalystwan/models/configuration/feature_profile/common.py +149 -634
- catalystwan/models/configuration/feature_profile/sdwan/management/vpn.py +26 -0
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/__init__.py +60 -69
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/app_probe.py +20 -34
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/application_list.py +6 -8
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/color_list.py +5 -7
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/data_prefix.py +4 -13
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/expanded_community_list.py +7 -9
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/fowarding_class.py +5 -7
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv6_data_prefix.py +9 -11
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv6_prefix_list.py +10 -25
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/{policer.py → policier.py} +10 -12
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/prefered_group_color.py +10 -29
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/prefix_list.py +8 -23
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/sla_class.py +31 -12
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/standard_community.py +10 -16
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/tloc_list.py +7 -8
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/application_list.py +6 -8
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/data_prefix.py +5 -7
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/fqdn.py +5 -7
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/geolocation_list.py +5 -7
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ips_signature.py +5 -7
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/local_domain.py +5 -7
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/protocol_list.py +5 -7
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/security_port.py +11 -21
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/url.py +15 -36
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/zone.py +18 -14
- catalystwan/models/configuration/feature_profile/sdwan/service/acl.py +409 -0
- catalystwan/models/configuration/feature_profile/sdwan/service/appqoe.py +42 -77
- catalystwan/models/configuration/feature_profile/sdwan/service/bgp.py +288 -0
- catalystwan/models/configuration/feature_profile/sdwan/service/dhcp_server.py +64 -107
- catalystwan/models/configuration/feature_profile/sdwan/service/eigrp.py +42 -39
- catalystwan/models/configuration/feature_profile/sdwan/service/lan/common.py +88 -7
- catalystwan/models/configuration/feature_profile/sdwan/service/lan/ethernet.py +156 -232
- catalystwan/models/configuration/feature_profile/sdwan/service/lan/gre.py +108 -38
- catalystwan/models/configuration/feature_profile/sdwan/service/lan/ipsec.py +84 -77
- catalystwan/models/configuration/feature_profile/sdwan/service/lan/svi.py +56 -62
- catalystwan/models/configuration/feature_profile/sdwan/service/lan/vpn.py +121 -112
- catalystwan/models/configuration/feature_profile/sdwan/service/multicast.py +57 -56
- catalystwan/models/configuration/feature_profile/sdwan/service/object_tracker.py +21 -15
- catalystwan/models/configuration/feature_profile/sdwan/{routing → service}/ospf.py +47 -55
- catalystwan/models/configuration/feature_profile/sdwan/{routing → service}/ospfv3.py +72 -74
- catalystwan/models/configuration/feature_profile/sdwan/service/route_policy.py +110 -358
- catalystwan/models/configuration/feature_profile/sdwan/service/service_insertion_attachment.py +25 -17
- catalystwan/models/configuration/feature_profile/sdwan/service/switchport.py +58 -50
- catalystwan/models/configuration/feature_profile/sdwan/service/tracker.py +21 -12
- catalystwan/models/configuration/feature_profile/sdwan/service/wireless_lan.py +31 -27
- catalystwan/models/configuration/feature_profile/sdwan/system/aaa.py +10 -58
- catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_controller.py +23 -26
- catalystwan/models/configuration/profile_type.py +6 -1
- catalystwan/models/policy/__init__.py +69 -282
- catalystwan/models/policy/centralized.py +29 -26
- catalystwan/models/policy/{definition → definitions}/access_control_list.py +17 -47
- catalystwan/models/policy/{definition → definitions}/access_control_list_ipv6.py +18 -42
- catalystwan/models/policy/{definition → definitions}/control.py +25 -48
- catalystwan/models/policy/{definition → definitions}/device_access.py +11 -22
- catalystwan/models/policy/{definition → definitions}/device_access_ipv6.py +11 -20
- catalystwan/models/policy/{definition → definitions}/hub_and_spoke.py +4 -18
- catalystwan/models/policy/{definition → definitions}/mesh.py +1 -13
- catalystwan/models/policy/{definition → definitions}/qos_map.py +32 -39
- catalystwan/models/policy/{definition → definitions}/rewrite.py +2 -12
- catalystwan/models/policy/{definition → definitions}/rule_set.py +48 -66
- catalystwan/models/policy/{definition → definitions}/security_group.py +14 -38
- catalystwan/models/policy/{definition → definitions}/traffic_data.py +61 -184
- catalystwan/models/policy/{definition → definitions}/vpn_membership.py +1 -13
- catalystwan/models/policy/{definition → definitions}/zone_based_firewall.py +32 -93
- catalystwan/models/policy/lists.py +330 -0
- catalystwan/models/policy/lists_entries.py +444 -0
- catalystwan/models/policy/localized.py +16 -34
- catalystwan/models/policy/policy.py +10 -14
- catalystwan/models/policy/policy_definition.py +173 -673
- catalystwan/models/policy/policy_list.py +27 -38
- catalystwan/models/policy/security.py +46 -145
- catalystwan/response.py +2 -6
- catalystwan/session.py +1 -1
- catalystwan/tests/templates/definitions/{cisco_vpn_basic.json → Basic_Cisco_VPN_Model.json} +2 -2
- catalystwan/tests/templates/definitions/complex_aaa.json +277 -0
- catalystwan/tests/templates/definitions/{cisco_vpn_complex.json → complex_cisco_vpn.json} +12 -27
- catalystwan/tests/templates/definitions/{cisco_aaa.json → iuo.json} +15 -44
- catalystwan/tests/templates/definitions/omp_1.json +11 -0
- catalystwan/tests/templates/definitions/{omp_vsmart_2.json → omp_2.json} +2 -16
- catalystwan/tests/templates/definitions/{omp_vsmart_3.json → omp_3.json} +2 -16
- catalystwan/tests/templates/models/__init__.py +13 -46
- catalystwan/tests/templates/models/cisco_aaa.py +48 -81
- catalystwan/tests/templates/models/cisco_banner.py +2 -2
- catalystwan/tests/templates/models/cisco_bfd.py +6 -4
- catalystwan/tests/templates/models/cisco_system.py +3 -108
- catalystwan/tests/templates/models/cisco_vpn.py +72 -42
- catalystwan/tests/templates/models/omp_vsmart.py +8 -28
- catalystwan/tests/templates/schemas/cedge_aaa.json +1 -1
- catalystwan/tests/templates/schemas/cisco_system.json +0 -242
- catalystwan/tests/templates/schemas/cisco_vpn.json +1 -53
- catalystwan/tests/templates/schemas/omp-vsmart.json +0 -20
- catalystwan/tests/templates/test_chose_model.py +10 -6
- catalystwan/tests/templates/test_deserialize_model.py +4 -4
- catalystwan/tests/templates/test_find_template_values.py +0 -229
- catalystwan/tests/templates/test_serialize_model.py +2 -1
- catalystwan/tests/test_cli_template.py +9 -8
- catalystwan/tests/test_endpoints.py +11 -42
- catalystwan/tests/test_templates.py +19 -16
- catalystwan/utils/feature_template/find_template_values.py +9 -22
- catalystwan/utils/timezone.py +422 -0
- catalystwan/workflows/tenant_migration.py +1 -1
- {catalystwan-0.41.2.dev9.dist-info → catalystwan-0.41.3.dist-info}/METADATA +1 -20
- catalystwan-0.41.3.dist-info/RECORD +353 -0
- catalystwan/api/builders/__init__.py +0 -14
- catalystwan/api/builders/feature_profiles/__init__.py +0 -0
- catalystwan/api/builders/feature_profiles/application_priority.py +0 -58
- catalystwan/api/builders/feature_profiles/builder_factory.py +0 -59
- catalystwan/api/builders/feature_profiles/cli.py +0 -76
- catalystwan/api/builders/feature_profiles/mixins.py +0 -44
- catalystwan/api/builders/feature_profiles/other.py +0 -79
- catalystwan/api/builders/feature_profiles/report.py +0 -155
- catalystwan/api/builders/feature_profiles/service.py +0 -248
- catalystwan/api/builders/feature_profiles/system.py +0 -80
- catalystwan/api/builders/feature_profiles/transport.py +0 -256
- catalystwan/api/builders/feature_profiles/uc_voice.py +0 -287
- catalystwan/api/templates/models/aaa_model.py +0 -387
- catalystwan/api/templates/models/vpn_vsmart_interface_model.py +0 -198
- catalystwan/api/templates/models/vpn_vsmart_model.py +0 -124
- catalystwan/endpoints/configuration/feature_profile/sdwan/application_priority.py +0 -107
- catalystwan/endpoints/configuration/feature_profile/sdwan/cli.py +0 -60
- catalystwan/endpoints/configuration/feature_profile/sdwan/dns_security.py +0 -83
- catalystwan/endpoints/configuration/feature_profile/sdwan/embedded_security.py +0 -88
- catalystwan/endpoints/configuration/feature_profile/sdwan/other.py +0 -62
- catalystwan/endpoints/configuration/feature_profile/sdwan/service.py +0 -154
- catalystwan/endpoints/configuration/feature_profile/sdwan/sig_security.py +0 -88
- catalystwan/endpoints/configuration/feature_profile/sdwan/topology.py +0 -93
- catalystwan/endpoints/configuration/feature_profile/sdwan/uc_voice.py +0 -77
- catalystwan/endpoints/configuration/network_hierarchy.py +0 -47
- catalystwan/endpoints/configuration/packages.py +0 -36
- catalystwan/endpoints/configuration/policy/abstractions.py +0 -49
- catalystwan/endpoints/configuration/policy/definition/aip.py +0 -52
- catalystwan/endpoints/configuration/policy/definition/amp.py +0 -52
- catalystwan/endpoints/configuration/policy/definition/app_route.py +0 -50
- catalystwan/endpoints/configuration/policy/definition/cflowd.py +0 -46
- catalystwan/endpoints/configuration/policy/definition/dial_peer.py +0 -57
- catalystwan/endpoints/configuration/policy/definition/dns_security.py +0 -50
- catalystwan/endpoints/configuration/policy/definition/fxo_port.py +0 -57
- catalystwan/endpoints/configuration/policy/definition/fxs_did_port.py +0 -57
- catalystwan/endpoints/configuration/policy/definition/fxs_port.py +0 -57
- catalystwan/endpoints/configuration/policy/definition/intrusion_prevention.py +0 -52
- catalystwan/endpoints/configuration/policy/definition/pri_isdn_port.py +0 -57
- catalystwan/endpoints/configuration/policy/definition/route_policy.py +0 -50
- catalystwan/endpoints/configuration/policy/definition/srst_phone_profile.py +0 -59
- catalystwan/endpoints/configuration/policy/definition/ssl_decryption.py +0 -50
- catalystwan/endpoints/configuration/policy/definition/ssl_decryption_utd_profile.py +0 -52
- catalystwan/endpoints/configuration/policy/definition/url_filtering.py +0 -50
- catalystwan/endpoints/configuration/policy/definition/vpn_qos_map.py +0 -50
- catalystwan/endpoints/configuration/policy/list/extended_community.py +0 -52
- catalystwan/endpoints/configuration/policy/list/fax_protocol.py +0 -48
- catalystwan/endpoints/configuration/policy/list/identity.py +0 -48
- catalystwan/endpoints/configuration/policy/list/media_profile.py +0 -52
- catalystwan/endpoints/configuration/policy/list/modem_pass_through.py +0 -52
- catalystwan/endpoints/configuration/policy/list/scalable_group_tag.py +0 -52
- catalystwan/endpoints/configuration/policy/list/supervisory_disconnect.py +0 -52
- catalystwan/endpoints/configuration/policy/list/threat_grid_api_key.py +0 -52
- catalystwan/endpoints/configuration/policy/list/translation_profile.py +0 -52
- catalystwan/endpoints/configuration/policy/list/translation_rules.py +0 -52
- catalystwan/endpoints/configuration/policy/list/trunkgroup.py +0 -48
- catalystwan/endpoints/configuration/policy/list/umbrella_data.py +0 -52
- catalystwan/endpoints/configuration/policy/voice_template.py +0 -39
- catalystwan/endpoints/configuration/policy_group.py +0 -30
- catalystwan/endpoints/configuration/topology_group.py +0 -51
- catalystwan/endpoints/configuration_general_template.py +0 -31
- catalystwan/endpoints/configuration_template_master.py +0 -48
- catalystwan/integration_tests/base.py +0 -81
- 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 +0 -33
- catalystwan/integration_tests/feature_profile/sdwan/policy/test_extended_community.py +0 -33
- catalystwan/integration_tests/feature_profile/sdwan/policy/test_security_app_list.py +0 -32
- catalystwan/integration_tests/feature_profile/sdwan/test_application_priority.py +0 -433
- catalystwan/integration_tests/feature_profile/sdwan/test_cli.py +0 -54
- catalystwan/integration_tests/feature_profile/sdwan/test_dns_security.py +0 -106
- catalystwan/integration_tests/feature_profile/sdwan/test_other.py +0 -49
- catalystwan/integration_tests/feature_profile/sdwan/test_service.py +0 -1078
- catalystwan/integration_tests/feature_profile/sdwan/test_sig_security.py +0 -322
- catalystwan/integration_tests/feature_profile/sdwan/test_ssl_decryption.py +0 -85
- catalystwan/integration_tests/feature_profile/sdwan/test_system.py +0 -368
- catalystwan/integration_tests/feature_profile/sdwan/test_tracker.py +0 -127
- catalystwan/integration_tests/feature_profile/sdwan/test_transport.py +0 -1698
- catalystwan/integration_tests/feature_profile/sdwan/topology/test_topology.py +0 -93
- catalystwan/integration_tests/feature_profile/test_parcel.py +0 -54
- catalystwan/integration_tests/profile_builder/__init__.py +0 -0
- catalystwan/integration_tests/profile_builder/test_pb_service.py +0 -197
- catalystwan/integration_tests/profile_builder/test_pb_transport.py +0 -226
- catalystwan/integration_tests/profile_builder/test_pb_uc_voice.py +0 -277
- catalystwan/integration_tests/test_data/__init__.py +0 -117
- catalystwan/integration_tests/test_network_hierarchy.py +0 -82
- catalystwan/integration_tests/test_settings.py +0 -30
- catalystwan/models/configuration/feature_profile/parcel.py +0 -245
- catalystwan/models/configuration/feature_profile/sdwan/acl/__init__.py +0 -13
- catalystwan/models/configuration/feature_profile/sdwan/acl/ipv4acl.py +0 -298
- catalystwan/models/configuration/feature_profile/sdwan/acl/ipv6acl.py +0 -344
- catalystwan/models/configuration/feature_profile/sdwan/application_priority/__init__.py +0 -218
- catalystwan/models/configuration/feature_profile/sdwan/application_priority/cloud_probe.py +0 -61
- catalystwan/models/configuration/feature_profile/sdwan/application_priority/policy_settings.py +0 -31
- catalystwan/models/configuration/feature_profile/sdwan/application_priority/qos_policy.py +0 -102
- catalystwan/models/configuration/feature_profile/sdwan/application_priority/traffic_policy.py +0 -1057
- catalystwan/models/configuration/feature_profile/sdwan/cli/__init__.py +0 -23
- catalystwan/models/configuration/feature_profile/sdwan/cli/config.py +0 -18
- catalystwan/models/configuration/feature_profile/sdwan/cli/full_config.py +0 -15
- catalystwan/models/configuration/feature_profile/sdwan/dns_security/__init__.py +0 -13
- catalystwan/models/configuration/feature_profile/sdwan/dns_security/dns.py +0 -110
- catalystwan/models/configuration/feature_profile/sdwan/embedded_security/__init__.py +0 -23
- catalystwan/models/configuration/feature_profile/sdwan/embedded_security/ngfirewall.py +0 -493
- catalystwan/models/configuration/feature_profile/sdwan/embedded_security/policy.py +0 -171
- catalystwan/models/configuration/feature_profile/sdwan/other/__init__.py +0 -25
- catalystwan/models/configuration/feature_profile/sdwan/other/cybervision.py +0 -44
- catalystwan/models/configuration/feature_profile/sdwan/other/thousandeyes.py +0 -147
- catalystwan/models/configuration/feature_profile/sdwan/other/ucse.py +0 -110
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/as_path.py +0 -22
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/extended_community.py +0 -34
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv4_network_object.py +0 -15
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv4_service_object.py +0 -254
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/mirror.py +0 -27
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/network_object_group.py +0 -15
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/object_group.py +0 -15
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/service_object_group.py +0 -21
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/aip.py +0 -64
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/amp.py +0 -79
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/identity.py +0 -30
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/intrusion_prevention.py +0 -58
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/object_group.py +0 -72
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/rule_set.py +0 -137
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/scalable_group_tag.py +0 -26
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ssl_decryption.py +0 -126
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ssl_decryption_profile.py +0 -165
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/url_filtering.py +0 -148
- catalystwan/models/configuration/feature_profile/sdwan/routing/__init__.py +0 -26
- catalystwan/models/configuration/feature_profile/sdwan/routing/bgp.py +0 -609
- catalystwan/models/configuration/feature_profile/sdwan/service/__init__.py +0 -91
- catalystwan/models/configuration/feature_profile/sdwan/service/dual_router_ha.py +0 -26
- catalystwan/models/configuration/feature_profile/sdwan/service/lan/multilink.py +0 -101
- catalystwan/models/configuration/feature_profile/sdwan/service/service_chain.py +0 -38
- catalystwan/models/configuration/feature_profile/sdwan/sig_security/__init__.py +0 -19
- catalystwan/models/configuration/feature_profile/sdwan/sig_security/sig_security.py +0 -379
- catalystwan/models/configuration/feature_profile/sdwan/system/__init__.py +0 -59
- catalystwan/models/configuration/feature_profile/sdwan/system/banner.py +0 -30
- catalystwan/models/configuration/feature_profile/sdwan/system/basic.py +0 -290
- catalystwan/models/configuration/feature_profile/sdwan/system/bfd.py +0 -69
- catalystwan/models/configuration/feature_profile/sdwan/system/device_access.py +0 -157
- catalystwan/models/configuration/feature_profile/sdwan/system/device_access_ipv6.py +0 -157
- catalystwan/models/configuration/feature_profile/sdwan/system/global_parcel.py +0 -163
- catalystwan/models/configuration/feature_profile/sdwan/system/logging_parcel.py +0 -162
- catalystwan/models/configuration/feature_profile/sdwan/system/mrf.py +0 -75
- catalystwan/models/configuration/feature_profile/sdwan/system/ntp.py +0 -103
- catalystwan/models/configuration/feature_profile/sdwan/system/omp.py +0 -120
- catalystwan/models/configuration/feature_profile/sdwan/system/security.py +0 -179
- catalystwan/models/configuration/feature_profile/sdwan/system/snmp.py +0 -173
- catalystwan/models/configuration/feature_profile/sdwan/topology/__init__.py +0 -29
- catalystwan/models/configuration/feature_profile/sdwan/topology/custom_control.py +0 -425
- catalystwan/models/configuration/feature_profile/sdwan/topology/hubspoke.py +0 -60
- catalystwan/models/configuration/feature_profile/sdwan/topology/mesh.py +0 -23
- catalystwan/models/configuration/feature_profile/sdwan/trackers/__init__.py +0 -36
- catalystwan/models/configuration/feature_profile/sdwan/trackers/tracker.py +0 -96
- catalystwan/models/configuration/feature_profile/sdwan/trackers/tracker_group.py +0 -63
- catalystwan/models/configuration/feature_profile/sdwan/transport/__init__.py +0 -93
- catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_profile.py +0 -71
- catalystwan/models/configuration/feature_profile/sdwan/transport/gps.py +0 -37
- catalystwan/models/configuration/feature_profile/sdwan/transport/management/ethernet.py +0 -121
- catalystwan/models/configuration/feature_profile/sdwan/transport/t1e1controller.py +0 -124
- catalystwan/models/configuration/feature_profile/sdwan/transport/vpn.py +0 -285
- catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/cellular.py +0 -173
- catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/ethernet.py +0 -389
- catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/gre.py +0 -46
- catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/ipsec.py +0 -137
- catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/multilink.py +0 -219
- catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/protocol_over.py +0 -405
- catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/t1e1serial.py +0 -195
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/__init__.py +0 -62
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/analog_interface.py +0 -436
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/call_routing.py +0 -179
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/digital_interface.py +0 -380
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/dsp_farm.py +0 -193
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/media_profile.py +0 -17
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/server_group.py +0 -51
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/srst.py +0 -86
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/supervisory_disconnect.py +0 -69
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/translation_profile.py +0 -42
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/translation_rule.py +0 -31
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/trunk_group.py +0 -26
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/voice_global.py +0 -57
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/voice_tenant.py +0 -40
- catalystwan/models/configuration/network_hierarchy/__init__.py +0 -24
- catalystwan/models/configuration/network_hierarchy/cflowd.py +0 -128
- catalystwan/models/configuration/network_hierarchy/node.py +0 -88
- catalystwan/models/configuration/network_hierarchy/security_logging.py +0 -91
- catalystwan/models/configuration/packages.py +0 -57
- catalystwan/models/configuration/policy_group.py +0 -74
- catalystwan/models/configuration/topology_group.py +0 -52
- catalystwan/models/policy/definition/aip.py +0 -60
- catalystwan/models/policy/definition/amp.py +0 -65
- catalystwan/models/policy/definition/app_route.py +0 -246
- catalystwan/models/policy/definition/cflowd.py +0 -95
- catalystwan/models/policy/definition/dial_peer.py +0 -60
- catalystwan/models/policy/definition/dns_security.py +0 -130
- catalystwan/models/policy/definition/fxo_port.py +0 -63
- catalystwan/models/policy/definition/fxs_did_port.py +0 -58
- catalystwan/models/policy/definition/fxs_port.py +0 -56
- catalystwan/models/policy/definition/intrusion_prevention.py +0 -55
- catalystwan/models/policy/definition/pri_isdn_port.py +0 -48
- catalystwan/models/policy/definition/route_policy.py +0 -187
- catalystwan/models/policy/definition/srst_phone_profile.py +0 -37
- catalystwan/models/policy/definition/ssl_decryption.py +0 -209
- catalystwan/models/policy/definition/ssl_decryption_utd_profile.py +0 -88
- catalystwan/models/policy/definition/url_filtering.py +0 -70
- catalystwan/models/policy/definition/vpn_qos_map.py +0 -46
- catalystwan/models/policy/list/app.py +0 -44
- catalystwan/models/policy/list/app_probe.py +0 -42
- catalystwan/models/policy/list/as_path.py +0 -30
- catalystwan/models/policy/list/class_map.py +0 -30
- catalystwan/models/policy/list/color.py +0 -28
- catalystwan/models/policy/list/communities.py +0 -83
- catalystwan/models/policy/list/data_ipv6_prefix.py +0 -30
- catalystwan/models/policy/list/data_prefix.py +0 -30
- catalystwan/models/policy/list/fax_protocol.py +0 -45
- catalystwan/models/policy/list/fqdn.py +0 -24
- catalystwan/models/policy/list/geo_location.py +0 -33
- catalystwan/models/policy/list/identity.py +0 -29
- catalystwan/models/policy/list/ips_signature.py +0 -27
- catalystwan/models/policy/list/ipv6_prefix.py +0 -33
- catalystwan/models/policy/list/local_app.py +0 -45
- catalystwan/models/policy/list/local_domain.py +0 -36
- catalystwan/models/policy/list/media_profile.py +0 -44
- catalystwan/models/policy/list/mirror.py +0 -27
- catalystwan/models/policy/list/modem_pass_through.py +0 -27
- catalystwan/models/policy/list/policer.py +0 -39
- catalystwan/models/policy/list/port.py +0 -33
- catalystwan/models/policy/list/preferred_color_group.py +0 -82
- catalystwan/models/policy/list/prefix.py +0 -33
- catalystwan/models/policy/list/protocol_name.py +0 -26
- catalystwan/models/policy/list/region.py +0 -45
- catalystwan/models/policy/list/scalable_group_tag.py +0 -30
- catalystwan/models/policy/list/site.py +0 -34
- catalystwan/models/policy/list/sla.py +0 -77
- catalystwan/models/policy/list/supervisory_disconnect.py +0 -62
- catalystwan/models/policy/list/threat_grid_api_key.py +0 -32
- catalystwan/models/policy/list/tloc.py +0 -32
- catalystwan/models/policy/list/translation_profile.py +0 -32
- catalystwan/models/policy/list/translation_rules.py +0 -29
- catalystwan/models/policy/list/trunkgroup.py +0 -56
- catalystwan/models/policy/list/umbrella_data.py +0 -30
- catalystwan/models/policy/list/url.py +0 -39
- catalystwan/models/policy/list/vpn.py +0 -40
- catalystwan/models/policy/list/zone.py +0 -46
- catalystwan/models/policy/voice.py +0 -77
- catalystwan/models/settings.py +0 -41
- catalystwan/models/templates.py +0 -79
- catalystwan/tests/builders/test_report.py +0 -60
- catalystwan/tests/builders/uc_voice.py +0 -85
- catalystwan/tests/models/__init__.py +0 -0
- catalystwan/tests/models/configuration/feature_profile/sdwan/policy_object/security/test_url.py +0 -73
- catalystwan/tests/models/test_digital_interface.py +0 -56
- catalystwan/tests/templates/definitions/aaa_basic.json +0 -96
- catalystwan/tests/templates/definitions/aaa_complex.json +0 -464
- catalystwan/tests/templates/definitions/cisco_aaa_complex.json +0 -361
- catalystwan/tests/templates/definitions/cisco_logging_complex.json +0 -268
- catalystwan/tests/templates/definitions/cisco_ntp_complex.json +0 -143
- catalystwan/tests/templates/definitions/cisco_omp_complex.json +0 -175
- catalystwan/tests/templates/definitions/cisco_ospf_complex.json +0 -302
- catalystwan/tests/templates/definitions/cisco_sig.json +0 -405
- catalystwan/tests/templates/definitions/cisco_snmp_complex.json +0 -258
- catalystwan/tests/templates/definitions/cisco_system_complex.json +0 -502
- catalystwan/tests/templates/definitions/cisco_vpn_interface_complex.json +0 -821
- catalystwan/tests/templates/definitions/omp_vsmart_1.json +0 -26
- catalystwan/tests/templates/definitions/omp_vsmart_complex.json +0 -73
- catalystwan/tests/templates/definitions/security_vsmart_complex.json +0 -24
- catalystwan/tests/templates/definitions/system_vsmart_complex.json +0 -193
- catalystwan/tests/templates/definitions/vpn_vsmart_basic.json +0 -17
- catalystwan/tests/templates/definitions/vpn_vsmart_complex.json +0 -179
- catalystwan/tests/templates/definitions/vpn_vsmart_interface_basic.json +0 -42
- catalystwan/tests/templates/definitions/vpn_vsmart_interface_complex.json +0 -208
- catalystwan/tests/templates/models/aaa.py +0 -106
- catalystwan/tests/templates/models/cisco_logging.py +0 -65
- catalystwan/tests/templates/models/cisco_ntp.py +0 -17
- catalystwan/tests/templates/models/cisco_omp.py +0 -37
- catalystwan/tests/templates/models/cisco_ospf.py +0 -60
- catalystwan/tests/templates/models/cisco_secure_internet_gateway.py +0 -95
- catalystwan/tests/templates/models/cisco_snmp.py +0 -40
- catalystwan/tests/templates/models/cisco_vpn_interface.py +0 -200
- catalystwan/tests/templates/models/security_vsmart.py +0 -11
- catalystwan/tests/templates/models/system_vsmart.py +0 -37
- catalystwan/tests/templates/models/vpn_vsmart.py +0 -32
- catalystwan/tests/templates/models/vpn_vsmart_interface.py +0 -54
- catalystwan/tests/templates/schemas/aaa.json +0 -1096
- catalystwan/tests/templates/schemas/cisco_logging.json +0 -577
- catalystwan/tests/templates/schemas/cisco_ntp.json +0 -265
- catalystwan/tests/templates/schemas/cisco_omp.json +0 -479
- catalystwan/tests/templates/schemas/cisco_ospf.json +0 -908
- catalystwan/tests/templates/schemas/cisco_secure_internet_gateway.json +0 -1520
- catalystwan/tests/templates/schemas/cisco_snmp.json +0 -561
- catalystwan/tests/templates/schemas/cisco_vpn_interface.json +0 -3348
- catalystwan/tests/templates/schemas/security-vsmart.json +0 -58
- catalystwan/tests/templates/schemas/system-vsmart.json +0 -2585
- catalystwan/tests/templates/schemas/vpn-vsmart-interface.json +0 -859
- catalystwan/tests/templates/schemas/vpn-vsmart.json +0 -445
- catalystwan/tests/templates/test_find_template_values_2.py +0 -193
- catalystwan/tests/test_feature_profile_api.py +0 -282
- catalystwan/tests/test_models_common.py +0 -53
- catalystwan/utils/model.py +0 -48
- catalystwan/utils/persona.py +0 -5
- catalystwan/utils/type_check.py +0 -22
- catalystwan/workflows/backup_restore_device_templates.py +0 -467
- catalystwan-0.41.2.dev9.dist-info/RECORD +0 -641
- /catalystwan/tests/templates/definitions/{cisco_banner.json → banner_1.json} +0 -0
- {catalystwan-0.41.2.dev9.dist-info → catalystwan-0.41.3.dist-info}/LICENSE +0 -0
- {catalystwan-0.41.2.dev9.dist-info → catalystwan-0.41.3.dist-info}/WHEEL +0 -0
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
# Copyright 2024 Cisco Systems, Inc. and its affiliates
|
|
2
|
-
|
|
3
|
-
from typing import List, Literal, Optional, Set
|
|
4
|
-
|
|
5
|
-
from pydantic import BaseModel, ConfigDict, Field, field_validator
|
|
6
|
-
|
|
7
|
-
from catalystwan.models.common import PolicyModeType, VpnId, WebCategory, WebReputation
|
|
8
|
-
from catalystwan.models.policy.policy_definition import (
|
|
9
|
-
PolicyDefinitionBase,
|
|
10
|
-
PolicyDefinitionGetResponse,
|
|
11
|
-
PolicyDefinitionId,
|
|
12
|
-
Reference,
|
|
13
|
-
)
|
|
14
|
-
|
|
15
|
-
BLOCK_PAGE_CONTENT_HEADER = "Access to the requested page has been denied."
|
|
16
|
-
|
|
17
|
-
BlockPageAction = Literal["text", "redirectUrl"]
|
|
18
|
-
UrlFilteringAlerts = Literal["blacklist", "whitelist", "categories-reputation"]
|
|
19
|
-
WebCategoriesAction = Literal["allow", "block"]
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
class UrlFilteringDefinition(BaseModel):
|
|
23
|
-
model_config = ConfigDict(populate_by_name=True)
|
|
24
|
-
web_categories_action: WebCategoriesAction = Field(
|
|
25
|
-
validation_alias="webCategoriesAction", serialization_alias="webCategoriesAction"
|
|
26
|
-
)
|
|
27
|
-
web_categories: List[WebCategory] = Field(validation_alias="webCategories", serialization_alias="webCategories")
|
|
28
|
-
web_reputation: WebReputation = Field(validation_alias="webReputation", serialization_alias="webReputation")
|
|
29
|
-
url_white_list: Optional[Reference] = Field(
|
|
30
|
-
default=None, validation_alias="urlWhiteList", serialization_alias="urlWhiteList"
|
|
31
|
-
)
|
|
32
|
-
url_black_list: Optional[Reference] = Field(
|
|
33
|
-
default=None, validation_alias="urlBlackList", serialization_alias="urlBlackList"
|
|
34
|
-
)
|
|
35
|
-
block_page_action: BlockPageAction = Field(
|
|
36
|
-
validation_alias="blockPageAction", serialization_alias="blockPageAction"
|
|
37
|
-
)
|
|
38
|
-
block_page_contents: str = Field(
|
|
39
|
-
default=BLOCK_PAGE_CONTENT_HEADER, validation_alias="blockPageContents", serialization_alias="blockPageContents"
|
|
40
|
-
)
|
|
41
|
-
logging: List[str] = Field(default_factory=list)
|
|
42
|
-
enable_alerts: bool = Field(validation_alias="enableAlerts", serialization_alias="enableAlerts")
|
|
43
|
-
alerts: Set[UrlFilteringAlerts] = Field(
|
|
44
|
-
default_factory=set, validation_alias="alerts", serialization_alias="alerts"
|
|
45
|
-
)
|
|
46
|
-
target_vpns: List[VpnId] = Field(
|
|
47
|
-
default_factory=list, validation_alias="targetVpns", serialization_alias="targetVpns"
|
|
48
|
-
)
|
|
49
|
-
|
|
50
|
-
@field_validator("url_black_list", "url_white_list", mode="before")
|
|
51
|
-
@classmethod
|
|
52
|
-
def convert_empty_dict_to_none(cls, value):
|
|
53
|
-
if not value:
|
|
54
|
-
return None
|
|
55
|
-
|
|
56
|
-
return value
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
class UrlFilteringPolicy(PolicyDefinitionBase):
|
|
60
|
-
type: Literal["urlFiltering"] = "urlFiltering"
|
|
61
|
-
mode: PolicyModeType = "security"
|
|
62
|
-
definition: UrlFilteringDefinition
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
class UrlFilteringPolicyEditPayload(UrlFilteringPolicy, PolicyDefinitionId):
|
|
66
|
-
pass
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
class UrlFilteringPolicyGetResponse(UrlFilteringPolicy, PolicyDefinitionGetResponse):
|
|
70
|
-
pass
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
# Copyright 2024 Cisco Systems, Inc. and its affiliates
|
|
2
|
-
|
|
3
|
-
from typing import List, Literal, Optional
|
|
4
|
-
from uuid import UUID
|
|
5
|
-
|
|
6
|
-
from pydantic import BaseModel, ConfigDict, Field
|
|
7
|
-
|
|
8
|
-
from catalystwan.models.common import IntStr
|
|
9
|
-
from catalystwan.models.policy.policy_definition import (
|
|
10
|
-
PolicyDefinitionBase,
|
|
11
|
-
PolicyDefinitionGetResponse,
|
|
12
|
-
PolicyDefinitionId,
|
|
13
|
-
)
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class VPNQoSScheduler(BaseModel):
|
|
17
|
-
model_config = ConfigDict(populate_by_name=True)
|
|
18
|
-
child_map_ref: UUID = Field(validation_alias="childMapRef", serialization_alias="childMapRef")
|
|
19
|
-
vpn_list_ref: Optional[UUID] = Field(default=None, validation_alias="vpnListRef", serialization_alias="vpnListRef")
|
|
20
|
-
bandwidth_rate: Optional[IntStr] = Field(
|
|
21
|
-
default=None, validation_alias="bandwidthRate", serialization_alias="bandwidthRate", ge=8, le=100_000_000
|
|
22
|
-
)
|
|
23
|
-
shaping_rate: Optional[IntStr] = Field(
|
|
24
|
-
default=None, validation_alias="shapingRate", serialization_alias="shapingRate", ge=8, le=100_000_000
|
|
25
|
-
)
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
class VPNQoSMapPolicyDefinition(BaseModel):
|
|
29
|
-
model_config = ConfigDict(populate_by_name=True)
|
|
30
|
-
vpn_qos_schedulers: List[VPNQoSScheduler] = Field(
|
|
31
|
-
validation_alias="vpnQosSchedulers", serialization_alias="vpnQosSchedulers"
|
|
32
|
-
)
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
class VPNQoSMapPolicy(PolicyDefinitionBase):
|
|
36
|
-
model_config = ConfigDict(populate_by_name=True)
|
|
37
|
-
type: Literal["vpnQosMap", "vpnQoSMap"] = "vpnQosMap"
|
|
38
|
-
definition: VPNQoSMapPolicyDefinition
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
class VPNQoSMapPolicyEditPayload(VPNQoSMapPolicy, PolicyDefinitionId):
|
|
42
|
-
pass
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
class VPNQoSMapPolicyGetResponse(VPNQoSMapPolicy, PolicyDefinitionGetResponse):
|
|
46
|
-
pass
|
|
@@ -1,44 +0,0 @@
|
|
|
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
|
|
@@ -1,42 +0,0 @@
|
|
|
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
|
|
@@ -1,30 +0,0 @@
|
|
|
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
|
|
@@ -1,30 +0,0 @@
|
|
|
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
|
|
@@ -1,28 +0,0 @@
|
|
|
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
|
|
@@ -1,83 +0,0 @@
|
|
|
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
|
|
@@ -1,30 +0,0 @@
|
|
|
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
|
|
@@ -1,30 +0,0 @@
|
|
|
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
|
|
@@ -1,45 +0,0 @@
|
|
|
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
|
|
@@ -1,24 +0,0 @@
|
|
|
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
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# Copyright 2022 Cisco Systems, Inc. and its affiliates
|
|
2
|
-
|
|
3
|
-
from typing import List, Literal, Optional
|
|
4
|
-
|
|
5
|
-
from pydantic import BaseModel, Field, model_validator
|
|
6
|
-
|
|
7
|
-
from catalystwan.models.common import check_fields_exclusive
|
|
8
|
-
from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class GeoLocationListEntry(BaseModel):
|
|
12
|
-
country: Optional[str] = Field(default=None, description="ISO-3166 alpha-3 country code eg: FRA")
|
|
13
|
-
continent: Optional[str] = Field(
|
|
14
|
-
default=None, description="One of 2-letter continent codes: AF, NA, OC, AN, AS, EU, SA"
|
|
15
|
-
)
|
|
16
|
-
|
|
17
|
-
@model_validator(mode="after")
|
|
18
|
-
def check_country_xor_continent(self):
|
|
19
|
-
check_fields_exclusive(self.__dict__, {"country", "continent"}, True)
|
|
20
|
-
return self
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
class GeoLocationList(PolicyListBase):
|
|
24
|
-
type: Literal["geoLocation"] = "geoLocation"
|
|
25
|
-
entries: List[GeoLocationListEntry] = []
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
class GeoLocationListEditPayload(GeoLocationList, PolicyListId):
|
|
29
|
-
pass
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
class GeoLocationListInfo(GeoLocationList, PolicyListInfo):
|
|
33
|
-
pass
|
|
@@ -1,29 +0,0 @@
|
|
|
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 IdentityListEntry(BaseModel):
|
|
11
|
-
model_config = ConfigDict(populate_by_name=True)
|
|
12
|
-
user: str
|
|
13
|
-
user_group: str = Field(validation_alias="userGroup", serialization_alias="userGroup")
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class IdentityList(PolicyListBase):
|
|
17
|
-
type: Literal["identity"] = "identity"
|
|
18
|
-
entries: List[IdentityListEntry] = Field(default_factory=list)
|
|
19
|
-
|
|
20
|
-
def add_entry(self, user: str, user_group: str) -> None:
|
|
21
|
-
self._add_entry(IdentityListEntry(user=user, user_group=user_group))
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
class IdentityListEditPayload(IdentityList, PolicyListId):
|
|
25
|
-
pass
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
class IdentityListInfo(IdentityList, PolicyListInfo):
|
|
29
|
-
pass
|
|
@@ -1,27 +0,0 @@
|
|
|
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 IPSSignatureListEntry(BaseModel):
|
|
11
|
-
model_config = ConfigDict(populate_by_name=True)
|
|
12
|
-
|
|
13
|
-
generator_id: str = Field(serialization_alias="generatorId", validation_alias="generatorId")
|
|
14
|
-
signature_id: str = Field(serialization_alias="signatureId", validation_alias="signatureId")
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class IPSSignatureList(PolicyListBase):
|
|
18
|
-
type: Literal["ipsSignature"] = "ipsSignature"
|
|
19
|
-
entries: List[IPSSignatureListEntry] = []
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
class IPSSignatureListEditPayload(IPSSignatureList, PolicyListId):
|
|
23
|
-
pass
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
class IPSSignatureListInfo(IPSSignatureList, PolicyListInfo):
|
|
27
|
-
pass
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# Copyright 2022 Cisco Systems, Inc. and its affiliates
|
|
2
|
-
|
|
3
|
-
from ipaddress import IPv6Interface
|
|
4
|
-
from typing import List, Literal, Optional
|
|
5
|
-
|
|
6
|
-
from pydantic import BaseModel, ConfigDict, Field
|
|
7
|
-
|
|
8
|
-
from catalystwan.models.common import IntStr
|
|
9
|
-
from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class IPv6PrefixListEntry(BaseModel):
|
|
13
|
-
model_config = ConfigDict(populate_by_name=True)
|
|
14
|
-
|
|
15
|
-
ipv6_prefix: IPv6Interface = Field(serialization_alias="ipv6Prefix", validation_alias="ipv6Prefix")
|
|
16
|
-
ge: Optional[IntStr] = Field(default=None, ge=0, le=128)
|
|
17
|
-
le: Optional[IntStr] = Field(default=None, ge=0, le=128)
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
class IPv6PrefixList(PolicyListBase):
|
|
21
|
-
type: Literal["ipv6prefix"] = "ipv6prefix"
|
|
22
|
-
entries: List[IPv6PrefixListEntry] = []
|
|
23
|
-
|
|
24
|
-
def add_prefix(self, prefix: IPv6Interface, ge: Optional[int] = None, le: Optional[int] = None) -> None:
|
|
25
|
-
self._add_entry(IPv6PrefixListEntry(ipv6_prefix=prefix, ge=ge, le=le))
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
class IPv6PrefixListEditPayload(IPv6PrefixList, PolicyListId):
|
|
29
|
-
pass
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
class IPv6PrefixListInfo(IPv6PrefixList, PolicyListInfo):
|
|
33
|
-
pass
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
# Copyright 2022 Cisco Systems, Inc. and its affiliates
|
|
2
|
-
|
|
3
|
-
from typing import List, Literal, Optional
|
|
4
|
-
|
|
5
|
-
from pydantic import BaseModel, ConfigDict, Field, model_validator
|
|
6
|
-
|
|
7
|
-
from catalystwan.models.common import check_fields_exclusive
|
|
8
|
-
from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class LocalAppListEntry(BaseModel):
|
|
12
|
-
model_config = ConfigDict(populate_by_name=True)
|
|
13
|
-
|
|
14
|
-
app_family: Optional[str] = Field(default=None, serialization_alias="appFamily", validation_alias="appFamily")
|
|
15
|
-
app: Optional[str] = None
|
|
16
|
-
|
|
17
|
-
@model_validator(mode="after")
|
|
18
|
-
def check_app_xor_appfamily(self):
|
|
19
|
-
check_fields_exclusive(self.__dict__, {"app", "app_family"}, True)
|
|
20
|
-
return self
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
class LocalAppList(PolicyListBase):
|
|
24
|
-
type: Literal["localApp"] = "localApp"
|
|
25
|
-
entries: List[LocalAppListEntry] = []
|
|
26
|
-
|
|
27
|
-
def add_app(self, app: str) -> None:
|
|
28
|
-
self._add_entry(LocalAppListEntry(app=app))
|
|
29
|
-
|
|
30
|
-
def add_app_family(self, app_family: str) -> None:
|
|
31
|
-
self._add_entry(LocalAppListEntry(app_family=app_family))
|
|
32
|
-
|
|
33
|
-
def list_all_app(self) -> List[str]:
|
|
34
|
-
return [e.app for e in self.entries if e.app is not None]
|
|
35
|
-
|
|
36
|
-
def list_all_app_family(self) -> List[str]:
|
|
37
|
-
return [e.app_family for e in self.entries if e.app_family is not None]
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
class LocalAppListEditPayload(LocalAppList, PolicyListId):
|
|
41
|
-
pass
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
class LocalAppListInfo(LocalAppList, PolicyListInfo):
|
|
45
|
-
pass
|