catalystwan 0.41.2__py3-none-any.whl → 0.41.2.dev0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (504) hide show
  1. catalystwan/__init__.py +3 -2
  2. catalystwan/api/administration.py +13 -2
  3. catalystwan/api/api_container.py +4 -1
  4. catalystwan/api/builders/__init__.py +14 -0
  5. catalystwan/api/builders/feature_profiles/__init__.py +0 -0
  6. catalystwan/api/builders/feature_profiles/application_priority.py +58 -0
  7. catalystwan/api/builders/feature_profiles/builder_factory.py +59 -0
  8. catalystwan/api/builders/feature_profiles/cli.py +76 -0
  9. catalystwan/api/builders/feature_profiles/mixins.py +44 -0
  10. catalystwan/api/builders/feature_profiles/other.py +79 -0
  11. catalystwan/api/builders/feature_profiles/report.py +155 -0
  12. catalystwan/api/builders/feature_profiles/service.py +248 -0
  13. catalystwan/api/builders/feature_profiles/system.py +80 -0
  14. catalystwan/api/builders/feature_profiles/transport.py +256 -0
  15. catalystwan/api/builders/feature_profiles/uc_voice.py +287 -0
  16. catalystwan/api/config_group_api.py +41 -16
  17. catalystwan/api/configuration_groups/parcel.py +100 -30
  18. catalystwan/api/feature_profile_api.py +2021 -242
  19. catalystwan/api/policy_api.py +470 -116
  20. catalystwan/api/template_api.py +113 -44
  21. catalystwan/api/templates/README.md +61 -47
  22. catalystwan/api/templates/cli_template.py +17 -7
  23. catalystwan/api/templates/device_template/device_template.py +127 -32
  24. catalystwan/api/templates/feature_template.py +3 -3
  25. catalystwan/api/templates/models/aaa_model.py +387 -0
  26. catalystwan/api/templates/models/cisco_aaa_model.py +289 -42
  27. catalystwan/api/templates/models/cisco_banner_model.py +11 -2
  28. catalystwan/api/templates/models/cisco_bfd_model.py +31 -36
  29. catalystwan/api/templates/models/cisco_bgp_model.py +382 -131
  30. catalystwan/api/templates/models/cisco_logging_model.py +80 -43
  31. catalystwan/api/templates/models/cisco_ntp_model.py +34 -15
  32. catalystwan/api/templates/models/cisco_omp_model.py +70 -60
  33. catalystwan/api/templates/models/cisco_ospf.py +143 -74
  34. catalystwan/api/templates/models/cisco_ospfv3.py +217 -95
  35. catalystwan/api/templates/models/cisco_secure_internet_gateway.py +304 -142
  36. catalystwan/api/templates/models/cisco_snmp_model.py +66 -52
  37. catalystwan/api/templates/models/cisco_system.py +238 -129
  38. catalystwan/api/templates/models/cisco_vpn_interface_model.py +632 -275
  39. catalystwan/api/templates/models/cisco_vpn_model.py +433 -270
  40. catalystwan/api/templates/models/cli_template.py +3 -2
  41. catalystwan/api/templates/models/omp_vsmart_model.py +46 -10
  42. catalystwan/api/templates/models/security_vsmart_model.py +11 -8
  43. catalystwan/api/templates/models/supported.py +10 -4
  44. catalystwan/api/templates/models/system_vsmart_model.py +164 -27
  45. catalystwan/api/templates/models/vpn_vsmart_interface_model.py +198 -0
  46. catalystwan/api/templates/models/vpn_vsmart_model.py +124 -0
  47. catalystwan/apigw_auth.py +6 -2
  48. catalystwan/dataclasses.py +2 -53
  49. catalystwan/endpoints/__init__.py +41 -41
  50. catalystwan/endpoints/certificate_management_device.py +4 -0
  51. catalystwan/endpoints/cluster_management.py +27 -7
  52. catalystwan/endpoints/configuration/feature_profile/sdwan/application_priority.py +107 -0
  53. catalystwan/endpoints/configuration/feature_profile/sdwan/cli.py +60 -0
  54. catalystwan/endpoints/configuration/feature_profile/sdwan/dns_security.py +83 -0
  55. catalystwan/endpoints/configuration/feature_profile/sdwan/embedded_security.py +88 -0
  56. catalystwan/endpoints/configuration/feature_profile/sdwan/other.py +62 -0
  57. catalystwan/endpoints/configuration/feature_profile/sdwan/policy_object.py +35 -12
  58. catalystwan/endpoints/configuration/feature_profile/sdwan/service.py +154 -0
  59. catalystwan/endpoints/configuration/feature_profile/sdwan/sig_security.py +88 -0
  60. catalystwan/endpoints/configuration/feature_profile/sdwan/system.py +164 -11
  61. catalystwan/endpoints/configuration/feature_profile/sdwan/topology.py +93 -0
  62. catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py +144 -26
  63. catalystwan/endpoints/configuration/feature_profile/sdwan/uc_voice.py +77 -0
  64. catalystwan/endpoints/configuration/network_hierarchy.py +32 -0
  65. catalystwan/endpoints/configuration/policy/abstractions.py +49 -0
  66. catalystwan/endpoints/configuration/policy/definition/access_control_list.py +6 -11
  67. catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py +6 -11
  68. catalystwan/endpoints/configuration/policy/definition/aip.py +52 -0
  69. catalystwan/endpoints/configuration/policy/definition/amp.py +52 -0
  70. catalystwan/endpoints/configuration/policy/definition/app_route.py +50 -0
  71. catalystwan/endpoints/configuration/policy/definition/cflowd.py +46 -0
  72. catalystwan/endpoints/configuration/policy/definition/control.py +6 -11
  73. catalystwan/endpoints/configuration/policy/definition/device_access.py +6 -11
  74. catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py +6 -11
  75. catalystwan/endpoints/configuration/policy/definition/dial_peer.py +57 -0
  76. catalystwan/endpoints/configuration/policy/definition/dns_security.py +50 -0
  77. catalystwan/endpoints/configuration/policy/definition/fxo_port.py +57 -0
  78. catalystwan/endpoints/configuration/policy/definition/fxs_did_port.py +57 -0
  79. catalystwan/endpoints/configuration/policy/definition/fxs_port.py +57 -0
  80. catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py +6 -11
  81. catalystwan/endpoints/configuration/policy/definition/intrusion_prevention.py +52 -0
  82. catalystwan/endpoints/configuration/policy/definition/mesh.py +2 -11
  83. catalystwan/endpoints/configuration/policy/definition/pri_isdn_port.py +57 -0
  84. catalystwan/endpoints/configuration/policy/definition/qos_map.py +2 -11
  85. catalystwan/endpoints/configuration/policy/definition/rewrite.py +6 -11
  86. catalystwan/endpoints/configuration/policy/definition/route_policy.py +50 -0
  87. catalystwan/endpoints/configuration/policy/definition/rule_set.py +2 -11
  88. catalystwan/endpoints/configuration/policy/definition/security_group.py +6 -11
  89. catalystwan/endpoints/configuration/policy/definition/srst_phone_profile.py +59 -0
  90. catalystwan/endpoints/configuration/policy/definition/ssl_decryption.py +50 -0
  91. catalystwan/endpoints/configuration/policy/definition/ssl_decryption_utd_profile.py +52 -0
  92. catalystwan/endpoints/configuration/policy/definition/traffic_data.py +6 -11
  93. catalystwan/endpoints/configuration/policy/definition/url_filtering.py +50 -0
  94. catalystwan/endpoints/configuration/policy/definition/vpn_membership.py +6 -11
  95. catalystwan/endpoints/configuration/policy/definition/vpn_qos_map.py +50 -0
  96. catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py +6 -11
  97. catalystwan/endpoints/configuration/policy/list/app.py +3 -16
  98. catalystwan/endpoints/configuration/policy/list/app_probe.py +6 -15
  99. catalystwan/endpoints/configuration/policy/list/as_path.py +3 -16
  100. catalystwan/endpoints/configuration/policy/list/class_map.py +3 -16
  101. catalystwan/endpoints/configuration/policy/list/color.py +3 -16
  102. catalystwan/endpoints/configuration/policy/list/community.py +3 -16
  103. catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py +6 -15
  104. catalystwan/endpoints/configuration/policy/list/data_prefix.py +3 -16
  105. catalystwan/endpoints/configuration/policy/list/expanded_community.py +6 -15
  106. catalystwan/endpoints/configuration/policy/list/extended_community.py +52 -0
  107. catalystwan/endpoints/configuration/policy/list/fax_protocol.py +48 -0
  108. catalystwan/endpoints/configuration/policy/list/fqdn.py +3 -16
  109. catalystwan/endpoints/configuration/policy/list/geo_location.py +3 -16
  110. catalystwan/endpoints/configuration/policy/list/identity.py +48 -0
  111. catalystwan/endpoints/configuration/policy/list/ips_signature.py +6 -15
  112. catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py +3 -16
  113. catalystwan/endpoints/configuration/policy/list/local_app.py +3 -16
  114. catalystwan/endpoints/configuration/policy/list/local_domain.py +3 -16
  115. catalystwan/endpoints/configuration/policy/list/media_profile.py +52 -0
  116. catalystwan/endpoints/configuration/policy/list/mirror.py +3 -16
  117. catalystwan/endpoints/configuration/policy/list/modem_pass_through.py +52 -0
  118. catalystwan/endpoints/configuration/policy/list/policer.py +3 -16
  119. catalystwan/endpoints/configuration/policy/list/port.py +3 -16
  120. catalystwan/endpoints/configuration/policy/list/preferred_color_group.py +6 -15
  121. catalystwan/endpoints/configuration/policy/list/prefix.py +4 -16
  122. catalystwan/endpoints/configuration/policy/list/protocol_name.py +6 -15
  123. catalystwan/endpoints/configuration/policy/list/region.py +2 -10
  124. catalystwan/endpoints/configuration/policy/list/scalable_group_tag.py +52 -0
  125. catalystwan/endpoints/configuration/policy/list/site.py +3 -16
  126. catalystwan/endpoints/configuration/policy/list/sla.py +3 -16
  127. catalystwan/endpoints/configuration/policy/list/supervisory_disconnect.py +52 -0
  128. catalystwan/endpoints/configuration/policy/list/threat_grid_api_key.py +52 -0
  129. catalystwan/endpoints/configuration/policy/list/tloc.py +3 -16
  130. catalystwan/endpoints/configuration/policy/list/translation_profile.py +52 -0
  131. catalystwan/endpoints/configuration/policy/list/translation_rules.py +52 -0
  132. catalystwan/endpoints/configuration/policy/list/trunkgroup.py +48 -0
  133. catalystwan/endpoints/configuration/policy/list/umbrella_data.py +52 -0
  134. catalystwan/endpoints/configuration/policy/list/url_allow_list.py +3 -16
  135. catalystwan/endpoints/configuration/policy/list/url_block_list.py +3 -16
  136. catalystwan/endpoints/configuration/policy/list/vpn.py +3 -16
  137. catalystwan/endpoints/configuration/policy/list/zone.py +3 -16
  138. catalystwan/endpoints/configuration/policy/security_template.py +2 -3
  139. catalystwan/endpoints/configuration/policy/voice_template.py +39 -0
  140. catalystwan/endpoints/configuration/policy_group.py +30 -0
  141. catalystwan/endpoints/configuration/software_actions.py +2 -4
  142. catalystwan/endpoints/configuration/topology_group.py +51 -0
  143. catalystwan/endpoints/configuration_dashboard_status.py +2 -2
  144. catalystwan/endpoints/configuration_device_template.py +15 -1
  145. catalystwan/endpoints/configuration_feature_profile.py +8 -11
  146. catalystwan/endpoints/configuration_general_template.py +31 -0
  147. catalystwan/endpoints/configuration_group.py +28 -5
  148. catalystwan/endpoints/configuration_settings.py +90 -1
  149. catalystwan/endpoints/configuration_template_master.py +48 -0
  150. catalystwan/endpoints/endpoints_container.py +79 -19
  151. catalystwan/endpoints/real_time_monitoring/reboot_history.py +1 -3
  152. catalystwan/endpoints/tenant_migration.py +2 -0
  153. catalystwan/exceptions.py +17 -0
  154. catalystwan/integration_tests/base.py +81 -0
  155. catalystwan/integration_tests/feature_profile/sdwan/__init__.py +0 -0
  156. catalystwan/integration_tests/feature_profile/sdwan/policy/__init__.py +0 -0
  157. catalystwan/integration_tests/feature_profile/sdwan/policy/base.py +33 -0
  158. catalystwan/integration_tests/feature_profile/sdwan/policy/test_extended_community.py +33 -0
  159. catalystwan/integration_tests/feature_profile/sdwan/policy/test_security_app_list.py +32 -0
  160. catalystwan/integration_tests/feature_profile/sdwan/test_application_priority.py +433 -0
  161. catalystwan/integration_tests/feature_profile/sdwan/test_cli.py +54 -0
  162. catalystwan/integration_tests/feature_profile/sdwan/test_dns_security.py +106 -0
  163. catalystwan/integration_tests/feature_profile/sdwan/test_other.py +49 -0
  164. catalystwan/integration_tests/feature_profile/sdwan/test_service.py +1078 -0
  165. catalystwan/integration_tests/feature_profile/sdwan/test_sig_security.py +322 -0
  166. catalystwan/integration_tests/feature_profile/sdwan/test_ssl_decryption.py +85 -0
  167. catalystwan/integration_tests/feature_profile/sdwan/test_system.py +368 -0
  168. catalystwan/integration_tests/feature_profile/sdwan/test_tracker.py +127 -0
  169. catalystwan/integration_tests/feature_profile/sdwan/test_transport.py +1698 -0
  170. catalystwan/integration_tests/feature_profile/sdwan/topology/test_topology.py +93 -0
  171. catalystwan/integration_tests/profile_builder/__init__.py +0 -0
  172. catalystwan/integration_tests/profile_builder/test_pb_service.py +197 -0
  173. catalystwan/integration_tests/profile_builder/test_pb_transport.py +226 -0
  174. catalystwan/integration_tests/profile_builder/test_pb_uc_voice.py +277 -0
  175. catalystwan/integration_tests/test_data/__init__.py +117 -0
  176. catalystwan/integration_tests/test_find_template_values.py +7 -18
  177. catalystwan/integration_tests/test_network_hierarchy.py +82 -0
  178. catalystwan/integration_tests/test_settings.py +30 -0
  179. catalystwan/models/common.py +1898 -2
  180. catalystwan/models/configuration/common.py +1 -0
  181. catalystwan/models/configuration/feature_profile/common.py +634 -149
  182. catalystwan/models/configuration/feature_profile/parcel.py +238 -0
  183. catalystwan/models/configuration/feature_profile/sdwan/acl/__init__.py +13 -0
  184. catalystwan/models/configuration/feature_profile/sdwan/acl/ipv4acl.py +298 -0
  185. catalystwan/models/configuration/feature_profile/sdwan/acl/ipv6acl.py +344 -0
  186. catalystwan/models/configuration/feature_profile/sdwan/application_priority/__init__.py +218 -0
  187. catalystwan/models/configuration/feature_profile/sdwan/application_priority/cloud_probe.py +61 -0
  188. catalystwan/models/configuration/feature_profile/sdwan/application_priority/policy_settings.py +31 -0
  189. catalystwan/models/configuration/feature_profile/sdwan/application_priority/qos_policy.py +102 -0
  190. catalystwan/models/configuration/feature_profile/sdwan/application_priority/traffic_policy.py +1057 -0
  191. catalystwan/models/configuration/feature_profile/sdwan/cli/__init__.py +23 -0
  192. catalystwan/models/configuration/feature_profile/sdwan/cli/config.py +18 -0
  193. catalystwan/models/configuration/feature_profile/sdwan/cli/full_config.py +15 -0
  194. catalystwan/models/configuration/feature_profile/sdwan/dns_security/__init__.py +13 -0
  195. catalystwan/models/configuration/feature_profile/sdwan/dns_security/dns.py +110 -0
  196. catalystwan/models/configuration/feature_profile/sdwan/embedded_security/__init__.py +23 -0
  197. catalystwan/models/configuration/feature_profile/sdwan/embedded_security/ngfirewall.py +493 -0
  198. catalystwan/models/configuration/feature_profile/sdwan/embedded_security/policy.py +171 -0
  199. catalystwan/models/configuration/feature_profile/sdwan/other/__init__.py +25 -0
  200. catalystwan/models/configuration/feature_profile/sdwan/other/cybervision.py +44 -0
  201. catalystwan/models/configuration/feature_profile/sdwan/other/thousandeyes.py +147 -0
  202. catalystwan/models/configuration/feature_profile/sdwan/other/ucse.py +110 -0
  203. catalystwan/models/configuration/feature_profile/sdwan/policy_object/__init__.py +62 -48
  204. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/app_probe.py +34 -20
  205. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/application_list.py +8 -6
  206. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/as_path.py +22 -0
  207. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/color_list.py +7 -5
  208. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/data_prefix.py +13 -4
  209. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/expanded_community_list.py +9 -7
  210. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/extended_community.py +34 -0
  211. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/fowarding_class.py +7 -5
  212. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv4_network_object.py +15 -0
  213. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv4_service_object.py +254 -0
  214. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv6_data_prefix.py +11 -9
  215. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv6_prefix_list.py +25 -10
  216. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/mirror.py +27 -0
  217. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/network_object_group.py +15 -0
  218. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/object_group.py +15 -0
  219. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/{policier.py → policer.py} +12 -10
  220. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/prefered_group_color.py +29 -10
  221. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/prefix_list.py +23 -8
  222. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/service_object_group.py +21 -0
  223. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/sla_class.py +12 -31
  224. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/standard_community.py +16 -10
  225. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/tloc_list.py +8 -7
  226. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/aip.py +64 -0
  227. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/amp.py +79 -0
  228. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/application_list.py +8 -6
  229. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/data_prefix.py +7 -5
  230. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/fqdn.py +7 -5
  231. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/geolocation_list.py +7 -5
  232. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/identity.py +30 -0
  233. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/intrusion_prevention.py +58 -0
  234. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ips_signature.py +7 -5
  235. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/local_domain.py +7 -5
  236. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/object_group.py +72 -0
  237. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/protocol_list.py +7 -5
  238. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/rule_set.py +137 -0
  239. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/scalable_group_tag.py +26 -0
  240. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/security_port.py +21 -11
  241. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ssl_decryption.py +126 -0
  242. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ssl_decryption_profile.py +165 -0
  243. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/url.py +15 -10
  244. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/url_filtering.py +148 -0
  245. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/zone.py +14 -18
  246. catalystwan/models/configuration/feature_profile/sdwan/routing/__init__.py +26 -0
  247. catalystwan/models/configuration/feature_profile/sdwan/routing/bgp.py +609 -0
  248. catalystwan/models/configuration/feature_profile/sdwan/{service → routing}/ospf.py +55 -47
  249. catalystwan/models/configuration/feature_profile/sdwan/{service → routing}/ospfv3.py +74 -72
  250. catalystwan/models/configuration/feature_profile/sdwan/service/__init__.py +91 -0
  251. catalystwan/models/configuration/feature_profile/sdwan/service/appqoe.py +76 -41
  252. catalystwan/models/configuration/feature_profile/sdwan/service/dhcp_server.py +107 -64
  253. catalystwan/models/configuration/feature_profile/sdwan/service/dual_router_ha.py +26 -0
  254. catalystwan/models/configuration/feature_profile/sdwan/service/eigrp.py +39 -42
  255. catalystwan/models/configuration/feature_profile/sdwan/service/lan/common.py +7 -88
  256. catalystwan/models/configuration/feature_profile/sdwan/service/lan/ethernet.py +231 -155
  257. catalystwan/models/configuration/feature_profile/sdwan/service/lan/gre.py +38 -108
  258. catalystwan/models/configuration/feature_profile/sdwan/service/lan/ipsec.py +77 -84
  259. catalystwan/models/configuration/feature_profile/sdwan/service/lan/multilink.py +101 -0
  260. catalystwan/models/configuration/feature_profile/sdwan/service/lan/svi.py +62 -56
  261. catalystwan/models/configuration/feature_profile/sdwan/service/lan/vpn.py +111 -120
  262. catalystwan/models/configuration/feature_profile/sdwan/service/multicast.py +56 -57
  263. catalystwan/models/configuration/feature_profile/sdwan/service/object_tracker.py +15 -21
  264. catalystwan/models/configuration/feature_profile/sdwan/service/route_policy.py +358 -110
  265. catalystwan/models/configuration/feature_profile/sdwan/service/service_chain.py +38 -0
  266. catalystwan/models/configuration/feature_profile/sdwan/service/service_insertion_attachment.py +17 -25
  267. catalystwan/models/configuration/feature_profile/sdwan/service/switchport.py +50 -58
  268. catalystwan/models/configuration/feature_profile/sdwan/service/tracker.py +12 -21
  269. catalystwan/models/configuration/feature_profile/sdwan/service/wireless_lan.py +27 -31
  270. catalystwan/models/configuration/feature_profile/sdwan/sig_security/__init__.py +19 -0
  271. catalystwan/models/configuration/feature_profile/sdwan/sig_security/sig_security.py +379 -0
  272. catalystwan/models/configuration/feature_profile/sdwan/system/__init__.py +59 -0
  273. catalystwan/models/configuration/feature_profile/sdwan/system/aaa.py +58 -10
  274. catalystwan/models/configuration/feature_profile/sdwan/system/banner.py +30 -0
  275. catalystwan/models/configuration/feature_profile/sdwan/system/basic.py +290 -0
  276. catalystwan/models/configuration/feature_profile/sdwan/system/bfd.py +69 -0
  277. catalystwan/models/configuration/feature_profile/sdwan/system/device_access.py +157 -0
  278. catalystwan/models/configuration/feature_profile/sdwan/system/device_access_ipv6.py +157 -0
  279. catalystwan/models/configuration/feature_profile/sdwan/system/global_parcel.py +163 -0
  280. catalystwan/models/configuration/feature_profile/sdwan/system/logging_parcel.py +162 -0
  281. catalystwan/models/configuration/feature_profile/sdwan/system/mrf.py +75 -0
  282. catalystwan/models/configuration/feature_profile/sdwan/system/ntp.py +103 -0
  283. catalystwan/models/configuration/feature_profile/sdwan/system/omp.py +120 -0
  284. catalystwan/models/configuration/feature_profile/sdwan/system/security.py +179 -0
  285. catalystwan/models/configuration/feature_profile/sdwan/system/snmp.py +173 -0
  286. catalystwan/models/configuration/feature_profile/sdwan/topology/__init__.py +29 -0
  287. catalystwan/models/configuration/feature_profile/sdwan/topology/custom_control.py +425 -0
  288. catalystwan/models/configuration/feature_profile/sdwan/topology/hubspoke.py +60 -0
  289. catalystwan/models/configuration/feature_profile/sdwan/topology/mesh.py +23 -0
  290. catalystwan/models/configuration/feature_profile/sdwan/trackers/__init__.py +36 -0
  291. catalystwan/models/configuration/feature_profile/sdwan/trackers/tracker.py +96 -0
  292. catalystwan/models/configuration/feature_profile/sdwan/trackers/tracker_group.py +63 -0
  293. catalystwan/models/configuration/feature_profile/sdwan/transport/__init__.py +93 -0
  294. catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_controller.py +26 -23
  295. catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_profile.py +71 -0
  296. catalystwan/models/configuration/feature_profile/sdwan/transport/gps.py +37 -0
  297. catalystwan/models/configuration/feature_profile/sdwan/transport/management/ethernet.py +121 -0
  298. catalystwan/models/configuration/feature_profile/sdwan/transport/t1e1controller.py +124 -0
  299. catalystwan/models/configuration/feature_profile/sdwan/transport/vpn.py +285 -0
  300. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/cellular.py +173 -0
  301. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/ethernet.py +389 -0
  302. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/gre.py +46 -0
  303. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/ipsec.py +137 -0
  304. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/multilink.py +219 -0
  305. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/protocol_over.py +405 -0
  306. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/t1e1serial.py +195 -0
  307. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/__init__.py +62 -0
  308. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/analog_interface.py +436 -0
  309. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/call_routing.py +179 -0
  310. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/digital_interface.py +380 -0
  311. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/dsp_farm.py +193 -0
  312. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/media_profile.py +17 -0
  313. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/server_group.py +51 -0
  314. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/srst.py +86 -0
  315. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/supervisory_disconnect.py +69 -0
  316. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/translation_profile.py +42 -0
  317. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/translation_rule.py +31 -0
  318. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/trunk_group.py +26 -0
  319. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/voice_global.py +55 -0
  320. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/voice_tenant.py +40 -0
  321. catalystwan/models/configuration/network_hierarchy/__init__.py +22 -0
  322. catalystwan/models/configuration/network_hierarchy/cflowd.py +120 -0
  323. catalystwan/models/configuration/network_hierarchy/node.py +88 -0
  324. catalystwan/models/configuration/policy_group.py +74 -0
  325. catalystwan/models/configuration/profile_type.py +1 -6
  326. catalystwan/models/configuration/topology_group.py +52 -0
  327. catalystwan/models/policy/__init__.py +275 -69
  328. catalystwan/models/policy/centralized.py +26 -29
  329. catalystwan/models/policy/{definitions → definition}/access_control_list.py +47 -17
  330. catalystwan/models/policy/{definitions → definition}/access_control_list_ipv6.py +42 -18
  331. catalystwan/models/policy/definition/aip.py +60 -0
  332. catalystwan/models/policy/definition/amp.py +65 -0
  333. catalystwan/models/policy/definition/app_route.py +246 -0
  334. catalystwan/models/policy/definition/cflowd.py +95 -0
  335. catalystwan/models/policy/{definitions → definition}/control.py +48 -25
  336. catalystwan/models/policy/{definitions → definition}/device_access.py +22 -11
  337. catalystwan/models/policy/{definitions → definition}/device_access_ipv6.py +20 -11
  338. catalystwan/models/policy/definition/dial_peer.py +60 -0
  339. catalystwan/models/policy/definition/dns_security.py +130 -0
  340. catalystwan/models/policy/definition/fxo_port.py +63 -0
  341. catalystwan/models/policy/definition/fxs_did_port.py +58 -0
  342. catalystwan/models/policy/definition/fxs_port.py +56 -0
  343. catalystwan/models/policy/{definitions → definition}/hub_and_spoke.py +18 -4
  344. catalystwan/models/policy/definition/intrusion_prevention.py +55 -0
  345. catalystwan/models/policy/{definitions → definition}/mesh.py +13 -1
  346. catalystwan/models/policy/definition/pri_isdn_port.py +48 -0
  347. catalystwan/models/policy/{definitions → definition}/qos_map.py +39 -32
  348. catalystwan/models/policy/{definitions → definition}/rewrite.py +12 -2
  349. catalystwan/models/policy/definition/route_policy.py +187 -0
  350. catalystwan/models/policy/{definitions → definition}/rule_set.py +66 -48
  351. catalystwan/models/policy/{definitions → definition}/security_group.py +38 -14
  352. catalystwan/models/policy/definition/srst_phone_profile.py +37 -0
  353. catalystwan/models/policy/definition/ssl_decryption.py +209 -0
  354. catalystwan/models/policy/definition/ssl_decryption_utd_profile.py +87 -0
  355. catalystwan/models/policy/{definitions → definition}/traffic_data.py +184 -61
  356. catalystwan/models/policy/definition/url_filtering.py +70 -0
  357. catalystwan/models/policy/{definitions → definition}/vpn_membership.py +13 -1
  358. catalystwan/models/policy/definition/vpn_qos_map.py +46 -0
  359. catalystwan/models/policy/{definitions → definition}/zone_based_firewall.py +93 -32
  360. catalystwan/models/policy/list/app.py +44 -0
  361. catalystwan/models/policy/list/app_probe.py +42 -0
  362. catalystwan/models/policy/list/as_path.py +30 -0
  363. catalystwan/models/policy/list/class_map.py +30 -0
  364. catalystwan/models/policy/list/color.py +28 -0
  365. catalystwan/models/policy/list/communities.py +83 -0
  366. catalystwan/models/policy/list/data_ipv6_prefix.py +30 -0
  367. catalystwan/models/policy/list/data_prefix.py +30 -0
  368. catalystwan/models/policy/list/fax_protocol.py +45 -0
  369. catalystwan/models/policy/list/fqdn.py +24 -0
  370. catalystwan/models/policy/list/geo_location.py +33 -0
  371. catalystwan/models/policy/list/identity.py +29 -0
  372. catalystwan/models/policy/list/ips_signature.py +27 -0
  373. catalystwan/models/policy/list/ipv6_prefix.py +33 -0
  374. catalystwan/models/policy/list/local_app.py +45 -0
  375. catalystwan/models/policy/list/local_domain.py +36 -0
  376. catalystwan/models/policy/list/media_profile.py +44 -0
  377. catalystwan/models/policy/list/mirror.py +27 -0
  378. catalystwan/models/policy/list/modem_pass_through.py +27 -0
  379. catalystwan/models/policy/list/policer.py +39 -0
  380. catalystwan/models/policy/list/port.py +33 -0
  381. catalystwan/models/policy/list/preferred_color_group.py +82 -0
  382. catalystwan/models/policy/list/prefix.py +33 -0
  383. catalystwan/models/policy/list/protocol_name.py +26 -0
  384. catalystwan/models/policy/list/region.py +45 -0
  385. catalystwan/models/policy/list/scalable_group_tag.py +30 -0
  386. catalystwan/models/policy/list/site.py +34 -0
  387. catalystwan/models/policy/list/sla.py +77 -0
  388. catalystwan/models/policy/list/supervisory_disconnect.py +62 -0
  389. catalystwan/models/policy/list/threat_grid_api_key.py +32 -0
  390. catalystwan/models/policy/list/tloc.py +32 -0
  391. catalystwan/models/policy/list/translation_profile.py +32 -0
  392. catalystwan/models/policy/list/translation_rules.py +29 -0
  393. catalystwan/models/policy/list/trunkgroup.py +56 -0
  394. catalystwan/models/policy/list/umbrella_data.py +30 -0
  395. catalystwan/models/policy/list/url.py +39 -0
  396. catalystwan/models/policy/list/vpn.py +40 -0
  397. catalystwan/models/policy/list/zone.py +46 -0
  398. catalystwan/models/policy/localized.py +34 -16
  399. catalystwan/models/policy/policy.py +13 -9
  400. catalystwan/models/policy/policy_definition.py +673 -173
  401. catalystwan/models/policy/policy_list.py +38 -27
  402. catalystwan/models/policy/security.py +145 -46
  403. catalystwan/models/policy/voice.py +77 -0
  404. catalystwan/models/settings.py +41 -0
  405. catalystwan/models/templates.py +79 -0
  406. catalystwan/response.py +6 -2
  407. catalystwan/session.py +1 -1
  408. catalystwan/tests/builders/test_report.py +60 -0
  409. catalystwan/tests/builders/uc_voice.py +85 -0
  410. catalystwan/tests/models/__init__.py +0 -0
  411. catalystwan/tests/models/test_digital_interface.py +56 -0
  412. catalystwan/tests/templates/definitions/aaa_basic.json +96 -0
  413. catalystwan/tests/templates/definitions/aaa_complex.json +464 -0
  414. catalystwan/tests/templates/definitions/{iuo.json → cisco_aaa.json} +44 -15
  415. catalystwan/tests/templates/definitions/cisco_aaa_complex.json +361 -0
  416. catalystwan/tests/templates/definitions/cisco_logging_complex.json +268 -0
  417. catalystwan/tests/templates/definitions/cisco_ntp_complex.json +143 -0
  418. catalystwan/tests/templates/definitions/cisco_omp_complex.json +175 -0
  419. catalystwan/tests/templates/definitions/cisco_ospf_complex.json +302 -0
  420. catalystwan/tests/templates/definitions/cisco_sig.json +405 -0
  421. catalystwan/tests/templates/definitions/cisco_snmp_complex.json +258 -0
  422. catalystwan/tests/templates/definitions/cisco_system_complex.json +502 -0
  423. catalystwan/tests/templates/definitions/{Basic_Cisco_VPN_Model.json → cisco_vpn_basic.json} +2 -2
  424. catalystwan/tests/templates/definitions/{complex_cisco_vpn.json → cisco_vpn_complex.json} +27 -12
  425. catalystwan/tests/templates/definitions/cisco_vpn_interface_complex.json +821 -0
  426. catalystwan/tests/templates/definitions/omp_vsmart_1.json +26 -0
  427. catalystwan/tests/templates/definitions/{omp_2.json → omp_vsmart_2.json} +16 -2
  428. catalystwan/tests/templates/definitions/{omp_3.json → omp_vsmart_3.json} +16 -2
  429. catalystwan/tests/templates/definitions/omp_vsmart_complex.json +73 -0
  430. catalystwan/tests/templates/definitions/security_vsmart_complex.json +24 -0
  431. catalystwan/tests/templates/definitions/system_vsmart_complex.json +193 -0
  432. catalystwan/tests/templates/definitions/vpn_vsmart_basic.json +17 -0
  433. catalystwan/tests/templates/definitions/vpn_vsmart_complex.json +179 -0
  434. catalystwan/tests/templates/definitions/vpn_vsmart_interface_basic.json +42 -0
  435. catalystwan/tests/templates/definitions/vpn_vsmart_interface_complex.json +208 -0
  436. catalystwan/tests/templates/models/__init__.py +46 -13
  437. catalystwan/tests/templates/models/aaa.py +106 -0
  438. catalystwan/tests/templates/models/cisco_aaa.py +81 -48
  439. catalystwan/tests/templates/models/cisco_banner.py +2 -2
  440. catalystwan/tests/templates/models/cisco_bfd.py +4 -6
  441. catalystwan/tests/templates/models/cisco_logging.py +65 -0
  442. catalystwan/tests/templates/models/cisco_ntp.py +17 -0
  443. catalystwan/tests/templates/models/cisco_omp.py +37 -0
  444. catalystwan/tests/templates/models/cisco_ospf.py +60 -0
  445. catalystwan/tests/templates/models/cisco_secure_internet_gateway.py +95 -0
  446. catalystwan/tests/templates/models/cisco_snmp.py +40 -0
  447. catalystwan/tests/templates/models/cisco_system.py +108 -3
  448. catalystwan/tests/templates/models/cisco_vpn.py +42 -72
  449. catalystwan/tests/templates/models/cisco_vpn_interface.py +200 -0
  450. catalystwan/tests/templates/models/omp_vsmart.py +28 -8
  451. catalystwan/tests/templates/models/security_vsmart.py +11 -0
  452. catalystwan/tests/templates/models/system_vsmart.py +37 -0
  453. catalystwan/tests/templates/models/vpn_vsmart.py +32 -0
  454. catalystwan/tests/templates/models/vpn_vsmart_interface.py +54 -0
  455. catalystwan/tests/templates/schemas/aaa.json +1096 -0
  456. catalystwan/tests/templates/schemas/cedge_aaa.json +1 -1
  457. catalystwan/tests/templates/schemas/cisco_logging.json +577 -0
  458. catalystwan/tests/templates/schemas/cisco_ntp.json +265 -0
  459. catalystwan/tests/templates/schemas/cisco_omp.json +479 -0
  460. catalystwan/tests/templates/schemas/cisco_ospf.json +908 -0
  461. catalystwan/tests/templates/schemas/cisco_secure_internet_gateway.json +1520 -0
  462. catalystwan/tests/templates/schemas/cisco_snmp.json +561 -0
  463. catalystwan/tests/templates/schemas/cisco_system.json +242 -0
  464. catalystwan/tests/templates/schemas/cisco_vpn.json +53 -1
  465. catalystwan/tests/templates/schemas/cisco_vpn_interface.json +3348 -0
  466. catalystwan/tests/templates/schemas/omp-vsmart.json +20 -0
  467. catalystwan/tests/templates/schemas/security-vsmart.json +58 -0
  468. catalystwan/tests/templates/schemas/system-vsmart.json +2585 -0
  469. catalystwan/tests/templates/schemas/vpn-vsmart-interface.json +859 -0
  470. catalystwan/tests/templates/schemas/vpn-vsmart.json +445 -0
  471. catalystwan/tests/templates/test_chose_model.py +6 -10
  472. catalystwan/tests/templates/test_deserialize_model.py +4 -4
  473. catalystwan/tests/templates/test_find_template_values.py +229 -0
  474. catalystwan/tests/templates/test_find_template_values_2.py +193 -0
  475. catalystwan/tests/templates/test_serialize_model.py +1 -2
  476. catalystwan/tests/test_cli_template.py +8 -9
  477. catalystwan/tests/test_endpoints.py +42 -11
  478. catalystwan/tests/test_feature_profile_api.py +282 -0
  479. catalystwan/tests/test_models_common.py +53 -0
  480. catalystwan/tests/test_templates.py +16 -19
  481. catalystwan/utils/feature_template/find_template_values.py +17 -4
  482. catalystwan/utils/model.py +45 -0
  483. catalystwan/utils/persona.py +5 -0
  484. catalystwan/utils/type_check.py +22 -0
  485. catalystwan/workflows/backup_restore_device_templates.py +467 -0
  486. catalystwan/workflows/tenant_migration.py +1 -1
  487. {catalystwan-0.41.2.dist-info → catalystwan-0.41.2.dev0.dist-info}/METADATA +20 -1
  488. catalystwan-0.41.2.dev0.dist-info/RECORD +636 -0
  489. catalystwan/ENDPOINTS.md +0 -611
  490. catalystwan/api/configuration_groups/parcels/cellular_controller.py +0 -33
  491. catalystwan/api/templates/device_template/device_template_payload.json.j2 +0 -19
  492. catalystwan/models/configuration/config_migration.py +0 -36
  493. catalystwan/models/configuration/feature_profile/sdwan/management/vpn.py +0 -26
  494. catalystwan/models/configuration/feature_profile/sdwan/service/acl.py +0 -409
  495. catalystwan/models/configuration/feature_profile/sdwan/service/bgp.py +0 -288
  496. catalystwan/models/policy/lists.py +0 -330
  497. catalystwan/models/policy/lists_entries.py +0 -444
  498. catalystwan/tests/templates/definitions/complex_aaa.json +0 -277
  499. catalystwan/tests/templates/definitions/omp_1.json +0 -11
  500. catalystwan/utils/timezone.py +0 -422
  501. catalystwan-0.41.2.dist-info/RECORD +0 -353
  502. /catalystwan/tests/templates/definitions/{banner_1.json → cisco_banner.json} +0 -0
  503. {catalystwan-0.41.2.dist-info → catalystwan-0.41.2.dev0.dist-info}/LICENSE +0 -0
  504. {catalystwan-0.41.2.dist-info → catalystwan-0.41.2.dev0.dist-info}/WHEEL +0 -0
