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
@@ -0,0 +1,26 @@
1
+ # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
+
3
+ from typing import Any, List, Optional
4
+
5
+ from pydantic import BaseModel, Field
6
+
7
+ from catalystwan.api.configuration_groups.parcel import Default
8
+ from catalystwan.models.configuration.feature_profile.common import (
9
+ DNSIPv4,
10
+ DNSIPv6,
11
+ HostMapping,
12
+ WANIPv4StaticRoute,
13
+ WANIPv6StaticRoute,
14
+ )
15
+
16
+
17
+ class ManagementVPN(BaseModel):
18
+ # TODO (mlembke): vpn_id can't have other value, it needs to be constant. How to do that?
19
+ vpn_id: Default[int] = Field(default=Default(value=512), frozen=True, alias="vpnId")
20
+ ipv4_routes: Optional[List[WANIPv4StaticRoute]] = Field(default=None, alias="ipv4Route")
21
+ ipv6_routes: Optional[List[WANIPv6StaticRoute]] = Field(default=None, alias="ipv6Route")
22
+ dns_ipv4: Optional[DNSIPv4] = Field(default=None, alias="dnsIpv4")
23
+ dns_ipv6: Optional[DNSIPv6] = Field(default=None, alias="dnsIpv6")
24
+ new_host_mapping: Optional[List[HostMapping]] = Field(default=None, alias="newHostMapping")
25
+ # TODO (mlembke): add interfaces
26
+ interface: Optional[Any] = Field(default=None)
@@ -1,30 +1,24 @@
1
1
  # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
2
 
3
- from typing import List, Union
3
+ from typing import List, Mapping, Union
4
4
 
5
5
  from pydantic import Field
6
6
  from typing_extensions import Annotated
7
7
 
8
- from .policy.app_probe import AppProbeEntry, AppProbeMapItem, AppProbeParcel
8
+ from .policy.app_probe import AppProbeMapItem, AppProbeParcel
9
9
  from .policy.application_list import ApplicationFamilyListEntry, ApplicationListEntry, ApplicationListParcel
10
- from .policy.as_path import AsPathParcel
11
10
  from .policy.color_list import ColorEntry, ColorParcel
12
11
  from .policy.data_prefix import DataPrefixEntry, DataPrefixParcel
13
12
  from .policy.expanded_community_list import ExpandedCommunityParcel
14
- from .policy.extended_community import ExtendedCommunityParcel
15
13
  from .policy.fowarding_class import FowardingClassParcel, FowardingClassQueueEntry
16
14
  from .policy.ipv6_data_prefix import IPv6DataPrefixEntry, IPv6DataPrefixParcel
17
15
  from .policy.ipv6_prefix_list import IPv6PrefixListEntry, IPv6PrefixListParcel
18
- from .policy.mirror import MirrorParcel
19
- from .policy.policer import PolicerEntry, PolicerParcel
16
+ from .policy.policier import PolicierEntry, PolicierParcel
20
17
  from .policy.prefered_group_color import Preference, PreferredColorGroupEntry, PreferredColorGroupParcel
21
18
  from .policy.prefix_list import PrefixListEntry, PrefixListParcel
22
- from .policy.service_object_group import ServiceObjectGroupParcel
23
- from .policy.sla_class import FallbackBestTunnel, SLAClassCriteria, SLAClassListEntry, SLAClassParcel
19
+ from .policy.sla_class import FallbackBestTunnel, SLAAppProbeClass, SLAClassCriteria, SLAClassListEntry, SLAClassParcel
24
20
  from .policy.standard_community import StandardCommunityEntry, StandardCommunityParcel
25
21
  from .policy.tloc_list import TlocEntry, TlocParcel
