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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (504) hide show
  1. catalystwan/__init__.py +3 -2
  2. catalystwan/api/administration.py +13 -2
  3. catalystwan/api/api_container.py +4 -1
  4. catalystwan/api/builders/__init__.py +14 -0
  5. catalystwan/api/builders/feature_profiles/__init__.py +0 -0
  6. catalystwan/api/builders/feature_profiles/application_priority.py +58 -0
  7. catalystwan/api/builders/feature_profiles/builder_factory.py +59 -0
  8. catalystwan/api/builders/feature_profiles/cli.py +76 -0
  9. catalystwan/api/builders/feature_profiles/mixins.py +44 -0
  10. catalystwan/api/builders/feature_profiles/other.py +79 -0
  11. catalystwan/api/builders/feature_profiles/report.py +155 -0
  12. catalystwan/api/builders/feature_profiles/service.py +248 -0
  13. catalystwan/api/builders/feature_profiles/system.py +80 -0
  14. catalystwan/api/builders/feature_profiles/transport.py +256 -0
  15. catalystwan/api/builders/feature_profiles/uc_voice.py +287 -0
  16. catalystwan/api/config_group_api.py +41 -16
  17. catalystwan/api/configuration_groups/parcel.py +100 -30
  18. catalystwan/api/feature_profile_api.py +2021 -242
  19. catalystwan/api/policy_api.py +470 -116
  20. catalystwan/api/template_api.py +113 -44
  21. catalystwan/api/templates/README.md +61 -47
  22. catalystwan/api/templates/cli_template.py +17 -7
  23. catalystwan/api/templates/device_template/device_template.py +127 -32
  24. catalystwan/api/templates/feature_template.py +3 -3
  25. catalystwan/api/templates/models/aaa_model.py +387 -0
  26. catalystwan/api/templates/models/cisco_aaa_model.py +289 -42
  27. catalystwan/api/templates/models/cisco_banner_model.py +11 -2
  28. catalystwan/api/templates/models/cisco_bfd_model.py +31 -36
  29. catalystwan/api/templates/models/cisco_bgp_model.py +382 -131
  30. catalystwan/api/templates/models/cisco_logging_model.py +80 -43
  31. catalystwan/api/templates/models/cisco_ntp_model.py +34 -15
  32. catalystwan/api/templates/models/cisco_omp_model.py +70 -60
  33. catalystwan/api/templates/models/cisco_ospf.py +143 -74
  34. catalystwan/api/templates/models/cisco_ospfv3.py +217 -95
  35. catalystwan/api/templates/models/cisco_secure_internet_gateway.py +304 -142
  36. catalystwan/api/templates/models/cisco_snmp_model.py +66 -52
  37. catalystwan/api/templates/models/cisco_system.py +238 -129
  38. catalystwan/api/templates/models/cisco_vpn_interface_model.py +632 -275
  39. catalystwan/api/templates/models/cisco_vpn_model.py +433 -270
  40. catalystwan/api/templates/models/cli_template.py +3 -2
  41. catalystwan/api/templates/models/omp_vsmart_model.py +46 -10
  42. catalystwan/api/templates/models/security_vsmart_model.py +11 -8
  43. catalystwan/api/templates/models/supported.py +10 -4
  44. catalystwan/api/templates/models/system_vsmart_model.py +164 -27
  45. catalystwan/api/templates/models/vpn_vsmart_interface_model.py +198 -0
  46. catalystwan/api/templates/models/vpn_vsmart_model.py +124 -0
  47. catalystwan/apigw_auth.py +6 -2
  48. catalystwan/dataclasses.py +2 -53
  49. catalystwan/endpoints/__init__.py +41 -41
  50. catalystwan/endpoints/certificate_management_device.py +4 -0
  51. catalystwan/endpoints/cluster_management.py +27 -7
  52. catalystwan/endpoints/configuration/feature_profile/sdwan/application_priority.py +107 -0
  53. catalystwan/endpoints/configuration/feature_profile/sdwan/cli.py +60 -0
  54. catalystwan/endpoints/configuration/feature_profile/sdwan/dns_security.py +83 -0
  55. catalystwan/endpoints/configuration/feature_profile/sdwan/embedded_security.py +88 -0
  56. catalystwan/endpoints/configuration/feature_profile/sdwan/other.py +62 -0
  57. catalystwan/endpoints/configuration/feature_profile/sdwan/policy_object.py +35 -12
  58. catalystwan/endpoints/configuration/feature_profile/sdwan/service.py +154 -0
  59. catalystwan/endpoints/configuration/feature_profile/sdwan/sig_security.py +88 -0
  60. catalystwan/endpoints/configuration/feature_profile/sdwan/system.py +164 -11
  61. catalystwan/endpoints/configuration/feature_profile/sdwan/topology.py +93 -0
  62. catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py +144 -26
  63. catalystwan/endpoints/configuration/feature_profile/sdwan/uc_voice.py +77 -0
  64. catalystwan/endpoints/configuration/network_hierarchy.py +32 -0
  65. catalystwan/endpoints/configuration/policy/abstractions.py +49 -0
  66. catalystwan/endpoints/configuration/policy/definition/access_control_list.py +6 -11
  67. catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py +6 -11
  68. catalystwan/endpoints/configuration/policy/definition/aip.py +52 -0
  69. catalystwan/endpoints/configuration/policy/definition/amp.py +52 -0
  70. catalystwan/endpoints/configuration/policy/definition/app_route.py +50 -0
  71. catalystwan/endpoints/configuration/policy/definition/cflowd.py +46 -0
  72. catalystwan/endpoints/configuration/policy/definition/control.py +6 -11
  73. catalystwan/endpoints/configuration/policy/definition/device_access.py +6 -11
  74. catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py +6 -11
  75. catalystwan/endpoints/configuration/policy/definition/dial_peer.py +57 -0
  76. catalystwan/endpoints/configuration/policy/definition/dns_security.py +50 -0
  77. catalystwan/endpoints/configuration/policy/definition/fxo_port.py +57 -0
  78. catalystwan/endpoints/configuration/policy/definition/fxs_did_port.py +57 -0
  79. catalystwan/endpoints/configuration/policy/definition/fxs_port.py +57 -0
  80. catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py +6 -11
  81. catalystwan/endpoints/configuration/policy/definition/intrusion_prevention.py +52 -0
  82. catalystwan/endpoints/configuration/policy/definition/mesh.py +2 -11
  83. catalystwan/endpoints/configuration/policy/definition/pri_isdn_port.py +57 -0
  84. catalystwan/endpoints/configuration/policy/definition/qos_map.py +2 -11
  85. catalystwan/endpoints/configuration/policy/definition/rewrite.py +6 -11
  86. catalystwan/endpoints/configuration/policy/definition/route_policy.py +50 -0
  87. catalystwan/endpoints/configuration/policy/definition/rule_set.py +2 -11
  88. catalystwan/endpoints/configuration/policy/definition/security_group.py +6 -11
  89. catalystwan/endpoints/configuration/policy/definition/srst_phone_profile.py +59 -0
  90. catalystwan/endpoints/configuration/policy/definition/ssl_decryption.py +50 -0
  91. catalystwan/endpoints/configuration/policy/definition/ssl_decryption_utd_profile.py +52 -0
  92. catalystwan/endpoints/configuration/policy/definition/traffic_data.py +6 -11
  93. catalystwan/endpoints/configuration/policy/definition/url_filtering.py +50 -0
  94. catalystwan/endpoints/configuration/policy/definition/vpn_membership.py +6 -11
  95. catalystwan/endpoints/configuration/policy/definition/vpn_qos_map.py +50 -0
  96. catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py +6 -11
  97. catalystwan/endpoints/configuration/policy/list/app.py +3 -16
  98. catalystwan/endpoints/configuration/policy/list/app_probe.py +6 -15
  99. catalystwan/endpoints/configuration/policy/list/as_path.py +3 -16
  100. catalystwan/endpoints/configuration/policy/list/class_map.py +3 -16
  101. catalystwan/endpoints/configuration/policy/list/color.py +3 -16
  102. catalystwan/endpoints/configuration/policy/list/community.py +3 -16
  103. catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py +6 -15
  104. catalystwan/endpoints/configuration/policy/list/data_prefix.py +3 -16
  105. catalystwan/endpoints/configuration/policy/list/expanded_community.py +6 -15
  106. catalystwan/endpoints/configuration/policy/list/extended_community.py +52 -0
  107. catalystwan/endpoints/configuration/policy/list/fax_protocol.py +48 -0
  108. catalystwan/endpoints/configuration/policy/list/fqdn.py +3 -16
  109. catalystwan/endpoints/configuration/policy/list/geo_location.py +3 -16
  110. catalystwan/endpoints/configuration/policy/list/identity.py +48 -0
  111. catalystwan/endpoints/configuration/policy/list/ips_signature.py +6 -15
  112. catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py +3 -16
  113. catalystwan/endpoints/configuration/policy/list/local_app.py +3 -16
  114. catalystwan/endpoints/configuration/policy/list/local_domain.py +3 -16
  115. catalystwan/endpoints/configuration/policy/list/media_profile.py +52 -0
  116. catalystwan/endpoints/configuration/policy/list/mirror.py +3 -16
  117. catalystwan/endpoints/configuration/policy/list/modem_pass_through.py +52 -0
  118. catalystwan/endpoints/configuration/policy/list/policer.py +3 -16
  119. catalystwan/endpoints/configuration/policy/list/port.py +3 -16
  120. catalystwan/endpoints/configuration/policy/list/preferred_color_group.py +6 -15
  121. catalystwan/endpoints/configuration/policy/list/prefix.py +4 -16
  122. catalystwan/endpoints/configuration/policy/list/protocol_name.py +6 -15
  123. catalystwan/endpoints/configuration/policy/list/region.py +2 -10
  124. catalystwan/endpoints/configuration/policy/list/scalable_group_tag.py +52 -0
  125. catalystwan/endpoints/configuration/policy/list/site.py +3 -16
  126. catalystwan/endpoints/configuration/policy/list/sla.py +3 -16
  127. catalystwan/endpoints/configuration/policy/list/supervisory_disconnect.py +52 -0
  128. catalystwan/endpoints/configuration/policy/list/threat_grid_api_key.py +52 -0
  129. catalystwan/endpoints/configuration/policy/list/tloc.py +3 -16
  130. catalystwan/endpoints/configuration/policy/list/translation_profile.py +52 -0
  131. catalystwan/endpoints/configuration/policy/list/translation_rules.py +52 -0
  132. catalystwan/endpoints/configuration/policy/list/trunkgroup.py +48 -0
  133. catalystwan/endpoints/configuration/policy/list/umbrella_data.py +52 -0
  134. catalystwan/endpoints/configuration/policy/list/url_allow_list.py +3 -16
  135. catalystwan/endpoints/configuration/policy/list/url_block_list.py +3 -16
  136. catalystwan/endpoints/configuration/policy/list/vpn.py +3 -16
  137. catalystwan/endpoints/configuration/policy/list/zone.py +3 -16
  138. catalystwan/endpoints/configuration/policy/security_template.py +2 -3
  139. catalystwan/endpoints/configuration/policy/voice_template.py +39 -0
  140. catalystwan/endpoints/configuration/policy_group.py +30 -0
  141. catalystwan/endpoints/configuration/software_actions.py +2 -4
  142. catalystwan/endpoints/configuration/topology_group.py +51 -0
  143. catalystwan/endpoints/configuration_dashboard_status.py +2 -2
  144. catalystwan/endpoints/configuration_device_template.py +15 -1
  145. catalystwan/endpoints/configuration_feature_profile.py +8 -11
  146. catalystwan/endpoints/configuration_general_template.py +31 -0
  147. catalystwan/endpoints/configuration_group.py +28 -5
  148. catalystwan/endpoints/configuration_settings.py +90 -1
  149. catalystwan/endpoints/configuration_template_master.py +48 -0
  150. catalystwan/endpoints/endpoints_container.py +79 -19
  151. catalystwan/endpoints/real_time_monitoring/reboot_history.py +1 -3
  152. catalystwan/endpoints/tenant_migration.py +2 -0
  153. catalystwan/exceptions.py +17 -0
  154. catalystwan/integration_tests/base.py +81 -0
  155. catalystwan/integration_tests/feature_profile/sdwan/__init__.py +0 -0
  156. catalystwan/integration_tests/feature_profile/sdwan/policy/__init__.py +0 -0
  157. catalystwan/integration_tests/feature_profile/sdwan/policy/base.py +33 -0
  158. catalystwan/integration_tests/feature_profile/sdwan/policy/test_extended_community.py +33 -0
  159. catalystwan/integration_tests/feature_profile/sdwan/policy/test_security_app_list.py +32 -0
  160. catalystwan/integration_tests/feature_profile/sdwan/test_application_priority.py +433 -0
  161. catalystwan/integration_tests/feature_profile/sdwan/test_cli.py +54 -0
  162. catalystwan/integration_tests/feature_profile/sdwan/test_dns_security.py +106 -0
  163. catalystwan/integration_tests/feature_profile/sdwan/test_other.py +49 -0
  164. catalystwan/integration_tests/feature_profile/sdwan/test_service.py +1078 -0
  165. catalystwan/integration_tests/feature_profile/sdwan/test_sig_security.py +322 -0
  166. catalystwan/integration_tests/feature_profile/sdwan/test_ssl_decryption.py +85 -0
  167. catalystwan/integration_tests/feature_profile/sdwan/test_system.py +368 -0
  168. catalystwan/integration_tests/feature_profile/sdwan/test_tracker.py +127 -0
  169. catalystwan/integration_tests/feature_profile/sdwan/test_transport.py +1698 -0
  170. catalystwan/integration_tests/feature_profile/sdwan/topology/test_topology.py +93 -0
  171. catalystwan/integration_tests/profile_builder/__init__.py +0 -0
  172. catalystwan/integration_tests/profile_builder/test_pb_service.py +197 -0
  173. catalystwan/integration_tests/profile_builder/test_pb_transport.py +226 -0
  174. catalystwan/integration_tests/profile_builder/test_pb_uc_voice.py +277 -0
  175. catalystwan/integration_tests/test_data/__init__.py +117 -0
  176. catalystwan/integration_tests/test_find_template_values.py +7 -18
  177. catalystwan/integration_tests/test_network_hierarchy.py +82 -0
  178. catalystwan/integration_tests/test_settings.py +30 -0
  179. catalystwan/models/common.py +1898 -2
  180. catalystwan/models/configuration/common.py +1 -0
  181. catalystwan/models/configuration/feature_profile/common.py +634 -149
  182. catalystwan/models/configuration/feature_profile/parcel.py +238 -0
  183. catalystwan/models/configuration/feature_profile/sdwan/acl/__init__.py +13 -0
  184. catalystwan/models/configuration/feature_profile/sdwan/acl/ipv4acl.py +298 -0
  185. catalystwan/models/configuration/feature_profile/sdwan/acl/ipv6acl.py +344 -0
  186. catalystwan/models/configuration/feature_profile/sdwan/application_priority/__init__.py +218 -0
  187. catalystwan/models/configuration/feature_profile/sdwan/application_priority/cloud_probe.py +61 -0
  188. catalystwan/models/configuration/feature_profile/sdwan/application_priority/policy_settings.py +31 -0
  189. catalystwan/models/configuration/feature_profile/sdwan/application_priority/qos_policy.py +102 -0
  190. catalystwan/models/configuration/feature_profile/sdwan/application_priority/traffic_policy.py +1057 -0
  191. catalystwan/models/configuration/feature_profile/sdwan/cli/__init__.py +23 -0
  192. catalystwan/models/configuration/feature_profile/sdwan/cli/config.py +18 -0
  193. catalystwan/models/configuration/feature_profile/sdwan/cli/full_config.py +15 -0
  194. catalystwan/models/configuration/feature_profile/sdwan/dns_security/__init__.py +13 -0
  195. catalystwan/models/configuration/feature_profile/sdwan/dns_security/dns.py +110 -0
  196. catalystwan/models/configuration/feature_profile/sdwan/embedded_security/__init__.py +23 -0
  197. catalystwan/models/configuration/feature_profile/sdwan/embedded_security/ngfirewall.py +493 -0
  198. catalystwan/models/configuration/feature_profile/sdwan/embedded_security/policy.py +171 -0
  199. catalystwan/models/configuration/feature_profile/sdwan/other/__init__.py +25 -0
  200. catalystwan/models/configuration/feature_profile/sdwan/other/cybervision.py +44 -0
  201. catalystwan/models/configuration/feature_profile/sdwan/other/thousandeyes.py +147 -0
  202. catalystwan/models/configuration/feature_profile/sdwan/other/ucse.py +110 -0
  203. catalystwan/models/configuration/feature_profile/sdwan/policy_object/__init__.py +62 -48
  204. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/app_probe.py +34 -20
  205. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/application_list.py +8 -6
  206. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/as_path.py +22 -0
  207. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/color_list.py +7 -5
  208. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/data_prefix.py +13 -4
  209. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/expanded_community_list.py +9 -7
  210. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/extended_community.py +34 -0
  211. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/fowarding_class.py +7 -5
  212. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv4_network_object.py +15 -0
  213. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv4_service_object.py +254 -0
  214. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv6_data_prefix.py +11 -9
  215. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv6_prefix_list.py +25 -10
  216. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/mirror.py +27 -0
  217. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/network_object_group.py +15 -0
  218. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/object_group.py +15 -0
  219. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/{policier.py → policer.py} +12 -10
  220. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/prefered_group_color.py +29 -10
  221. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/prefix_list.py +23 -8
  222. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/service_object_group.py +21 -0
  223. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/sla_class.py +12 -31
  224. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/standard_community.py +16 -10
  225. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/tloc_list.py +8 -7
  226. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/aip.py +64 -0
  227. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/amp.py +79 -0
  228. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/application_list.py +8 -6
  229. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/data_prefix.py +7 -5
  230. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/fqdn.py +7 -5
  231. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/geolocation_list.py +7 -5
  232. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/identity.py +30 -0
  233. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/intrusion_prevention.py +58 -0
  234. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ips_signature.py +7 -5
  235. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/local_domain.py +7 -5
  236. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/object_group.py +72 -0
  237. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/protocol_list.py +7 -5
  238. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/rule_set.py +137 -0
  239. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/scalable_group_tag.py +26 -0
  240. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/security_port.py +21 -11
  241. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ssl_decryption.py +126 -0
  242. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ssl_decryption_profile.py +165 -0
  243. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/url.py +15 -10
  244. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/url_filtering.py +148 -0
  245. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/zone.py +14 -18
  246. catalystwan/models/configuration/feature_profile/sdwan/routing/__init__.py +26 -0
  247. catalystwan/models/configuration/feature_profile/sdwan/routing/bgp.py +609 -0
  248. catalystwan/models/configuration/feature_profile/sdwan/{service → routing}/ospf.py +55 -47
  249. catalystwan/models/configuration/feature_profile/sdwan/{service → routing}/ospfv3.py +74 -72
  250. catalystwan/models/configuration/feature_profile/sdwan/service/__init__.py +91 -0
  251. catalystwan/models/configuration/feature_profile/sdwan/service/appqoe.py +76 -41
  252. catalystwan/models/configuration/feature_profile/sdwan/service/dhcp_server.py +107 -64
  253. catalystwan/models/configuration/feature_profile/sdwan/service/dual_router_ha.py +26 -0
  254. catalystwan/models/configuration/feature_profile/sdwan/service/eigrp.py +39 -42
  255. catalystwan/models/configuration/feature_profile/sdwan/service/lan/common.py +7 -88
  256. catalystwan/models/configuration/feature_profile/sdwan/service/lan/ethernet.py +231 -155
  257. catalystwan/models/configuration/feature_profile/sdwan/service/lan/gre.py +38 -108
  258. catalystwan/models/configuration/feature_profile/sdwan/service/lan/ipsec.py +77 -84
  259. catalystwan/models/configuration/feature_profile/sdwan/service/lan/multilink.py +101 -0
  260. catalystwan/models/configuration/feature_profile/sdwan/service/lan/svi.py +62 -56
  261. catalystwan/models/configuration/feature_profile/sdwan/service/lan/vpn.py +111 -120
  262. catalystwan/models/configuration/feature_profile/sdwan/service/multicast.py +56 -57
  263. catalystwan/models/configuration/feature_profile/sdwan/service/object_tracker.py +15 -21
  264. catalystwan/models/configuration/feature_profile/sdwan/service/route_policy.py +358 -110
  265. catalystwan/models/configuration/feature_profile/sdwan/service/service_chain.py +38 -0
  266. catalystwan/models/configuration/feature_profile/sdwan/service/service_insertion_attachment.py +17 -25
  267. catalystwan/models/configuration/feature_profile/sdwan/service/switchport.py +50 -58
  268. catalystwan/models/configuration/feature_profile/sdwan/service/tracker.py +12 -21
  269. catalystwan/models/configuration/feature_profile/sdwan/service/wireless_lan.py +27 -31
  270. catalystwan/models/configuration/feature_profile/sdwan/sig_security/__init__.py +19 -0
  271. catalystwan/models/configuration/feature_profile/sdwan/sig_security/sig_security.py +379 -0
  272. catalystwan/models/configuration/feature_profile/sdwan/system/__init__.py +59 -0
  273. catalystwan/models/configuration/feature_profile/sdwan/system/aaa.py +58 -10
  274. catalystwan/models/configuration/feature_profile/sdwan/system/banner.py +30 -0
  275. catalystwan/models/configuration/feature_profile/sdwan/system/basic.py +290 -0
  276. catalystwan/models/configuration/feature_profile/sdwan/system/bfd.py +69 -0
  277. catalystwan/models/configuration/feature_profile/sdwan/system/device_access.py +157 -0
  278. catalystwan/models/configuration/feature_profile/sdwan/system/device_access_ipv6.py +157 -0
  279. catalystwan/models/configuration/feature_profile/sdwan/system/global_parcel.py +163 -0
  280. catalystwan/models/configuration/feature_profile/sdwan/system/logging_parcel.py +162 -0
  281. catalystwan/models/configuration/feature_profile/sdwan/system/mrf.py +75 -0
  282. catalystwan/models/configuration/feature_profile/sdwan/system/ntp.py +103 -0
  283. catalystwan/models/configuration/feature_profile/sdwan/system/omp.py +120 -0
  284. catalystwan/models/configuration/feature_profile/sdwan/system/security.py +179 -0
  285. catalystwan/models/configuration/feature_profile/sdwan/system/snmp.py +173 -0
  286. catalystwan/models/configuration/feature_profile/sdwan/topology/__init__.py +29 -0
  287. catalystwan/models/configuration/feature_profile/sdwan/topology/custom_control.py +425 -0
  288. catalystwan/models/configuration/feature_profile/sdwan/topology/hubspoke.py +60 -0
  289. catalystwan/models/configuration/feature_profile/sdwan/topology/mesh.py +23 -0
  290. catalystwan/models/configuration/feature_profile/sdwan/trackers/__init__.py +36 -0
  291. catalystwan/models/configuration/feature_profile/sdwan/trackers/tracker.py +96 -0
  292. catalystwan/models/configuration/feature_profile/sdwan/trackers/tracker_group.py +63 -0
  293. catalystwan/models/configuration/feature_profile/sdwan/transport/__init__.py +93 -0
  294. catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_controller.py +26 -23
  295. catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_profile.py +71 -0
  296. catalystwan/models/configuration/feature_profile/sdwan/transport/gps.py +37 -0
  297. catalystwan/models/configuration/feature_profile/sdwan/transport/management/ethernet.py +121 -0
  298. catalystwan/models/configuration/feature_profile/sdwan/transport/t1e1controller.py +124 -0
  299. catalystwan/models/configuration/feature_profile/sdwan/transport/vpn.py +285 -0
  300. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/cellular.py +173 -0
  301. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/ethernet.py +389 -0
  302. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/gre.py +46 -0
  303. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/ipsec.py +137 -0
  304. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/multilink.py +219 -0
  305. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/protocol_over.py +405 -0
  306. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/t1e1serial.py +195 -0
  307. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/__init__.py +62 -0
  308. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/analog_interface.py +436 -0
  309. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/call_routing.py +179 -0
  310. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/digital_interface.py +380 -0
  311. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/dsp_farm.py +193 -0
  312. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/media_profile.py +17 -0
  313. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/server_group.py +51 -0
  314. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/srst.py +86 -0
  315. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/supervisory_disconnect.py +69 -0
  316. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/translation_profile.py +42 -0
  317. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/translation_rule.py +31 -0
  318. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/trunk_group.py +26 -0
  319. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/voice_global.py +55 -0
  320. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/voice_tenant.py +40 -0
  321. catalystwan/models/configuration/network_hierarchy/__init__.py +22 -0
  322. catalystwan/models/configuration/network_hierarchy/cflowd.py +120 -0
  323. catalystwan/models/configuration/network_hierarchy/node.py +88 -0
  324. catalystwan/models/configuration/policy_group.py +74 -0
  325. catalystwan/models/configuration/profile_type.py +1 -6
  326. catalystwan/models/configuration/topology_group.py +52 -0
  327. catalystwan/models/policy/__init__.py +275 -69
  328. catalystwan/models/policy/centralized.py +26 -29
  329. catalystwan/models/policy/{definitions → definition}/access_control_list.py +47 -17
  330. catalystwan/models/policy/{definitions → definition}/access_control_list_ipv6.py +42 -18
  331. catalystwan/models/policy/definition/aip.py +60 -0
  332. catalystwan/models/policy/definition/amp.py +65 -0
  333. catalystwan/models/policy/definition/app_route.py +246 -0
  334. catalystwan/models/policy/definition/cflowd.py +95 -0
  335. catalystwan/models/policy/{definitions → definition}/control.py +48 -25
  336. catalystwan/models/policy/{definitions → definition}/device_access.py +22 -11
  337. catalystwan/models/policy/{definitions → definition}/device_access_ipv6.py +20 -11
  338. catalystwan/models/policy/definition/dial_peer.py +60 -0
  339. catalystwan/models/policy/definition/dns_security.py +130 -0
  340. catalystwan/models/policy/definition/fxo_port.py +63 -0
  341. catalystwan/models/policy/definition/fxs_did_port.py +58 -0
  342. catalystwan/models/policy/definition/fxs_port.py +56 -0
  343. catalystwan/models/policy/{definitions → definition}/hub_and_spoke.py +18 -4
  344. catalystwan/models/policy/definition/intrusion_prevention.py +55 -0
  345. catalystwan/models/policy/{definitions → definition}/mesh.py +13 -1
  346. catalystwan/models/policy/definition/pri_isdn_port.py +48 -0
  347. catalystwan/models/policy/{definitions → definition}/qos_map.py +39 -32
  348. catalystwan/models/policy/{definitions → definition}/rewrite.py +12 -2
  349. catalystwan/models/policy/definition/route_policy.py +187 -0
  350. catalystwan/models/policy/{definitions → definition}/rule_set.py +66 -48
  351. catalystwan/models/policy/{definitions → definition}/security_group.py +38 -14
  352. catalystwan/models/policy/definition/srst_phone_profile.py +37 -0
  353. catalystwan/models/policy/definition/ssl_decryption.py +209 -0
  354. catalystwan/models/policy/definition/ssl_decryption_utd_profile.py +87 -0
  355. catalystwan/models/policy/{definitions → definition}/traffic_data.py +184 -61
  356. catalystwan/models/policy/definition/url_filtering.py +70 -0
  357. catalystwan/models/policy/{definitions → definition}/vpn_membership.py +13 -1
  358. catalystwan/models/policy/definition/vpn_qos_map.py +46 -0
  359. catalystwan/models/policy/{definitions → definition}/zone_based_firewall.py +93 -32
  360. catalystwan/models/policy/list/app.py +44 -0
  361. catalystwan/models/policy/list/app_probe.py +42 -0
  362. catalystwan/models/policy/list/as_path.py +30 -0
  363. catalystwan/models/policy/list/class_map.py +30 -0
  364. catalystwan/models/policy/list/color.py +28 -0
  365. catalystwan/models/policy/list/communities.py +83 -0
  366. catalystwan/models/policy/list/data_ipv6_prefix.py +30 -0
  367. catalystwan/models/policy/list/data_prefix.py +30 -0
  368. catalystwan/models/policy/list/fax_protocol.py +45 -0
  369. catalystwan/models/policy/list/fqdn.py +24 -0
  370. catalystwan/models/policy/list/geo_location.py +33 -0
  371. catalystwan/models/policy/list/identity.py +29 -0
  372. catalystwan/models/policy/list/ips_signature.py +27 -0
  373. catalystwan/models/policy/list/ipv6_prefix.py +33 -0
  374. catalystwan/models/policy/list/local_app.py +45 -0
  375. catalystwan/models/policy/list/local_domain.py +36 -0
  376. catalystwan/models/policy/list/media_profile.py +44 -0
  377. catalystwan/models/policy/list/mirror.py +27 -0
  378. catalystwan/models/policy/list/modem_pass_through.py +27 -0
  379. catalystwan/models/policy/list/policer.py +39 -0
  380. catalystwan/models/policy/list/port.py +33 -0
  381. catalystwan/models/policy/list/preferred_color_group.py +82 -0
  382. catalystwan/models/policy/list/prefix.py +33 -0
  383. catalystwan/models/policy/list/protocol_name.py +26 -0
  384. catalystwan/models/policy/list/region.py +45 -0
  385. catalystwan/models/policy/list/scalable_group_tag.py +30 -0
  386. catalystwan/models/policy/list/site.py +34 -0
  387. catalystwan/models/policy/list/sla.py +77 -0
  388. catalystwan/models/policy/list/supervisory_disconnect.py +62 -0
  389. catalystwan/models/policy/list/threat_grid_api_key.py +32 -0
  390. catalystwan/models/policy/list/tloc.py +32 -0
  391. catalystwan/models/policy/list/translation_profile.py +32 -0
  392. catalystwan/models/policy/list/translation_rules.py +29 -0
  393. catalystwan/models/policy/list/trunkgroup.py +56 -0
  394. catalystwan/models/policy/list/umbrella_data.py +30 -0
  395. catalystwan/models/policy/list/url.py +39 -0
  396. catalystwan/models/policy/list/vpn.py +40 -0
  397. catalystwan/models/policy/list/zone.py +46 -0
  398. catalystwan/models/policy/localized.py +34 -16
  399. catalystwan/models/policy/policy.py +13 -9
  400. catalystwan/models/policy/policy_definition.py +673 -173
  401. catalystwan/models/policy/policy_list.py +38 -27
  402. catalystwan/models/policy/security.py +145 -46
  403. catalystwan/models/policy/voice.py +77 -0
  404. catalystwan/models/settings.py +41 -0
  405. catalystwan/models/templates.py +79 -0
  406. catalystwan/response.py +6 -2
  407. catalystwan/session.py +1 -1
  408. catalystwan/tests/builders/test_report.py +60 -0
  409. catalystwan/tests/builders/uc_voice.py +85 -0
  410. catalystwan/tests/models/__init__.py +0 -0
  411. catalystwan/tests/models/test_digital_interface.py +56 -0
  412. catalystwan/tests/templates/definitions/aaa_basic.json +96 -0
  413. catalystwan/tests/templates/definitions/aaa_complex.json +464 -0
  414. catalystwan/tests/templates/definitions/{iuo.json → cisco_aaa.json} +44 -15
  415. catalystwan/tests/templates/definitions/cisco_aaa_complex.json +361 -0
  416. catalystwan/tests/templates/definitions/cisco_logging_complex.json +268 -0
  417. catalystwan/tests/templates/definitions/cisco_ntp_complex.json +143 -0
  418. catalystwan/tests/templates/definitions/cisco_omp_complex.json +175 -0
  419. catalystwan/tests/templates/definitions/cisco_ospf_complex.json +302 -0
  420. catalystwan/tests/templates/definitions/cisco_sig.json +405 -0
  421. catalystwan/tests/templates/definitions/cisco_snmp_complex.json +258 -0
  422. catalystwan/tests/templates/definitions/cisco_system_complex.json +502 -0
  423. catalystwan/tests/templates/definitions/{Basic_Cisco_VPN_Model.json → cisco_vpn_basic.json} +2 -2
  424. catalystwan/tests/templates/definitions/{complex_cisco_vpn.json → cisco_vpn_complex.json} +27 -12
  425. catalystwan/tests/templates/definitions/cisco_vpn_interface_complex.json +821 -0
  426. catalystwan/tests/templates/definitions/omp_vsmart_1.json +26 -0
  427. catalystwan/tests/templates/definitions/{omp_2.json → omp_vsmart_2.json} +16 -2
  428. catalystwan/tests/templates/definitions/{omp_3.json → omp_vsmart_3.json} +16 -2
  429. catalystwan/tests/templates/definitions/omp_vsmart_complex.json +73 -0
  430. catalystwan/tests/templates/definitions/security_vsmart_complex.json +24 -0
  431. catalystwan/tests/templates/definitions/system_vsmart_complex.json +193 -0
  432. catalystwan/tests/templates/definitions/vpn_vsmart_basic.json +17 -0
  433. catalystwan/tests/templates/definitions/vpn_vsmart_complex.json +179 -0
  434. catalystwan/tests/templates/definitions/vpn_vsmart_interface_basic.json +42 -0
  435. catalystwan/tests/templates/definitions/vpn_vsmart_interface_complex.json +208 -0
  436. catalystwan/tests/templates/models/__init__.py +46 -13
  437. catalystwan/tests/templates/models/aaa.py +106 -0
  438. catalystwan/tests/templates/models/cisco_aaa.py +81 -48
  439. catalystwan/tests/templates/models/cisco_banner.py +2 -2
  440. catalystwan/tests/templates/models/cisco_bfd.py +4 -6
  441. catalystwan/tests/templates/models/cisco_logging.py +65 -0
  442. catalystwan/tests/templates/models/cisco_ntp.py +17 -0
  443. catalystwan/tests/templates/models/cisco_omp.py +37 -0
  444. catalystwan/tests/templates/models/cisco_ospf.py +60 -0
  445. catalystwan/tests/templates/models/cisco_secure_internet_gateway.py +95 -0
  446. catalystwan/tests/templates/models/cisco_snmp.py +40 -0
  447. catalystwan/tests/templates/models/cisco_system.py +108 -3
  448. catalystwan/tests/templates/models/cisco_vpn.py +42 -72
  449. catalystwan/tests/templates/models/cisco_vpn_interface.py +200 -0
  450. catalystwan/tests/templates/models/omp_vsmart.py +28 -8
  451. catalystwan/tests/templates/models/security_vsmart.py +11 -0
  452. catalystwan/tests/templates/models/system_vsmart.py +37 -0
  453. catalystwan/tests/templates/models/vpn_vsmart.py +32 -0
  454. catalystwan/tests/templates/models/vpn_vsmart_interface.py +54 -0
  455. catalystwan/tests/templates/schemas/aaa.json +1096 -0
  456. catalystwan/tests/templates/schemas/cedge_aaa.json +1 -1
  457. catalystwan/tests/templates/schemas/cisco_logging.json +577 -0
  458. catalystwan/tests/templates/schemas/cisco_ntp.json +265 -0
  459. catalystwan/tests/templates/schemas/cisco_omp.json +479 -0
  460. catalystwan/tests/templates/schemas/cisco_ospf.json +908 -0
  461. catalystwan/tests/templates/schemas/cisco_secure_internet_gateway.json +1520 -0
  462. catalystwan/tests/templates/schemas/cisco_snmp.json +561 -0
  463. catalystwan/tests/templates/schemas/cisco_system.json +242 -0
  464. catalystwan/tests/templates/schemas/cisco_vpn.json +53 -1
  465. catalystwan/tests/templates/schemas/cisco_vpn_interface.json +3348 -0
  466. catalystwan/tests/templates/schemas/omp-vsmart.json +20 -0
  467. catalystwan/tests/templates/schemas/security-vsmart.json +58 -0
  468. catalystwan/tests/templates/schemas/system-vsmart.json +2585 -0
  469. catalystwan/tests/templates/schemas/vpn-vsmart-interface.json +859 -0
  470. catalystwan/tests/templates/schemas/vpn-vsmart.json +445 -0
  471. catalystwan/tests/templates/test_chose_model.py +6 -10
  472. catalystwan/tests/templates/test_deserialize_model.py +4 -4
  473. catalystwan/tests/templates/test_find_template_values.py +229 -0
  474. catalystwan/tests/templates/test_find_template_values_2.py +193 -0
  475. catalystwan/tests/templates/test_serialize_model.py +1 -2
  476. catalystwan/tests/test_cli_template.py +8 -9
  477. catalystwan/tests/test_endpoints.py +42 -11
  478. catalystwan/tests/test_feature_profile_api.py +282 -0
  479. catalystwan/tests/test_models_common.py +53 -0
  480. catalystwan/tests/test_templates.py +16 -19
  481. catalystwan/utils/feature_template/find_template_values.py +17 -4
  482. catalystwan/utils/model.py +45 -0
  483. catalystwan/utils/persona.py +5 -0
  484. catalystwan/utils/type_check.py +22 -0
  485. catalystwan/workflows/backup_restore_device_templates.py +467 -0
  486. catalystwan/workflows/tenant_migration.py +1 -1
  487. {catalystwan-0.41.2.dist-info → catalystwan-0.41.2.dev0.dist-info}/METADATA +20 -1
  488. catalystwan-0.41.2.dev0.dist-info/RECORD +636 -0
  489. catalystwan/ENDPOINTS.md +0 -611
  490. catalystwan/api/configuration_groups/parcels/cellular_controller.py +0 -33
  491. catalystwan/api/templates/device_template/device_template_payload.json.j2 +0 -19
  492. catalystwan/models/configuration/config_migration.py +0 -36
  493. catalystwan/models/configuration/feature_profile/sdwan/management/vpn.py +0 -26
  494. catalystwan/models/configuration/feature_profile/sdwan/service/acl.py +0 -409
  495. catalystwan/models/configuration/feature_profile/sdwan/service/bgp.py +0 -288
  496. catalystwan/models/policy/lists.py +0 -330
  497. catalystwan/models/policy/lists_entries.py +0 -444
  498. catalystwan/tests/templates/definitions/complex_aaa.json +0 -277
  499. catalystwan/tests/templates/definitions/omp_1.json +0 -11
  500. catalystwan/utils/timezone.py +0 -422
  501. catalystwan-0.41.2.dist-info/RECORD +0 -353
  502. /catalystwan/tests/templates/definitions/{banner_1.json → cisco_banner.json} +0 -0
  503. {catalystwan-0.41.2.dist-info → catalystwan-0.41.2.dev0.dist-info}/LICENSE +0 -0
  504. {catalystwan-0.41.2.dist-info → catalystwan-0.41.2.dev0.dist-info}/WHEEL +0 -0