@@ -1,88 +1,156 @@
1
1
  # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
2
 
3
3
  # This stub provide top-level "public" policy models to be used with PolicyAPI()
4
- from typing import List, Union
4
+ from functools import lru_cache
5
+ from typing import List, Sequence, Type, Union, cast
5
6
 
6
7
  from pydantic import Field
7
8
  from typing_extensions import Annotated
8
9
 
9
- from .centralized import CentralizedPolicy, TrafficDataDirection
10
- from .definitions.access_control_list import AclPolicy
11
- from .definitions.access_control_list_ipv6 import AclIPv6Policy
12
- from .definitions.control import ControlPolicy
13
- from .definitions.device_access import DeviceAccessPolicy
14
- from .definitions.device_access_ipv6 import DeviceAccessIPv6Policy
15
- from .definitions.hub_and_spoke import HubAndSpokePolicy
16
- from .definitions.mesh import MeshPolicy
17
- from .definitions.qos_map import QoSDropType, QoSMapPolicy
18
- from .definitions.rewrite import RewritePolicy
19
- from .definitions.rule_set import RuleSet
20
- from .definitions.security_group import SecurityGroup
21
- from .definitions.traffic_data import TrafficDataPolicy
22
- from .definitions.vpn_membership import VPNMembershipPolicy
23
- from .definitions.zone_based_firewall import ZoneBasedFWPolicy
24
- from .lists import (
25
- AppList,
26
- AppProbeClassList,
27
- ASPathList,
28
- ClassMapList,
29
- ColorList,
10
+ from catalystwan.models.policy.definition.app_route import AppRoutePolicy, AppRoutePolicyGetResponse
11
+ from catalystwan.models.policy.definition.dial_peer import DialPeerPolicy, DialPeerPolicyGetResponse
12
+ from catalystwan.models.policy.definition.fxo_port import FxoPortPolicy, FxoPortPolicyGetResponse
13
+ from catalystwan.models.policy.definition.fxs_did_port import FxsDidPortPolicy, FxsDidPortPolicyGetResponse
14
+ from catalystwan.models.policy.definition.fxs_port import FxsPortPolicy, FxsPortPolicyGetResponse
15
+ from catalystwan.models.policy.definition.pri_isdn_port import PriIsdnPortPolicy, PriIsdnPortPolicyGetResponse
16
+ from catalystwan.models.policy.definition.srst_phone_profile import (
17
+ SrstPhoneProfilePolicy,
18
+ SrstPhoneProfilePolicyGetResponse,
19
+ )
20
+ from catalystwan.models.policy.definition.vpn_qos_map import VPNQoSMapPolicy, VPNQoSMapPolicyGetResponse
21
+ from catalystwan.models.policy.list.app import AppList, AppListInfo
22
+ from catalystwan.models.policy.list.app_probe import AppProbeClassList, AppProbeClassListInfo
23
+ from catalystwan.models.policy.list.as_path import ASPathList, ASPathListInfo
24
+ from catalystwan.models.policy.list.class_map import ClassMapList, ClassMapListInfo
25
+ from catalystwan.models.policy.list.color import ColorList, ColorListInfo
26
+ from catalystwan.models.policy.list.communities import (
30
27
  CommunityList,
31
- DataIPv6PrefixList,
32
- DataPrefixList,
28
+ CommunityListInfo,
33
29
  ExpandedCommunityList,
34
- FQDNList,
35
- GeoLocationList,
36
- IPSSignatureList,
37
- IPv6PrefixList,
38
- LocalAppList,
39
- LocalDomainList,
40
- MirrorList,
41
- PolicerList,
42
- PortList,
43
- PreferredColorGroupList,
44
- PrefixList,
45
- ProtocolNameList,
46
- RegionList,
47
- SiteList,
48
- SLAClassList,
49
- TLOCList,
50
- URLAllowList,
51
- URLBlockList,
52
- VPNList,
53
- ZoneList,
30
+ ExpandedCommunityListInfo,
31
+ ExtendedCommunityList,
32
+ ExtendedCommunityListInfo,
33
+ )
34
+ from catalystwan.models.policy.list.data_ipv6_prefix import DataIPv6PrefixList, DataIPv6PrefixListInfo
35
+ from catalystwan.models.policy.list.data_prefix import DataPrefixList, DataPrefixListInfo
36
+ from catalystwan.models.policy.list.fax_protocol import FaxProtocolList, FaxProtocolListInfo
37
+ from catalystwan.models.policy.list.fqdn import FQDNList, FQDNListInfo
38
+ from catalystwan.models.policy.list.geo_location import GeoLocationList, GeoLocationListInfo
39
+ from catalystwan.models.policy.list.identity import IdentityList, IdentityListInfo
40
+ from catalystwan.models.policy.list.ips_signature import IPSSignatureList, IPSSignatureListInfo
41
+ from catalystwan.models.policy.list.ipv6_prefix import IPv6PrefixList, IPv6PrefixListInfo
42
+ from catalystwan.models.policy.list.local_app import LocalAppList, LocalAppListInfo
43
+ from catalystwan.models.policy.list.local_domain import LocalDomainList, LocalDomainListInfo
44
+ from catalystwan.models.policy.list.media_profile import MediaProfileList, MediaProfileListInfo
45
+ from catalystwan.models.policy.list.mirror import MirrorList, MirrorListInfo
46
+ from catalystwan.models.policy.list.modem_pass_through import ModemPassThroughList, ModemPassThroughListInfo
47
+ from catalystwan.models.policy.list.policer import PolicerList, PolicerListInfo
48
+ from catalystwan.models.policy.list.port import PortList, PortListInfo
49
+ from catalystwan.models.policy.list.preferred_color_group import PreferredColorGroupList, PreferredColorGroupListInfo
50
+ from catalystwan.models.policy.list.prefix import PrefixList, PrefixListInfo
51
+ from catalystwan.models.policy.list.protocol_name import ProtocolNameList, ProtocolNameListInfo
52
+ from catalystwan.models.policy.list.region import RegionList, RegionListInfo
53
+ from catalystwan.models.policy.list.scalable_group_tag import ScalableGroupTagList, ScalableGroupTagListInfo
54
+ from catalystwan.models.policy.list.site import SiteList, SiteListInfo
55
+ from catalystwan.models.policy.list.sla import SLAClassList, SLAClassListInfo
56
+ from catalystwan.models.policy.list.supervisory_disconnect import (
57
+ SupervisoryDisconnectList,
58
+ SupervisoryDisconnectListInfo,
59
+ )
60
+ from catalystwan.models.policy.list.threat_grid_api_key import ThreatGridApiKeyList, ThreatGridApiKeyListInfo
61
+ from catalystwan.models.policy.list.tloc import TLOCList, TLOCListInfo
62
+ from catalystwan.models.policy.list.translation_profile import TranslationProfileList, TranslationProfileListInfo
63
+ from catalystwan.models.policy.list.translation_rules import TranslationRulesList, TranslationRulesListInfo
64
+ from catalystwan.models.policy.list.trunkgroup import TrunkGroupList, TrunkGroupListInfo
65
+ from catalystwan.models.policy.list.umbrella_data import UmbrellaDataList, UmbrellaDataListInfo
66
+ from catalystwan.models.policy.list.url import URLAllowList, URLAllowListInfo, URLBlockList, URLBlockListInfo
67
+ from catalystwan.models.policy.list.vpn import VPNList, VPNListInfo
68
+ from catalystwan.models.policy.list.zone import ZoneList, ZoneListInfo
69
+ from catalystwan.utils.model import get_model_type_field, resolve_nested_base_model_unions
70
+
71
+ from .centralized import CentralizedPolicy, CentralizedPolicyInfo, TrafficDataDirection
72
+ from .definition.access_control_list import AclPolicy, AclPolicyGetResponse
73
+ from .definition.access_control_list_ipv6 import AclIPv6Policy, AclIPv6PolicyGetResponse
74
+ from .definition.aip import AdvancedInspectionProfilePolicy, AdvancedInspectionProfilePolicyGetResponse
75
+ from .definition.amp import AdvancedMalwareProtectionPolicy, AdvancedMalwareProtectionPolicyGetResponse
76
+ from .definition.cflowd import CflowdPolicy, CflowdPolicyGetResponse
77
+ from .definition.control import ControlPolicy, ControlPolicyGetResponse
78
+ from .definition.device_access import DeviceAccessPolicy, DeviceAccessPolicyGetResponse
79
+ from .definition.device_access_ipv6 import DeviceAccessIPv6Policy, DeviceAccessIPv6PolicyGetResponse
80
+ from .definition.dns_security import DnsSecurityPolicy, DnsSecurityPolicyGetResponse
81
+ from .definition.hub_and_spoke import HubAndSpokePolicy, HubAndSpokePolicyGetResponse
82
+ from .definition.intrusion_prevention import IntrusionPreventionPolicy, IntrusionPreventionPolicyGetResponse
83
+ from .definition.mesh import MeshPolicy, MeshPolicyGetResponse
84
+ from .definition.qos_map import QoSDropType, QoSMapPolicy, QoSMapPolicyGetResponse
85
+ from .definition.rewrite import RewritePolicy, RewritePolicyGetResponse
86
+ from .definition.route_policy import RoutePolicy, RoutePolicyGetResponse
87
+ from .definition.rule_set import RuleSet, RuleSetGetResponse
88
+ from .definition.security_group import SecurityGroup, SecurityGroupGetResponse
89
+ from .definition.ssl_decryption import SslDecryptionPolicy, SslDecryptionPolicyGetResponse
90
+ from .definition.ssl_decryption_utd_profile import (
91
+ SslDecryptionUtdProfilePolicy,
92
+ SslDecryptionUtdProfilePolicyGetResponse,
54
93
  )
55
- from .lists_entries import EncapType, PathPreference, PolicerExceedAction
56
- from .localized import LocalizedPolicy
94
+ from .definition.traffic_data import TrafficDataPolicy, TrafficDataPolicyGetResponse
95
+ from .definition.url_filtering import UrlFilteringPolicy, UrlFilteringPolicyGetResponse
96
+ from .definition.vpn_membership import VPNMembershipPolicy, VPNMembershipPolicyGetResponse
97
+ from .definition.zone_based_firewall import ZoneBasedFWPolicy, ZoneBasedFWPolicyGetResponse
98
+ from .localized import LocalizedPolicy, LocalizedPolicyInfo
57
99
  from .policy_definition import (
58
- Carrier,
100
+ CarrierType,
101
+ ControlPathType,
59
102
  DNSTypeEntryType,
60
103
  MultiRegionRole,
61
104
  OriginProtocol,
62
- PathType,
63
105
  PLPEntryType,
64
- PolicyActionType,
106
+ PolicyDefinitionInfo,
65
107
  ServiceType,
66
108
  TLOCActionType,
67
109
  )
68
- from .security import SecurityPolicy, UnifiedSecurityPolicy
110
+ from .policy_list import PolicyListInfo
111
+ from .security import (
112
+ AnySecurityPolicy,
113
+ AnySecurityPolicyInfo,
114
+ AnySecurityPolicyInfoList,
115
+ SecurityPolicy,
116
+ SecurityPolicyInfo,
117
+ UnifiedSecurityPolicy,
118
+ UnifiedSecurityPolicyInfo,
119
+ )
69
120
 
70
121
  AnyPolicyDefinition = Annotated[
71
122
  Union[
123
+ AclIPv6Policy,
124
+ AclPolicy,
125
+ AdvancedInspectionProfilePolicy,
126
+ AdvancedMalwareProtectionPolicy,
127
+ AppRoutePolicy,
128
+ CflowdPolicy,
129
+ ControlPolicy,
130
+ DeviceAccessIPv6Policy,
131
+ DeviceAccessPolicy,
132
+ DialPeerPolicy,
133
+ DnsSecurityPolicy,
134
+ FxoPortPolicy,
135
+ FxsPortPolicy,
136
+ FxsDidPortPolicy,
137
+ HubAndSpokePolicy,
138
+ IntrusionPreventionPolicy,
139
+ MeshPolicy,
140
+ PriIsdnPortPolicy,
141
+ QoSMapPolicy,
142
+ RewritePolicy,
143
+ RoutePolicy,
72
144
  RuleSet,
73
145
  SecurityGroup,
74
- ZoneBasedFWPolicy,
146
+ SslDecryptionPolicy,
147
+ SslDecryptionUtdProfilePolicy,
148
+ SrstPhoneProfilePolicy,
75
149
  TrafficDataPolicy,
76
- QoSMapPolicy,
77
- RewritePolicy,
78
- ControlPolicy,
150
+ UrlFilteringPolicy,
79
151
  VPNMembershipPolicy,
80
- HubAndSpokePolicy,
81
- MeshPolicy,
82
- AclPolicy,
83
- AclIPv6Policy,
84
- DeviceAccessPolicy,
85
- DeviceAccessIPv6Policy,
152
+ VPNQoSMapPolicy,
153
+ ZoneBasedFWPolicy,
86
154
  ],
87
155
  Field(discriminator="type"),
88
156
  ]
@@ -98,70 +166,197 @@ AnyPolicyList = Annotated[
98
166
  DataIPv6PrefixList,
99
167
  DataPrefixList,
100
168
  ExpandedCommunityList,
169
+ ExtendedCommunityList,
170
+ FaxProtocolList,
101
171
  FQDNList,
102
172
  GeoLocationList,
173
+ IdentityList,
103
174
  IPSSignatureList,
104
175
  IPv6PrefixList,
105
176
  LocalAppList,
106
177
  LocalDomainList,
178
+ MediaProfileList,
107
179
  MirrorList,
180
+ ModemPassThroughList,
108
181
  PolicerList,
109
182
  PortList,
110
183
  PreferredColorGroupList,
111
184
  PrefixList,
112
185
  ProtocolNameList,
113
186
  RegionList,
187
+ ScalableGroupTagList,
114
188
  SiteList,
115
189
  SLAClassList,
190
+ SupervisoryDisconnectList,
191
+ ThreatGridApiKeyList,
116
192
  TLOCList,
117
- URLBlockList,
193
+ TranslationProfileList,
194
+ TranslationRulesList,
195
+ TrunkGroupList,
196
+ UmbrellaDataList,
118
197
  URLAllowList,
198
+ URLBlockList,
119
199
  VPNList,
120
200
  ZoneList,
121
201
  ],
122
202
  Field(discriminator="type"),
123
203
  ]
