catalystwan 0.41.2.dev9__py3-none-any.whl → 0.41.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (509) hide show
  1. catalystwan/ENDPOINTS.md +611 -0
  2. catalystwan/__init__.py +2 -3
  3. catalystwan/api/administration.py +2 -13
  4. catalystwan/api/api_container.py +1 -4
  5. catalystwan/api/config_group_api.py +16 -41
  6. catalystwan/api/configuration_groups/parcel.py +30 -100
  7. catalystwan/api/configuration_groups/parcels/cellular_controller.py +33 -0
  8. catalystwan/api/feature_profile_api.py +237 -2016
  9. catalystwan/api/policy_api.py +116 -470
  10. catalystwan/api/template_api.py +44 -113
  11. catalystwan/api/templates/README.md +47 -61
  12. catalystwan/api/templates/cli_template.py +7 -17
  13. catalystwan/api/templates/device_template/device_template.py +32 -127
  14. catalystwan/api/templates/device_template/device_template_payload.json.j2 +19 -0
  15. catalystwan/api/templates/feature_template.py +3 -3
  16. catalystwan/api/templates/models/cisco_aaa_model.py +42 -289
  17. catalystwan/api/templates/models/cisco_banner_model.py +2 -11
  18. catalystwan/api/templates/models/cisco_bfd_model.py +36 -31
  19. catalystwan/api/templates/models/cisco_bgp_model.py +131 -382
  20. catalystwan/api/templates/models/cisco_logging_model.py +43 -80
  21. catalystwan/api/templates/models/cisco_ntp_model.py +15 -34
  22. catalystwan/api/templates/models/cisco_omp_model.py +60 -70
  23. catalystwan/api/templates/models/cisco_ospf.py +74 -143
  24. catalystwan/api/templates/models/cisco_ospfv3.py +95 -217
  25. catalystwan/api/templates/models/cisco_secure_internet_gateway.py +142 -304
  26. catalystwan/api/templates/models/cisco_snmp_model.py +52 -66
  27. catalystwan/api/templates/models/cisco_system.py +129 -238
  28. catalystwan/api/templates/models/cisco_vpn_interface_model.py +275 -632
  29. catalystwan/api/templates/models/cisco_vpn_model.py +270 -433
  30. catalystwan/api/templates/models/cli_template.py +2 -3
  31. catalystwan/api/templates/models/omp_vsmart_model.py +10 -46
  32. catalystwan/api/templates/models/security_vsmart_model.py +8 -11
  33. catalystwan/api/templates/models/supported.py +4 -10
  34. catalystwan/api/templates/models/system_vsmart_model.py +27 -164
  35. catalystwan/apigw_auth.py +2 -6
  36. catalystwan/dataclasses.py +53 -2
  37. catalystwan/endpoints/__init__.py +41 -41
  38. catalystwan/endpoints/certificate_management_device.py +0 -4
  39. catalystwan/endpoints/cluster_management.py +9 -30
  40. catalystwan/endpoints/configuration/feature_profile/sdwan/policy_object.py +12 -35
  41. catalystwan/endpoints/configuration/feature_profile/sdwan/system.py +11 -164
  42. catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py +26 -144
  43. catalystwan/endpoints/configuration/policy/definition/access_control_list.py +11 -6
  44. catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py +11 -6
  45. catalystwan/endpoints/configuration/policy/definition/control.py +11 -6
  46. catalystwan/endpoints/configuration/policy/definition/device_access.py +11 -6
  47. catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py +11 -6
  48. catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py +11 -6
  49. catalystwan/endpoints/configuration/policy/definition/mesh.py +11 -2
  50. catalystwan/endpoints/configuration/policy/definition/qos_map.py +11 -2
  51. catalystwan/endpoints/configuration/policy/definition/rewrite.py +11 -6
  52. catalystwan/endpoints/configuration/policy/definition/rule_set.py +11 -2
  53. catalystwan/endpoints/configuration/policy/definition/security_group.py +11 -6
  54. catalystwan/endpoints/configuration/policy/definition/traffic_data.py +11 -6
  55. catalystwan/endpoints/configuration/policy/definition/vpn_membership.py +11 -6
  56. catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py +11 -6
  57. catalystwan/endpoints/configuration/policy/list/app.py +16 -3
  58. catalystwan/endpoints/configuration/policy/list/app_probe.py +15 -6
  59. catalystwan/endpoints/configuration/policy/list/as_path.py +16 -3
  60. catalystwan/endpoints/configuration/policy/list/class_map.py +16 -3
  61. catalystwan/endpoints/configuration/policy/list/color.py +16 -3
  62. catalystwan/endpoints/configuration/policy/list/community.py +16 -3
  63. catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py +15 -6
  64. catalystwan/endpoints/configuration/policy/list/data_prefix.py +16 -3
  65. catalystwan/endpoints/configuration/policy/list/expanded_community.py +15 -6
  66. catalystwan/endpoints/configuration/policy/list/fqdn.py +16 -3
  67. catalystwan/endpoints/configuration/policy/list/geo_location.py +16 -3
  68. catalystwan/endpoints/configuration/policy/list/ips_signature.py +15 -6
  69. catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py +16 -3
  70. catalystwan/endpoints/configuration/policy/list/local_app.py +16 -3
  71. catalystwan/endpoints/configuration/policy/list/local_domain.py +16 -3
  72. catalystwan/endpoints/configuration/policy/list/mirror.py +16 -3
  73. catalystwan/endpoints/configuration/policy/list/policer.py +16 -3
  74. catalystwan/endpoints/configuration/policy/list/port.py +16 -3
  75. catalystwan/endpoints/configuration/policy/list/preferred_color_group.py +15 -6
  76. catalystwan/endpoints/configuration/policy/list/prefix.py +16 -4
  77. catalystwan/endpoints/configuration/policy/list/protocol_name.py +15 -6
  78. catalystwan/endpoints/configuration/policy/list/region.py +10 -2
  79. catalystwan/endpoints/configuration/policy/list/site.py +16 -3
  80. catalystwan/endpoints/configuration/policy/list/sla.py +16 -3
  81. catalystwan/endpoints/configuration/policy/list/tloc.py +16 -3
  82. catalystwan/endpoints/configuration/policy/list/url_allow_list.py +16 -3
  83. catalystwan/endpoints/configuration/policy/list/url_block_list.py +16 -3
  84. catalystwan/endpoints/configuration/policy/list/vpn.py +16 -3
  85. catalystwan/endpoints/configuration/policy/list/zone.py +16 -3
  86. catalystwan/endpoints/configuration/policy/security_template.py +3 -2
  87. catalystwan/endpoints/configuration/software_actions.py +4 -2
  88. catalystwan/endpoints/configuration_dashboard_status.py +2 -2
  89. catalystwan/endpoints/configuration_device_template.py +1 -15
  90. catalystwan/endpoints/configuration_feature_profile.py +11 -8
  91. catalystwan/endpoints/configuration_group.py +5 -28
  92. catalystwan/endpoints/configuration_settings.py +1 -90
  93. catalystwan/endpoints/endpoints_container.py +18 -82
  94. catalystwan/endpoints/real_time_monitoring/reboot_history.py +3 -1
  95. catalystwan/endpoints/tenant_migration.py +0 -2
  96. catalystwan/exceptions.py +0 -24
  97. catalystwan/integration_tests/test_find_template_values.py +18 -7
  98. catalystwan/models/common.py +2 -1898
  99. catalystwan/models/configuration/common.py +0 -1
  100. catalystwan/models/configuration/config_migration.py +36 -0
  101. catalystwan/models/configuration/feature_profile/common.py +149 -634
  102. catalystwan/models/configuration/feature_profile/sdwan/management/vpn.py +26 -0
  103. catalystwan/models/configuration/feature_profile/sdwan/policy_object/__init__.py +60 -69
  104. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/app_probe.py +20 -34
  105. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/application_list.py +6 -8
  106. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/color_list.py +5 -7
  107. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/data_prefix.py +4 -13
  108. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/expanded_community_list.py +7 -9
  109. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/fowarding_class.py +5 -7
  110. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv6_data_prefix.py +9 -11
  111. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv6_prefix_list.py +10 -25
  112. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/{policer.py → policier.py} +10 -12
  113. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/prefered_group_color.py +10 -29
  114. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/prefix_list.py +8 -23
  115. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/sla_class.py +31 -12
  116. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/standard_community.py +10 -16
  117. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/tloc_list.py +7 -8
  118. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/application_list.py +6 -8
  119. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/data_prefix.py +5 -7
  120. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/fqdn.py +5 -7
  121. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/geolocation_list.py +5 -7
  122. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ips_signature.py +5 -7
  123. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/local_domain.py +5 -7
  124. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/protocol_list.py +5 -7
  125. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/security_port.py +11 -21
  126. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/url.py +15 -36
  127. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/zone.py +18 -14
  128. catalystwan/models/configuration/feature_profile/sdwan/service/acl.py +409 -0
  129. catalystwan/models/configuration/feature_profile/sdwan/service/appqoe.py +42 -77
  130. catalystwan/models/configuration/feature_profile/sdwan/service/bgp.py +288 -0
  131. catalystwan/models/configuration/feature_profile/sdwan/service/dhcp_server.py +64 -107
  132. catalystwan/models/configuration/feature_profile/sdwan/service/eigrp.py +42 -39
  133. catalystwan/models/configuration/feature_profile/sdwan/service/lan/common.py +88 -7
  134. catalystwan/models/configuration/feature_profile/sdwan/service/lan/ethernet.py +156 -232
  135. catalystwan/models/configuration/feature_profile/sdwan/service/lan/gre.py +108 -38
  136. catalystwan/models/configuration/feature_profile/sdwan/service/lan/ipsec.py +84 -77
  137. catalystwan/models/configuration/feature_profile/sdwan/service/lan/svi.py +56 -62
  138. catalystwan/models/configuration/feature_profile/sdwan/service/lan/vpn.py +121 -112
  139. catalystwan/models/configuration/feature_profile/sdwan/service/multicast.py +57 -56
  140. catalystwan/models/configuration/feature_profile/sdwan/service/object_tracker.py +21 -15
  141. catalystwan/models/configuration/feature_profile/sdwan/{routing → service}/ospf.py +47 -55
  142. catalystwan/models/configuration/feature_profile/sdwan/{routing → service}/ospfv3.py +72 -74
  143. catalystwan/models/configuration/feature_profile/sdwan/service/route_policy.py +110 -358
  144. catalystwan/models/configuration/feature_profile/sdwan/service/service_insertion_attachment.py +25 -17
  145. catalystwan/models/configuration/feature_profile/sdwan/service/switchport.py +58 -50
  146. catalystwan/models/configuration/feature_profile/sdwan/service/tracker.py +21 -12
  147. catalystwan/models/configuration/feature_profile/sdwan/service/wireless_lan.py +31 -27
  148. catalystwan/models/configuration/feature_profile/sdwan/system/aaa.py +10 -58
  149. catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_controller.py +23 -26
  150. catalystwan/models/configuration/profile_type.py +6 -1
  151. catalystwan/models/policy/__init__.py +69 -282
  152. catalystwan/models/policy/centralized.py +29 -26
  153. catalystwan/models/policy/{definition → definitions}/access_control_list.py +17 -47
  154. catalystwan/models/policy/{definition → definitions}/access_control_list_ipv6.py +18 -42
  155. catalystwan/models/policy/{definition → definitions}/control.py +25 -48
  156. catalystwan/models/policy/{definition → definitions}/device_access.py +11 -22
  157. catalystwan/models/policy/{definition → definitions}/device_access_ipv6.py +11 -20
  158. catalystwan/models/policy/{definition → definitions}/hub_and_spoke.py +4 -18
  159. catalystwan/models/policy/{definition → definitions}/mesh.py +1 -13
  160. catalystwan/models/policy/{definition → definitions}/qos_map.py +32 -39
  161. catalystwan/models/policy/{definition → definitions}/rewrite.py +2 -12
  162. catalystwan/models/policy/{definition → definitions}/rule_set.py +48 -66
  163. catalystwan/models/policy/{definition → definitions}/security_group.py +14 -38
  164. catalystwan/models/policy/{definition → definitions}/traffic_data.py +61 -184
  165. catalystwan/models/policy/{definition → definitions}/vpn_membership.py +1 -13
  166. catalystwan/models/policy/{definition → definitions}/zone_based_firewall.py +32 -93
  167. catalystwan/models/policy/lists.py +330 -0
  168. catalystwan/models/policy/lists_entries.py +444 -0
  169. catalystwan/models/policy/localized.py +16 -34
  170. catalystwan/models/policy/policy.py +10 -14
  171. catalystwan/models/policy/policy_definition.py +173 -673
  172. catalystwan/models/policy/policy_list.py +27 -38
  173. catalystwan/models/policy/security.py +46 -145
  174. catalystwan/response.py +2 -6
  175. catalystwan/session.py +1 -1
  176. catalystwan/tests/templates/definitions/{cisco_vpn_basic.json → Basic_Cisco_VPN_Model.json} +2 -2
  177. catalystwan/tests/templates/definitions/complex_aaa.json +277 -0
  178. catalystwan/tests/templates/definitions/{cisco_vpn_complex.json → complex_cisco_vpn.json} +12 -27
  179. catalystwan/tests/templates/definitions/{cisco_aaa.json → iuo.json} +15 -44
  180. catalystwan/tests/templates/definitions/omp_1.json +11 -0
  181. catalystwan/tests/templates/definitions/{omp_vsmart_2.json → omp_2.json} +2 -16
  182. catalystwan/tests/templates/definitions/{omp_vsmart_3.json → omp_3.json} +2 -16
  183. catalystwan/tests/templates/models/__init__.py +13 -46
  184. catalystwan/tests/templates/models/cisco_aaa.py +48 -81
  185. catalystwan/tests/templates/models/cisco_banner.py +2 -2
  186. catalystwan/tests/templates/models/cisco_bfd.py +6 -4
  187. catalystwan/tests/templates/models/cisco_system.py +3 -108
  188. catalystwan/tests/templates/models/cisco_vpn.py +72 -42
  189. catalystwan/tests/templates/models/omp_vsmart.py +8 -28
  190. catalystwan/tests/templates/schemas/cedge_aaa.json +1 -1
  191. catalystwan/tests/templates/schemas/cisco_system.json +0 -242
  192. catalystwan/tests/templates/schemas/cisco_vpn.json +1 -53
  193. catalystwan/tests/templates/schemas/omp-vsmart.json +0 -20
  194. catalystwan/tests/templates/test_chose_model.py +10 -6
  195. catalystwan/tests/templates/test_deserialize_model.py +4 -4
  196. catalystwan/tests/templates/test_find_template_values.py +0 -229
  197. catalystwan/tests/templates/test_serialize_model.py +2 -1
  198. catalystwan/tests/test_cli_template.py +9 -8
  199. catalystwan/tests/test_endpoints.py +11 -42
  200. catalystwan/tests/test_templates.py +19 -16
  201. catalystwan/utils/feature_template/find_template_values.py +9 -22
  202. catalystwan/utils/timezone.py +422 -0
  203. catalystwan/workflows/tenant_migration.py +1 -1
  204. {catalystwan-0.41.2.dev9.dist-info → catalystwan-0.41.3.dist-info}/METADATA +1 -20
  205. catalystwan-0.41.3.dist-info/RECORD +353 -0
  206. catalystwan/api/builders/__init__.py +0 -14
  207. catalystwan/api/builders/feature_profiles/__init__.py +0 -0
  208. catalystwan/api/builders/feature_profiles/application_priority.py +0 -58
  209. catalystwan/api/builders/feature_profiles/builder_factory.py +0 -59
  210. catalystwan/api/builders/feature_profiles/cli.py +0 -76
  211. catalystwan/api/builders/feature_profiles/mixins.py +0 -44
  212. catalystwan/api/builders/feature_profiles/other.py +0 -79
  213. catalystwan/api/builders/feature_profiles/report.py +0 -155
  214. catalystwan/api/builders/feature_profiles/service.py +0 -248
  215. catalystwan/api/builders/feature_profiles/system.py +0 -80
  216. catalystwan/api/builders/feature_profiles/transport.py +0 -256
  217. catalystwan/api/builders/feature_profiles/uc_voice.py +0 -287
  218. catalystwan/api/templates/models/aaa_model.py +0 -387
  219. catalystwan/api/templates/models/vpn_vsmart_interface_model.py +0 -198
  220. catalystwan/api/templates/models/vpn_vsmart_model.py +0 -124
  221. catalystwan/endpoints/configuration/feature_profile/sdwan/application_priority.py +0 -107
  222. catalystwan/endpoints/configuration/feature_profile/sdwan/cli.py +0 -60
  223. catalystwan/endpoints/configuration/feature_profile/sdwan/dns_security.py +0 -83
  224. catalystwan/endpoints/configuration/feature_profile/sdwan/embedded_security.py +0 -88
  225. catalystwan/endpoints/configuration/feature_profile/sdwan/other.py +0 -62
  226. catalystwan/endpoints/configuration/feature_profile/sdwan/service.py +0 -154
  227. catalystwan/endpoints/configuration/feature_profile/sdwan/sig_security.py +0 -88
  228. catalystwan/endpoints/configuration/feature_profile/sdwan/topology.py +0 -93
  229. catalystwan/endpoints/configuration/feature_profile/sdwan/uc_voice.py +0 -77
  230. catalystwan/endpoints/configuration/network_hierarchy.py +0 -47
  231. catalystwan/endpoints/configuration/packages.py +0 -36
  232. catalystwan/endpoints/configuration/policy/abstractions.py +0 -49
  233. catalystwan/endpoints/configuration/policy/definition/aip.py +0 -52
  234. catalystwan/endpoints/configuration/policy/definition/amp.py +0 -52
  235. catalystwan/endpoints/configuration/policy/definition/app_route.py +0 -50
  236. catalystwan/endpoints/configuration/policy/definition/cflowd.py +0 -46
  237. catalystwan/endpoints/configuration/policy/definition/dial_peer.py +0 -57
  238. catalystwan/endpoints/configuration/policy/definition/dns_security.py +0 -50
  239. catalystwan/endpoints/configuration/policy/definition/fxo_port.py +0 -57
  240. catalystwan/endpoints/configuration/policy/definition/fxs_did_port.py +0 -57
  241. catalystwan/endpoints/configuration/policy/definition/fxs_port.py +0 -57
  242. catalystwan/endpoints/configuration/policy/definition/intrusion_prevention.py +0 -52
  243. catalystwan/endpoints/configuration/policy/definition/pri_isdn_port.py +0 -57
  244. catalystwan/endpoints/configuration/policy/definition/route_policy.py +0 -50
  245. catalystwan/endpoints/configuration/policy/definition/srst_phone_profile.py +0 -59
  246. catalystwan/endpoints/configuration/policy/definition/ssl_decryption.py +0 -50
  247. catalystwan/endpoints/configuration/policy/definition/ssl_decryption_utd_profile.py +0 -52
  248. catalystwan/endpoints/configuration/policy/definition/url_filtering.py +0 -50
  249. catalystwan/endpoints/configuration/policy/definition/vpn_qos_map.py +0 -50
  250. catalystwan/endpoints/configuration/policy/list/extended_community.py +0 -52
  251. catalystwan/endpoints/configuration/policy/list/fax_protocol.py +0 -48
  252. catalystwan/endpoints/configuration/policy/list/identity.py +0 -48
  253. catalystwan/endpoints/configuration/policy/list/media_profile.py +0 -52
  254. catalystwan/endpoints/configuration/policy/list/modem_pass_through.py +0 -52
  255. catalystwan/endpoints/configuration/policy/list/scalable_group_tag.py +0 -52
  256. catalystwan/endpoints/configuration/policy/list/supervisory_disconnect.py +0 -52
  257. catalystwan/endpoints/configuration/policy/list/threat_grid_api_key.py +0 -52
  258. catalystwan/endpoints/configuration/policy/list/translation_profile.py +0 -52
  259. catalystwan/endpoints/configuration/policy/list/translation_rules.py +0 -52
  260. catalystwan/endpoints/configuration/policy/list/trunkgroup.py +0 -48
  261. catalystwan/endpoints/configuration/policy/list/umbrella_data.py +0 -52
  262. catalystwan/endpoints/configuration/policy/voice_template.py +0 -39
  263. catalystwan/endpoints/configuration/policy_group.py +0 -30
  264. catalystwan/endpoints/configuration/topology_group.py +0 -51
  265. catalystwan/endpoints/configuration_general_template.py +0 -31
  266. catalystwan/endpoints/configuration_template_master.py +0 -48
  267. catalystwan/integration_tests/base.py +0 -81
  268. catalystwan/integration_tests/feature_profile/sdwan/__init__.py +0 -0
  269. catalystwan/integration_tests/feature_profile/sdwan/policy/__init__.py +0 -0
  270. catalystwan/integration_tests/feature_profile/sdwan/policy/base.py +0 -33
  271. catalystwan/integration_tests/feature_profile/sdwan/policy/test_extended_community.py +0 -33
  272. catalystwan/integration_tests/feature_profile/sdwan/policy/test_security_app_list.py +0 -32
  273. catalystwan/integration_tests/feature_profile/sdwan/test_application_priority.py +0 -433
  274. catalystwan/integration_tests/feature_profile/sdwan/test_cli.py +0 -54
  275. catalystwan/integration_tests/feature_profile/sdwan/test_dns_security.py +0 -106
  276. catalystwan/integration_tests/feature_profile/sdwan/test_other.py +0 -49
  277. catalystwan/integration_tests/feature_profile/sdwan/test_service.py +0 -1078
  278. catalystwan/integration_tests/feature_profile/sdwan/test_sig_security.py +0 -322
  279. catalystwan/integration_tests/feature_profile/sdwan/test_ssl_decryption.py +0 -85
  280. catalystwan/integration_tests/feature_profile/sdwan/test_system.py +0 -368
  281. catalystwan/integration_tests/feature_profile/sdwan/test_tracker.py +0 -127
  282. catalystwan/integration_tests/feature_profile/sdwan/test_transport.py +0 -1698
  283. catalystwan/integration_tests/feature_profile/sdwan/topology/test_topology.py +0 -93
  284. catalystwan/integration_tests/feature_profile/test_parcel.py +0 -54
  285. catalystwan/integration_tests/profile_builder/__init__.py +0 -0
  286. catalystwan/integration_tests/profile_builder/test_pb_service.py +0 -197
  287. catalystwan/integration_tests/profile_builder/test_pb_transport.py +0 -226
  288. catalystwan/integration_tests/profile_builder/test_pb_uc_voice.py +0 -277
  289. catalystwan/integration_tests/test_data/__init__.py +0 -117
  290. catalystwan/integration_tests/test_network_hierarchy.py +0 -82
  291. catalystwan/integration_tests/test_settings.py +0 -30
  292. catalystwan/models/configuration/feature_profile/parcel.py +0 -245
  293. catalystwan/models/configuration/feature_profile/sdwan/acl/__init__.py +0 -13
  294. catalystwan/models/configuration/feature_profile/sdwan/acl/ipv4acl.py +0 -298
  295. catalystwan/models/configuration/feature_profile/sdwan/acl/ipv6acl.py +0 -344
  296. catalystwan/models/configuration/feature_profile/sdwan/application_priority/__init__.py +0 -218
  297. catalystwan/models/configuration/feature_profile/sdwan/application_priority/cloud_probe.py +0 -61
  298. catalystwan/models/configuration/feature_profile/sdwan/application_priority/policy_settings.py +0 -31
  299. catalystwan/models/configuration/feature_profile/sdwan/application_priority/qos_policy.py +0 -102
  300. catalystwan/models/configuration/feature_profile/sdwan/application_priority/traffic_policy.py +0 -1057
  301. catalystwan/models/configuration/feature_profile/sdwan/cli/__init__.py +0 -23
  302. catalystwan/models/configuration/feature_profile/sdwan/cli/config.py +0 -18
  303. catalystwan/models/configuration/feature_profile/sdwan/cli/full_config.py +0 -15
  304. catalystwan/models/configuration/feature_profile/sdwan/dns_security/__init__.py +0 -13
  305. catalystwan/models/configuration/feature_profile/sdwan/dns_security/dns.py +0 -110
  306. catalystwan/models/configuration/feature_profile/sdwan/embedded_security/__init__.py +0 -23
  307. catalystwan/models/configuration/feature_profile/sdwan/embedded_security/ngfirewall.py +0 -493
  308. catalystwan/models/configuration/feature_profile/sdwan/embedded_security/policy.py +0 -171
  309. catalystwan/models/configuration/feature_profile/sdwan/other/__init__.py +0 -25
  310. catalystwan/models/configuration/feature_profile/sdwan/other/cybervision.py +0 -44
  311. catalystwan/models/configuration/feature_profile/sdwan/other/thousandeyes.py +0 -147
  312. catalystwan/models/configuration/feature_profile/sdwan/other/ucse.py +0 -110
  313. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/as_path.py +0 -22
  314. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/extended_community.py +0 -34
  315. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv4_network_object.py +0 -15
  316. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv4_service_object.py +0 -254
  317. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/mirror.py +0 -27
  318. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/network_object_group.py +0 -15
  319. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/object_group.py +0 -15
  320. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/service_object_group.py +0 -21
  321. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/aip.py +0 -64
  322. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/amp.py +0 -79
  323. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/identity.py +0 -30
  324. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/intrusion_prevention.py +0 -58
  325. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/object_group.py +0 -72
  326. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/rule_set.py +0 -137
  327. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/scalable_group_tag.py +0 -26
  328. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ssl_decryption.py +0 -126
  329. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ssl_decryption_profile.py +0 -165
  330. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/url_filtering.py +0 -148
  331. catalystwan/models/configuration/feature_profile/sdwan/routing/__init__.py +0 -26
  332. catalystwan/models/configuration/feature_profile/sdwan/routing/bgp.py +0 -609
  333. catalystwan/models/configuration/feature_profile/sdwan/service/__init__.py +0 -91
  334. catalystwan/models/configuration/feature_profile/sdwan/service/dual_router_ha.py +0 -26
  335. catalystwan/models/configuration/feature_profile/sdwan/service/lan/multilink.py +0 -101
  336. catalystwan/models/configuration/feature_profile/sdwan/service/service_chain.py +0 -38
  337. catalystwan/models/configuration/feature_profile/sdwan/sig_security/__init__.py +0 -19
  338. catalystwan/models/configuration/feature_profile/sdwan/sig_security/sig_security.py +0 -379
  339. catalystwan/models/configuration/feature_profile/sdwan/system/__init__.py +0 -59
  340. catalystwan/models/configuration/feature_profile/sdwan/system/banner.py +0 -30
  341. catalystwan/models/configuration/feature_profile/sdwan/system/basic.py +0 -290
  342. catalystwan/models/configuration/feature_profile/sdwan/system/bfd.py +0 -69
  343. catalystwan/models/configuration/feature_profile/sdwan/system/device_access.py +0 -157
  344. catalystwan/models/configuration/feature_profile/sdwan/system/device_access_ipv6.py +0 -157
  345. catalystwan/models/configuration/feature_profile/sdwan/system/global_parcel.py +0 -163
  346. catalystwan/models/configuration/feature_profile/sdwan/system/logging_parcel.py +0 -162
  347. catalystwan/models/configuration/feature_profile/sdwan/system/mrf.py +0 -75
  348. catalystwan/models/configuration/feature_profile/sdwan/system/ntp.py +0 -103
  349. catalystwan/models/configuration/feature_profile/sdwan/system/omp.py +0 -120
  350. catalystwan/models/configuration/feature_profile/sdwan/system/security.py +0 -179
  351. catalystwan/models/configuration/feature_profile/sdwan/system/snmp.py +0 -173
  352. catalystwan/models/configuration/feature_profile/sdwan/topology/__init__.py +0 -29
  353. catalystwan/models/configuration/feature_profile/sdwan/topology/custom_control.py +0 -425
  354. catalystwan/models/configuration/feature_profile/sdwan/topology/hubspoke.py +0 -60
  355. catalystwan/models/configuration/feature_profile/sdwan/topology/mesh.py +0 -23
  356. catalystwan/models/configuration/feature_profile/sdwan/trackers/__init__.py +0 -36
  357. catalystwan/models/configuration/feature_profile/sdwan/trackers/tracker.py +0 -96
  358. catalystwan/models/configuration/feature_profile/sdwan/trackers/tracker_group.py +0 -63
  359. catalystwan/models/configuration/feature_profile/sdwan/transport/__init__.py +0 -93
  360. catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_profile.py +0 -71
  361. catalystwan/models/configuration/feature_profile/sdwan/transport/gps.py +0 -37
  362. catalystwan/models/configuration/feature_profile/sdwan/transport/management/ethernet.py +0 -121
  363. catalystwan/models/configuration/feature_profile/sdwan/transport/t1e1controller.py +0 -124
  364. catalystwan/models/configuration/feature_profile/sdwan/transport/vpn.py +0 -285
  365. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/cellular.py +0 -173
  366. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/ethernet.py +0 -389
  367. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/gre.py +0 -46
  368. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/ipsec.py +0 -137
  369. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/multilink.py +0 -219
  370. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/protocol_over.py +0 -405
  371. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/t1e1serial.py +0 -195
  372. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/__init__.py +0 -62
  373. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/analog_interface.py +0 -436
  374. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/call_routing.py +0 -179
  375. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/digital_interface.py +0 -380
  376. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/dsp_farm.py +0 -193
  377. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/media_profile.py +0 -17
  378. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/server_group.py +0 -51
  379. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/srst.py +0 -86
  380. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/supervisory_disconnect.py +0 -69
  381. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/translation_profile.py +0 -42
  382. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/translation_rule.py +0 -31
  383. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/trunk_group.py +0 -26
  384. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/voice_global.py +0 -57
  385. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/voice_tenant.py +0 -40
  386. catalystwan/models/configuration/network_hierarchy/__init__.py +0 -24
  387. catalystwan/models/configuration/network_hierarchy/cflowd.py +0 -128
  388. catalystwan/models/configuration/network_hierarchy/node.py +0 -88
  389. catalystwan/models/configuration/network_hierarchy/security_logging.py +0 -91
  390. catalystwan/models/configuration/packages.py +0 -57
  391. catalystwan/models/configuration/policy_group.py +0 -74
  392. catalystwan/models/configuration/topology_group.py +0 -52
  393. catalystwan/models/policy/definition/aip.py +0 -60
  394. catalystwan/models/policy/definition/amp.py +0 -65
  395. catalystwan/models/policy/definition/app_route.py +0 -246
  396. catalystwan/models/policy/definition/cflowd.py +0 -95
  397. catalystwan/models/policy/definition/dial_peer.py +0 -60
  398. catalystwan/models/policy/definition/dns_security.py +0 -130
  399. catalystwan/models/policy/definition/fxo_port.py +0 -63
  400. catalystwan/models/policy/definition/fxs_did_port.py +0 -58
  401. catalystwan/models/policy/definition/fxs_port.py +0 -56
  402. catalystwan/models/policy/definition/intrusion_prevention.py +0 -55
  403. catalystwan/models/policy/definition/pri_isdn_port.py +0 -48
  404. catalystwan/models/policy/definition/route_policy.py +0 -187
  405. catalystwan/models/policy/definition/srst_phone_profile.py +0 -37
  406. catalystwan/models/policy/definition/ssl_decryption.py +0 -209
  407. catalystwan/models/policy/definition/ssl_decryption_utd_profile.py +0 -88
  408. catalystwan/models/policy/definition/url_filtering.py +0 -70
  409. catalystwan/models/policy/definition/vpn_qos_map.py +0 -46
  410. catalystwan/models/policy/list/app.py +0 -44
  411. catalystwan/models/policy/list/app_probe.py +0 -42
  412. catalystwan/models/policy/list/as_path.py +0 -30
  413. catalystwan/models/policy/list/class_map.py +0 -30
  414. catalystwan/models/policy/list/color.py +0 -28
  415. catalystwan/models/policy/list/communities.py +0 -83
  416. catalystwan/models/policy/list/data_ipv6_prefix.py +0 -30
  417. catalystwan/models/policy/list/data_prefix.py +0 -30
  418. catalystwan/models/policy/list/fax_protocol.py +0 -45
  419. catalystwan/models/policy/list/fqdn.py +0 -24
  420. catalystwan/models/policy/list/geo_location.py +0 -33
  421. catalystwan/models/policy/list/identity.py +0 -29
  422. catalystwan/models/policy/list/ips_signature.py +0 -27
  423. catalystwan/models/policy/list/ipv6_prefix.py +0 -33
  424. catalystwan/models/policy/list/local_app.py +0 -45
  425. catalystwan/models/policy/list/local_domain.py +0 -36
  426. catalystwan/models/policy/list/media_profile.py +0 -44
  427. catalystwan/models/policy/list/mirror.py +0 -27
  428. catalystwan/models/policy/list/modem_pass_through.py +0 -27
  429. catalystwan/models/policy/list/policer.py +0 -39
  430. catalystwan/models/policy/list/port.py +0 -33
  431. catalystwan/models/policy/list/preferred_color_group.py +0 -82
  432. catalystwan/models/policy/list/prefix.py +0 -33
  433. catalystwan/models/policy/list/protocol_name.py +0 -26
  434. catalystwan/models/policy/list/region.py +0 -45
  435. catalystwan/models/policy/list/scalable_group_tag.py +0 -30
  436. catalystwan/models/policy/list/site.py +0 -34
  437. catalystwan/models/policy/list/sla.py +0 -77
  438. catalystwan/models/policy/list/supervisory_disconnect.py +0 -62
  439. catalystwan/models/policy/list/threat_grid_api_key.py +0 -32
  440. catalystwan/models/policy/list/tloc.py +0 -32
  441. catalystwan/models/policy/list/translation_profile.py +0 -32
  442. catalystwan/models/policy/list/translation_rules.py +0 -29
  443. catalystwan/models/policy/list/trunkgroup.py +0 -56
  444. catalystwan/models/policy/list/umbrella_data.py +0 -30
  445. catalystwan/models/policy/list/url.py +0 -39
  446. catalystwan/models/policy/list/vpn.py +0 -40
  447. catalystwan/models/policy/list/zone.py +0 -46
  448. catalystwan/models/policy/voice.py +0 -77
  449. catalystwan/models/settings.py +0 -41
  450. catalystwan/models/templates.py +0 -79
  451. catalystwan/tests/builders/test_report.py +0 -60
  452. catalystwan/tests/builders/uc_voice.py +0 -85
  453. catalystwan/tests/models/__init__.py +0 -0
  454. catalystwan/tests/models/configuration/feature_profile/sdwan/policy_object/security/test_url.py +0 -73
  455. catalystwan/tests/models/test_digital_interface.py +0 -56
  456. catalystwan/tests/templates/definitions/aaa_basic.json +0 -96
  457. catalystwan/tests/templates/definitions/aaa_complex.json +0 -464
  458. catalystwan/tests/templates/definitions/cisco_aaa_complex.json +0 -361
  459. catalystwan/tests/templates/definitions/cisco_logging_complex.json +0 -268
  460. catalystwan/tests/templates/definitions/cisco_ntp_complex.json +0 -143
  461. catalystwan/tests/templates/definitions/cisco_omp_complex.json +0 -175
  462. catalystwan/tests/templates/definitions/cisco_ospf_complex.json +0 -302
  463. catalystwan/tests/templates/definitions/cisco_sig.json +0 -405
  464. catalystwan/tests/templates/definitions/cisco_snmp_complex.json +0 -258
  465. catalystwan/tests/templates/definitions/cisco_system_complex.json +0 -502
  466. catalystwan/tests/templates/definitions/cisco_vpn_interface_complex.json +0 -821
  467. catalystwan/tests/templates/definitions/omp_vsmart_1.json +0 -26
  468. catalystwan/tests/templates/definitions/omp_vsmart_complex.json +0 -73
  469. catalystwan/tests/templates/definitions/security_vsmart_complex.json +0 -24
  470. catalystwan/tests/templates/definitions/system_vsmart_complex.json +0 -193
  471. catalystwan/tests/templates/definitions/vpn_vsmart_basic.json +0 -17
  472. catalystwan/tests/templates/definitions/vpn_vsmart_complex.json +0 -179
  473. catalystwan/tests/templates/definitions/vpn_vsmart_interface_basic.json +0 -42
  474. catalystwan/tests/templates/definitions/vpn_vsmart_interface_complex.json +0 -208
  475. catalystwan/tests/templates/models/aaa.py +0 -106
  476. catalystwan/tests/templates/models/cisco_logging.py +0 -65
  477. catalystwan/tests/templates/models/cisco_ntp.py +0 -17
  478. catalystwan/tests/templates/models/cisco_omp.py +0 -37
  479. catalystwan/tests/templates/models/cisco_ospf.py +0 -60
  480. catalystwan/tests/templates/models/cisco_secure_internet_gateway.py +0 -95
  481. catalystwan/tests/templates/models/cisco_snmp.py +0 -40
  482. catalystwan/tests/templates/models/cisco_vpn_interface.py +0 -200
  483. catalystwan/tests/templates/models/security_vsmart.py +0 -11
  484. catalystwan/tests/templates/models/system_vsmart.py +0 -37
  485. catalystwan/tests/templates/models/vpn_vsmart.py +0 -32
  486. catalystwan/tests/templates/models/vpn_vsmart_interface.py +0 -54
  487. catalystwan/tests/templates/schemas/aaa.json +0 -1096
  488. catalystwan/tests/templates/schemas/cisco_logging.json +0 -577
  489. catalystwan/tests/templates/schemas/cisco_ntp.json +0 -265
  490. catalystwan/tests/templates/schemas/cisco_omp.json +0 -479
  491. catalystwan/tests/templates/schemas/cisco_ospf.json +0 -908
  492. catalystwan/tests/templates/schemas/cisco_secure_internet_gateway.json +0 -1520
  493. catalystwan/tests/templates/schemas/cisco_snmp.json +0 -561
  494. catalystwan/tests/templates/schemas/cisco_vpn_interface.json +0 -3348
  495. catalystwan/tests/templates/schemas/security-vsmart.json +0 -58
  496. catalystwan/tests/templates/schemas/system-vsmart.json +0 -2585
  497. catalystwan/tests/templates/schemas/vpn-vsmart-interface.json +0 -859
  498. catalystwan/tests/templates/schemas/vpn-vsmart.json +0 -445
  499. catalystwan/tests/templates/test_find_template_values_2.py +0 -193
  500. catalystwan/tests/test_feature_profile_api.py +0 -282
  501. catalystwan/tests/test_models_common.py +0 -53
  502. catalystwan/utils/model.py +0 -48
  503. catalystwan/utils/persona.py +0 -5
  504. catalystwan/utils/type_check.py +0 -22
  505. catalystwan/workflows/backup_restore_device_templates.py +0 -467
  506. catalystwan-0.41.2.dev9.dist-info/RECORD +0 -641
  507. /catalystwan/tests/templates/definitions/{cisco_banner.json → banner_1.json} +0 -0
  508. {catalystwan-0.41.2.dev9.dist-info → catalystwan-0.41.3.dist-info}/LICENSE +0 -0
  509. {catalystwan-0.41.2.dev9.dist-info → catalystwan-0.41.3.dist-info}/WHEEL +0 -0