@@ -0,0 +1,49 @@
1
+ # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
+ from typing import Protocol
3
+ from uuid import UUID
4
+
5
+ from pydantic import BaseModel
6
+
7
+ from catalystwan.models.policy import AnyPolicyList
8
+ from catalystwan.models.policy.policy_definition import (
9
+ PolicyDefinitionEditResponse,
10
+ PolicyDefinitionGetResponse,
11
+ PolicyDefinitionId,
12
+ PolicyDefinitionInfo,
13
+ )
14
+ from catalystwan.models.policy.policy_list import PolicyListId, PolicyListInfo
15
+ from catalystwan.typed_list import DataSequence
16
+
17
+
18
+ class PolicyListEndpoints(Protocol):
19
+ def create_policy_list(self, payload: AnyPolicyList) -> PolicyListId:
20
+ ...
21
+
22
+ def delete_policy_list(self, id: UUID) -> None:
23
+ ...
24
+
25
+ def edit_policy_list(self, id: UUID, payload: AnyPolicyList) -> None:
26
+ ...
27
+
28
+ def get_lists_by_id(self, id: UUID) -> PolicyListInfo:
29
+ ...
30
+
31
+ def get_policy_lists(self) -> DataSequence[PolicyListInfo]:
32
+ ...
33
+
34
+
35
+ class PolicyDefinitionEndpoints(Protocol):
36
+ def create_policy_definition(self, payload: BaseModel) -> PolicyDefinitionId:
37
+ ...
38
+
39
+ def delete_policy_definition(self, id: UUID) -> None:
40
+ ...
41
+
42
+ def edit_policy_definition(self, id: UUID, payload: BaseModel) -> PolicyDefinitionEditResponse:
43
+ ...
44
+
45
+ def get_definitions(self) -> DataSequence[PolicyDefinitionInfo]:
46
+ ...
47
+
48
+ def get_policy_definition(self, id: UUID) -> PolicyDefinitionGetResponse:
49
+ ...
@@ -4,11 +4,14 @@
4
4
  from uuid import UUID