124
204
 
205
+ AnyPolicyListInfo = Annotated[
206
+ Union[
207
+ AppListInfo,
208
+ AppProbeClassListInfo,
209
+ ASPathListInfo,
210
+ ClassMapListInfo,
211
+ ColorListInfo,
212
+ CommunityListInfo,
213
+ DataIPv6PrefixListInfo,
214
+ DataPrefixListInfo,
215
+ ExpandedCommunityListInfo,
216
+ ExtendedCommunityListInfo,
217
+ FaxProtocolListInfo,
218
+ FQDNListInfo,
219
+ GeoLocationListInfo,
220
+ IdentityListInfo,
221
+ IPSSignatureListInfo,
222
+ IPv6PrefixListInfo,
223
+ LocalAppListInfo,
224
+ LocalDomainListInfo,
225
+ MediaProfileListInfo,
226
+ MirrorListInfo,
227
+ ModemPassThroughListInfo,
228
+ PolicerListInfo,
229
+ PortListInfo,
230
+ PreferredColorGroupListInfo,
231
+ PrefixListInfo,
232
+ ProtocolNameListInfo,
233
+ RegionListInfo,
234
+ ScalableGroupTagListInfo,
235
+ SiteListInfo,
236
+ SLAClassListInfo,
237
+ SupervisoryDisconnectListInfo,
238
+ ThreatGridApiKeyListInfo,
239
+ TLOCListInfo,
240
+ TranslationProfileListInfo,
241
+ TranslationRulesListInfo,
242
+ TrunkGroupListInfo,
243
+ UmbrellaDataListInfo,
244
+ URLAllowListInfo,
245
+ URLBlockListInfo,
246
+ VPNListInfo,
247
+ ZoneListInfo,
248
+ ],
249
+ Field(discriminator="type"),
250
+ ]
251
+
252
+ AnyPolicyDefinitionInfo = Annotated[
253
+ Union[
254
+ AclIPv6PolicyGetResponse,
255
+ AclPolicyGetResponse,
256
+ AdvancedInspectionProfilePolicyGetResponse,
257
+ AdvancedMalwareProtectionPolicyGetResponse,
258
+ AppRoutePolicyGetResponse,
259
+ CflowdPolicyGetResponse,
260
+ ControlPolicyGetResponse,
261
+ DeviceAccessIPv6PolicyGetResponse,
262
+ DeviceAccessPolicyGetResponse,
263
+ DialPeerPolicyGetResponse,
264
+ DnsSecurityPolicyGetResponse,
265
+ FxoPortPolicyGetResponse,
266
+ FxsPortPolicyGetResponse,
267
+ FxsDidPortPolicyGetResponse,
268
+ HubAndSpokePolicyGetResponse,
269
+ IntrusionPreventionPolicyGetResponse,
270
+ MeshPolicyGetResponse,
271
+ PriIsdnPortPolicyGetResponse,
272
+ QoSMapPolicyGetResponse,
273
+ RewritePolicyGetResponse,
274
+ RoutePolicyGetResponse,
275
+ RuleSetGetResponse,
276
+ SecurityGroupGetResponse,
277
+ SslDecryptionPolicyGetResponse,
278
+ SslDecryptionUtdProfilePolicyGetResponse,
279
+ SrstPhoneProfilePolicyGetResponse,
280
+ TrafficDataPolicyGetResponse,
281
+ UrlFilteringPolicyGetResponse,
282
+ VPNMembershipPolicyGetResponse,
283
+ VPNQoSMapPolicyGetResponse,
284
+ ZoneBasedFWPolicyGetResponse,
285
+ ],
286
+ Field(discriminator="type"),
287
+ ]
288
+
289
+
290
+ @lru_cache
291
+ def find_policy_list_model(model_type: str) -> Type[AnyPolicyListInfo]:
292
+ types = cast(
293
+ Sequence[Type[AnyPolicyListInfo]],
294
+ resolve_nested_base_model_unions(AnyPolicyListInfo),
295
+ )
296
+ model = next(t for t in types if get_model_type_field(t) == model_type)
297
+ return model
298
+
299
+
300
+ @lru_cache
301
+ def find_policy_definition_model(model_type: str) -> Type[AnyPolicyDefinitionInfo]:
302
+ types = cast(
303
+ Sequence[Type[AnyPolicyDefinitionInfo]],
304
+ resolve_nested_base_model_unions(AnyPolicyDefinitionInfo),
305
+ )
306
+ model = next(t for t in types if get_model_type_field(t) == model_type)
307
+ return model
308
+
125
309
 