@@ -1,36 +0,0 @@
1
- # Copyright 2022 Cisco Systems, Inc. and its affiliates
2
-
3
- from typing import List, Literal
4
-
5
- from pydantic import BaseModel, ConfigDict, Field
6
-
7
- from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
8
-
9
-
10
- class LocalDomainListEntry(BaseModel):
11
- model_config = ConfigDict(populate_by_name=True)
12
-
13
- name_server: str = Field(
14
- pattern="^[^*+].*",
15
- serialization_alias="nameServer",
16
- validation_alias="nameServer",
17
- max_length=240,
18
- description="Must be valid std regex."
19
- "String cannot start with a '*' or a '+', be empty, or be more than 240 characters",
20
- )
21
-
22
-
23
- class LocalDomainList(PolicyListBase):
24
- type: Literal["localDomain"] = "localDomain"
25
- entries: List[LocalDomainListEntry] = []
26
-
27
- def add_domain(self, name_server: str) -> None:
28
- self.entries.append(LocalDomainListEntry(name_server=name_server))
29
-
30
-
31
- class LocalDomainListEditPayload(LocalDomainList, PolicyListId):
32
- pass
33
-
34
-
35
- class LocalDomainListInfo(LocalDomainList, PolicyListInfo):
36
- pass
@@ -1,44 +0,0 @@
1
- # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
-
3
- from typing import List, Literal, Union
4
-
5
- from pydantic import BaseModel, ConfigDict, Field
6
- from typing_extensions import Annotated
7
-
8
- from catalystwan.models.common import IntStr, SpaceSeparatedMpDtmfList
9
- from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
10
-
11
-
12
- class CodecEntry(BaseModel):
13
- model_config = ConfigDict(populate_by_name=True)
14
- type: Literal["codec"] = "codec"
15
- pref_num: IntStr = Field(ge=1, serialization_alias="prefNum", validation_alias="prefNum")
16
- value: str
17
-
18
-
19
- class DtmfEntry(BaseModel):
20
- model_config = ConfigDict(populate_by_name=True)
21
- type: Literal["dtmf"] = "dtmf"
22
- value: SpaceSeparatedMpDtmfList
23
-
24
-
25
- AnyMediaProfileListEntry = Annotated[
26
- Union[
27
- CodecEntry,
28
- DtmfEntry,
29
- ],
30
- Field(discriminator="type"),
31
- ]
32
-
33
-
34
- class MediaProfileList(PolicyListBase):
35
- type: Literal["mediaProfile", "mediaprofile"] = "mediaProfile"
36
- entries: List[AnyMediaProfileListEntry] = Field(default_factory=list)
37
-
38
-
39
- class MediaProfileListEditPayload(MediaProfileList, PolicyListId):
40
- pass
41
-
42
-
43
- class MediaProfileListInfo(MediaProfileList, PolicyListInfo):
44
- pass
@@ -1,27 +0,0 @@
1
- # Copyright 2022 Cisco Systems, Inc. and its affiliates
2
-
3
- from typing import List, Literal
4
-
5
- from pydantic import BaseModel, ConfigDict, Field, IPvAnyAddress
6
-
7
- from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
8
-
9
-
10
- class MirrorListEntry(BaseModel):
11
- model_config = ConfigDict(populate_by_name=True)
12
-
13
- remote_dest: IPvAnyAddress = Field(serialization_alias="remoteDest", validation_alias="remoteDest")
14
- source: IPvAnyAddress
15
-
16
-
17
- class MirrorList(PolicyListBase):
18
- type: Literal["mirror"] = "mirror"
19
- entries: List[MirrorListEntry] = []
20
-
21
-
22
- class MirrorListEditPayload(MirrorList, PolicyListId):
23
- pass
24
-
25
-
26
- class MirrorListInfo(MirrorList, PolicyListInfo):
27
- pass
@@ -1,27 +0,0 @@
1
- # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
-
3
- from typing import List, Literal
4
-
5
- from pydantic import BaseModel, ConfigDict, Field
6
-
7
- from catalystwan.models.common import FaxFallBackProtocols
8
- from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
9
-
10
-
11
- class ModemPassThroughListEntry(BaseModel):
12
- model_config = ConfigDict(populate_by_name=True)
13
- protocol: FaxFallBackProtocols
14
-
15
-
16
- class ModemPassThroughList(PolicyListBase):
17
- model_config = ConfigDict(populate_by_name=True)
18
- type: Literal["modemPassthrough", "modempassthrough"] = "modemPassthrough"
19
- entries: List[ModemPassThroughListEntry] = Field(default_factory=list, max_length=1)
20
-
21
-
22
- class ModemPassThroughListEditPayload(ModemPassThroughList, PolicyListId):
23
- pass
24
-
25
-
26
- class ModemPassThroughListInfo(ModemPassThroughList, PolicyListInfo):
27
- pass
@@ -1,39 +0,0 @@
1
- # Copyright 2022 Cisco Systems, Inc. and its affiliates
2
-
3
- from typing import List, Literal
4
-
5
- from pydantic import BaseModel, ConfigDict, Field
6
-
7
- from catalystwan.models.common import IntStr
8
- from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
9
-
10
- PolicerExceedAction = Literal[
11
- "drop",
12
- "remark",
13
- ]
14
-
15
-
16
- class PolicerListEntry(BaseModel):
17
- model_config = ConfigDict(populate_by_name=True)
18
-
19
- burst: IntStr = Field(description="bytes", ge=15_000, le=10_000_000)
20
- exceed: PolicerExceedAction = "drop"
21
- rate: IntStr = Field(description="bps", ge=8, le=100_000_000_000)
22
-
23
-
24
- class PolicerList(PolicyListBase):
25
- type: Literal["policer"] = "policer"
26
- entries: List[PolicerListEntry] = []
27
-
28
- def police(self, burst: int, rate: int, exceed: PolicerExceedAction = "drop") -> None:
29
- # Policer list must have only single entry!
30
- entry = PolicerListEntry(burst=burst, exceed=exceed, rate=rate)
31
- self._add_entry(entry, single=True)
32
-
33
-
34
- class PolicerListEditPayload(PolicerList, PolicyListId):
35
- pass
36
-
37
-
38
- class PolicerListInfo(PolicerList, PolicyListInfo):
39
- pass
@@ -1,33 +0,0 @@
1
- # Copyright 2022 Cisco Systems, Inc. and its affiliates
2
-
3
- from typing import List, Literal
4
-
5
- from pydantic import BaseModel, field_validator
6
-
7
- from catalystwan.models.common import IntRangeStr
8
- from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
9
-
10
-
11
- class PortListEntry(BaseModel):
12
- port: IntRangeStr
13
-
14
- @field_validator("port")
15
- @classmethod
16
- def check_port(cls, port: IntRangeStr):
17
- for i in port:
18
- if i is not None:
19
- assert 0 <= i <= 65_535
20
- return port
21
-
22
-
23
- class PortList(PolicyListBase):
24
- type: Literal["port"] = "port"
25
- entries: List[PortListEntry] = []
26
-
27
-
28
- class PortListEditPayload(PortList, PolicyListId):
29
- pass
30
-
31
-
32
- class PortListInfo(PortList, PolicyListInfo):
33
- pass
@@ -1,82 +0,0 @@
1
- # Copyright 2022 Cisco Systems, Inc. and its affiliates
2
-
3
- from typing import List, Literal, Optional, Set, Tuple
4
-
5
- from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator
6
-
7
- from catalystwan.models.common import TLOCColor, str_as_str_list
8
- from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
9
-
10
- PathPreference = Literal[
11
- "direct-path",
12
- "multi-hop-path",
13
- "all-paths",
14
- ]
15
-
16
-
17
- class ColorGroupPreference(BaseModel):
18
- model_config = ConfigDict(populate_by_name=True)
19
-
20
- color_preference: Set[TLOCColor] = Field(serialization_alias="colorPreference", validation_alias="colorPreference")
21
- path_preference: Optional[PathPreference] = Field(
22
- default=None, serialization_alias="pathPreference", validation_alias="pathPreference"
23
- )
24
-
25
- _color_pref = field_validator("color_preference", mode="before")(str_as_str_list)
26
-
27
- @staticmethod
28
- def from_color_set_and_path(
29
- color_preference: Set[TLOCColor], path_preference: Optional[PathPreference] = None
30
- ) -> "ColorGroupPreference":
31
- return ColorGroupPreference(color_preference=color_preference, path_preference=path_preference)
32
-
33
-
34
- class PreferredColorGroupListEntry(BaseModel):
35
- model_config = ConfigDict(populate_by_name=True)
36
-
37
- primary_preference: ColorGroupPreference = Field(
38
- serialization_alias="primaryPreference", validation_alias="primaryPreference"
39
- )
40
- secondary_preference: Optional[ColorGroupPreference] = Field(
41
- default=None, serialization_alias="secondaryPreference", validation_alias="secondaryPreference"
42
- )
43
- tertiary_preference: Optional[ColorGroupPreference] = Field(
44
- default=None, serialization_alias="tertiaryPreference", validation_alias="tertiaryPreference"
45
- )
46
-
47
- @model_validator(mode="after")
48
- def check_optional_preferences_order(self):
49
- assert not (self.secondary_preference is None and self.tertiary_preference is not None)
50
- return self
51
-
52
-
53
- class PreferredColorGroupList(PolicyListBase):
54
- type: Literal["preferredColorGroup"] = "preferredColorGroup"
55
- entries: List[PreferredColorGroupListEntry] = []
56
-
57
- def assign_color_groups(
58
- self,
59
- primary: Tuple[Set[TLOCColor], Optional[PathPreference]],
60
- secondary: Optional[Tuple[Set[TLOCColor], Optional[PathPreference]]] = None,
61
- tertiary: Optional[Tuple[Set[TLOCColor], Optional[PathPreference]]] = None,
62
- ) -> PreferredColorGroupListEntry:
63
- primary_preference = ColorGroupPreference.from_color_set_and_path(*primary)
64
- secondary_preference = (
65
- ColorGroupPreference.from_color_set_and_path(*secondary) if secondary is not None else None
66
- )
67
- tertiary_preference = ColorGroupPreference.from_color_set_and_path(*tertiary) if tertiary is not None else None
68
- entry = PreferredColorGroupListEntry(
69
- primary_preference=primary_preference,
70
- secondary_preference=secondary_preference,
71
- tertiary_preference=tertiary_preference,
72
- )
73
- self._add_entry(entry=entry, single=True)
74
- return entry
75
-
76
-
77
- class PreferredColorGroupListEditPayload(PreferredColorGroupList, PolicyListId):
78
- pass
79
-
80
-
81
- class PreferredColorGroupListInfo(PreferredColorGroupList, PolicyListInfo):
82
- pass
@@ -1,33 +0,0 @@
1
- # Copyright 2022 Cisco Systems, Inc. and its affiliates
2
-
3
- from ipaddress import IPv4Network
4
- from typing import List, Literal, Optional
5
-
6
- from pydantic import BaseModel, ConfigDict, Field
7
-
8
- from catalystwan.models.common import IntStr
9
- from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
10
-
11
-
12
- class PrefixListEntry(BaseModel):
13
- model_config = ConfigDict(populate_by_name=True)
14
-
15
- ip_prefix: IPv4Network = Field(serialization_alias="ipPrefix", validation_alias="ipPrefix")
16
- ge: Optional[IntStr] = Field(default=None, ge=0, le=32)
17
- le: Optional[IntStr] = Field(default=None, ge=0, le=32)
18
-
19
-
20
- class PrefixList(PolicyListBase):
21
- type: Literal["prefix"] = "prefix"
22
- entries: List[PrefixListEntry] = []
23
-
24
- def add_prefix(self, prefix: IPv4Network, ge: Optional[int] = None, le: Optional[int] = None) -> None:
25
- self._add_entry(PrefixListEntry(ip_prefix=prefix, ge=ge, le=le))
26
-
27
-
28
- class PrefixListEditPayload(PrefixList, PolicyListId):
29
- pass
30
-
31
-
32
- class PrefixListInfo(PrefixList, PolicyListInfo):
33
- pass
@@ -1,26 +0,0 @@
1
- # Copyright 2022 Cisco Systems, Inc. and its affiliates
2
-
3
- from typing import List, Literal
4
-
5
- from pydantic import BaseModel, ConfigDict, Field
6
-
7
- from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
8
-
9
-
10
- class ProtocolNameListEntry(BaseModel):
11
- model_config = ConfigDict(populate_by_name=True)
12
-
13
- protocol_name: str = Field(serialization_alias="protocolName", validation_alias="protocolName")
14
-
15
-
16
- class ProtocolNameList(PolicyListBase):
17
- type: Literal["protocolName"] = "protocolName"
18
- entries: List[ProtocolNameListEntry] = []
19
-
20
-
21
- class ProtocolNameListEditPayload(ProtocolNameList, PolicyListId):
22
- pass
23
-
24
-
25
- class ProtocolNameListInfo(ProtocolNameList, PolicyListInfo):
26
- pass
@@ -1,45 +0,0 @@
1
- # Copyright 2022 Cisco Systems, Inc. and its affiliates
2
-
3
- from typing import List, Literal, Set, Tuple
4
-
5
- from pydantic import BaseModel, ConfigDict, Field, field_validator
6
-
7
- from catalystwan.models.common import IntRangeStr
8
- from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
9
-
10
-
11
- class RegionListEntry(BaseModel):
12
- model_config = ConfigDict(populate_by_name=True)
13
-
14
- region_id: IntRangeStr = Field(
15
- serialization_alias="regionId", validation_alias="regionId", description="Number in range 0-63"
16
- )
17
-
18
- @field_validator("region_id")
19
- @classmethod
20
- def check_region_range(cls, region_ids: IntRangeStr):
21
- for i in region_ids:
22
- if i is not None:
23
- assert 0 <= i <= 63
24
- return region_ids
25
-
26
-
27
- class RegionList(PolicyListBase):
28
- type: Literal["region"] = "region"
29
- entries: List[RegionListEntry] = []
30
-
31
- def add_regions(self, regions: Set[int]):
32
- for region in regions:
33
- self._add_entry(RegionListEntry(region_id=(region, None)))
34
-
35
- def add_region_range(self, region_range: Tuple[int, int]):
36
- entry = RegionListEntry(region_id=region_range)
37
- self._add_entry(entry)
38
-
39
-
40
- class RegionListEditPayload(RegionList, PolicyListId):
41
- pass
42
-
43
-
44
- class RegionListInfo(RegionList, PolicyListInfo):
45
- pass
@@ -1,30 +0,0 @@
1
- # Copyright 2022 Cisco Systems, Inc. and its affiliates
2
-
3
- from typing import List, Literal
4
-
5
- from pydantic import BaseModel, ConfigDict, Field
6
-
7
- from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
8
-
9
-
10
- class ScalableGroupTagListEntry(BaseModel):
11
- model_config = ConfigDict(populate_by_name=True)
12
-
13
- sgt_name: str = Field(serialization_alias="sgtName", validation_alias="sgtName")
14
- tag: str = Field(serialization_alias="tag", validation_alias="tag")
15
-
16
-
17
- class ScalableGroupTagList(PolicyListBase):
18
- type: Literal["scalablegrouptag", "scalableGroupTag"] = "scalableGroupTag"
19
- entries: List[ScalableGroupTagListEntry] = Field(default_factory=list)
20
-
21
- def add_entry(self, sgt_name: str, tag: str) -> None:
22
- self._add_entry(ScalableGroupTagListEntry(sgt_name=sgt_name, tag=tag))
23
-
24
-
25
- class ScalableGroupTagListEditPayload(ScalableGroupTagList, PolicyListId):
26
- pass
27
-
28
-
29
- class ScalableGroupTagListInfo(ScalableGroupTagList, PolicyListInfo):
30
- pass
@@ -1,34 +0,0 @@
1
- # Copyright 2022 Cisco Systems, Inc. and its affiliates
2
-
3
- from typing import List, Literal, Set, Tuple
4
-
5
- from pydantic import BaseModel, ConfigDict, Field
6
-
7
- from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
8
-
9
-
10
- class SiteListEntry(BaseModel):
11
- model_config = ConfigDict(populate_by_name=True)
12
-
13
- site_id: str = Field(serialization_alias="siteId", validation_alias="siteId")
14
-
15
-
16
- class SiteList(PolicyListBase):
17
- type: Literal["site"] = "site"
18
- entries: List[SiteListEntry] = []
19
-
20
- def add_sites(self, sites: Set[int]):
21
- for site in sites:
22
- self._add_entry(SiteListEntry(site_id=str(site)))
23
-
24
- def add_site_range(self, site_range: Tuple[int, int]):
25
- entry = SiteListEntry(site_id=f"{site_range[0]}-{site_range[1]}")
26
- self._add_entry(entry)
27
-
28
-
29
- class SiteListEditPayload(SiteList, PolicyListId):
30
- pass
31
-
32
-
33
- class SiteListInfo(SiteList, PolicyListInfo):
34
- pass
@@ -1,77 +0,0 @@
1
- # Copyright 2022 Cisco Systems, Inc. and its affiliates
2
-
3
- from typing import List, Literal, Optional
4
- from uuid import UUID
5
-
6
- from pydantic import BaseModel, ConfigDict, Field
7
-
8
- from catalystwan.models.common import IntStr, SLAClassCriteria
9
- from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
10
-
11
-
12
- class FallbackBestTunnel(BaseModel):
13
- model_config = ConfigDict(populate_by_name=True)
14
-
15
- criteria: Optional[SLAClassCriteria] = None
16
- jitter_variance: Optional[IntStr] = Field(
17
- default=None,
18
- serialization_alias="jitterVariance",
19
- validation_alias="jitterVariance",
20
- description="jitter variance in ms",
21
- ge=1,
22
- le=1000,
23
- )
24
- latency_variance: Optional[IntStr] = Field(
25
- default=None,
26
- serialization_alias="latencyVariance",
27
- validation_alias="latencyVariance",
28
- description="latency variance in ms",
29
- ge=1,
30
- le=1000,
31
- )
32
- loss_variance: Optional[IntStr] = Field(
33
- default=None,
34
- serialization_alias="lossVariance",
35
- validation_alias="lossVariance",
36
- description="loss variance as percentage",
37
- ge=0,
38
- le=100,
39
- )
40
-
41
-
42
- class SLAClassListEntry(BaseModel):
43
- model_config = ConfigDict(populate_by_name=True)
44
-
45
- latency: Optional[IntStr] = Field(default=None, ge=1, le=1000)
46
- loss: Optional[IntStr] = Field(default=None, ge=0, le=100)
47
- jitter: Optional[IntStr] = Field(default=None, ge=1, le=1000)
48
- app_probe_class: Optional[UUID] = Field(
49
- default=None, serialization_alias="appProbeClass", validation_alias="appProbeClass"
50
- )
51
- fallback_best_tunnel: Optional[FallbackBestTunnel] = Field(
52
- default=None, serialization_alias="fallbackBestTunnel", validation_alias="fallbackBestTunnel"
53
- )
54
-
55
-
56
- class SLAClassList(PolicyListBase):
57
- type: Literal["sla"] = "sla"
58
- entries: List[SLAClassListEntry] = []
59
-
60
- def assign_app_probe_class(
61
- self,
62
- app_probe_class_id: UUID,
63
- latency: Optional[int] = None,
64
- loss: Optional[int] = None,
65
- jitter: Optional[int] = None,
66
- ) -> SLAClassListEntry:
67
- entry = SLAClassListEntry(latency=latency, loss=loss, jitter=jitter, app_probe_class=app_probe_class_id)
68
- self._add_entry(entry, single=True)
69
- return entry
70
-
71
-
72
- class SLAClassListEditPayload(SLAClassList, PolicyListId):
73
- pass
74
-
75
-
76
- class SLAClassListInfo(SLAClassList, PolicyListInfo):
77
- pass
@@ -1,62 +0,0 @@
1
- # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
-
3
- from typing import List, Literal, Union
4
-
5
- from pydantic import BaseModel, ConfigDict, Field
6
- from typing_extensions import Annotated
7
-
8
- from catalystwan.models.common import IntStr, SpaceSeparatedCustomCadenceRanges
9
- from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
10
-
11
-
12
- class DualToneModeEntry(BaseModel):
13
- model_config = ConfigDict(populate_by_name=True)
14
- mode: Literal["dualtone_mode"] = "dualtone_mode"
15
- cadence_variable: IntStr = Field(
16
- ge=0, le=200, serialization_alias="cadenceVariable", validation_alias="cadenceVariable"
17
- )
18
- frequency_max_delay: IntStr = Field(
19
- ge=10, le=100, serialization_alias="frequencyMaxDelay", validation_alias="frequencyMaxDelay"
20
- )
21
- frequency_max_deviation: IntStr = Field(
22
- ge=10, le=125, serialization_alias="frequencyMaxDeviation", validation_alias="frequencyMaxDeviation"
23
- )
24
- frequency_max_power: IntStr = Field(
25
- ge=0, le=20, serialization_alias="frequencyMaxPower", validation_alias="frequencyMaxPower"
26
- )
27
- frequency_min_power: IntStr = Field(
28
- ge=10, le=35, serialization_alias="frequencyMinPower", validation_alias="frequencyMinPower"
29
- )
30
- frequency_min_power_twist: IntStr = Field(
31
- ge=0, le=15, serialization_alias="frequencyMinPowerTwist", validation_alias="frequencyMinPowerTwist"
32
- )
33
-
34
-
35
- class CustomModeEntry(BaseModel):
36
- model_config = ConfigDict(populate_by_name=True)
37
- mode: Literal["custom_mode"] = "custom_mode"
38
- dualtone_type: str = Field(validation_alias="dualtoneType", serialization_alias="dualtoneType")
39
- cadence: SpaceSeparatedCustomCadenceRanges
40
- dualtone_frequency1: IntStr = Field(
41
- ge=300, le=3600, validation_alias="dualtoneFrequency1", serialization_alias="dualtoneFrequency1"
42
- )
43
- dualtone_frequency2: IntStr = Field(
44
- ge=300, le=3600, validation_alias="dualtoneFrequency2", serialization_alias="dualtoneFrequency2"
45
- )
46
-
47
-
48
- SupervisoryDisconnectListEntry = Annotated[Union[DualToneModeEntry, CustomModeEntry], Field(discriminator="mode")]
49
-
50
-
51
- class SupervisoryDisconnectList(PolicyListBase):
52
- model_config = ConfigDict(populate_by_name=True)
53
- type: Literal["supervisoryDisc", "supervisorydisc"] = "supervisoryDisc"
54
- entries: List[SupervisoryDisconnectListEntry] = Field(default_factory=list)
55
-
56
-
57
- class SupervisoryDisconnectListEditPayload(SupervisoryDisconnectList, PolicyListId):
58
- pass
59
-
60
-
61
- class SupervisoryDisconnectListInfo(SupervisoryDisconnectList, PolicyListInfo):
62
- pass
@@ -1,32 +0,0 @@
1
- # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
-
3
- from typing import List, Literal
4
-
5
- from pydantic import BaseModel, ConfigDict, Field
6
-
7
- from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
8
-
9
- ServerRegion = Literal["nam", "eur"]
10
-
11
-
12
- class ThreatGridApiKeyEntry(BaseModel):
13
- model_config = ConfigDict(populate_by_name=True)
14
- region: ServerRegion
15
- api_key: str = Field(validation_alias="apikey", serialization_alias="apikey")
16
-
17
-
18
- class ThreatGridApiKeyList(PolicyListBase):
19
- type: Literal["threatGridApiKey"] = "threatGridApiKey"
20
- entries: List[ThreatGridApiKeyEntry] = []
21
-
22
- def add_entry(self, api_key: str, region: ServerRegion) -> None:
23
- entry = ThreatGridApiKeyEntry(api_key=api_key, region=region)
24
- self.entries.append(entry)
25
-
26
-
27
- class ThreatGridApiKeyListEditPayload(ThreatGridApiKeyList, PolicyListId):
28
- pass
29
-
30
-
31
- class ThreatGridApiKeyListInfo(ThreatGridApiKeyList, PolicyListInfo):
32
- pass
@@ -1,32 +0,0 @@
1
- # Copyright 2022 Cisco Systems, Inc. and its affiliates
2
-
3
- from ipaddress import IPv4Address
4
- from typing import List, Literal, Optional
5
-
6
- from pydantic import BaseModel, Field
7
-
8
- from catalystwan.models.common import EncapType, IntStr, TLOCColor
9
- from catalystwan.models.policy.policy_list import PolicyListBase, PolicyListId, PolicyListInfo
10
-
11
-
12
- class TLOCListEntry(BaseModel):
13
- tloc: IPv4Address
14
- color: TLOCColor
15
- encap: EncapType
16
- preference: Optional[IntStr] = Field(default=None, ge=0, le=2**32 - 1)
17
-
18
-
19
- class TLOCList(PolicyListBase):
20
- type: Literal["tloc"] = "tloc"
21
- entries: List[TLOCListEntry] = []
22
-
23
- def add_tloc(self, tloc: IPv4Address, color: TLOCColor, encap: EncapType, preference: Optional[int] = None) -> None:
24
- self.entries.append(TLOCListEntry(tloc=tloc, color=color, encap=encap, preference=preference))
25
-
26
-
27
- class TLOCListEditPayload(TLOCList, PolicyListId):
28
- pass
29
-
30
-
31
- class TLOCListInfo(TLOCList, PolicyListInfo):
32
- pass