5
5
 
6
6
  from catalystwan.endpoints import APIEndpoints, delete, get, post, put
7
- from catalystwan.models.policy.definitions.access_control_list import AclPolicy
7
+ from catalystwan.endpoints.configuration.policy.abstractions import PolicyDefinitionEndpoints
8
+ from catalystwan.models.policy.definition.access_control_list import (
9
+ AclPolicy,
10
+ AclPolicyEditPayload,
11
+ AclPolicyGetResponse,
12
+ )
8
13
  from catalystwan.models.policy.policy_definition import (
9
14
  PolicyDefinitionEditResponse,
10
- PolicyDefinitionEndpoints,
11
- PolicyDefinitionGetResponse,
12
15
  PolicyDefinitionId,
13
16
  PolicyDefinitionInfo,
14
17
  PolicyDefinitionPreview,
@@ -16,14 +19,6 @@ from catalystwan.models.policy.policy_definition import (
16
19
  from catalystwan.typed_list import DataSequence
17
20
 
18
21
 
19
- class AclPolicyEditPayload(AclPolicy, PolicyDefinitionId):
20
- pass
21
-
22
-
23
- class AclPolicyGetResponse(AclPolicy, PolicyDefinitionGetResponse):
24
- pass
25
-
26
-
27
22
  class ConfigurationPolicyAclDefinition(APIEndpoints, PolicyDefinitionEndpoints):
28
23
  @post("/template/policy/definition/acl")
29
24
  def create_policy_definition(self, payload: AclPolicy) -> PolicyDefinitionId:
@@ -4,11 +4,14 @@
4
4
  from uuid import UUID
5
5
 
6
6
  from catalystwan.endpoints import APIEndpoints, delete, get, post, put
7
- from catalystwan.models.policy.definitions.access_control_list_ipv6 import AclIPv6Policy
7
+ from catalystwan.endpoints.configuration.policy.abstractions import PolicyDefinitionEndpoints
8
+ from catalystwan.models.policy.definition.access_control_list_ipv6 import (
9
+ AclIPv6Policy,
10
+ AclIPv6PolicyEditPayload,
11
+ AclIPv6PolicyGetResponse,
12
+ )
8
13
  from catalystwan.models.policy.policy_definition import (
9
14
  PolicyDefinitionEditResponse,
10
- PolicyDefinitionEndpoints,
11
- PolicyDefinitionGetResponse,
12
15
  PolicyDefinitionId,
13
16
  PolicyDefinitionInfo,
14
17
  PolicyDefinitionPreview,
@@ -16,14 +19,6 @@ from catalystwan.models.policy.policy_definition import (
16
19
  from catalystwan.typed_list import DataSequence
17
20
 
18
21
 
19
- class AclIPv6PolicyEditPayload(AclIPv6Policy, PolicyDefinitionId):
20
- pass
21
-
22
-
23
- class AclIPv6PolicyGetResponse(AclIPv6Policy, PolicyDefinitionGetResponse):
24
- pass
25
-
26
-
27
22
  class ConfigurationPolicyAclIPv6Definition(APIEndpoints, PolicyDefinitionEndpoints):
28
23
  @post("/template/policy/definition/aclv6")
29
24
  def create_policy_definition(self, payload: AclIPv6Policy) -> PolicyDefinitionId:
@@ -0,0 +1,52 @@
1
+ # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
+
3
+ # mypy: disable-error-code="empty-body"
4
+
5
+ from uuid import UUID
6
+
7
+ from catalystwan.endpoints import APIEndpoints, delete, get, post, put
8
+ from catalystwan.endpoints.configuration.policy.abstractions import PolicyDefinitionEndpoints
9
+ from catalystwan.models.policy.definition.aip import (
10
+ AdvancedInspectionProfilePolicy,
11
+ AdvancedInspectionProfilePolicyEditPayload,
12
+ AdvancedInspectionProfilePolicyGetResponse,
13
+ )
14
+ from catalystwan.models.policy.policy_definition import (
15
+ PolicyDefinitionEditResponse,
16
+ PolicyDefinitionId,
17
+ PolicyDefinitionInfo,
18
+ PolicyDefinitionPreview,
19
+ )
20
+ from catalystwan.typed_list import DataSequence
21
+
22
+
23
+ class ConfigurationPolicyAIPDefinition(APIEndpoints, PolicyDefinitionEndpoints):
24
+ @post("/template/policy/definition/advancedinspectionprofile")
25
+ def create_policy_definition(self, payload: AdvancedInspectionProfilePolicy) -> PolicyDefinitionId:
26
+ ...
27
+
28
+ @delete("/template/policy/definition/advancedinspectionprofile/{id}")
29
+ def delete_policy_definition(self, id: UUID) -> None:
30
+ ...
31
+
32
+ @put("/template/policy/definition/advancedinspectionprofile/{id}")
33
+ def edit_policy_definition(
34
+ self, id: UUID, payload: AdvancedInspectionProfilePolicyEditPayload
35
+ ) -> PolicyDefinitionEditResponse:
36
+ ...
37
+
38
+ @get("/template/policy/definition/advancedinspectionprofile", "data")
39
+ def get_definitions(self) -> DataSequence[PolicyDefinitionInfo]:
40
+ ...
41
+
42
+ @get("/template/policy/definition/advancedinspectionprofile/{id}")
43
+ def get_policy_definition(self, id: UUID) -> AdvancedInspectionProfilePolicyGetResponse:
44
+ ...
45
+
46
+ @post("/template/policy/definition/advancedinspectionprofile/preview")
47
+ def preview_policy_definition(self, payload: AdvancedInspectionProfilePolicy) -> PolicyDefinitionPreview:
48
+ ...
49
+
50
+ @get("/template/policy/definition/advancedinspectionprofile/preview/{id}")
51
+ def preview_policy_definition_by_id(self, id: UUID) -> PolicyDefinitionPreview:
52
+ ...
@@ -0,0 +1,52 @@
1
+ # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
+
3
+ # mypy: disable-error-code="empty-body"
4
+
5
+ from uuid import UUID
6
+
7
+ from catalystwan.endpoints import APIEndpoints, delete, get, post, put
8
+ from catalystwan.endpoints.configuration.policy.abstractions import PolicyDefinitionEndpoints
9
+ from catalystwan.models.policy.definition.amp import (
10
+ AdvancedMalwareProtectionPolicy,
11
+ AdvancedMalwareProtectionPolicyEditPayload,
12
+ AdvancedMalwareProtectionPolicyGetResponse,
13
+ )
14
+ from catalystwan.models.policy.policy_definition import (
15
+ PolicyDefinitionEditResponse,
16
+ PolicyDefinitionId,
17
+ PolicyDefinitionInfo,
18
+ PolicyDefinitionPreview,
19
+ )
20
+ from catalystwan.typed_list import DataSequence
21
+
22
+
23
+ class ConfigurationPolicyAMPDefinition(APIEndpoints, PolicyDefinitionEndpoints):
24
+ @post("/template/policy/definition/advancedMalwareProtection")
25
+ def create_policy_definition(self, payload: AdvancedMalwareProtectionPolicy) -> PolicyDefinitionId:
26
+ ...
27
+
28
+ @delete("/template/policy/definition/advancedMalwareProtection/{id}")
29
+ def delete_policy_definition(self, id: UUID) -> None:
30
+ ...
31
+
32
+ @put("/template/policy/definition/advancedMalwareProtection/{id}")
33
+ def edit_policy_definition(
34
+ self, id: UUID, payload: AdvancedMalwareProtectionPolicyEditPayload
35
+ ) -> PolicyDefinitionEditResponse:
36
+ ...
37
+
38
+ @get("/template/policy/definition/advancedMalwareProtection", "data")
39
+ def get_definitions(self) -> DataSequence[PolicyDefinitionInfo]:
40
+ ...
41
+
42
+ @get("/template/policy/definition/advancedMalwareProtection/{id}")
43
+ def get_policy_definition(self, id: UUID) -> AdvancedMalwareProtectionPolicyGetResponse:
44
+ ...
45
+
46
+ @post("/template/policy/definition/advancedMalwareProtection/preview")
47
+ def preview_policy_definition(self, payload: AdvancedMalwareProtectionPolicy) -> PolicyDefinitionPreview:
48
+ ...
49
+
50
+ @get("/template/policy/definition/advancedMalwareProtection/preview/{id}")
51
+ def preview_policy_definition_by_id(self, id: UUID) -> PolicyDefinitionPreview:
52
+ ...
@@ -0,0 +1,50 @@
1
+ # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
+
3
+ # mypy: disable-error-code="empty-body"
4
+
5
+ from uuid import UUID
6
+
7
+ from catalystwan.endpoints import APIEndpoints, delete, get, post, put
8
+ from catalystwan.endpoints.configuration.policy.abstractions import PolicyDefinitionEndpoints
9
+ from catalystwan.models.policy.definition.app_route import (
10
+ AppRoutePolicy,
11
+ AppRoutePolicyEditPayload,
12
+ AppRoutePolicyGetResponse,
13
+ )
14
+ from catalystwan.models.policy.policy_definition import (
15
+ PolicyDefinitionEditResponse,
16
+ PolicyDefinitionId,
17
+ PolicyDefinitionInfo,
18
+ PolicyDefinitionPreview,
19
+ )
20
+ from catalystwan.typed_list import DataSequence
21
+
22
+
23
+ class ConfigurationPolicyAppRouteDefinition(APIEndpoints, PolicyDefinitionEndpoints):
24
+ @post("/template/policy/definition/approute/")
25
+ def create_policy_definition(self, payload: AppRoutePolicy) -> PolicyDefinitionId:
26
+ ...
27
+
28
+ @delete("/template/policy/definition/approute/{id}")
29
+ def delete_policy_definition(self, id: UUID) -> None:
30
+ ...
31
+
32
+ @put("/template/policy/definition/approute/{id}")
33
+ def edit_policy_definition(self, id: UUID, payload: AppRoutePolicyEditPayload) -> PolicyDefinitionEditResponse:
34
+ ...
35
+
36
+ @get("/template/policy/definition/approute", "data")
37
+ def get_definitions(self) -> DataSequence[PolicyDefinitionInfo]:
38
+ ...
39
+
40
+ @get("/template/policy/definition/approute/{id}")
41
+ def get_policy_definition(self, id: UUID) -> AppRoutePolicyGetResponse:
42
+ ...
43
+
44
+ @post("/template/policy/definition/approute/preview")
45
+ def preview_policy_definition(self, payload: AppRoutePolicy) -> PolicyDefinitionPreview:
46
+ ...
47
+
48
+ @get("/template/policy/definition/approute/preview/{id}")
49
+ def preview_policy_definition_by_id(self, id: UUID) -> PolicyDefinitionPreview:
50
+ ...
@@ -0,0 +1,46 @@
1
+ # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
+
3
+ # mypy: disable-error-code="empty-body"
4
+
5
+ from uuid import UUID
6
+
7
+ from catalystwan.endpoints import APIEndpoints, delete, get, post, put
8
+ from catalystwan.endpoints.configuration.policy.abstractions import PolicyDefinitionEndpoints
9
+ from catalystwan.models.policy.definition.cflowd import CflowdPolicy, CflowdPolicyEditPayload, CflowdPolicyGetResponse
10
+ from catalystwan.models.policy.policy_definition import (
11
+ PolicyDefinitionEditResponse,
12
+ PolicyDefinitionId,
13
+ PolicyDefinitionInfo,
14
+ PolicyDefinitionPreview,
15
+ )
16
+ from catalystwan.typed_list import DataSequence
17
+
18
+
19
+ class ConfigurationPolicyCflowdDefinition(APIEndpoints, PolicyDefinitionEndpoints):
20
+ @post("/template/policy/definition/cflowd/")
21
+ def create_policy_definition(self, payload: CflowdPolicy) -> PolicyDefinitionId:
22
+ ...
23
+
24
+ @delete("/template/policy/definition/cflowd/{id}")
25
+ def delete_policy_definition(self, id: UUID) -> None:
26
+ ...
27
+
28
+ @put("/template/policy/definition/cflowd/{id}")
29
+ def edit_policy_definition(self, id: UUID, payload: CflowdPolicyEditPayload) -> PolicyDefinitionEditResponse:
30
+ ...
31
+
32
+ @get("/template/policy/definition/cflowd", "data")
33
+ def get_definitions(self) -> DataSequence[PolicyDefinitionInfo]:
34
+ ...
35
+
36
+ @get("/template/policy/definition/cflowd/{id}")
37
+ def get_policy_definition(self, id: UUID) -> CflowdPolicyGetResponse:
38
+ ...
39
+
40
+ @post("/template/policy/definition/cflowd/preview")
41
+ def preview_policy_definition(self, payload: CflowdPolicy) -> PolicyDefinitionPreview:
42
+ ...
43
+
44
+ @get("/template/policy/definition/cflowd/preview/{id}")
45
+ def preview_policy_definition_by_id(self, id: UUID) -> PolicyDefinitionPreview:
46
+ ...
@@ -4,11 +4,14 @@
4
4
  from uuid import UUID
5
5
 
6
6
  from catalystwan.endpoints import APIEndpoints, delete, get, post, put
7
- from catalystwan.models.policy.definitions.control import ControlPolicy
7
+ from catalystwan.endpoints.configuration.policy.abstractions import PolicyDefinitionEndpoints
8
+ from catalystwan.models.policy.definition.control import (
9
+ ControlPolicy,
10
+ ControlPolicyEditPayload,
11
+ ControlPolicyGetResponse,
12
+ )
8
13
  from catalystwan.models.policy.policy_definition import (
9
14
  PolicyDefinitionEditResponse,
10
- PolicyDefinitionEndpoints,
11
- PolicyDefinitionGetResponse,
12
15
  PolicyDefinitionId,
13
16
  PolicyDefinitionInfo,
14
17
  PolicyDefinitionPreview,
@@ -16,14 +19,6 @@ from catalystwan.models.policy.policy_definition import (
16
19
  from catalystwan.typed_list import DataSequence
17
20
 
18
21
 
19
- class ControlPolicyEditPayload(ControlPolicy, PolicyDefinitionId):
20
- pass
21
-
22
-
23
- class ControlPolicyGetResponse(ControlPolicy, PolicyDefinitionGetResponse):
24
- pass
25
-
26
-
27
22
  class ConfigurationPolicyControlDefinition(APIEndpoints, PolicyDefinitionEndpoints):
28
23
  @post("/template/policy/definition/control")
29
24
  def create_policy_definition(self, payload: ControlPolicy) -> PolicyDefinitionId:
@@ -4,11 +4,14 @@
4
4
  from uuid import UUID
5
5
 
6
6
  from catalystwan.endpoints import APIEndpoints, delete, get, post, put
7
- from catalystwan.models.policy.definitions.device_access import DeviceAccessPolicy
7
+ from catalystwan.endpoints.configuration.policy.abstractions import PolicyDefinitionEndpoints
8
+ from catalystwan.models.policy.definition.device_access import (
9
+ DeviceAccessPolicy,
10
+ DeviceAccessPolicyEditPayload,
11
+ DeviceAccessPolicyGetResponse,
12
+ )
8
13
  from catalystwan.models.policy.policy_definition import (
9
14
  PolicyDefinitionEditResponse,
10
- PolicyDefinitionEndpoints,
11
- PolicyDefinitionGetResponse,
12
15
  PolicyDefinitionId,
13
16
  PolicyDefinitionInfo,
14
17
  PolicyDefinitionPreview,
@@ -16,14 +19,6 @@ from catalystwan.models.policy.policy_definition import (
16
19
  from catalystwan.typed_list import DataSequence
17
20
 
18
21
 
19
- class DeviceAccessPolicyEditPayload(DeviceAccessPolicy, PolicyDefinitionId):
20
- pass
21
-
22
-
23
- class DeviceAccessPolicyGetResponse(DeviceAccessPolicy, PolicyDefinitionGetResponse):
24
- pass
25
-
26
-
27
22
  class ConfigurationPolicyDeviceAccessDefinition(APIEndpoints, PolicyDefinitionEndpoints):
28
23
  @post("/template/policy/definition/deviceaccesspolicy")
29
24
  def create_policy_definition(self, payload: DeviceAccessPolicy) -> PolicyDefinitionId:
@@ -4,11 +4,14 @@
4
4
  from uuid import UUID
5
5
 
6
6
  from catalystwan.endpoints import APIEndpoints, delete, get, post, put
7
- from catalystwan.models.policy.definitions.device_access_ipv6 import DeviceAccessIPv6Policy
7
+ from catalystwan.endpoints.configuration.policy.abstractions import PolicyDefinitionEndpoints
8
+ from catalystwan.models.policy.definition.device_access_ipv6 import (
9
+ DeviceAccessIPv6Policy,
10
+ DeviceAccessIPv6PolicyEditPayload,
11
+ DeviceAccessIPv6PolicyGetResponse,
12
+ )
8
13
  from catalystwan.models.policy.policy_definition import (
9
14
  PolicyDefinitionEditResponse,
10
- PolicyDefinitionEndpoints,
11
- PolicyDefinitionGetResponse,
12
15
  PolicyDefinitionId,
13
16
  PolicyDefinitionInfo,
14
17
  PolicyDefinitionPreview,
@@ -16,14 +19,6 @@ from catalystwan.models.policy.policy_definition import (
16
19
  from catalystwan.typed_list import DataSequence
17
20
 
18
21
 
19
- class DeviceAccessIPv6PolicyEditPayload(DeviceAccessIPv6Policy, PolicyDefinitionId):
20
- pass
21
-
22
-
23
- class DeviceAccessIPv6PolicyGetResponse(DeviceAccessIPv6Policy, PolicyDefinitionGetResponse):
24
- pass
25
-
26
-
27
22
  class ConfigurationPolicyDeviceAccessIPv6Definition(APIEndpoints, PolicyDefinitionEndpoints):
28
23
  @post("/template/policy/definition/deviceaccesspolicyv6")
29
24
  def create_policy_definition(self, payload: DeviceAccessIPv6Policy) -> PolicyDefinitionId:
@@ -0,0 +1,57 @@
1
+ # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
+
3
+ # mypy: disable-error-code="empty-body"
4
+ from uuid import UUID
5
+
6
+ from catalystwan.endpoints import APIEndpoints, delete, get, post, put
7
+ from catalystwan.endpoints.configuration.policy.abstractions import PolicyDefinitionEndpoints
8
+ from catalystwan.models.policy.definition.dial_peer import (
9
+ DialPeerPolicy,
10
+ DialPeerPolicyEditPayload,
11
+ DialPeerPolicyGetResponse,
12
+ )
13
+ from catalystwan.models.policy.policy_definition import (
14
+ PolicyDefinitionEditResponse,
15
+ PolicyDefinitionId,
16
+ PolicyDefinitionInfo,
17
+ PolicyDefinitionPreview,
18
+ )
19
+ from catalystwan.typed_list import DataSequence
20
+
21
+
22
+ class ConfigurationPolicyDialPeerDefinition(APIEndpoints, PolicyDefinitionEndpoints):
23
+ @post("/template/policy/definition/dialpeer")
24
+ def create_policy_definition(self, payload: DialPeerPolicy) -> PolicyDefinitionId:
25
+ ...
26
+
27
+ @delete("/template/policy/definition/dialpeer/{id}")
28
+ def delete_policy_definition(self, id: UUID) -> None:
29
+ ...
30
+
31
+ def edit_multiple_policy_definition(self):
32
+ # PUT /template/policy/definition/dialpeer/multiple/{id}
33
+ ...
34
+
35
+ @put("/template/policy/definition/dialpeer/{id}")
36
+ def edit_policy_definition(self, id: UUID, payload: DialPeerPolicyEditPayload) -> PolicyDefinitionEditResponse:
37
+ ...
38
+
39
+ @get("/template/policy/definition/dialpeer", "data")
40
+ def get_definitions(self) -> DataSequence[PolicyDefinitionInfo]:
41
+ ...
42
+
43
+ @get("/template/policy/definition/dialpeer/{id}")
44
+ def get_policy_definition(self, id: UUID) -> DialPeerPolicyGetResponse:
45
+ ...
46
+
47
+ @post("/template/policy/definition/dialpeer/preview")
48
+ def preview_policy_definition(self, payload: DialPeerPolicy) -> PolicyDefinitionPreview:
49
+ ...
50
+
51
+ @get("/template/policy/definition/dialpeer/preview/{id}")
52
+ def preview_policy_definition_by_id(self, id: UUID) -> PolicyDefinitionPreview:
53
+ ...
54
+
55
+ def save_policy_definition_in_bulk(self):
56
+ # PUT /template/policy/definition/dialpeer/bulk
57
+ ...
@@ -0,0 +1,50 @@
1
+ # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
+
3
+ # mypy: disable-error-code="empty-body"
4
+
5
+ from uuid import UUID
6
+
7
+ from catalystwan.endpoints import APIEndpoints, delete, get, post, put
8
+ from catalystwan.endpoints.configuration.policy.abstractions import PolicyDefinitionEndpoints
9
+ from catalystwan.models.policy.definition.dns_security import (
10
+ DnsSecurityPolicy,
11
+ DnsSecurityPolicyEditPayload,
12
+ DnsSecurityPolicyGetResponse,
13
+ )
14
+ from catalystwan.models.policy.policy_definition import (
15
+ PolicyDefinitionEditResponse,
16
+ PolicyDefinitionId,
17
+ PolicyDefinitionInfo,
18
+ PolicyDefinitionPreview,
19
+ )
20
+ from catalystwan.typed_list import DataSequence
21
+
22
+
23
+ class ConfigurationPolicyDnsSecurityDefinition(APIEndpoints, PolicyDefinitionEndpoints):
24
+ @post("/template/policy/definition/dnssecurity")
25
+ def create_policy_definition(self, payload: DnsSecurityPolicy) -> PolicyDefinitionId:
26
+ ...
27
+
28
+ @delete("/template/policy/definition/dnssecurity/{id}")
29
+ def delete_policy_definition(self, id: UUID) -> None:
30
+ ...
31
+
32
+ @put("/template/policy/definition/dnssecurity/{id}")
33
+ def edit_policy_definition(self, id: UUID, payload: DnsSecurityPolicyEditPayload) -> PolicyDefinitionEditResponse:
34
+ ...
35
+
36
+ @get("/template/policy/definition/dnssecurity", "data")
37
+ def get_definitions(self) -> DataSequence[PolicyDefinitionInfo]:
38
+ ...
39
+
40
+ @get("/template/policy/definition/dnssecurity/{id}")
41
+ def get_policy_definition(self, id: UUID) -> DnsSecurityPolicyGetResponse:
42
+ ...
43
+
44
+ @post("/template/policy/definition/dnssecurity/preview")
45
+ def preview_policy_definition(self, payload: DnsSecurityPolicy) -> PolicyDefinitionPreview:
46
+ ...
47
+
48
+ @get("/template/policy/definition/dnssecurity/preview/{id}")
49
+ def preview_policy_definition_by_id(self, id: UUID) -> PolicyDefinitionPreview:
50
+ ...
@@ -0,0 +1,57 @@
1
+ # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
+
3
+ # mypy: disable-error-code="empty-body"
4
+ from uuid import UUID
5
+
6
+ from catalystwan.endpoints import APIEndpoints, delete, get, post, put
7
+ from catalystwan.endpoints.configuration.policy.abstractions import PolicyDefinitionEndpoints
8
+ from catalystwan.models.policy.definition.fxo_port import (
9
+ FxoPortPolicy,
10
+ FxoPortPolicyEditPayload,
11
+ FxoPortPolicyGetResponse,
12
+ )
13
+ from catalystwan.models.policy.policy_definition import (
14
+ PolicyDefinitionEditResponse,
15
+ PolicyDefinitionId,
16
+ PolicyDefinitionInfo,
17
+ PolicyDefinitionPreview,
18
+ )
19
+ from catalystwan.typed_list import DataSequence
20
+
21
+
22
+ class ConfigurationPolicyFxoPortDefinition(APIEndpoints, PolicyDefinitionEndpoints):
23
+ @post("/template/policy/definition/fxoport")
24
+ def create_policy_definition(self, payload: FxoPortPolicy) -> PolicyDefinitionId:
25
+ ...
26
+
27
+ @delete("/template/policy/definition/fxoport/{id}")
28
+ def delete_policy_definition(self, id: UUID) -> None:
29
+ ...
30
+
31
+ def edit_multiple_policy_definition(self):
32
+ # PUT /template/policy/definition/fxoport/multiple/{id}
33
+ ...
34
+
35
+ @put("/template/policy/definition/fxoport/{id}")
36
+ def edit_policy_definition(self, id: UUID, payload: FxoPortPolicyEditPayload) -> PolicyDefinitionEditResponse:
37
+ ...
38
+
39
+ @get("/template/policy/definition/fxoport", "data")
40
+ def get_definitions(self) -> DataSequence[PolicyDefinitionInfo]:
41
+ ...
42
+
43
+ @get("/template/policy/definition/fxoport/{id}")
44
+ def get_policy_definition(self, id: UUID) -> FxoPortPolicyGetResponse:
45
+ ...
46
+
47
+ @post("/template/policy/definition/fxoport/preview")
48
+ def preview_policy_definition(self, payload: FxoPortPolicy) -> PolicyDefinitionPreview:
49
+ ...
50
+
51
+ @get("/template/policy/definition/fxoport/preview/{id}")
52
+ def preview_policy_definition_by_id(self, id: UUID) -> PolicyDefinitionPreview:
53
+ ...
54
+
55
+ def save_policy_definition_in_bulk(self):
56
+ # PUT /template/policy/definition/fxoport/bulk
57
+ ...
@@ -0,0 +1,57 @@
1
+ # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
+
3
+ # mypy: disable-error-code="empty-body"
4
+ from uuid import UUID
5
+
6
+ from catalystwan.endpoints import APIEndpoints, delete, get, post, put
7
+ from catalystwan.endpoints.configuration.policy.abstractions import PolicyDefinitionEndpoints
8
+ from catalystwan.models.policy.definition.fxs_did_port import (
9
+ FxsDidPortPolicy,
10
+ FxsDidPortPolicyEditPayload,
11
+ FxsDidPortPolicyGetResponse,
12
+ )
13
+ from catalystwan.models.policy.policy_definition import (
14
+ PolicyDefinitionEditResponse,
15
+ PolicyDefinitionId,
16
+ PolicyDefinitionInfo,
17
+ PolicyDefinitionPreview,
18
+ )
19
+ from catalystwan.typed_list import DataSequence
20
+
21
+
22
+ class ConfigurationPolicyFxsDidPortDefinition(APIEndpoints, PolicyDefinitionEndpoints):
23
+ @post("/template/policy/definition/fxsdidport")
24
+ def create_policy_definition(self, payload: FxsDidPortPolicy) -> PolicyDefinitionId:
25
+ ...
26
+
27
+ @delete("/template/policy/definition/fxsdidport/{id}")
28
+ def delete_policy_definition(self, id: UUID) -> None:
29
+ ...
30
+
31
+ def edit_multiple_policy_definition(self):
32
+ # PUT /template/policy/definition/fxsdidport/multiple/{id}
33
+ ...
34
+
35
+ @put("/template/policy/definition/fxsdidport/{id}")
36
+ def edit_policy_definition(self, id: UUID, payload: FxsDidPortPolicyEditPayload) -> PolicyDefinitionEditResponse:
37
+ ...
38
+
39
+ @get("/template/policy/definition/fxsdidport", "data")
40
+ def get_definitions(self) -> DataSequence[PolicyDefinitionInfo]:
41
+ ...
42
+
43
+ @get("/template/policy/definition/fxsdidport/{id}")
44
+ def get_policy_definition(self, id: UUID) -> FxsDidPortPolicyGetResponse:
45
+ ...
46
+
47
+ @post("/template/policy/definition/fxsdidport/preview")
48
+ def preview_policy_definition(self, payload: FxsDidPortPolicy) -> PolicyDefinitionPreview:
49
+ ...
50
+
51
+ @get("/template/policy/definition/fxsdidport/preview/{id}")
52
+ def preview_policy_definition_by_id(self, id: UUID) -> PolicyDefinitionPreview:
53
+ ...
54
+
55
+ def save_policy_definition_in_bulk(self):
56
+ # PUT /template/policy/definition/fxsdidport/bulk
57
+ ...