126
310
  __all__ = (
127
311
  "AclIPv6Policy",
128
312
  "AclPolicy",
313
+ "AdvancedInspectionProfilePolicy",
314
+ "AdvancedMalwareProtectionPolicy",
315
+ "AnyPolicyDefinitionInfo",
129
316
  "AnyPolicyList",
130
- "AnyPolicyList",
317
+ "AnySecurityPolicy",
318
+ "AnySecurityPolicyInfo",
319
+ "AnySecurityPolicyInfoList",
131
320
  "AppList",
132
321
  "AppProbeClassList",
322
+ "AppRoutePolicy",
133
323
  "ASPathList",
134
- "Carrier",
324
+ "CarrierType",
135
325
  "CentralizedPolicy",
326
+ "CentralizedPolicyInfo",
327
+ "CflowdPolicy",
136
328
  "ClassMapList",
137
329
  "ColorList",
138
330
  "CommunityList",
331
+ "ControlPathType",
139
332
  "ControlPolicy",
140
333
  "DataIPv6PrefixList",
141
334
  "DataPrefixList",
142
335
  "DeviceAccessIPv6Policy",
143
336
  "DeviceAccessPolicy",
337
+ "DnsSecurityPolicy",
144
338
  "DNSTypeEntryType",
145
- "EncapType",
146
339
  "ExpandedCommunityList",
340
+ "ExtendedCommunityList",
147
341
  "FQDNList",
148
342
  "GeoLocationList",
149
343
  "HubAndSpokePolicy",
344
+ "IdentityList",
345
+ "IntrusionPreventionPolicy",
150
346
  "IPSSignatureList",
151
347
  "IPv6PrefixList",
152
348
  "LocalAppList",
153
349
  "LocalDomainList",
154
350
  "LocalizedPolicy",
351
+ "LocalizedPolicyInfo",
155
352
  "MeshPolicy",
156
353
  "MirrorList",
157
354
  "MultiRegionRole",
158
355
  "OriginProtocol",
159
- "PathPreference",
160
- "PathType",
161
356
  "PLPEntryType",
162
- "PolicerExceedAction",
163
357
  "PolicerList",
164
- "PolicyActionType",
358
+ "PolicyDefinitionInfo",
359
+ "PolicyListInfo",
165
360
  "PortList",
166
361
  "PreferredColorGroupList",
167
362
  "PrefixList",
@@ -170,21 +365,32 @@ __all__ = (
170
365
  "QoSMapPolicy",
171
366
  "RegionList",
172
367
  "RewritePolicy",
368
+ "RoutePolicy",
173
369
  "RuleSet",
370
+ "ScalableGroupTagList",
174
371
  "SecurityGroup",
175
372
  "SecurityPolicy",
373
+ "SecurityPolicyInfo",
176
374
  "ServiceType",
177
375
  "SiteList",
178
376
  "SLAClassList",
377
+ "SslDecryptionPolicy",
378
+ "SslDecryptionUtdProfilePolicy",
379
+ "ThreatGridApiKeyList",
179
380
  "TLOCActionType",
180
381
  "TLOCList",
181
382
  "TrafficDataDirection",
182
383
  "TrafficDataPolicy",
384
+ "TrunkGroupList",
385
+ "UmbrellaDataList",
183
386
  "UnifiedSecurityPolicy",
184
- "URLBlockList",
387
+ "UnifiedSecurityPolicyInfo",
185
388
  "URLAllowList",
389
+ "URLBlockList",
390
+ "UrlFilteringPolicy",
186
391
  "VPNList",
187
392
  "VPNMembershipPolicy",
393
+ "VPNQoSMapPolicy",
188
394
  "ZoneBasedFWPolicy",
189
395
  "ZoneList",
190
396
  )
@@ -18,6 +18,8 @@ TrafficDataDirection = Literal[
18
18
  "service",
19
19
  "tunnel",
20
20
  "all",
21
+ "from-service",
22
+ "from-tunnel",
21
23
  ]
22
24
 
23
25
  ControlDirection = Literal[
@@ -25,6 +27,8 @@ ControlDirection = Literal[
25
27
  "out",
26
28
  ]
27
29
 
30
+ AppRouteItemType = Literal["approute", "appRoute"]
31
+
28
32
 
29
33
  def assert_feature_defintion(definition: Any) -> "CentralizedPolicyDefinition":
30
34
  assert isinstance(definition, CentralizedPolicyDefinition)
@@ -37,7 +41,7 @@ class DataApplicationEntry(BaseModel):
37
41
  site_lists: Optional[List[UUID]] = Field(
38
42
  default=None, serialization_alias="siteLists", validation_alias="siteLists"
39
43
  )
40
- vpn_lists: List[UUID] = Field(default=[], serialization_alias="vpnLists", validation_alias="vpnLists")
44
+ vpn_lists: List[UUID] = Field(default_factory=list, serialization_alias="vpnLists", validation_alias="vpnLists")
41
45
  region_ids: Optional[List[str]] = Field(default=None, serialization_alias="regionIds", validation_alias="regionIds")
42
46
  region_lists: Optional[List[UUID]] = Field(
43
47
  default=None, serialization_alias="regionLists", validation_alias="regionLists"
@@ -71,7 +75,7 @@ class ControlPolicyItem(AssemblyItemBase):
71
75
  self.entries.append(entry)
72
76
 
73
77
  def assign_to_outbound_sites(self, site_lists: List[UUID]) -> None:
74
- entry = ControlApplicationEntry(direction="in", site_lists=site_lists)
78
+ entry = ControlApplicationEntry(direction="out", site_lists=site_lists)
75
79
  self.entries.append(entry)
76
80
 
77
81
  @overload
@@ -167,7 +171,8 @@ class MeshPolicyItem(AssemblyItemBase):
167
171
 
168
172
 
169
173
  class AppRoutePolicyItem(AssemblyItemBase):
170
- type: Literal["appRoute"] = "appRoute"
174
+ type: AppRouteItemType = "appRoute"
175
+ entries: List[DataApplicationEntry] = []
171
176
 
172
177
 
173
178
  class CFlowDPolicyItem(AssemblyItemBase):
@@ -193,22 +198,29 @@ AnyAssemblyItem = Annotated[
193
198
 
194
199
 
195
200
  class CentralizedPolicyDefinition(PolicyDefinition):
201
+ model_config = ConfigDict(populate_by_name=True)
196
202
  region_role_assembly: List = Field(
197
- default=[], serialization_alias="regionRoleAssembly", validation_alias="regionRoleAssembly"
203
+ default_factory=list, serialization_alias="regionRoleAssembly", validation_alias="regionRoleAssembly"
198
204
  )
199
205
  assembly: List[AnyAssemblyItem] = []
200
206
  model_config = ConfigDict(populate_by_name=True)
201
207
 
208
+ def find_assembly_item_by_definition_id(self, definition_id: UUID) -> Optional[AnyAssemblyItem]:
209
+ for item in self.assembly:
210
+ if item.definition_id == definition_id:
211
+ return item
212
+ return None
213
+
202
214
 
203
215
  class CentralizedPolicy(PolicyCreationPayload):
204
- policy_definition: Union[CentralizedPolicyDefinition, str] = Field(
205
- default=CentralizedPolicyDefinition(),
206
- serialization_alias="policyDefinition",
207
- validation_alias="policyDefinition",
208
- )
216
+ model_config = ConfigDict(populate_by_name=True)
209
217
  policy_type: Literal["feature", "cli"] = Field(
210
218
  default="feature", serialization_alias="policyType", validation_alias="policyType"
211
219
  )
220
+ policy_definition: Union[str, CentralizedPolicyDefinition] = Field(
221
+ serialization_alias="policyDefinition",
222
+ validation_alias="policyDefinition",
223
+ )
212
224
 
213
225
  def add_traffic_data_policy(self, traffic_data_policy_id: UUID) -> TrafficDataPolicyItem:
214
226
  policy_definition = assert_feature_defintion(self.policy_definition)
@@ -233,32 +245,17 @@ class CentralizedPolicy(PolicyCreationPayload):
233
245
  @model_validator(mode="before")
234
246
  @classmethod
235
247
  def try_parse_policy_definition_string(cls, values):
236
- # GET /template/policy/vsmart contains string in policyDefinition field
248
+ # this is needed because GET /template/policy/vsmart contains string in policyDefinition field
237
249
  # while POST /template/policy/vsmart requires a regular object
238
250
  # it makes sense to reuse that model for both requests and present parsed data to the user
239
- # This is only applicable for "feature" policy type
240
- # when we are trying to deserialize "policyDefinition" field obtained from remote as string
251
+ if not isinstance(values, dict):
252
+ return values
241
253
  json_policy_type = values.get("policyType")
242
254
  json_policy_definition = values.get("policyDefinition")
243
- if json_policy_type == "feature":
244
- if isinstance(json_policy_definition, str):
245
- values["policyDefinition"] = CentralizedPolicyDefinition.model_validate_json(json_policy_definition)
246
- else:
247
- values["policyDefinition"] = CentralizedPolicyDefinition()
255
+ if json_policy_type == "feature" and isinstance(json_policy_definition, str):
256
+ values["policyDefinition"] = CentralizedPolicyDefinition.model_validate_json(json_policy_definition)
248
257
  return values
249
258
 
250
- @model_validator(mode="after")
251
- def check_definition_content_by_type(self):
252
- if self.policy_type == "cli":
253
- assert isinstance(
254
- self.policy_definition, str
255
- ), "policy definition must be provided as string for cli policy"
256
- elif self.policy_type == "feature":
257
- assert isinstance(
258
- self.policy_definition, CentralizedPolicyDefinition
259
- ), "policy definition must be provided as CentralizedPolicyDefinition object for feature policy"
260
- return self
261
-
262
259
 
263
260
  class CentralizedPolicyEditPayload(PolicyEditPayload, CentralizedPolicy):
264
261
  rid: Optional[int] = Field(default=None, serialization_alias="@rid", validation_alias="@rid")