26
- from .security.aip import AdvancedInspectionProfileParcel
27
- from .security.amp import AdvancedMalwareProtectionParcel
28
22
  from .security.application_list import (
29
23
  SecurityApplicationFamilyListEntry,
30
24
  SecurityApplicationListEntry,
@@ -33,85 +27,91 @@ from .security.application_list import (
33
27
  from .security.data_prefix import SecurityDataPrefixEntry, SecurityDataPrefixParcel
34
28
  from .security.fqdn import FQDNDomainParcel, FQDNListEntry
35
29
  from .security.geolocation_list import GeoLocationListEntry, GeoLocationListParcel
36
- from .security.identity import IdentityEntry, IdentityParcel
37
- from .security.intrusion_prevention import IntrusionPreventionParcel
38
30
  from .security.ips_signature import IPSSignatureListEntry, IPSSignatureParcel
39
31
  from .security.local_domain import LocalDomainListEntry, LocalDomainParcel
40
- from .security.object_group import SecurityObjectGroupEntries, SecurityObjectGroupParcel
41
32
  from .security.protocol_list import ProtocolListEntry, ProtocolListParcel
42
- from .security.scalable_group_tag import ScalableGroupTagEntry, ScalableGroupTagParcel
43
33
  from .security.security_port import SecurityPortListEntry, SecurityPortParcel
44
- from .security.ssl_decryption import SslDecryptionParcel
45
- from .security.ssl_decryption_profile import SslDecryptionProfileParcel
46
- from .security.url import BaseURLListEntry, URLParcel
47
- from .security.url_filtering import UrlFilteringParcel
34
+ from .security.url import BaseURLListEntry, URLAllowParcel, URLBlockParcel
48
35
  from .security.zone import SecurityZoneListEntry, SecurityZoneListParcel
49
36
 
50
37
  AnyPolicyObjectParcel = Annotated[
51
38
  Union[
52
- AdvancedInspectionProfileParcel,
53
- AdvancedMalwareProtectionParcel,
54
39
  AppProbeParcel,
55
40
  ApplicationListParcel,
56
- AsPathParcel,
57
41
  ColorParcel,
58
42
  DataPrefixParcel,
59
43
  ExpandedCommunityParcel,
60
- ExtendedCommunityParcel,
61
- FQDNDomainParcel,
62
44
  FowardingClassParcel,
63
- GeoLocationListParcel,
64
- IPSSignatureParcel,
65
45
  IPv6DataPrefixParcel,
66
46
  IPv6PrefixListParcel,
67
- IdentityParcel,
68
- IntrusionPreventionParcel,
69
- LocalDomainParcel,
70
- MirrorParcel,
71
- PolicerParcel,
72
- PreferredColorGroupParcel,
73
47
  PrefixListParcel,
74
- ProtocolListParcel,
48
+ PolicierParcel,
49
+ PreferredColorGroupParcel,
75
50
  SLAClassParcel,
76
- ScalableGroupTagParcel,
77
- SecurityApplicationListParcel,
78
- SecurityDataPrefixParcel,
51
+ TlocParcel,
52
+ StandardCommunityParcel,
53
+ LocalDomainParcel,
54
+ FQDNDomainParcel,
55
+ IPSSignatureParcel,
56
+ URLAllowParcel,
57
+ URLBlockParcel,
79
58
  SecurityPortParcel,
59
+ ProtocolListParcel,
60
+ GeoLocationListParcel,
80
61
  SecurityZoneListParcel,
81
- ServiceObjectGroupParcel,
82
- SslDecryptionParcel,
83
- SslDecryptionProfileParcel,
84
- StandardCommunityParcel,
85
- TlocParcel,
86
- URLParcel,
87
- UrlFilteringParcel,
62
+ SecurityApplicationListParcel,
63
+ SecurityDataPrefixParcel,
88
64
  ],
89
- Field(discriminator="type_"),
65
+ Field(discriminator="type"),
90
66
  ]
91
67
 
68
+ POLICY_OBJECT_PAYLOAD_ENDPOINT_MAPPING: Mapping[type, str] = {
69
+ AppProbeParcel: "app-probe",
70
+ ApplicationListParcel: "app-list",
71
+ ColorParcel: "color",
72
+ DataPrefixParcel: "data-prefix",
73
+ ExpandedCommunityParcel: "expanded-community",
74
+ FowardingClassParcel: "class",
75
+ IPv6DataPrefixParcel: "data-ipv6-prefix",
76
+ IPv6PrefixListParcel: "ipv6-prefix",
77
+ PrefixListParcel: "prefix",
78
+ PolicierParcel: "policer",
79
+ PreferredColorGroupParcel: "preferred-color-group",
80
+ SLAClassParcel: "sla-class",
81
+ TlocParcel: "tloc",
82
+ StandardCommunityParcel: "standard-community",
83
+ LocalDomainParcel: "security-localdomain",
84
+ FQDNDomainParcel: "security-fqdn",
85
+ IPSSignatureParcel: "security-ipssignature",
86
+ URLAllowParcel: "security-urllist",
87
+ URLBlockParcel: "security-urllist",
88
+ SecurityPortParcel: "security-port",
89
+ ProtocolListParcel: "security-protocolname",
90
+ GeoLocationListParcel: "security-geolocation",
91
+ SecurityZoneListParcel: "security-zone",
92
+ SecurityApplicationListParcel: "security-localapp",
93
+ SecurityDataPrefixParcel: "security-data-ip-prefix",
94
+ }
95
+
92
96
  __all__ = (
93
- "AdvancedInspectionProfileParcel",
94
- "AdvancedMalwareProtectionParcel",
95
97
  "AnyPolicyObjectParcel",
96
- "AppProbeEntry",
97
- "AppProbeMapItem",
98
- "AppProbeParcel",
99
98
  "ApplicationFamilyListEntry",
100
99
  "ApplicationListEntry",
101
100
  "ApplicationListParcel",
102
- "AsPathParcel",
101
+ "AppProbeEntry",
102
+ "AppProbeMapItem",
103
+ "AppProbeParcel",
103
104
  "BaseURLListEntry",
104
105
  "ColorEntry",
105
106
  "ColorParcel",
106
107
  "DataPrefixEntry",
107
108
  "DataPrefixParcel",
108
109
  "ExpandedCommunityParcel",
109
- "ExtendedCommunityParcel",
110
- "FQDNDomainParcel",
111
- "FQDNListEntry",
112
110
  "FallbackBestTunnel",
113
111
  "FowardingClassParcel",
114
112
  "FowardingClassQueueEntry",
113
+ "FQDNDomainParcel",
114
+ "FQDNListEntry",
115
115
  "GeoLocationListEntry",
116
116
  "GeoLocationListParcel",
117
117
  "IPSSignatureListEntry",
@@ -120,14 +120,10 @@ __all__ = (
120
120
  "IPv6DataPrefixParcel",
121
121
  "IPv6PrefixListEntry",
122
122
  "IPv6PrefixListParcel",
123
- "IdentityEntry",
124
- "IdentityParcel",
125
- "IntrusionPreventionParcel",
126
123
  "LocalDomainListEntry",
127
124
  "LocalDomainParcel",
128
- "MirrorParcel",
129
- "PolicerEntry",
130
- "PolicerParcel",
125
+ "PolicierEntry",
126
+ "PolicierParcel",
131
127
  "Preference",
132
128
  "PreferredColorGroupEntry",
133
129
  "PreferredColorGroupParcel",
@@ -135,30 +131,25 @@ __all__ = (
135
131
  "PrefixListParcel",
136
132
  "ProtocolListEntry",
137
133
  "ProtocolListParcel",
138
- "SLAClassCriteria",
139
- "SLAClassListEntry",
140
- "SLAClassParcel",
141
- "ScalableGroupTagEntry",
142
- "ScalableGroupTagParcel",
143
134
  "SecurityApplicationFamilyListEntry",
144
135
  "SecurityApplicationListEntry",
145
136
  "SecurityApplicationListParcel",
146
137
  "SecurityDataPrefixEntry",
147
138
  "SecurityDataPrefixParcel",
148
- "SecurityObjectGroupEntries",
149
- "SecurityObjectGroupParcel",
150
139
  "SecurityPortListEntry",
151
140
  "SecurityPortParcel",
152
141
  "SecurityZoneListEntry",
153
142
  "SecurityZoneListParcel",
154
- "ServiceObjectGroupParcel",
155
- "SslDecryptionParcel",
156
- "SslDecryptionProfileParcel",
143
+ "SLAAppProbeClass",
144
+ "SLAClassCriteria",
145
+ "SLAClassListEntry",
146
+ "SLAClassParcel",
157
147
  "StandardCommunityEntry",
158
148
  "StandardCommunityParcel",
159
149
  "TlocEntry",
160
150
  "TlocParcel",
161
- "URLParcel",
151
+ "URLAllowParcel",
152
+ "URLBlockParcel",
162
153
  )
163
154
 
164
155
 
@@ -1,56 +1,42 @@
1
1
  # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
2
 
3
- from typing import List, Literal, Optional, Union
4
- from uuid import UUID
3
+ from typing import List
5
4
 
6
- from pydantic import AliasPath, BaseModel, ConfigDict, Field
5
+ from pydantic import AliasPath, BaseModel, ConfigDict, Field, field_validator
7
6
 
8
- from catalystwan.api.configuration_groups.parcel import Global, _ParcelBase, _ParcelEntry, as_global, as_optional_global
7
+ from catalystwan.api.configuration_groups.parcel import Global, _ParcelBase, as_global
9
8
  from catalystwan.models.common import TLOCColor
10
- from catalystwan.models.configuration.feature_profile.common import RefIdItem
11
9
 
12
10
 
13
11
  class AppProbeMapItem(BaseModel):
14
12
  color: Global[TLOCColor]
15
- dscp: Optional[Global[int]] = Field(default=None)
13
+ dscp: Global[int]
16
14
 
15
+ @field_validator("dscp")
16
+ @classmethod
17
+ def check_rate(cls, dscp: Global):
18
+ assert 0 <= int(dscp.value) <= 63
19
+ return dscp
17
20
 
18
- class AppProbeEntry(_ParcelEntry):
21
+
22
+ class AppProbeEntry(BaseModel):
19
23
  model_config = ConfigDict(populate_by_name=True)
20
- map: List[AppProbeMapItem] = Field(default_factory=list)
21
- forwarding_class: Union[Global[str], RefIdItem] = Field(
22
- validation_alias="forwardingClass",
23
- serialization_alias="forwardingClass",
24
- description="RefId option introduced in 20.14",
24
+ map: List[AppProbeMapItem] = Field(default=[])
25
+ forwarding_class_name: Global[str] = Field(
26
+ serialization_alias="forwardingClass", validation_alias="forwardingClass"
25
27
  )
26
28
 
27
29
 
28
30
  class AppProbeParcel(_ParcelBase):
29
- model_config = ConfigDict(populate_by_name=True)
30
- type_: Literal["app-probe"] = Field(default="app-probe", exclude=True)
31
- entries: List[AppProbeEntry] = Field(default_factory=list, validation_alias=AliasPath("data", "entries"))
32
-
33
- def _insert_entry(self, entry: AppProbeEntry) -> None:
34
- if self.entries:
35
- self.entries[0] = entry
36
- else:
37
- self.entries.append(entry)
38
-
39
- def set_fowarding_class_name(self, name: str):
40
- self._insert_entry(
41
- AppProbeEntry(
42
- forwarding_class=as_global(name),
43
- )
44
- )
31
+ entries: List[AppProbeEntry] = Field(default=[], validation_alias=AliasPath("data", "entries"))
45
32
 
46
- def set_fowarding_class_id(self, id: UUID):
47
- # use only for version >= 20.14
48
- self._insert_entry(
33
+ def add_fowarding_class(self, forwarding_class_name: str):
34
+ self.entries.append(
49
35
  AppProbeEntry(
50
- forwarding_class=RefIdItem.from_uuid(id),
36
+ forwarding_class_name=as_global(forwarding_class_name),
51
37
  )
52
38
  )
53
39
 
54
- def add_map(self, color: TLOCColor, dscp: Optional[int] = None):
40
+ def add_map(self, color: TLOCColor, dscp: int):
55
41
  entry = self.entries[0]
56
- entry.map.append(AppProbeMapItem(color=as_global(color, TLOCColor), dscp=as_optional_global(dscp)))
42
+ entry.map.append(AppProbeMapItem(color=as_global(color, TLOCColor), dscp=as_global(dscp)))
@@ -1,27 +1,25 @@
1
1
  # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
2
 
3
- from typing import List, Literal, Union
3
+ from typing import List, Union
4
4
 
5
- from pydantic import AliasPath, ConfigDict, Field
5
+ from pydantic import AliasPath, BaseModel, ConfigDict, Field
6
6
 
7
- from catalystwan.api.configuration_groups.parcel import Global, _ParcelBase, _ParcelEntry, as_global
7
+ from catalystwan.api.configuration_groups.parcel import Global, _ParcelBase, as_global
8
8
 
9
9
 
10
- class ApplicationListEntry(_ParcelEntry):
10
+ class ApplicationListEntry(BaseModel):
11
11
  model_config = ConfigDict(populate_by_name=True)
12
12
  app_list: Global[str] = Field(serialization_alias="app", validation_alias="app")
13
13
 
14
14
 
15
- class ApplicationFamilyListEntry(_ParcelEntry):
15
+ class ApplicationFamilyListEntry(BaseModel):
16
16
  model_config = ConfigDict(populate_by_name=True)
17
17
  app_list_family: Global[str] = Field(serialization_alias="appFamily", validation_alias="appFamily")
18
18
 
19
19
 
20
20
  class ApplicationListParcel(_ParcelBase):
21
- model_config = ConfigDict(populate_by_name=True)
22
- type_: Literal["app-list"] = Field(default="app-list", exclude=True)
23
21
  entries: List[Union[ApplicationListEntry, ApplicationFamilyListEntry]] = Field(
24
- default_factory=list, validation_alias=AliasPath("data", "entries")
22
+ default=[], validation_alias=AliasPath("data", "entries")
25
23
  )
26
24
 
27
25
  def add_application(self, application: str):
@@ -1,21 +1,19 @@
1
1
  # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
2
 
3
- from typing import List, Literal
3
+ from typing import List
4
4
 
5
- from pydantic import AliasPath, ConfigDict, Field
5
+ from pydantic import AliasPath, BaseModel, Field
6
6
 
7
- from catalystwan.api.configuration_groups.parcel import Global, _ParcelBase, _ParcelEntry, as_global
7
+ from catalystwan.api.configuration_groups.parcel import Global, _ParcelBase, as_global
8
8
  from catalystwan.models.common import TLOCColor
9
9
 
10
10
 
11
- class ColorEntry(_ParcelEntry):
11
+ class ColorEntry(BaseModel):
12
12
  color: Global[TLOCColor]
13
13
 
14
14
 
15
15
  class ColorParcel(_ParcelBase):
16
- model_config = ConfigDict(populate_by_name=True)
17
- type_: Literal["color"] = Field(default="color", exclude=True)
18
- entries: List[ColorEntry] = Field(default_factory=list, validation_alias=AliasPath("data", "entries"))
16
+ entries: List[ColorEntry] = Field(default=[], validation_alias=AliasPath("data", "entries"))
19
17
 
20
18
  def add_color(self, color: TLOCColor):
21
19
  self.entries.append(ColorEntry(color=as_global(color, TLOCColor)))
@@ -1,29 +1,20 @@
1
1
  # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
2
 
3
3
  from ipaddress import IPv4Address, IPv4Network
4
- from typing import List, Literal
4
+ from typing import List
5
5
 
6
- from pydantic import AliasPath, ConfigDict, Field
6
+ from pydantic import AliasPath, BaseModel, ConfigDict, Field
7
7
 
8
- from catalystwan.api.configuration_groups.parcel import Global, _ParcelBase, _ParcelEntry, as_global
8
+ from catalystwan.api.configuration_groups.parcel import Global, _ParcelBase, as_global
9
9
 
10
10
 
11
- class DataPrefixEntry(_ParcelEntry):
11
+ class DataPrefixEntry(BaseModel):
12
12
  model_config = ConfigDict(populate_by_name=True)
13
13
  ipv4_address: Global[IPv4Address] = Field(serialization_alias="ipv4Address", validation_alias="ipv4Address")
14
14
  ipv4_prefix_length: Global[int] = Field(serialization_alias="ipv4PrefixLength", validation_alias="ipv4PrefixLength")
15
15
 
16
- @staticmethod
17
- def from_ipv4_network(ipv4_network: IPv4Network) -> "DataPrefixEntry":
18
- return DataPrefixEntry(
19
- ipv4_address=as_global(ipv4_network.network_address),
20
- ipv4_prefix_length=as_global(ipv4_network.prefixlen),
21
- )
22
-
23
16
 
24
17
  class DataPrefixParcel(_ParcelBase):
25
- model_config = ConfigDict(populate_by_name=True)
26
- type_: Literal["data-prefix"] = Field(default="data-prefix", exclude=True)
27
18
  entries: List[DataPrefixEntry] = Field(default_factory=list, validation_alias=AliasPath("data", "entries"))
28
19
 
29
20
  def add_data_prefix(self, ipv4_network: IPv4Network):
@@ -1,25 +1,23 @@
1
1
  # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
2
 
3
- from typing import List, Literal
4
-
5
3
  from pydantic import AliasPath, ConfigDict, Field, field_validator
6
4
 
7
- from catalystwan.api.configuration_groups.parcel import Global, _ParcelBase
5
+ from catalystwan.api.configuration_groups.parcel import Global, _ParcelBase, as_global
8
6
 
9
7
 
10
8
  class ExpandedCommunityParcel(_ParcelBase):
11
9
  model_config = ConfigDict(populate_by_name=True)
12
- type_: Literal["expanded-community"] = Field(default="expanded-community", exclude=True)
13
- expanded_community_list: Global[List[str]] = Field(
14
- default=Global[List[str]](value=list()),
10
+ expandedCommunityList: Global[list] = Field(
11
+ default=as_global([]),
12
+ serialization_alias="expandedCommunityList",
15
13
  validation_alias=AliasPath("data", "expandedCommunityList"),
16
14
  )
17
15
 
18
16
  def add_community(self, expanded_community: str):
19
- self.expanded_community_list.value.append(expanded_community)
17
+ self.expandedCommunityList.value.append(expanded_community)
20
18
 
21
- @field_validator("expanded_community_list")
19
+ @field_validator("expandedCommunityList")
22
20
  @classmethod
23
- def check_list_str(cls, expanded_community_list: Global):
21
+ def check_rate(cls, expanded_community_list: Global):
24
22
  assert all([isinstance(ec, str) for ec in expanded_community_list.value])
25
23
  return expanded_community_list
@@ -1,13 +1,13 @@
1
1
  # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
2
 
3
- from typing import List, Literal
3
+ from typing import List
4
4
 
5
- from pydantic import AliasPath, ConfigDict, Field, field_validator
5
+ from pydantic import AliasPath, BaseModel, Field, field_validator
6
6
 
7
- from catalystwan.api.configuration_groups.parcel import Global, _ParcelBase, _ParcelEntry, as_global
7
+ from catalystwan.api.configuration_groups.parcel import Global, _ParcelBase, as_global
8
8
 
9
9
 
10
- class FowardingClassQueueEntry(_ParcelEntry):
10
+ class FowardingClassQueueEntry(BaseModel):
11
11
  queue: Global[str]
12
12
 
13
13
  @field_validator("queue")
@@ -18,9 +18,7 @@ class FowardingClassQueueEntry(_ParcelEntry):
18
18
 
19
19
 
20
20
  class FowardingClassParcel(_ParcelBase):
21
- model_config = ConfigDict(populate_by_name=True)
22
- type_: Literal["class"] = Field(default="class", exclude=True)
23
- entries: List[FowardingClassQueueEntry] = Field(default_factory=list, validation_alias=AliasPath("data", "entries"))
21
+ entries: List[FowardingClassQueueEntry] = Field(default=[], validation_alias=AliasPath("data", "entries"))
24
22
 
25
23
  def add_queue(self, queue: int):
26
24
  self.entries.append(FowardingClassQueueEntry(queue=as_global(str(queue))))
@@ -1,28 +1,26 @@
1
1
  # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
2
 
3
- from ipaddress import IPv6Address, IPv6Interface
4
- from typing import List, Literal
3
+ from ipaddress import IPv6Address, IPv6Network
4
+ from typing import List
5
5
 
6
- from pydantic import AliasPath, ConfigDict, Field
6
+ from pydantic import AliasPath, BaseModel, ConfigDict, Field
7
7
 
8
- from catalystwan.api.configuration_groups.parcel import Global, _ParcelBase, _ParcelEntry, as_global
8
+ from catalystwan.api.configuration_groups.parcel import Global, _ParcelBase, as_global
9
9
 
10
10
 
11
- class IPv6DataPrefixEntry(_ParcelEntry):
11
+ class IPv6DataPrefixEntry(BaseModel):
12
12
  model_config = ConfigDict(populate_by_name=True)
13
13
  ipv6_address: Global[IPv6Address] = Field(serialization_alias="ipv6Address", validation_alias="ipv6Address")
14
14
  ipv6_prefix_length: Global[int] = Field(serialization_alias="ipv6PrefixLength", validation_alias="ipv6PrefixLength")
15
15
 
16
16
 
17
17
  class IPv6DataPrefixParcel(_ParcelBase):
18
- model_config = ConfigDict(populate_by_name=True)
19
- type_: Literal["data-ipv6-prefix"] = Field(default="data-ipv6-prefix", exclude=True)
20
- entries: List[IPv6DataPrefixEntry] = Field(default_factory=list, validation_alias=AliasPath("data", "entries"))
18
+ entries: List[IPv6DataPrefixEntry] = Field(default=[], validation_alias=AliasPath("data", "entries"))
21
19
 
22
- def add_prefix(self, ipv6_network: IPv6Interface):
20
+ def add_prefix(self, ipv6_network: IPv6Network):
23
21
  self.entries.append(
24
22
  IPv6DataPrefixEntry(
25
- ipv6_address=as_global(ipv6_network.network.network_address),
26
- ipv6_prefix_length=as_global(ipv6_network.network.prefixlen),
23
+ ipv6_address=as_global(ipv6_network.network_address),
24
+ ipv6_prefix_length=as_global(ipv6_network.prefixlen),
27
25
  )
28
26
  )
@@ -1,41 +1,26 @@
1
1
  # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
2
 
3
- from ipaddress import IPv6Address, IPv6Interface
4
- from typing import List, Literal, Optional
3
+ from ipaddress import IPv6Address, IPv6Network
4
+ from typing import List
5
5
 
6
- from pydantic import AliasPath, ConfigDict, Field
6
+ from pydantic import AliasPath, BaseModel, ConfigDict, Field
7
7
 
8
- from catalystwan.api.configuration_groups.parcel import Global, _ParcelBase, _ParcelEntry
9
- from catalystwan.models.common import Ipv6GePrefixRangeLen, Ipv6LePrefixRangeLen, Ipv6PrefixLen
8
+ from catalystwan.api.configuration_groups.parcel import Global, _ParcelBase, as_global
10
9
 
11
10
 
12
- class IPv6PrefixListEntry(_ParcelEntry):
11
+ class IPv6PrefixListEntry(BaseModel):
13
12
  model_config = ConfigDict(populate_by_name=True)
14
13
  ipv6_address: Global[IPv6Address] = Field(serialization_alias="ipv6Address", validation_alias="ipv6Address")
15
- ipv6_prefix_length: Global[Ipv6PrefixLen] = Field(
16
- serialization_alias="ipv6PrefixLength", validation_alias="ipv6PrefixLength", ge=0, le=128
17
- )
18
- le_range_prefix_length: Optional[Global[Ipv6LePrefixRangeLen]] = Field(
19
- default=None, serialization_alias="leRangePrefixLength", validation_alias="leRangePrefixLength"
20
- )
21
- ge_range_prefix_length: Optional[Global[Ipv6GePrefixRangeLen]] = Field(
22
- default=None, serialization_alias="geRangePrefixLength", validation_alias="geRangePrefixLength"
23
- )
14
+ ipv6_prefix_length: Global[int] = Field(serialization_alias="ipv6PrefixLength", validation_alias="ipv6PrefixLength")
24
15
 
25
16
 
26
17
  class IPv6PrefixListParcel(_ParcelBase):
27
- model_config = ConfigDict(populate_by_name=True)
28
- type_: Literal["ipv6-prefix"] = Field(default="ipv6-prefix", exclude=True)
29
- entries: List[IPv6PrefixListEntry] = Field(default_factory=list, validation_alias=AliasPath("data", "entries"))
18
+ entries: List[IPv6PrefixListEntry] = Field(default=[], validation_alias=AliasPath("data", "entries"))
30
19
 
31
- def add_prefix(self, ipv6_network: IPv6Interface, ge: Optional[int] = None, le: Optional[int] = None):
32
- le_ = Global[Ipv6LePrefixRangeLen](value=le) if le is not None else None
33
- ge_ = Global[Ipv6GePrefixRangeLen](value=ge) if ge is not None else None
20
+ def add_prefix(self, ipv6_network: IPv6Network):
34
21
  self.entries.append(
35
22
  IPv6PrefixListEntry(
36
- ipv6_address=Global[IPv6Address](value=ipv6_network.network.network_address),
37
- ipv6_prefix_length=Global[Ipv6PrefixLen](value=ipv6_network.network.prefixlen),
38
- le_range_prefix_length=le_,
39
- ge_range_prefix_length=ge_,
23
+ ipv6_address=as_global(ipv6_network.network_address),
24
+ ipv6_prefix_length=as_global(ipv6_network.prefixlen),
40
25
  )
41
26
  )
@@ -1,14 +1,14 @@
1
1
  # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
2
 
3
- from typing import List, Literal
3
+ from typing import List
4
4
 
5
- from pydantic import AliasPath, ConfigDict, Field, field_validator
5
+ from pydantic import AliasPath, BaseModel, ConfigDict, Field, field_validator
6
6
 
7
- from catalystwan.api.configuration_groups.parcel import Global, _ParcelBase, _ParcelEntry, as_global
8
- from catalystwan.models.policy.list.policer import PolicerExceedAction
7
+ from catalystwan.api.configuration_groups.parcel import Global, _ParcelBase, as_global
8
+ from catalystwan.models.policy.lists_entries import PolicerExceedAction
9
9
 
10
10
 
11
- class PolicerEntry(_ParcelEntry):
11
+ class PolicierEntry(BaseModel):
12
12
  model_config = ConfigDict(populate_by_name=True)
13
13
  burst: Global[int]
14
14
  exceed: Global[PolicerExceedAction]
@@ -16,25 +16,23 @@ class PolicerEntry(_ParcelEntry):
16
16
 
17
17
  @field_validator("burst")
18
18
  @classmethod
19
- def check_burst(cls, burst_str: Global[int]):
19
+ def check_burst(cls, burst_str: Global):
20
20
  assert 15000 <= burst_str.value <= 10_000_000
21
21
  return burst_str
22
22
 
23
23
  @field_validator("rate")
24
24
  @classmethod
25
- def check_rate(cls, rate_str: Global[int]):
25
+ def check_rate(cls, rate_str: Global):
26
26
  assert 8 <= rate_str.value <= 100_000_000_000
27
27
  return rate_str
28
28
 
29
29
 
30
- class PolicerParcel(_ParcelBase):
31
- model_config = ConfigDict(populate_by_name=True)
32
- type_: Literal["policer"] = Field(default="policer", exclude=True)
33
- entries: List[PolicerEntry] = Field(default_factory=list, validation_alias=AliasPath("data", "entries"))
30
+ class PolicierParcel(_ParcelBase):
31
+ entries: List[PolicierEntry] = Field(default=[], validation_alias=AliasPath("data", "entries"))
34
32
 
35
33
  def add_entry(self, burst: int, exceed: PolicerExceedAction, rate: int):
36
34
  self.entries.append(
37
- PolicerEntry(
35
+ PolicierEntry(
38
36
  burst=as_global(burst),
39
37
  exceed=as_global(exceed, PolicerExceedAction),
40
38
  rate=as_global(rate),