catalystwan 0.41.2__py3-none-any.whl → 0.41.2.dev1__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 +57 -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.dev1.dist-info}/METADATA +20 -1
- catalystwan-0.41.2.dev1.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.dev1.dist-info}/LICENSE +0 -0
- {catalystwan-0.41.2.dist-info → catalystwan-0.41.2.dev1.dist-info}/WHEEL +0 -0
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
# mypy: disable-error-code="empty-body"
|
|
4
4
|
from datetime import datetime
|
|
5
|
-
from typing import List, Optional
|
|
5
|
+
from typing import Any, List, Optional, Union
|
|
6
|
+
from uuid import UUID
|
|
6
7
|
|
|
7
8
|
from pydantic import BaseModel, ConfigDict, Field
|
|
8
9
|
|
|
@@ -13,7 +14,7 @@ from catalystwan.typed_list import DataSequence
|
|
|
13
14
|
|
|
14
15
|
|
|
15
16
|
class ProfileId(BaseModel):
|
|
16
|
-
id:
|
|
17
|
+
id: UUID
|
|
17
18
|
|
|
18
19
|
|
|
19
20
|
# TODO Get mode from schema
|
|
@@ -38,10 +39,29 @@ class FeatureProfile(BaseModel):
|
|
|
38
39
|
|
|
39
40
|
|
|
40
41
|
class ConfigGroup(BaseModel):
|
|
42
|
+
model_config = ConfigDict(populate_by_name=True)
|
|
43
|
+
id: UUID
|
|
41
44
|
name: str
|
|
42
45
|
description: Optional[str]
|
|
43
46
|
solution: Solution
|
|
44
47
|
profiles: Optional[List[FeatureProfile]]
|
|
48
|
+
source: Optional[str] = None
|
|
49
|
+
state: Optional[str] = None
|
|
50
|
+
devices: Optional[List] = Field(default=[])
|
|
51
|
+
created_by: Optional[str] = Field(serialization_alias="createdBy", validation_alias="createdBy")
|
|
52
|
+
last_updated_by: Optional[str] = Field(serialization_alias="lastUpdatedBy", validation_alias="lastUpdatedBy")
|
|
53
|
+
created_on: Optional[datetime] = Field(serialization_alias="createdOn", validation_alias="createdOn")
|
|
54
|
+
last_updated_on: Optional[datetime] = Field(serialization_alias="lastUpdatedOn", validation_alias="lastUpdatedOn")
|
|
55
|
+
version: int
|
|
56
|
+
number_of_devices: int = Field(serialization_alias="numberOfDevices", validation_alias="numberOfDevices")
|
|
57
|
+
number_of_devices_up_to_date: int = Field(
|
|
58
|
+
serialization_alias="numberOfDevicesUpToDate", validation_alias="numberOfDevicesUpToDate"
|
|
59
|
+
)
|
|
60
|
+
origin: Optional[str] = None
|
|
61
|
+
topology: Any = None
|
|
62
|
+
full_config_cli: Optional[bool] = Field(
|
|
63
|
+
default=None, serialization_alias="fullConfigCli", validation_alias="fullConfigCli"
|
|
64
|
+
)
|
|
45
65
|
|
|
46
66
|
|
|
47
67
|
class ConfigGroupResponsePayload(BaseModel):
|
|
@@ -68,9 +88,12 @@ class ConfigGroupVariablesCreatePayload(BaseModel):
|
|
|
68
88
|
suggestions: bool = True
|
|
69
89
|
|
|
70
90
|
|
|
91
|
+
VariableType = Union[str, int, bool, List[Union[str, int, bool]]]
|
|
92
|
+
|
|
93
|
+
|
|
71
94
|
class VariableData(BaseModel):
|
|
72
95
|
name: str
|
|
73
|
-
value:
|
|
96
|
+
value: Optional[VariableType] = None
|
|
74
97
|
|
|
75
98
|
|
|
76
99
|
class DeviceVariables(BaseModel):
|
|
@@ -111,7 +134,7 @@ class ConfigGroupDisassociateResponse(BaseModel):
|
|
|
111
134
|
|
|
112
135
|
|
|
113
136
|
class ConfigGroupCreationResponse(BaseModel):
|
|
114
|
-
id:
|
|
137
|
+
id: UUID
|
|
115
138
|
|
|
116
139
|
|
|
117
140
|
class EditedProfileId(BaseModel):
|
|
@@ -143,7 +166,7 @@ class ConfigurationGroup(APIEndpoints):
|
|
|
143
166
|
|
|
144
167
|
@versions(supported_versions=(">=20.9"), raises=False)
|
|
145
168
|
@delete("/v1/config-group/{config_group_id}")
|
|
146
|
-
def delete_config_group(self, config_group_id:
|
|
169
|
+
def delete_config_group(self, config_group_id: UUID) -> None:
|
|
147
170
|
...
|
|
148
171
|
|
|
149
172
|
@versions(supported_versions=(">=20.9"), raises=False)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright
|
|
1
|
+
# Copyright 2024 Cisco Systems, Inc. and its affiliates
|
|
2
2
|
|
|
3
3
|
# mypy: disable-error-code="empty-body"
|
|
4
4
|
import datetime
|
|
@@ -7,6 +7,7 @@ from typing import List, Literal, Optional, Union
|
|
|
7
7
|
from pydantic import BaseModel, ConfigDict, Field, IPvAnyAddress, field_validator
|
|
8
8
|
|
|
9
9
|
from catalystwan.endpoints import JSON, APIEndpoints, get, post, put, view
|
|
10
|
+
from catalystwan.models.settings import ThreatGridApi
|
|
10
11
|
from catalystwan.typed_list import DataSequence
|
|
11
12
|
from catalystwan.utils.session_type import ProviderView, SingleTenantView
|
|
12
13
|
|
|
@@ -60,6 +61,18 @@ class Certificate(BaseModel):
|
|
|
60
61
|
email: Optional[str] = Field(default=None)
|
|
61
62
|
|
|
62
63
|
|
|
64
|
+
class EnterpriseRootCA(BaseModel):
|
|
65
|
+
model_config = ConfigDict(populate_by_name=True)
|
|
66
|
+
enterprise_root_ca: Optional[str] = Field(
|
|
67
|
+
default=None,
|
|
68
|
+
serialization_alias="enterpriseRootCA",
|
|
69
|
+
validation_alias="enterpriseRootCA"
|
|
70
|
+
)
|
|
71
|
+
control_connection_up: Optional[bool] = Field(
|
|
72
|
+
default=False, serialization_alias="controlConnectionUp", validation_alias="controlConnectionUp"
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
|
|
63
76
|
class VEdgeCloud(BaseModel):
|
|
64
77
|
certificateauthority: Optional[str] = None
|
|
65
78
|
|
|
@@ -339,6 +352,52 @@ class CRLSettings(BaseModel):
|
|
|
339
352
|
return vpn_str
|
|
340
353
|
|
|
341
354
|
|
|
355
|
+
class CloudCredentials(BaseModel):
|
|
356
|
+
model_config = ConfigDict(populate_by_name=True)
|
|
357
|
+
|
|
358
|
+
umbrella_org_id: Optional[str] = Field(
|
|
359
|
+
default=None, validation_alias="umbrellaOrgId", serialization_alias="umbrellaOrgId"
|
|
360
|
+
)
|
|
361
|
+
umbrella_sig_auth_key: Optional[str] = Field(
|
|
362
|
+
default=None, validation_alias="umbrellaSIGAuthKey", serialization_alias="umbrellaSIGAuthKey"
|
|
363
|
+
)
|
|
364
|
+
umbrella_sig_auth_secret: Optional[str] = Field(
|
|
365
|
+
default=None, validation_alias="umbrellaSIGAuthSecret", serialization_alias="umbrellaSIGAuthSecret"
|
|
366
|
+
)
|
|
367
|
+
umbrella_dns_auth_key: Optional[str] = Field(
|
|
368
|
+
default=None, validation_alias="umbrellaDNSAuthKey", serialization_alias="umbrellaDNSAuthKey"
|
|
369
|
+
)
|
|
370
|
+
umbrella_dns_auth_secret: Optional[str] = Field(
|
|
371
|
+
default=None, validation_alias="umbrellaDNSAuthSecret", serialization_alias="umbrellaDNSAuthSecret"
|
|
372
|
+
)
|
|
373
|
+
|
|
374
|
+
zscaler_organization: Optional[str] = Field(
|
|
375
|
+
default=None, validation_alias="zscalerOrganization", serialization_alias="zscalerOrganization"
|
|
376
|
+
)
|
|
377
|
+
zscaler_partner_base_uri: Optional[str] = Field(
|
|
378
|
+
default=None, validation_alias="zscalerPartnerBaseUri", serialization_alias="zscalerPartnerBaseUri"
|
|
379
|
+
)
|
|
380
|
+
zscaler_partner_key: Optional[str] = Field(
|
|
381
|
+
default=None, validation_alias="zscalerPartnerKey", serialization_alias="zscalerPartnerKey"
|
|
382
|
+
)
|
|
383
|
+
zscaler_username: Optional[str] = Field(
|
|
384
|
+
default=None, validation_alias="zscalerUsername", serialization_alias="zscalerUsername"
|
|
385
|
+
)
|
|
386
|
+
zscaler_password: Optional[str] = Field(
|
|
387
|
+
default=None, validation_alias="zscalerPassword", serialization_alias="zscalerPassword"
|
|
388
|
+
)
|
|
389
|
+
|
|
390
|
+
cisco_sse_org_id: Optional[str] = Field(
|
|
391
|
+
default=None, validation_alias="ciscoSSEOrgId", serialization_alias="ciscoSSEOrgId"
|
|
392
|
+
)
|
|
393
|
+
cisco_sse_auth_key: Optional[str] = Field(
|
|
394
|
+
default=None, validation_alias="ciscoSSEAuthKey", serialization_alias="ciscoSSEAuthKey"
|
|
395
|
+
)
|
|
396
|
+
cisco_sse_auth_secret: Optional[str] = Field(
|
|
397
|
+
default=None, validation_alias="ciscoSSEAuthSecret", serialization_alias="ciscoSSEAuthSecret"
|
|
398
|
+
)
|
|
399
|
+
|
|
400
|
+
|
|
342
401
|
class ConfigurationSettings(APIEndpoints):
|
|
343
402
|
def create_analytics_data_file(self):
|
|
344
403
|
# POST /settings/configuration/analytics/dca
|
|
@@ -383,6 +442,11 @@ class ConfigurationSettings(APIEndpoints):
|
|
|
383
442
|
def get_certificates(self) -> DataSequence[Certificate]:
|
|
384
443
|
...
|
|
385
444
|
|
|
445
|
+
@view({SingleTenantView, ProviderView})
|
|
446
|
+
@get("/settings/configuration/certificate/enterpriserootca", "data")
|
|
447
|
+
def get_enterprise_root_ca(self) -> DataSequence[EnterpriseRootCA]:
|
|
448
|
+
...
|
|
449
|
+
|
|
386
450
|
@view({SingleTenantView, ProviderView})
|
|
387
451
|
@get("/settings/configuration/vedgecloud", "data")
|
|
388
452
|
def get_vedge_cloud(self) -> DataSequence[VEdgeCloud]:
|
|
@@ -506,6 +570,10 @@ class ConfigurationSettings(APIEndpoints):
|
|
|
506
570
|
def get_smart_licensing_settings(self) -> DataSequence[SmartLicensingSetting]:
|
|
507
571
|
...
|
|
508
572
|
|
|
573
|
+
@get("/settings/configuration/cloudProviderSetting", "data")
|
|
574
|
+
def get_cloud_credentials(self) -> DataSequence[CloudCredentials]:
|
|
575
|
+
...
|
|
576
|
+
|
|
509
577
|
def new_cert_configuration(self):
|
|
510
578
|
# POST /settings/configuration/certificate/{settingType}
|
|
511
579
|
...
|
|
@@ -543,6 +611,11 @@ class ConfigurationSettings(APIEndpoints):
|
|
|
543
611
|
def edit_certificates(self, payload: Certificate) -> DataSequence[Certificate]:
|
|
544
612
|
...
|
|
545
613
|
|
|
614
|
+
@view({SingleTenantView, ProviderView})
|
|
615
|
+
@put("/settings/configuration/certificate/enterpriserootca", "data")
|
|
616
|
+
def edit_enterprise_root_ca(self, payload: EnterpriseRootCA) -> DataSequence[EnterpriseRootCA]:
|
|
617
|
+
...
|
|
618
|
+
|
|
546
619
|
@view({SingleTenantView, ProviderView})
|
|
547
620
|
@put("/settings/configuration/vedgecloud", "data")
|
|
548
621
|
def edit_vedge_cloud(self, payload: VEdgeCloud) -> DataSequence[VEdgeCloud]:
|
|
@@ -662,3 +735,19 @@ class ConfigurationSettings(APIEndpoints):
|
|
|
662
735
|
@put("/settings/configuration/smartLicensing", "data")
|
|
663
736
|
def edit_smart_licensing_settings(self, payload: SmartLicensingSetting) -> DataSequence[SmartLicensingSetting]:
|
|
664
737
|
...
|
|
738
|
+
|
|
739
|
+
@put("/settings/configuration/cloudProviderSetting", "data")
|
|
740
|
+
def edit_cloud_credentials(self, payload: CloudCredentials) -> DataSequence[CloudCredentials]:
|
|
741
|
+
...
|
|
742
|
+
|
|
743
|
+
@post("/settings/configuration/cloudProviderSetting", "data")
|
|
744
|
+
def create_cloud_credentials(self, payload: CloudCredentials) -> DataSequence[CloudCredentials]:
|
|
745
|
+
...
|
|
746
|
+
|
|
747
|
+
@put("/settings/configuration/threatGridApiKey")
|
|
748
|
+
def edit_threat_grid_api_key(self, payload: ThreatGridApi) -> ThreatGridApi:
|
|
749
|
+
...
|
|
750
|
+
|
|
751
|
+
@post("/settings/configuration/threatGridApiKey")
|
|
752
|
+
def create_threat_grid_api_key(self, payload: ThreatGridApi) -> ThreatGridApi:
|
|
753
|
+
...
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Copyright 2023 Cisco Systems, Inc. and its affiliates
|
|
2
|
+
|
|
3
|
+
# mypy: disable-error-code="empty-body"
|
|
4
|
+
|
|
5
|
+
from typing import List, Optional
|
|
6
|
+
from uuid import UUID
|
|
7
|
+
|
|
8
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
9
|
+
|
|
10
|
+
from catalystwan.endpoints import JSON, APIEndpoints, get, post, put
|
|
11
|
+
from catalystwan.models.templates import DeviceTemplateInformation, FeatureType
|
|
12
|
+
from catalystwan.typed_list import DataSequence
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class TemplateID(BaseModel):
|
|
16
|
+
model_config = ConfigDict(populate_by_name=True)
|
|
17
|
+
|
|
18
|
+
template_id: UUID = Field(serialization_alias="templateId", validation_alias="templateId")
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class AttachedDevices(BaseModel):
|
|
22
|
+
model_config = ConfigDict(populate_by_name=True)
|
|
23
|
+
|
|
24
|
+
attached_devices: Optional[List] = Field(
|
|
25
|
+
default=[], serialization_alias="AttachedDevices", validation_alias="AttachedDevices"
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class FeatureQueryParams(BaseModel):
|
|
30
|
+
model_config = ConfigDict(populate_by_name=True)
|
|
31
|
+
|
|
32
|
+
feature: FeatureType = Field(default="all")
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class ConfigurationTemplateMaster(APIEndpoints):
|
|
36
|
+
@get("/template/device", "data")
|
|
37
|
+
def get_device_template_list(
|
|
38
|
+
self, params: FeatureQueryParams = FeatureQueryParams()
|
|
39
|
+
) -> DataSequence[DeviceTemplateInformation]:
|
|
40
|
+
...
|
|
41
|
+
|
|
42
|
+
@post("/template/device/feature")
|
|
43
|
+
def create_device_template_from_feature_templates(self, payload: JSON) -> TemplateID:
|
|
44
|
+
...
|
|
45
|
+
|
|
46
|
+
@put("/template/device/{template_id}", "data")
|
|
47
|
+
def edit_template(self, template_id: str, payload: JSON) -> AttachedDevices:
|
|
48
|
+
...
|
|
@@ -11,12 +11,21 @@ from catalystwan.endpoints.client import Client
|
|
|
11
11
|
from catalystwan.endpoints.cluster_management import ClusterManagement
|
|
12
12
|
from catalystwan.endpoints.configuration.device.software_update import ConfigurationDeviceSoftwareUpdate
|
|
13
13
|
from catalystwan.endpoints.configuration.disaster_recovery import ConfigurationDisasterRecovery
|
|
14
|
+
from catalystwan.endpoints.configuration.feature_profile.sdwan.cli import CliFeatureProfile
|
|
15
|
+
from catalystwan.endpoints.configuration.feature_profile.sdwan.embedded_security import EmbeddedSecurityFeatureProfile
|
|
16
|
+
from catalystwan.endpoints.configuration.feature_profile.sdwan.policy_object import PolicyObjectFeatureProfile
|
|
17
|
+
from catalystwan.endpoints.configuration.feature_profile.sdwan.sig_security import SIGSecurity
|
|
14
18
|
from catalystwan.endpoints.configuration.feature_profile.sdwan.system import SystemFeatureProfile
|
|
19
|
+
from catalystwan.endpoints.configuration.feature_profile.sdwan.topology import TopologyFeatureProfile
|
|
15
20
|
from catalystwan.endpoints.configuration.feature_profile.sdwan.transport import TransportFeatureProfile
|
|
21
|
+
from catalystwan.endpoints.configuration.network_hierarchy import NetworkHierarchy
|
|
16
22
|
from catalystwan.endpoints.configuration.policy.definition.access_control_list import ConfigurationPolicyAclDefinition
|
|
17
23
|
from catalystwan.endpoints.configuration.policy.definition.access_control_list_ipv6 import (
|
|
18
24
|
ConfigurationPolicyAclIPv6Definition,
|
|
19
25
|
)
|
|
26
|
+
from catalystwan.endpoints.configuration.policy.definition.aip import ConfigurationPolicyAIPDefinition
|
|
27
|
+
from catalystwan.endpoints.configuration.policy.definition.amp import ConfigurationPolicyAMPDefinition
|
|
28
|
+
from catalystwan.endpoints.configuration.policy.definition.app_route import ConfigurationPolicyAppRouteDefinition
|
|
20
29
|
from catalystwan.endpoints.configuration.policy.definition.control import ConfigurationPolicyControlDefinition
|
|
21
30
|
from catalystwan.endpoints.configuration.policy.definition.device_access import (
|
|
22
31
|
ConfigurationPolicyDeviceAccessDefinition,
|
|
@@ -24,18 +33,27 @@ from catalystwan.endpoints.configuration.policy.definition.device_access import
|
|
|
24
33
|
from catalystwan.endpoints.configuration.policy.definition.device_access_ipv6 import (
|
|
25
34
|
ConfigurationPolicyDeviceAccessIPv6Definition,
|
|
26
35
|
)
|
|
36
|
+
from catalystwan.endpoints.configuration.policy.definition.dial_peer import ConfigurationPolicyDialPeerDefinition
|
|
37
|
+
from catalystwan.endpoints.configuration.policy.definition.fxo_port import ConfigurationPolicyFxoPortDefinition
|
|
38
|
+
from catalystwan.endpoints.configuration.policy.definition.fxs_did_port import ConfigurationPolicyFxsDidPortDefinition
|
|
39
|
+
from catalystwan.endpoints.configuration.policy.definition.fxs_port import ConfigurationPolicyFxsPortDefinition
|
|
27
40
|
from catalystwan.endpoints.configuration.policy.definition.hub_and_spoke import ConfigurationPolicyHubAndSpokeDefinition
|
|
28
41
|
from catalystwan.endpoints.configuration.policy.definition.mesh import ConfigurationPolicyMeshDefinition
|
|
42
|
+
from catalystwan.endpoints.configuration.policy.definition.pri_isdn_port import ConfigurationPolicyPriIsdnPortDefinition
|
|
29
43
|
from catalystwan.endpoints.configuration.policy.definition.qos_map import ConfigurationPolicyQoSMapDefinition
|
|
30
44
|
from catalystwan.endpoints.configuration.policy.definition.rewrite import ConfigurationPolicyRewriteRuleDefinition
|
|
31
45
|
from catalystwan.endpoints.configuration.policy.definition.rule_set import ConfigurationPolicyRuleSetDefinition
|
|
32
46
|
from catalystwan.endpoints.configuration.policy.definition.security_group import (
|
|
33
47
|
ConfigurationPolicySecurityGroupDefinition,
|
|
34
48
|
)
|
|
49
|
+
from catalystwan.endpoints.configuration.policy.definition.srst_phone_profile import (
|
|
50
|
+
ConfigurationPolicySrstPhoneProfileDefinition,
|
|
51
|
+
)
|
|
35
52
|
from catalystwan.endpoints.configuration.policy.definition.traffic_data import ConfigurationPolicyDataDefinition
|
|
36
53
|
from catalystwan.endpoints.configuration.policy.definition.vpn_membership import (
|
|
37
54
|
ConfigurationPolicyVPNMembershipGroupDefinition,
|
|
38
55
|
)
|
|
56
|
+
from catalystwan.endpoints.configuration.policy.definition.vpn_qos_map import ConfigurationPolicyVPNQoSMapDefinition
|
|
39
57
|
from catalystwan.endpoints.configuration.policy.definition.zone_based_firewall import (
|
|
40
58
|
ConfigurationPolicyZoneBasedFirewallDefinition,
|
|
41
59
|
)
|
|
@@ -48,13 +66,17 @@ from catalystwan.endpoints.configuration.policy.list.community import Configurat
|
|
|
48
66
|
from catalystwan.endpoints.configuration.policy.list.data_ipv6_prefix import ConfigurationPolicyDataIPv6PrefixList
|
|
49
67
|
from catalystwan.endpoints.configuration.policy.list.data_prefix import ConfigurationPolicyDataPrefixList
|
|
50
68
|
from catalystwan.endpoints.configuration.policy.list.expanded_community import ConfigurationPolicyExpandedCommunityList
|
|
69
|
+
from catalystwan.endpoints.configuration.policy.list.extended_community import ConfigurationPolicyExtendedCommunityList
|
|
70
|
+
from catalystwan.endpoints.configuration.policy.list.fax_protocol import ConfigurationPolicyFaxProtocolList
|
|
51
71
|
from catalystwan.endpoints.configuration.policy.list.fqdn import ConfigurationPolicyFQDNList
|
|
52
72
|
from catalystwan.endpoints.configuration.policy.list.geo_location import ConfigurationPolicyGeoLocationList
|
|
53
73
|
from catalystwan.endpoints.configuration.policy.list.ips_signature import ConfigurationPolicyIPSSignatureList
|
|
54
74
|
from catalystwan.endpoints.configuration.policy.list.ipv6_prefix import ConfigurationPolicyIPv6PrefixList
|
|
55
75
|
from catalystwan.endpoints.configuration.policy.list.local_app import ConfigurationPolicyLocalAppList
|
|
56
76
|
from catalystwan.endpoints.configuration.policy.list.local_domain import ConfigurationPolicyLocalDomainList
|
|
77
|
+
from catalystwan.endpoints.configuration.policy.list.media_profile import ConfigurationPolicyMediaProfileList
|
|
57
78
|
from catalystwan.endpoints.configuration.policy.list.mirror import ConfigurationPolicyMirrorList
|
|
79
|
+
from catalystwan.endpoints.configuration.policy.list.modem_pass_through import ConfigurationPolicyModemPassThroughList
|
|
58
80
|
from catalystwan.endpoints.configuration.policy.list.policer import ConfigurationPolicyPolicerClassList
|
|
59
81
|
from catalystwan.endpoints.configuration.policy.list.port import ConfigurationPolicyPortList
|
|
60
82
|
from catalystwan.endpoints.configuration.policy.list.preferred_color_group import ConfigurationPreferredColorGroupList
|
|
@@ -63,15 +85,26 @@ from catalystwan.endpoints.configuration.policy.list.protocol_name import Config
|
|
|
63
85
|
from catalystwan.endpoints.configuration.policy.list.region import ConfigurationPolicyRegionList
|
|
64
86
|
from catalystwan.endpoints.configuration.policy.list.site import ConfigurationPolicySiteList
|
|
65
87
|
from catalystwan.endpoints.configuration.policy.list.sla import ConfigurationPolicySLAClassList
|
|
88
|
+
from catalystwan.endpoints.configuration.policy.list.supervisory_disconnect import (
|
|
89
|
+
ConfigurationPolicySupervisoryDisconnectList,
|
|
90
|
+
)
|
|
66
91
|
from catalystwan.endpoints.configuration.policy.list.tloc import ConfigurationPolicyTLOCList
|
|
92
|
+
from catalystwan.endpoints.configuration.policy.list.translation_profile import (
|
|
93
|
+
ConfigurationPolicyTranslationProfileList,
|
|
94
|
+
)
|
|
95
|
+
from catalystwan.endpoints.configuration.policy.list.translation_rules import ConfigurationPolicyTranslationRulesList
|
|
96
|
+
from catalystwan.endpoints.configuration.policy.list.trunkgroup import ConfigurationPolicyTrunkGroupList
|
|
67
97
|
from catalystwan.endpoints.configuration.policy.list.url_allow_list import ConfigurationPolicyURLAllowList
|
|
68
98
|
from catalystwan.endpoints.configuration.policy.list.url_block_list import ConfigurationPolicyURLBlockList
|
|
69
99
|
from catalystwan.endpoints.configuration.policy.list.vpn import ConfigurationPolicyVPNList
|
|
70
100
|
from catalystwan.endpoints.configuration.policy.list.zone import ConfigurationPolicyZoneList
|
|
71
101
|
from catalystwan.endpoints.configuration.policy.security_template import ConfigurationSecurityTemplatePolicy
|
|
72
102
|
from catalystwan.endpoints.configuration.policy.vedge_template import ConfigurationVEdgeTemplatePolicy
|
|
103
|
+
from catalystwan.endpoints.configuration.policy.voice_template import ConfigurationVoiceTemplatePolicy
|
|
73
104
|
from catalystwan.endpoints.configuration.policy.vsmart_template import ConfigurationVSmartTemplatePolicy
|
|
105
|
+
from catalystwan.endpoints.configuration.policy_group import PolicyGroupEndpoints
|
|
74
106
|
from catalystwan.endpoints.configuration.software_actions import ConfigurationSoftwareActions
|
|
107
|
+
from catalystwan.endpoints.configuration.topology_group import TopologyGroupEndpoints
|
|
75
108
|
from catalystwan.endpoints.configuration_dashboard_status import ConfigurationDashboardStatus
|
|
76
109
|
from catalystwan.endpoints.configuration_device_actions import ConfigurationDeviceActions
|
|
77
110
|
from catalystwan.endpoints.configuration_device_inventory import ConfigurationDeviceInventory
|
|
@@ -80,11 +113,12 @@ from catalystwan.endpoints.configuration_feature_profile import (
|
|
|
80
113
|
ConfigurationFeatureProfile,
|
|
81
114
|
SDRoutingConfigurationFeatureProfile,
|
|
82
115
|
)
|
|
116
|
+
from catalystwan.endpoints.configuration_general_template import ConfigurationGeneralTemplate
|
|
83
117
|
from catalystwan.endpoints.configuration_group import ConfigurationGroup
|
|
84
118
|
from catalystwan.endpoints.configuration_settings import ConfigurationSettings
|
|
119
|
+
from catalystwan.endpoints.configuration_template_master import ConfigurationTemplateMaster
|
|
85
120
|
from catalystwan.endpoints.misc import MiscellaneousEndpoints
|
|
86
121
|
from catalystwan.endpoints.monitoring.device_details import MonitoringDeviceDetails
|
|
87
|
-
from catalystwan.endpoints.monitoring.security_policy import MonitoringSecurityPolicy
|
|
88
122
|
from catalystwan.endpoints.monitoring.server_info import ServerInfo
|
|
89
123
|
from catalystwan.endpoints.monitoring.status import MonitoringStatus
|
|
90
124
|
from catalystwan.endpoints.real_time_monitoring.reboot_history import RealTimeMonitoringRebootHistory
|
|
@@ -93,7 +127,6 @@ from catalystwan.endpoints.tenant_backup_restore import TenantBackupRestore
|
|
|
93
127
|
from catalystwan.endpoints.tenant_management import TenantManagement
|
|
94
128
|
from catalystwan.endpoints.tenant_migration import TenantMigration
|
|
95
129
|
from catalystwan.endpoints.troubleshooting_tools.device_connectivity import TroubleshootingToolsDeviceConnectivity
|
|
96
|
-
from catalystwan.endpoints.url_monitoring import UrlMonitoring
|
|
97
130
|
|
|
98
131
|
if TYPE_CHECKING:
|
|
99
132
|
from catalystwan.session import ManagerSession
|
|
@@ -110,13 +143,17 @@ class ConfigurationPolicyListContainer:
|
|
|
110
143
|
self.data_ipv6_prefix = ConfigurationPolicyDataIPv6PrefixList(session)
|
|
111
144
|
self.data_prefix = ConfigurationPolicyDataPrefixList(session)
|
|
112
145
|
self.expanded_community = ConfigurationPolicyExpandedCommunityList(session)
|
|
146
|
+
self.extended_community = ConfigurationPolicyExtendedCommunityList(session)
|
|
147
|
+
self.fax_protocol = ConfigurationPolicyFaxProtocolList(session)
|
|
113
148
|
self.fqdn = ConfigurationPolicyFQDNList(session)
|
|
114
149
|
self.geo_location = ConfigurationPolicyGeoLocationList(session)
|
|
115
150
|
self.ips_signature = ConfigurationPolicyIPSSignatureList(session)
|
|
116
151
|
self.ipv6_prefix = ConfigurationPolicyIPv6PrefixList(session)
|
|
117
152
|
self.local_app = ConfigurationPolicyLocalAppList(session)
|
|
118
153
|
self.local_domain = ConfigurationPolicyLocalDomainList(session)
|
|
154
|
+
self.media_profile = ConfigurationPolicyMediaProfileList(session)
|
|
119
155
|
self.mirror = ConfigurationPolicyMirrorList(session)
|
|
156
|
+
self.modem_pass_through = ConfigurationPolicyModemPassThroughList(session)
|
|
120
157
|
self.policer = ConfigurationPolicyPolicerClassList(session)
|
|
121
158
|
self.port = ConfigurationPolicyPortList(session)
|
|
122
159
|
self.preferred_color_group = ConfigurationPreferredColorGroupList(session)
|
|
@@ -125,44 +162,63 @@ class ConfigurationPolicyListContainer:
|
|
|
125
162
|
self.region = ConfigurationPolicyRegionList(session)
|
|
126
163
|
self.site = ConfigurationPolicySiteList(session)
|
|
127
164
|
self.sla = ConfigurationPolicySLAClassList(session)
|
|
165
|
+
self.supervisory_disconnect = ConfigurationPolicySupervisoryDisconnectList(session)
|
|
128
166
|
self.tloc = ConfigurationPolicyTLOCList(session)
|
|
129
|
-
self.
|
|
167
|
+
self.translation_profile = ConfigurationPolicyTranslationProfileList(session)
|
|
168
|
+
self.translation_rules = ConfigurationPolicyTranslationRulesList(session)
|
|
169
|
+
self.trunkgroup = ConfigurationPolicyTrunkGroupList(session)
|
|
130
170
|
self.url_allow_list = ConfigurationPolicyURLAllowList(session)
|
|
171
|
+
self.url_block_list = ConfigurationPolicyURLBlockList(session)
|
|
131
172
|
self.vpn = ConfigurationPolicyVPNList(session)
|
|
132
173
|
self.zone = ConfigurationPolicyZoneList(session)
|
|
133
174
|
|
|
134
175
|
|
|
135
176
|
class ConfigurationPolicyDefinitionContainer:
|
|
136
177
|
def __init__(self, session: ManagerSession):
|
|
137
|
-
self.data = ConfigurationPolicyDataDefinition(session)
|
|
138
|
-
self.rule_set = ConfigurationPolicyRuleSetDefinition(session)
|
|
139
|
-
self.security_group = ConfigurationPolicySecurityGroupDefinition(session)
|
|
140
|
-
self.zone_based_firewall = ConfigurationPolicyZoneBasedFirewallDefinition(session)
|
|
141
|
-
self.qos_map = ConfigurationPolicyQoSMapDefinition(session)
|
|
142
|
-
self.rewrite = ConfigurationPolicyRewriteRuleDefinition(session)
|
|
143
|
-
self.control = ConfigurationPolicyControlDefinition(session)
|
|
144
|
-
self.vpn_membership = ConfigurationPolicyVPNMembershipGroupDefinition(session)
|
|
145
|
-
self.hub_and_spoke = ConfigurationPolicyHubAndSpokeDefinition(session)
|
|
146
|
-
self.mesh = ConfigurationPolicyMeshDefinition(session)
|
|
147
178
|
self.acl = ConfigurationPolicyAclDefinition(session)
|
|
148
179
|
self.acl_ipv6 = ConfigurationPolicyAclIPv6Definition(session)
|
|
180
|
+
self.advanced_inspection_profile = ConfigurationPolicyAIPDefinition(session)
|
|
181
|
+
self.advanced_malware_protection = ConfigurationPolicyAMPDefinition(session)
|
|
182
|
+
self.app_route = ConfigurationPolicyAppRouteDefinition(session)
|
|
183
|
+
self.control = ConfigurationPolicyControlDefinition(session)
|
|
184
|
+
self.data = ConfigurationPolicyDataDefinition(session)
|
|
149
185
|
self.device_access = ConfigurationPolicyDeviceAccessDefinition(session)
|
|
150
186
|
self.device_access_ipv6 = ConfigurationPolicyDeviceAccessIPv6Definition(session)
|
|
187
|
+
self.dial_peer = ConfigurationPolicyDialPeerDefinition(session)
|
|
188
|
+
self.fxo_port = ConfigurationPolicyFxoPortDefinition(session)
|
|
189
|
+
self.fxs_port = ConfigurationPolicyFxsPortDefinition(session)
|
|
190
|
+
self.fxs_did_port = ConfigurationPolicyFxsDidPortDefinition(session)
|
|
191
|
+
self.hub_and_spoke = ConfigurationPolicyHubAndSpokeDefinition(session)
|
|
192
|
+
self.mesh = ConfigurationPolicyMeshDefinition(session)
|
|
193
|
+
self.pri_isdn_port = ConfigurationPolicyPriIsdnPortDefinition(session)
|
|
194
|
+
self.qos_map = ConfigurationPolicyQoSMapDefinition(session)
|
|
195
|
+
self.rewrite = ConfigurationPolicyRewriteRuleDefinition(session)
|
|
196
|
+
self.rule_set = ConfigurationPolicyRuleSetDefinition(session)
|
|
197
|
+
self.security_group = ConfigurationPolicySecurityGroupDefinition(session)
|
|
198
|
+
self.srst_phone_profile = ConfigurationPolicySrstPhoneProfileDefinition(session)
|
|
199
|
+
self.vpn_membership = ConfigurationPolicyVPNMembershipGroupDefinition(session)
|
|
200
|
+
self.vpn_qos_map = ConfigurationPolicyVPNQoSMapDefinition(session)
|
|
201
|
+
self.zone_based_firewall = ConfigurationPolicyZoneBasedFirewallDefinition(session)
|
|
151
202
|
|
|
152
203
|
|
|
153
204
|
class ConfigurationPolicyContainer:
|
|
154
205
|
def __init__(self, session: ManagerSession):
|
|
155
|
-
self.list = ConfigurationPolicyListContainer(session)
|
|
156
206
|
self.definition = ConfigurationPolicyDefinitionContainer(session)
|
|
157
|
-
self.
|
|
158
|
-
self.vedge_template = ConfigurationVEdgeTemplatePolicy(session)
|
|
207
|
+
self.list = ConfigurationPolicyListContainer(session)
|
|
159
208
|
self.security_template = ConfigurationSecurityTemplatePolicy(session)
|
|
209
|
+
self.vedge_template = ConfigurationVEdgeTemplatePolicy(session)
|
|
210
|
+
self.voice_template = ConfigurationVoiceTemplatePolicy(session)
|
|
211
|
+
self.vsmart_template = ConfigurationVSmartTemplatePolicy(session)
|
|
160
212
|
|
|
161
213
|
|
|
162
214
|
class ConfigurationSDWANFeatureProfileContainer:
|
|
163
215
|
def __init__(self, session: ManagerSession):
|
|
164
216
|
self.transport = TransportFeatureProfile(client=session)
|
|
165
217
|
self.system = SystemFeatureProfile(client=session)
|
|
218
|
+
self.cli = CliFeatureProfile(client=session)
|
|
219
|
+
self.topology = TopologyFeatureProfile(client=session)
|
|
220
|
+
self.policy = PolicyObjectFeatureProfile(client=session)
|
|
221
|
+
self.embedded_security = EmbeddedSecurityFeatureProfile(client=session)
|
|
166
222
|
|
|
167
223
|
|
|
168
224
|
class ConfigurationFeatureProfileContainer:
|
|
@@ -173,7 +229,9 @@ class ConfigurationFeatureProfileContainer:
|
|
|
173
229
|
class ConfigurationContainer:
|
|
174
230
|
def __init__(self, session: ManagerSession):
|
|
175
231
|
self.policy = ConfigurationPolicyContainer(session)
|
|
176
|
-
self.feature_profile = ConfigurationFeatureProfileContainer(session
|
|
232
|
+
self.feature_profile = ConfigurationFeatureProfileContainer(session)
|
|
233
|
+
self.topology_group = TopologyGroupEndpoints(session)
|
|
234
|
+
self.policy_group = PolicyGroupEndpoints(session)
|
|
177
235
|
|
|
178
236
|
|
|
179
237
|
class TroubleshootingToolsContainer:
|
|
@@ -201,9 +259,9 @@ class APIEndpointContainter:
|
|
|
201
259
|
self.configuration_software_actions = ConfigurationSoftwareActions(session)
|
|
202
260
|
self.configuration_disaster_recovery = ConfigurationDisasterRecovery(session)
|
|
203
261
|
self.monitoring_device_details = MonitoringDeviceDetails(session)
|
|
204
|
-
self.monitoring_security_policy = MonitoringSecurityPolicy(session)
|
|
205
262
|
self.monitoring_server_info = ServerInfo(session)
|
|
206
263
|
self.monitoring_status = MonitoringStatus(session)
|
|
264
|
+
self.network_hierarchy = NetworkHierarchy(session)
|
|
207
265
|
self.sdavc_cloud_connector = SDAVCCloudConnector(session)
|
|
208
266
|
self.tenant_backup_restore = TenantBackupRestore(session)
|
|
209
267
|
self.tenant_management = TenantManagement(session)
|
|
@@ -216,4 +274,6 @@ class APIEndpointContainter:
|
|
|
216
274
|
self.misc = MiscellaneousEndpoints(session)
|
|
217
275
|
self.real_time_monitoring = RealTimeMonitoringContainer(session)
|
|
218
276
|
self.certificate_management_device = CertificateManagementDevice(session)
|
|
219
|
-
self.
|
|
277
|
+
self.sig_security = SIGSecurity(session)
|
|
278
|
+
self.configuration_general_template = ConfigurationGeneralTemplate(session)
|
|
279
|
+
self.configuration_template_master = ConfigurationTemplateMaster(session)
|
|
@@ -15,9 +15,7 @@ class RebootEntry(BaseModel):
|
|
|
15
15
|
reason: Optional[str] = Field(default=None, validation_alias=AliasChoices("reboot_reason", "reload-desc"))
|
|
16
16
|
severity: Optional[str] = Field(default=None, validation_alias="reload-severity", description=">=17.13 only")
|
|
17
17
|
category: Optional[str] = Field(default=None, validation_alias="reload-category", description=">=17.13 only")
|
|
18
|
-
date_time: datetime = Field(
|
|
19
|
-
validation_alias=AliasChoices("reboot_date_time-date", "reboot_date_time", "reload-time-date", "reload-time")
|
|
20
|
-
)
|
|
18
|
+
date_time: datetime = Field(validation_alias=AliasChoices("reboot_date_time-date", "reload-time-date"))
|
|
21
19
|
last_updated: datetime = Field(validation_alias="lastupdated")
|
|
22
20
|
vdevice_name: str = Field(validation_alias="vdevice-name")
|
|
23
21
|
vdevice_host_name: str = Field(validation_alias="vdevice-host-name")
|
|
@@ -19,6 +19,8 @@ class MigrationTokenQueryParams(BaseModel):
|
|
|
19
19
|
@model_validator(mode="before")
|
|
20
20
|
@classmethod
|
|
21
21
|
def single_migration_id_required(cls, values: Any):
|
|
22
|
+
if not isinstance(values, dict):
|
|
23
|
+
return values
|
|
22
24
|
migration_id = values.get("migrationId")
|
|
23
25
|
if isinstance(migration_id, list) and len(migration_id) == 1:
|
|
24
26
|
values["migrationId"] = migration_id[0]
|
catalystwan/exceptions.py
CHANGED
|
@@ -32,6 +32,17 @@ class ManagerHTTPError(HTTPError, ManagerRequestException):
|
|
|
32
32
|
_args = (str(_args[0]) + "\n" + info_str,) + _args[1:]
|
|
33
33
|
super().__init__(*_args, **kwargs)
|
|
34
34
|
|
|
35
|
+
def details(self):
|
|
36
|
+
error_info_str = str(self.info) if self.info else "No error information"
|
|
37
|
+
request_str = (
|
|
38
|
+
f"Request: Method: {self.request.method}, URL: {self.request.url},"
|
|
39
|
+
f"Headers: {self.request.headers}, Body: {self.request.body}"
|
|
40
|
+
)
|
|
41
|
+
response_str = (
|
|
42
|
+
f"Response: {str(self.response.json())}" if self.response else "Response: No response information"
|
|
43
|
+
)
|
|
44
|
+
return f"{error_info_str}\n\n {request_str}\n\n {response_str}"
|
|
45
|
+
|
|
35
46
|
|
|
36
47
|
class DefaultPasswordError(CatalystwanException):
|
|
37
48
|
"""Default password for SDWAN Manager user was detected and needs to be changed."""
|
|
@@ -178,6 +189,12 @@ class ManagerReadyTimeout(CatalystwanException):
|
|
|
178
189
|
pass
|
|
179
190
|
|
|
180
191
|
|
|
192
|
+
class ApiGwAuthTimeout(CatalystwanException):
|
|
193
|
+
"""Raised when waiting for API gateway authentication took longer than expected"""
|
|
194
|
+
|
|
195
|
+
pass
|
|
196
|
+
|
|
197
|
+
|
|
181
198
|
class CatalystwanDeprecationWarning(DeprecationWarning):
|
|
182
199
|
"""Warning issued when using deprecated features or functionality in the Catalystwan SDK.
|
|
183
200
|
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Copyright 2024 Cisco Systems, Inc. and its affiliates
|
|
2
|
+
import logging
|
|
3
|
+
import os
|
|
4
|
+
import unittest
|
|
5
|
+
from typing import Union
|
|
6
|
+
from uuid import UUID, uuid4
|
|
7
|
+
|
|
8
|
+
from packaging.version import Version # type: ignore
|
|
9
|
+
|
|
10
|
+
from catalystwan.api.builders.feature_profiles.uc_voice import UcVoiceFeatureProfileAPI
|
|
11
|
+
from catalystwan.api.feature_profile_api import (
|
|
12
|
+
ApplicationPriorityFeatureProfileAPI,
|
|
13
|
+
CliFeatureProfileAPI,
|
|
14
|
+
DnsSecurityFeatureProfileAPI,
|
|
15
|
+
OtherFeatureProfileAPI,
|
|
16
|
+
ServiceFeatureProfileAPI,
|
|
17
|
+
SIGSecurityAPI,
|
|
18
|
+
SystemFeatureProfileAPI,
|
|
19
|
+
TransportFeatureProfileAPI,
|
|
20
|
+
)
|
|
21
|
+
from catalystwan.exceptions import CatalystwanException
|
|
22
|
+
from catalystwan.session import ManagerSession, create_manager_session
|
|
23
|
+
|
|
24
|
+
logger = logging.getLogger(__name__)
|
|
25
|
+
|
|
26
|
+
RUN_ID: str = str(uuid4())[:4]
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def load_config() -> dict:
|
|
30
|
+
"""Load the configuration from the environment variables"""
|
|
31
|
+
url = os.environ.get("VMANAGE_URL")
|
|
32
|
+
port = os.environ.get("VMANAGE_PORT")
|
|
33
|
+
username = os.environ.get("VMANAGE_USERNAME")
|
|
34
|
+
password = os.environ.get("VMANAGE_PASSWORD")
|
|
35
|
+
if url is None or port is None or username is None or password is None:
|
|
36
|
+
raise CatalystwanException("Missing environment variables")
|
|
37
|
+
return dict(
|
|
38
|
+
url=url,
|
|
39
|
+
username=username,
|
|
40
|
+
password=password,
|
|
41
|
+
port=port,
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def create_session() -> ManagerSession:
|
|
46
|
+
"""Try to create a session with the environment variables, if it fails, raise an exception"""
|
|
47
|
+
try:
|
|
48
|
+
session = create_manager_session(**load_config())
|
|
49
|
+
return session
|
|
50
|
+
except Exception:
|
|
51
|
+
raise CatalystwanException("Failed to create session")
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
SESSION = create_session()
|
|
55
|
+
IS_API_20_12: bool = SESSION.api_version == Version("20.12")
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def create_name_with_run_id(name: str) -> str:
|
|
59
|
+
"""Prevent collisions when running on the same resource"""
|
|
60
|
+
return f"{RUN_ID}_{name}"
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
class TestCaseBase(unittest.TestCase):
|
|
64
|
+
session: ManagerSession
|
|
65
|
+
profile_uuid: UUID
|
|
66
|
+
|
|
67
|
+
api: Union[
|
|
68
|
+
ApplicationPriorityFeatureProfileAPI,
|
|
69
|
+
CliFeatureProfileAPI,
|
|
70
|
+
DnsSecurityFeatureProfileAPI,
|
|
71
|
+
OtherFeatureProfileAPI,
|
|
72
|
+
ServiceFeatureProfileAPI,
|
|
73
|
+
SIGSecurityAPI,
|
|
74
|
+
SystemFeatureProfileAPI,
|
|
75
|
+
TransportFeatureProfileAPI,
|
|
76
|
+
UcVoiceFeatureProfileAPI,
|
|
77
|
+
]
|
|
78
|
+
|
|
79
|
+
@classmethod
|
|
80
|
+
def setUpClass(cls) -> None:
|
|
81
|
+
cls.session = SESSION
|
|
File without changes
|
|
File without changes
|