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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (509) hide show
  1. catalystwan/ENDPOINTS.md +611 -0
  2. catalystwan/__init__.py +2 -3
  3. catalystwan/api/administration.py +2 -13
  4. catalystwan/api/api_container.py +1 -4
  5. catalystwan/api/config_group_api.py +16 -41
  6. catalystwan/api/configuration_groups/parcel.py +30 -100
  7. catalystwan/api/configuration_groups/parcels/cellular_controller.py +33 -0
  8. catalystwan/api/feature_profile_api.py +237 -2016
  9. catalystwan/api/policy_api.py +116 -470
  10. catalystwan/api/template_api.py +44 -113
  11. catalystwan/api/templates/README.md +47 -61
  12. catalystwan/api/templates/cli_template.py +7 -17
  13. catalystwan/api/templates/device_template/device_template.py +32 -127
  14. catalystwan/api/templates/device_template/device_template_payload.json.j2 +19 -0
  15. catalystwan/api/templates/feature_template.py +3 -3
  16. catalystwan/api/templates/models/cisco_aaa_model.py +42 -289
  17. catalystwan/api/templates/models/cisco_banner_model.py +2 -11
  18. catalystwan/api/templates/models/cisco_bfd_model.py +36 -31
  19. catalystwan/api/templates/models/cisco_bgp_model.py +131 -382
  20. catalystwan/api/templates/models/cisco_logging_model.py +43 -80
  21. catalystwan/api/templates/models/cisco_ntp_model.py +15 -34
  22. catalystwan/api/templates/models/cisco_omp_model.py +60 -70
  23. catalystwan/api/templates/models/cisco_ospf.py +74 -143
  24. catalystwan/api/templates/models/cisco_ospfv3.py +95 -217
  25. catalystwan/api/templates/models/cisco_secure_internet_gateway.py +142 -304
  26. catalystwan/api/templates/models/cisco_snmp_model.py +52 -66
  27. catalystwan/api/templates/models/cisco_system.py +129 -238
  28. catalystwan/api/templates/models/cisco_vpn_interface_model.py +275 -632
  29. catalystwan/api/templates/models/cisco_vpn_model.py +270 -433
  30. catalystwan/api/templates/models/cli_template.py +2 -3
  31. catalystwan/api/templates/models/omp_vsmart_model.py +10 -46
  32. catalystwan/api/templates/models/security_vsmart_model.py +8 -11
  33. catalystwan/api/templates/models/supported.py +4 -10
  34. catalystwan/api/templates/models/system_vsmart_model.py +27 -164
  35. catalystwan/apigw_auth.py +2 -6
  36. catalystwan/dataclasses.py +53 -2
  37. catalystwan/endpoints/__init__.py +41 -41
  38. catalystwan/endpoints/certificate_management_device.py +0 -4
  39. catalystwan/endpoints/cluster_management.py +9 -30
  40. catalystwan/endpoints/configuration/feature_profile/sdwan/policy_object.py +12 -35
  41. catalystwan/endpoints/configuration/feature_profile/sdwan/system.py +11 -164
  42. catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py +26 -144
  43. catalystwan/endpoints/configuration/policy/definition/access_control_list.py +11 -6
  44. catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py +11 -6
  45. catalystwan/endpoints/configuration/policy/definition/control.py +11 -6
  46. catalystwan/endpoints/configuration/policy/definition/device_access.py +11 -6
  47. catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py +11 -6
  48. catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py +11 -6
  49. catalystwan/endpoints/configuration/policy/definition/mesh.py +11 -2
  50. catalystwan/endpoints/configuration/policy/definition/qos_map.py +11 -2
  51. catalystwan/endpoints/configuration/policy/definition/rewrite.py +11 -6
  52. catalystwan/endpoints/configuration/policy/definition/rule_set.py +11 -2
  53. catalystwan/endpoints/configuration/policy/definition/security_group.py +11 -6
  54. catalystwan/endpoints/configuration/policy/definition/traffic_data.py +11 -6
  55. catalystwan/endpoints/configuration/policy/definition/vpn_membership.py +11 -6
  56. catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py +11 -6
  57. catalystwan/endpoints/configuration/policy/list/app.py +16 -3
  58. catalystwan/endpoints/configuration/policy/list/app_probe.py +15 -6
  59. catalystwan/endpoints/configuration/policy/list/as_path.py +16 -3
  60. catalystwan/endpoints/configuration/policy/list/class_map.py +16 -3
  61. catalystwan/endpoints/configuration/policy/list/color.py +16 -3
  62. catalystwan/endpoints/configuration/policy/list/community.py +16 -3
  63. catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py +15 -6
  64. catalystwan/endpoints/configuration/policy/list/data_prefix.py +16 -3
  65. catalystwan/endpoints/configuration/policy/list/expanded_community.py +15 -6
  66. catalystwan/endpoints/configuration/policy/list/fqdn.py +16 -3
  67. catalystwan/endpoints/configuration/policy/list/geo_location.py +16 -3
  68. catalystwan/endpoints/configuration/policy/list/ips_signature.py +15 -6
  69. catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py +16 -3
  70. catalystwan/endpoints/configuration/policy/list/local_app.py +16 -3
  71. catalystwan/endpoints/configuration/policy/list/local_domain.py +16 -3
  72. catalystwan/endpoints/configuration/policy/list/mirror.py +16 -3
  73. catalystwan/endpoints/configuration/policy/list/policer.py +16 -3
  74. catalystwan/endpoints/configuration/policy/list/port.py +16 -3
  75. catalystwan/endpoints/configuration/policy/list/preferred_color_group.py +15 -6
  76. catalystwan/endpoints/configuration/policy/list/prefix.py +16 -4
  77. catalystwan/endpoints/configuration/policy/list/protocol_name.py +15 -6
  78. catalystwan/endpoints/configuration/policy/list/region.py +10 -2
  79. catalystwan/endpoints/configuration/policy/list/site.py +16 -3
  80. catalystwan/endpoints/configuration/policy/list/sla.py +16 -3
  81. catalystwan/endpoints/configuration/policy/list/tloc.py +16 -3
  82. catalystwan/endpoints/configuration/policy/list/url_allow_list.py +16 -3
  83. catalystwan/endpoints/configuration/policy/list/url_block_list.py +16 -3
  84. catalystwan/endpoints/configuration/policy/list/vpn.py +16 -3
  85. catalystwan/endpoints/configuration/policy/list/zone.py +16 -3
  86. catalystwan/endpoints/configuration/policy/security_template.py +3 -2
  87. catalystwan/endpoints/configuration/software_actions.py +4 -2
  88. catalystwan/endpoints/configuration_dashboard_status.py +2 -2
  89. catalystwan/endpoints/configuration_device_template.py +1 -15
  90. catalystwan/endpoints/configuration_feature_profile.py +11 -8
  91. catalystwan/endpoints/configuration_group.py +5 -28
  92. catalystwan/endpoints/configuration_settings.py +1 -90
  93. catalystwan/endpoints/endpoints_container.py +18 -82
  94. catalystwan/endpoints/real_time_monitoring/reboot_history.py +3 -1
  95. catalystwan/endpoints/tenant_migration.py +0 -2
  96. catalystwan/exceptions.py +0 -24
  97. catalystwan/integration_tests/test_find_template_values.py +18 -7
  98. catalystwan/models/common.py +2 -1898
  99. catalystwan/models/configuration/common.py +0 -1
  100. catalystwan/models/configuration/config_migration.py +36 -0
  101. catalystwan/models/configuration/feature_profile/common.py +149 -634
  102. catalystwan/models/configuration/feature_profile/sdwan/management/vpn.py +26 -0
  103. catalystwan/models/configuration/feature_profile/sdwan/policy_object/__init__.py +60 -69
  104. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/app_probe.py +20 -34
  105. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/application_list.py +6 -8
  106. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/color_list.py +5 -7
  107. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/data_prefix.py +4 -13
  108. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/expanded_community_list.py +7 -9
  109. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/fowarding_class.py +5 -7
  110. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv6_data_prefix.py +9 -11
  111. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv6_prefix_list.py +10 -25
  112. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/{policer.py → policier.py} +10 -12
  113. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/prefered_group_color.py +10 -29
  114. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/prefix_list.py +8 -23
  115. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/sla_class.py +31 -12
  116. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/standard_community.py +10 -16
  117. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/tloc_list.py +7 -8
  118. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/application_list.py +6 -8
  119. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/data_prefix.py +5 -7
  120. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/fqdn.py +5 -7
  121. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/geolocation_list.py +5 -7
  122. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ips_signature.py +5 -7
  123. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/local_domain.py +5 -7
  124. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/protocol_list.py +5 -7
  125. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/security_port.py +11 -21
  126. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/url.py +15 -36
  127. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/zone.py +18 -14
  128. catalystwan/models/configuration/feature_profile/sdwan/service/acl.py +409 -0
  129. catalystwan/models/configuration/feature_profile/sdwan/service/appqoe.py +42 -77
  130. catalystwan/models/configuration/feature_profile/sdwan/service/bgp.py +288 -0
  131. catalystwan/models/configuration/feature_profile/sdwan/service/dhcp_server.py +64 -107
  132. catalystwan/models/configuration/feature_profile/sdwan/service/eigrp.py +42 -39
  133. catalystwan/models/configuration/feature_profile/sdwan/service/lan/common.py +88 -7
  134. catalystwan/models/configuration/feature_profile/sdwan/service/lan/ethernet.py +156 -232
  135. catalystwan/models/configuration/feature_profile/sdwan/service/lan/gre.py +108 -38
  136. catalystwan/models/configuration/feature_profile/sdwan/service/lan/ipsec.py +84 -77
  137. catalystwan/models/configuration/feature_profile/sdwan/service/lan/svi.py +56 -62
  138. catalystwan/models/configuration/feature_profile/sdwan/service/lan/vpn.py +121 -112
  139. catalystwan/models/configuration/feature_profile/sdwan/service/multicast.py +57 -56
  140. catalystwan/models/configuration/feature_profile/sdwan/service/object_tracker.py +21 -15
  141. catalystwan/models/configuration/feature_profile/sdwan/{routing → service}/ospf.py +47 -55
  142. catalystwan/models/configuration/feature_profile/sdwan/{routing → service}/ospfv3.py +72 -74
  143. catalystwan/models/configuration/feature_profile/sdwan/service/route_policy.py +110 -358
  144. catalystwan/models/configuration/feature_profile/sdwan/service/service_insertion_attachment.py +25 -17
  145. catalystwan/models/configuration/feature_profile/sdwan/service/switchport.py +58 -50
  146. catalystwan/models/configuration/feature_profile/sdwan/service/tracker.py +21 -12
  147. catalystwan/models/configuration/feature_profile/sdwan/service/wireless_lan.py +31 -27
  148. catalystwan/models/configuration/feature_profile/sdwan/system/aaa.py +10 -58
  149. catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_controller.py +23 -26
  150. catalystwan/models/configuration/profile_type.py +6 -1
  151. catalystwan/models/policy/__init__.py +69 -282
  152. catalystwan/models/policy/centralized.py +29 -26
  153. catalystwan/models/policy/{definition → definitions}/access_control_list.py +17 -47
  154. catalystwan/models/policy/{definition → definitions}/access_control_list_ipv6.py +18 -42
  155. catalystwan/models/policy/{definition → definitions}/control.py +25 -48
  156. catalystwan/models/policy/{definition → definitions}/device_access.py +11 -22
  157. catalystwan/models/policy/{definition → definitions}/device_access_ipv6.py +11 -20
  158. catalystwan/models/policy/{definition → definitions}/hub_and_spoke.py +4 -18
  159. catalystwan/models/policy/{definition → definitions}/mesh.py +1 -13
  160. catalystwan/models/policy/{definition → definitions}/qos_map.py +32 -39
  161. catalystwan/models/policy/{definition → definitions}/rewrite.py +2 -12
  162. catalystwan/models/policy/{definition → definitions}/rule_set.py +48 -66
  163. catalystwan/models/policy/{definition → definitions}/security_group.py +14 -38
  164. catalystwan/models/policy/{definition → definitions}/traffic_data.py +61 -184
  165. catalystwan/models/policy/{definition → definitions}/vpn_membership.py +1 -13
  166. catalystwan/models/policy/{definition → definitions}/zone_based_firewall.py +32 -93
  167. catalystwan/models/policy/lists.py +330 -0
  168. catalystwan/models/policy/lists_entries.py +444 -0
  169. catalystwan/models/policy/localized.py +16 -34
  170. catalystwan/models/policy/policy.py +10 -14
  171. catalystwan/models/policy/policy_definition.py +173 -673
  172. catalystwan/models/policy/policy_list.py +27 -38
  173. catalystwan/models/policy/security.py +46 -145
  174. catalystwan/response.py +2 -6
  175. catalystwan/session.py +1 -1
  176. catalystwan/tests/templates/definitions/{cisco_vpn_basic.json → Basic_Cisco_VPN_Model.json} +2 -2
  177. catalystwan/tests/templates/definitions/complex_aaa.json +277 -0
  178. catalystwan/tests/templates/definitions/{cisco_vpn_complex.json → complex_cisco_vpn.json} +12 -27
  179. catalystwan/tests/templates/definitions/{cisco_aaa.json → iuo.json} +15 -44
  180. catalystwan/tests/templates/definitions/omp_1.json +11 -0
  181. catalystwan/tests/templates/definitions/{omp_vsmart_2.json → omp_2.json} +2 -16
  182. catalystwan/tests/templates/definitions/{omp_vsmart_3.json → omp_3.json} +2 -16
  183. catalystwan/tests/templates/models/__init__.py +13 -46
  184. catalystwan/tests/templates/models/cisco_aaa.py +48 -81
  185. catalystwan/tests/templates/models/cisco_banner.py +2 -2
  186. catalystwan/tests/templates/models/cisco_bfd.py +6 -4
  187. catalystwan/tests/templates/models/cisco_system.py +3 -108
  188. catalystwan/tests/templates/models/cisco_vpn.py +72 -42
  189. catalystwan/tests/templates/models/omp_vsmart.py +8 -28
  190. catalystwan/tests/templates/schemas/cedge_aaa.json +1 -1
  191. catalystwan/tests/templates/schemas/cisco_system.json +0 -242
  192. catalystwan/tests/templates/schemas/cisco_vpn.json +1 -53
  193. catalystwan/tests/templates/schemas/omp-vsmart.json +0 -20
  194. catalystwan/tests/templates/test_chose_model.py +10 -6
  195. catalystwan/tests/templates/test_deserialize_model.py +4 -4
  196. catalystwan/tests/templates/test_find_template_values.py +0 -229
  197. catalystwan/tests/templates/test_serialize_model.py +2 -1
  198. catalystwan/tests/test_cli_template.py +9 -8
  199. catalystwan/tests/test_endpoints.py +11 -42
  200. catalystwan/tests/test_templates.py +19 -16
  201. catalystwan/utils/feature_template/find_template_values.py +9 -22
  202. catalystwan/utils/timezone.py +422 -0
  203. catalystwan/workflows/tenant_migration.py +1 -1
  204. {catalystwan-0.41.2.dev9.dist-info → catalystwan-0.41.3.dist-info}/METADATA +1 -20
  205. catalystwan-0.41.3.dist-info/RECORD +353 -0
  206. catalystwan/api/builders/__init__.py +0 -14
  207. catalystwan/api/builders/feature_profiles/__init__.py +0 -0
  208. catalystwan/api/builders/feature_profiles/application_priority.py +0 -58
  209. catalystwan/api/builders/feature_profiles/builder_factory.py +0 -59
  210. catalystwan/api/builders/feature_profiles/cli.py +0 -76
  211. catalystwan/api/builders/feature_profiles/mixins.py +0 -44
  212. catalystwan/api/builders/feature_profiles/other.py +0 -79
  213. catalystwan/api/builders/feature_profiles/report.py +0 -155
  214. catalystwan/api/builders/feature_profiles/service.py +0 -248
  215. catalystwan/api/builders/feature_profiles/system.py +0 -80
  216. catalystwan/api/builders/feature_profiles/transport.py +0 -256
  217. catalystwan/api/builders/feature_profiles/uc_voice.py +0 -287
  218. catalystwan/api/templates/models/aaa_model.py +0 -387
  219. catalystwan/api/templates/models/vpn_vsmart_interface_model.py +0 -198
  220. catalystwan/api/templates/models/vpn_vsmart_model.py +0 -124
  221. catalystwan/endpoints/configuration/feature_profile/sdwan/application_priority.py +0 -107
  222. catalystwan/endpoints/configuration/feature_profile/sdwan/cli.py +0 -60
  223. catalystwan/endpoints/configuration/feature_profile/sdwan/dns_security.py +0 -83
  224. catalystwan/endpoints/configuration/feature_profile/sdwan/embedded_security.py +0 -88
  225. catalystwan/endpoints/configuration/feature_profile/sdwan/other.py +0 -62
  226. catalystwan/endpoints/configuration/feature_profile/sdwan/service.py +0 -154
  227. catalystwan/endpoints/configuration/feature_profile/sdwan/sig_security.py +0 -88
  228. catalystwan/endpoints/configuration/feature_profile/sdwan/topology.py +0 -93
  229. catalystwan/endpoints/configuration/feature_profile/sdwan/uc_voice.py +0 -77
  230. catalystwan/endpoints/configuration/network_hierarchy.py +0 -47
  231. catalystwan/endpoints/configuration/packages.py +0 -36
  232. catalystwan/endpoints/configuration/policy/abstractions.py +0 -49
  233. catalystwan/endpoints/configuration/policy/definition/aip.py +0 -52
  234. catalystwan/endpoints/configuration/policy/definition/amp.py +0 -52
  235. catalystwan/endpoints/configuration/policy/definition/app_route.py +0 -50
  236. catalystwan/endpoints/configuration/policy/definition/cflowd.py +0 -46
  237. catalystwan/endpoints/configuration/policy/definition/dial_peer.py +0 -57
  238. catalystwan/endpoints/configuration/policy/definition/dns_security.py +0 -50
  239. catalystwan/endpoints/configuration/policy/definition/fxo_port.py +0 -57
  240. catalystwan/endpoints/configuration/policy/definition/fxs_did_port.py +0 -57
  241. catalystwan/endpoints/configuration/policy/definition/fxs_port.py +0 -57
  242. catalystwan/endpoints/configuration/policy/definition/intrusion_prevention.py +0 -52
  243. catalystwan/endpoints/configuration/policy/definition/pri_isdn_port.py +0 -57
  244. catalystwan/endpoints/configuration/policy/definition/route_policy.py +0 -50
  245. catalystwan/endpoints/configuration/policy/definition/srst_phone_profile.py +0 -59
  246. catalystwan/endpoints/configuration/policy/definition/ssl_decryption.py +0 -50
  247. catalystwan/endpoints/configuration/policy/definition/ssl_decryption_utd_profile.py +0 -52
  248. catalystwan/endpoints/configuration/policy/definition/url_filtering.py +0 -50
  249. catalystwan/endpoints/configuration/policy/definition/vpn_qos_map.py +0 -50
  250. catalystwan/endpoints/configuration/policy/list/extended_community.py +0 -52
  251. catalystwan/endpoints/configuration/policy/list/fax_protocol.py +0 -48
  252. catalystwan/endpoints/configuration/policy/list/identity.py +0 -48
  253. catalystwan/endpoints/configuration/policy/list/media_profile.py +0 -52
  254. catalystwan/endpoints/configuration/policy/list/modem_pass_through.py +0 -52
  255. catalystwan/endpoints/configuration/policy/list/scalable_group_tag.py +0 -52
  256. catalystwan/endpoints/configuration/policy/list/supervisory_disconnect.py +0 -52
  257. catalystwan/endpoints/configuration/policy/list/threat_grid_api_key.py +0 -52
  258. catalystwan/endpoints/configuration/policy/list/translation_profile.py +0 -52
  259. catalystwan/endpoints/configuration/policy/list/translation_rules.py +0 -52
  260. catalystwan/endpoints/configuration/policy/list/trunkgroup.py +0 -48
  261. catalystwan/endpoints/configuration/policy/list/umbrella_data.py +0 -52
  262. catalystwan/endpoints/configuration/policy/voice_template.py +0 -39
  263. catalystwan/endpoints/configuration/policy_group.py +0 -30
  264. catalystwan/endpoints/configuration/topology_group.py +0 -51
  265. catalystwan/endpoints/configuration_general_template.py +0 -31
  266. catalystwan/endpoints/configuration_template_master.py +0 -48
  267. catalystwan/integration_tests/base.py +0 -81
  268. catalystwan/integration_tests/feature_profile/sdwan/__init__.py +0 -0
  269. catalystwan/integration_tests/feature_profile/sdwan/policy/__init__.py +0 -0
  270. catalystwan/integration_tests/feature_profile/sdwan/policy/base.py +0 -33
  271. catalystwan/integration_tests/feature_profile/sdwan/policy/test_extended_community.py +0 -33
  272. catalystwan/integration_tests/feature_profile/sdwan/policy/test_security_app_list.py +0 -32
  273. catalystwan/integration_tests/feature_profile/sdwan/test_application_priority.py +0 -433
  274. catalystwan/integration_tests/feature_profile/sdwan/test_cli.py +0 -54
  275. catalystwan/integration_tests/feature_profile/sdwan/test_dns_security.py +0 -106
  276. catalystwan/integration_tests/feature_profile/sdwan/test_other.py +0 -49
  277. catalystwan/integration_tests/feature_profile/sdwan/test_service.py +0 -1078
  278. catalystwan/integration_tests/feature_profile/sdwan/test_sig_security.py +0 -322
  279. catalystwan/integration_tests/feature_profile/sdwan/test_ssl_decryption.py +0 -85
  280. catalystwan/integration_tests/feature_profile/sdwan/test_system.py +0 -368
  281. catalystwan/integration_tests/feature_profile/sdwan/test_tracker.py +0 -127
  282. catalystwan/integration_tests/feature_profile/sdwan/test_transport.py +0 -1698
  283. catalystwan/integration_tests/feature_profile/sdwan/topology/test_topology.py +0 -93
  284. catalystwan/integration_tests/feature_profile/test_parcel.py +0 -54
  285. catalystwan/integration_tests/profile_builder/__init__.py +0 -0
  286. catalystwan/integration_tests/profile_builder/test_pb_service.py +0 -197
  287. catalystwan/integration_tests/profile_builder/test_pb_transport.py +0 -226
  288. catalystwan/integration_tests/profile_builder/test_pb_uc_voice.py +0 -277
  289. catalystwan/integration_tests/test_data/__init__.py +0 -117
  290. catalystwan/integration_tests/test_network_hierarchy.py +0 -82
  291. catalystwan/integration_tests/test_settings.py +0 -30
  292. catalystwan/models/configuration/feature_profile/parcel.py +0 -245
  293. catalystwan/models/configuration/feature_profile/sdwan/acl/__init__.py +0 -13
  294. catalystwan/models/configuration/feature_profile/sdwan/acl/ipv4acl.py +0 -298
  295. catalystwan/models/configuration/feature_profile/sdwan/acl/ipv6acl.py +0 -344
  296. catalystwan/models/configuration/feature_profile/sdwan/application_priority/__init__.py +0 -218
  297. catalystwan/models/configuration/feature_profile/sdwan/application_priority/cloud_probe.py +0 -61
  298. catalystwan/models/configuration/feature_profile/sdwan/application_priority/policy_settings.py +0 -31
  299. catalystwan/models/configuration/feature_profile/sdwan/application_priority/qos_policy.py +0 -102
  300. catalystwan/models/configuration/feature_profile/sdwan/application_priority/traffic_policy.py +0 -1057
  301. catalystwan/models/configuration/feature_profile/sdwan/cli/__init__.py +0 -23
  302. catalystwan/models/configuration/feature_profile/sdwan/cli/config.py +0 -18
  303. catalystwan/models/configuration/feature_profile/sdwan/cli/full_config.py +0 -15
  304. catalystwan/models/configuration/feature_profile/sdwan/dns_security/__init__.py +0 -13
  305. catalystwan/models/configuration/feature_profile/sdwan/dns_security/dns.py +0 -110
  306. catalystwan/models/configuration/feature_profile/sdwan/embedded_security/__init__.py +0 -23
  307. catalystwan/models/configuration/feature_profile/sdwan/embedded_security/ngfirewall.py +0 -493
  308. catalystwan/models/configuration/feature_profile/sdwan/embedded_security/policy.py +0 -171
  309. catalystwan/models/configuration/feature_profile/sdwan/other/__init__.py +0 -25
  310. catalystwan/models/configuration/feature_profile/sdwan/other/cybervision.py +0 -44
  311. catalystwan/models/configuration/feature_profile/sdwan/other/thousandeyes.py +0 -147
  312. catalystwan/models/configuration/feature_profile/sdwan/other/ucse.py +0 -110
  313. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/as_path.py +0 -22
  314. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/extended_community.py +0 -34
  315. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv4_network_object.py +0 -15
  316. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv4_service_object.py +0 -254
  317. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/mirror.py +0 -27
  318. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/network_object_group.py +0 -15
  319. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/object_group.py +0 -15
  320. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/service_object_group.py +0 -21
  321. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/aip.py +0 -64
  322. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/amp.py +0 -79
  323. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/identity.py +0 -30
  324. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/intrusion_prevention.py +0 -58
  325. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/object_group.py +0 -72
  326. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/rule_set.py +0 -137
  327. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/scalable_group_tag.py +0 -26
  328. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ssl_decryption.py +0 -126
  329. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ssl_decryption_profile.py +0 -165
  330. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/url_filtering.py +0 -148
  331. catalystwan/models/configuration/feature_profile/sdwan/routing/__init__.py +0 -26
  332. catalystwan/models/configuration/feature_profile/sdwan/routing/bgp.py +0 -609
  333. catalystwan/models/configuration/feature_profile/sdwan/service/__init__.py +0 -91
  334. catalystwan/models/configuration/feature_profile/sdwan/service/dual_router_ha.py +0 -26
  335. catalystwan/models/configuration/feature_profile/sdwan/service/lan/multilink.py +0 -101
  336. catalystwan/models/configuration/feature_profile/sdwan/service/service_chain.py +0 -38
  337. catalystwan/models/configuration/feature_profile/sdwan/sig_security/__init__.py +0 -19
  338. catalystwan/models/configuration/feature_profile/sdwan/sig_security/sig_security.py +0 -379
  339. catalystwan/models/configuration/feature_profile/sdwan/system/__init__.py +0 -59
  340. catalystwan/models/configuration/feature_profile/sdwan/system/banner.py +0 -30
  341. catalystwan/models/configuration/feature_profile/sdwan/system/basic.py +0 -290
  342. catalystwan/models/configuration/feature_profile/sdwan/system/bfd.py +0 -69
  343. catalystwan/models/configuration/feature_profile/sdwan/system/device_access.py +0 -157
  344. catalystwan/models/configuration/feature_profile/sdwan/system/device_access_ipv6.py +0 -157
  345. catalystwan/models/configuration/feature_profile/sdwan/system/global_parcel.py +0 -163
  346. catalystwan/models/configuration/feature_profile/sdwan/system/logging_parcel.py +0 -162
  347. catalystwan/models/configuration/feature_profile/sdwan/system/mrf.py +0 -75
  348. catalystwan/models/configuration/feature_profile/sdwan/system/ntp.py +0 -103
  349. catalystwan/models/configuration/feature_profile/sdwan/system/omp.py +0 -120
  350. catalystwan/models/configuration/feature_profile/sdwan/system/security.py +0 -179
  351. catalystwan/models/configuration/feature_profile/sdwan/system/snmp.py +0 -173
  352. catalystwan/models/configuration/feature_profile/sdwan/topology/__init__.py +0 -29
  353. catalystwan/models/configuration/feature_profile/sdwan/topology/custom_control.py +0 -425
  354. catalystwan/models/configuration/feature_profile/sdwan/topology/hubspoke.py +0 -60
  355. catalystwan/models/configuration/feature_profile/sdwan/topology/mesh.py +0 -23
  356. catalystwan/models/configuration/feature_profile/sdwan/trackers/__init__.py +0 -36
  357. catalystwan/models/configuration/feature_profile/sdwan/trackers/tracker.py +0 -96
  358. catalystwan/models/configuration/feature_profile/sdwan/trackers/tracker_group.py +0 -63
  359. catalystwan/models/configuration/feature_profile/sdwan/transport/__init__.py +0 -93
  360. catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_profile.py +0 -71
  361. catalystwan/models/configuration/feature_profile/sdwan/transport/gps.py +0 -37
  362. catalystwan/models/configuration/feature_profile/sdwan/transport/management/ethernet.py +0 -121
  363. catalystwan/models/configuration/feature_profile/sdwan/transport/t1e1controller.py +0 -124
  364. catalystwan/models/configuration/feature_profile/sdwan/transport/vpn.py +0 -285
  365. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/cellular.py +0 -173
  366. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/ethernet.py +0 -389
  367. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/gre.py +0 -46
  368. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/ipsec.py +0 -137
  369. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/multilink.py +0 -219
  370. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/protocol_over.py +0 -405
  371. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/t1e1serial.py +0 -195
  372. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/__init__.py +0 -62
  373. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/analog_interface.py +0 -436
  374. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/call_routing.py +0 -179
  375. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/digital_interface.py +0 -380
  376. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/dsp_farm.py +0 -193
  377. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/media_profile.py +0 -17
  378. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/server_group.py +0 -51
  379. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/srst.py +0 -86
  380. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/supervisory_disconnect.py +0 -69
  381. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/translation_profile.py +0 -42
  382. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/translation_rule.py +0 -31
  383. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/trunk_group.py +0 -26
  384. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/voice_global.py +0 -57
  385. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/voice_tenant.py +0 -40
  386. catalystwan/models/configuration/network_hierarchy/__init__.py +0 -24
  387. catalystwan/models/configuration/network_hierarchy/cflowd.py +0 -128
  388. catalystwan/models/configuration/network_hierarchy/node.py +0 -88
  389. catalystwan/models/configuration/network_hierarchy/security_logging.py +0 -91
  390. catalystwan/models/configuration/packages.py +0 -57
  391. catalystwan/models/configuration/policy_group.py +0 -74
  392. catalystwan/models/configuration/topology_group.py +0 -52
  393. catalystwan/models/policy/definition/aip.py +0 -60
  394. catalystwan/models/policy/definition/amp.py +0 -65
  395. catalystwan/models/policy/definition/app_route.py +0 -246
  396. catalystwan/models/policy/definition/cflowd.py +0 -95
  397. catalystwan/models/policy/definition/dial_peer.py +0 -60
  398. catalystwan/models/policy/definition/dns_security.py +0 -130
  399. catalystwan/models/policy/definition/fxo_port.py +0 -63
  400. catalystwan/models/policy/definition/fxs_did_port.py +0 -58
  401. catalystwan/models/policy/definition/fxs_port.py +0 -56
  402. catalystwan/models/policy/definition/intrusion_prevention.py +0 -55
  403. catalystwan/models/policy/definition/pri_isdn_port.py +0 -48
  404. catalystwan/models/policy/definition/route_policy.py +0 -187
  405. catalystwan/models/policy/definition/srst_phone_profile.py +0 -37
  406. catalystwan/models/policy/definition/ssl_decryption.py +0 -209
  407. catalystwan/models/policy/definition/ssl_decryption_utd_profile.py +0 -88
  408. catalystwan/models/policy/definition/url_filtering.py +0 -70
  409. catalystwan/models/policy/definition/vpn_qos_map.py +0 -46
  410. catalystwan/models/policy/list/app.py +0 -44
  411. catalystwan/models/policy/list/app_probe.py +0 -42
  412. catalystwan/models/policy/list/as_path.py +0 -30
  413. catalystwan/models/policy/list/class_map.py +0 -30
  414. catalystwan/models/policy/list/color.py +0 -28
  415. catalystwan/models/policy/list/communities.py +0 -83
  416. catalystwan/models/policy/list/data_ipv6_prefix.py +0 -30
  417. catalystwan/models/policy/list/data_prefix.py +0 -30
  418. catalystwan/models/policy/list/fax_protocol.py +0 -45
  419. catalystwan/models/policy/list/fqdn.py +0 -24
  420. catalystwan/models/policy/list/geo_location.py +0 -33
  421. catalystwan/models/policy/list/identity.py +0 -29
  422. catalystwan/models/policy/list/ips_signature.py +0 -27
  423. catalystwan/models/policy/list/ipv6_prefix.py +0 -33
  424. catalystwan/models/policy/list/local_app.py +0 -45
  425. catalystwan/models/policy/list/local_domain.py +0 -36
  426. catalystwan/models/policy/list/media_profile.py +0 -44
  427. catalystwan/models/policy/list/mirror.py +0 -27
  428. catalystwan/models/policy/list/modem_pass_through.py +0 -27
  429. catalystwan/models/policy/list/policer.py +0 -39
  430. catalystwan/models/policy/list/port.py +0 -33
  431. catalystwan/models/policy/list/preferred_color_group.py +0 -82
  432. catalystwan/models/policy/list/prefix.py +0 -33
  433. catalystwan/models/policy/list/protocol_name.py +0 -26
  434. catalystwan/models/policy/list/region.py +0 -45
  435. catalystwan/models/policy/list/scalable_group_tag.py +0 -30
  436. catalystwan/models/policy/list/site.py +0 -34
  437. catalystwan/models/policy/list/sla.py +0 -77
  438. catalystwan/models/policy/list/supervisory_disconnect.py +0 -62
  439. catalystwan/models/policy/list/threat_grid_api_key.py +0 -32
  440. catalystwan/models/policy/list/tloc.py +0 -32
  441. catalystwan/models/policy/list/translation_profile.py +0 -32
  442. catalystwan/models/policy/list/translation_rules.py +0 -29
  443. catalystwan/models/policy/list/trunkgroup.py +0 -56
  444. catalystwan/models/policy/list/umbrella_data.py +0 -30
  445. catalystwan/models/policy/list/url.py +0 -39
  446. catalystwan/models/policy/list/vpn.py +0 -40
  447. catalystwan/models/policy/list/zone.py +0 -46
  448. catalystwan/models/policy/voice.py +0 -77
  449. catalystwan/models/settings.py +0 -41
  450. catalystwan/models/templates.py +0 -79
  451. catalystwan/tests/builders/test_report.py +0 -60
  452. catalystwan/tests/builders/uc_voice.py +0 -85
  453. catalystwan/tests/models/__init__.py +0 -0
  454. catalystwan/tests/models/configuration/feature_profile/sdwan/policy_object/security/test_url.py +0 -73
  455. catalystwan/tests/models/test_digital_interface.py +0 -56
  456. catalystwan/tests/templates/definitions/aaa_basic.json +0 -96
  457. catalystwan/tests/templates/definitions/aaa_complex.json +0 -464
  458. catalystwan/tests/templates/definitions/cisco_aaa_complex.json +0 -361
  459. catalystwan/tests/templates/definitions/cisco_logging_complex.json +0 -268
  460. catalystwan/tests/templates/definitions/cisco_ntp_complex.json +0 -143
  461. catalystwan/tests/templates/definitions/cisco_omp_complex.json +0 -175
  462. catalystwan/tests/templates/definitions/cisco_ospf_complex.json +0 -302
  463. catalystwan/tests/templates/definitions/cisco_sig.json +0 -405
  464. catalystwan/tests/templates/definitions/cisco_snmp_complex.json +0 -258
  465. catalystwan/tests/templates/definitions/cisco_system_complex.json +0 -502
  466. catalystwan/tests/templates/definitions/cisco_vpn_interface_complex.json +0 -821
  467. catalystwan/tests/templates/definitions/omp_vsmart_1.json +0 -26
  468. catalystwan/tests/templates/definitions/omp_vsmart_complex.json +0 -73
  469. catalystwan/tests/templates/definitions/security_vsmart_complex.json +0 -24
  470. catalystwan/tests/templates/definitions/system_vsmart_complex.json +0 -193
  471. catalystwan/tests/templates/definitions/vpn_vsmart_basic.json +0 -17
  472. catalystwan/tests/templates/definitions/vpn_vsmart_complex.json +0 -179
  473. catalystwan/tests/templates/definitions/vpn_vsmart_interface_basic.json +0 -42
  474. catalystwan/tests/templates/definitions/vpn_vsmart_interface_complex.json +0 -208
  475. catalystwan/tests/templates/models/aaa.py +0 -106
  476. catalystwan/tests/templates/models/cisco_logging.py +0 -65
  477. catalystwan/tests/templates/models/cisco_ntp.py +0 -17
  478. catalystwan/tests/templates/models/cisco_omp.py +0 -37
  479. catalystwan/tests/templates/models/cisco_ospf.py +0 -60
  480. catalystwan/tests/templates/models/cisco_secure_internet_gateway.py +0 -95
  481. catalystwan/tests/templates/models/cisco_snmp.py +0 -40
  482. catalystwan/tests/templates/models/cisco_vpn_interface.py +0 -200
  483. catalystwan/tests/templates/models/security_vsmart.py +0 -11
  484. catalystwan/tests/templates/models/system_vsmart.py +0 -37
  485. catalystwan/tests/templates/models/vpn_vsmart.py +0 -32
  486. catalystwan/tests/templates/models/vpn_vsmart_interface.py +0 -54
  487. catalystwan/tests/templates/schemas/aaa.json +0 -1096
  488. catalystwan/tests/templates/schemas/cisco_logging.json +0 -577
  489. catalystwan/tests/templates/schemas/cisco_ntp.json +0 -265
  490. catalystwan/tests/templates/schemas/cisco_omp.json +0 -479
  491. catalystwan/tests/templates/schemas/cisco_ospf.json +0 -908
  492. catalystwan/tests/templates/schemas/cisco_secure_internet_gateway.json +0 -1520
  493. catalystwan/tests/templates/schemas/cisco_snmp.json +0 -561
  494. catalystwan/tests/templates/schemas/cisco_vpn_interface.json +0 -3348
  495. catalystwan/tests/templates/schemas/security-vsmart.json +0 -58
  496. catalystwan/tests/templates/schemas/system-vsmart.json +0 -2585
  497. catalystwan/tests/templates/schemas/vpn-vsmart-interface.json +0 -859
  498. catalystwan/tests/templates/schemas/vpn-vsmart.json +0 -445
  499. catalystwan/tests/templates/test_find_template_values_2.py +0 -193
  500. catalystwan/tests/test_feature_profile_api.py +0 -282
  501. catalystwan/tests/test_models_common.py +0 -53
  502. catalystwan/utils/model.py +0 -48
  503. catalystwan/utils/persona.py +0 -5
  504. catalystwan/utils/type_check.py +0 -22
  505. catalystwan/workflows/backup_restore_device_templates.py +0 -467
  506. catalystwan-0.41.2.dev9.dist-info/RECORD +0 -641
  507. /catalystwan/tests/templates/definitions/{cisco_banner.json → banner_1.json} +0 -0
  508. {catalystwan-0.41.2.dev9.dist-info → catalystwan-0.41.3.dist-info}/LICENSE +0 -0
  509. {catalystwan-0.41.2.dev9.dist-info → catalystwan-0.41.3.dist-info}/WHEEL +0 -0
@@ -1,11 +1,11 @@
1
1
  # Copyright 2023 Cisco Systems, Inc. and its affiliates
2
2
 
3
3
  import ipaddress
4
+ from enum import Enum
4
5
  from pathlib import Path
5
- from typing import ClassVar, List, Literal, Optional
6
+ from typing import ClassVar, List, Optional
6
7
 
7
- from pydantic import BeforeValidator, ConfigDict, Field
8
- from typing_extensions import Annotated
8
+ from pydantic import ConfigDict, Field
9
9
 
10
10
  from catalystwan.api.templates.feature_template import FeatureTemplate, FeatureTemplateValidator
11
11
 
@@ -26,360 +26,198 @@ DEFAULT_SERVICE_IDLE_TIME = 0
26
26
  DEFAULT_SERVICE_REFRESH_TIME = 0
27
27
 
28
28
 
29
- Application = Literal["sig"]
30
- TunnelSet = Literal["secure-internet-gateway-umbrella", "secure-internet-gateway-zscaler"]
31
- TunnelDcPreference = Literal["primary-dc", "secondary-dc"]
32
- IkeCiphersuite = Literal["aes256-cbc-sha1", "aes256-cbc-sha2", "aes128-cbc-sha1", "aes128-cbc-sha2"]
33
- IkeGroup = Literal["2", "14", "15", "16"]
34
- IpsecCiphersuite = Literal[
35
- "aes256-cbc-sha1",
36
- "aes256-cbc-sha384",
37
- "aes256-cbc-sha256",
38
- "aes256-cbc-sha512",
39
- "aes256-gcm",
40
- "null-sha1",
41
- "null-sha384",
42
- "null-sha256",
43
- "null-sha512",
44
- ]
45
- PerfectForwardSecrecy = Literal["group-2", "group-14", "group-15", "group-16", "none"]
46
- DisplayTimeUnit = Literal["MINUTE", "HOUR", "DAY"]
47
- RefreshTimeUnit = Literal["MINUTE", "HOUR", "DAY"]
48
- TrackerType = Literal["SIG"]
49
- SvcType = Literal["sig"]
50
-
51
-
52
- def is_private_ipv4_address(value: ipaddress.IPv4Interface) -> ipaddress.IPv4Interface:
53
- # https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml
54
- assert value.is_private, "IPv4 address is not private"
55
- return value
56
-
57
-
58
- PrivateIPv4Address = Annotated[
59
- ipaddress.IPv4Interface,
60
- BeforeValidator(is_private_ipv4_address),
61
- ]
29
+ class Application(str, Enum):
30
+ SIG = "sig"
31
+
32
+
33
+ class TunnelSet(str, Enum):
34
+ SECURE_INTERNET_GATEWAY_UMBRELLA = "secure-internet-gateway-umbrella"
35
+ SECURE_INTERNET_GATEWAY_ZSCALER = "secure-internet-gateway-zscaler"
36
+
37
+
38
+ class TunnelDcPreference(str, Enum):
39
+ PRIMARY_DC = "primary-dc"
40
+ SECONDARY_DC = "secondary-dc"
41
+
42
+
43
+ class IkeCiphersuite(str, Enum):
44
+ AES256_CBC_SHA1 = "aes256-cbc-sha1"
45
+ AES256_CBC_SHA2 = "aes256-cbc-sha2"
46
+ AES128_CBC_SHA1 = "aes128-cbc-sha1"
47
+ AES128_CBC_SHA2 = "aes128-cbc-sha2"
48
+
49
+
50
+ class IkeGroup(str, Enum):
51
+ TWO = "2"
52
+ FOURTEEN = "14"
53
+ FIFTEEN = "15"
54
+ SIXTEEN = "16"
55
+
56
+
57
+ class IpsecCiphersuite(str, Enum):
58
+ AES256_CBC_SHA1 = "aes256-cbc-sha1"
59
+ AES256_CBC_SHA384 = "aes256-cbc-sha384"
60
+ AES256_CBC_SHA256 = "aes256-cbc-sha256"
61
+ AES256_CBC_SHA512 = "aes256-cbc-sha512"
62
+ AES256_GCM = "aes256-gcm"
63
+ NULL_SHA1 = "null-sha1"
64
+ NULL_SHA384 = "null-sha384"
65
+ NULL_SHA256 = "null-sha256"
66
+ NULL_SHA512 = "null-sha512"
67
+
68
+
69
+ class PerfectForwardSecrecy(str, Enum):
70
+ GROUP_2 = "group-2"
71
+ GROUP_14 = "group-14"
72
+ GROUP_15 = "group-15"
73
+ GROUP_16 = "group-16"
74
+ NONE = "none"
62
75
 
63
76
 
64
77
  class Interface(FeatureTemplateValidator):
65
- if_name: str = Field(
66
- ..., # Ellipsis indicates a required field
67
- pattern="ipsec(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[1-9])",
68
- json_schema_extra={"vmanage_key": "if-name"},
69
- description="Name of the interface. Ipsec1..255 allowed.",
70
- )
71
- auto: bool = Field(..., description="Flag to indicate if the interface should be automatically configured.")
72
- shutdown: bool = Field(..., description="Flag to indicate if the interface is administratively down (shutdown).")
73
- description: Optional[str] = Field(default=None, description="Description for the interface.")
74
- unnumbered: bool = Field(default=True, description="Flag to indicate if the interface should be unnumbered.")
75
- address: Optional[ipaddress.IPv4Interface] = Field(
76
- default=None, description="IPv4 address and subnet mask for the interface."
77
- )
78
+ if_name: str = Field(json_schema_extra={"vmanage_key": "if-name"})
79
+ auto: bool
80
+ shutdown: bool
81
+ description: Optional[str] = None
82
+ unnumbered: bool = True
83
+ address: Optional[ipaddress.IPv4Interface] = None
78
84
  tunnel_source: Optional[ipaddress.IPv4Address] = Field(
79
- default=None,
80
- json_schema_extra={"vmanage_key": "tunnel-source"},
81
- description="IPv4 address used as the source of the tunnel.",
85
+ default=None, json_schema_extra={"vmanage_key": "tunnel-source"}
82
86
  )
83
87
  tunnel_source_interface: Optional[str] = Field(
84
- default=None,
85
- json_schema_extra={"vmanage_key": "tunnel-source-interface"},
86
- description="Interface name used as the source of the tunnel.",
87
- )
88
- tunnel_route_via: Optional[str] = Field(
89
- default=None,
90
- json_schema_extra={"vmanage_key": "tunnel-route-via"},
91
- description="The route via which tunnel traffic should be sent.",
88
+ default=None, json_schema_extra={"vmanage_key": "tunnel-source-interface"}
92
89
  )
93
- tunnel_destination: str = Field(
94
- ...,
95
- json_schema_extra={"vmanage_key": "tunnel-destination"},
96
- description="The destination address for the tunnel.",
97
- )
98
- application: Application = Field(default="sig", description="Application type for the Secure Internet Gateway.")
90
+ tunnel_route_via: Optional[str] = Field(default=None, json_schema_extra={"vmanage_key": "tunnel-route-via"})
91
+ tunnel_destination: str = Field(json_schema_extra={"vmanage_key": "tunnel-destination"})
92
+ application: Application = Application.SIG
99
93
  tunnel_set: TunnelSet = Field(
100
- default="secure-internet-gateway-umbrella",
101
- json_schema_extra={"vmanage_key": "tunnel-set"},
102
- description="Tunnel set used for the Secure Internet Gateway.",
94
+ TunnelSet.SECURE_INTERNET_GATEWAY_UMBRELLA, json_schema_extra={"vmanage_key": "tunnel-set"}
103
95
  )
104
96
  tunnel_dc_preference: TunnelDcPreference = Field(
105
- default="primary-dc",
106
- json_schema_extra={"vmanage_key": "tunnel-dc-preference"},
107
- description="Data center preference for the tunnel.",
108
- )
109
- tcp_mss_adjust: Optional[int] = Field(
110
- default=None,
111
- json_schema_extra={"vmanage_key": "tcp-mss-adjust"},
112
- description="TCP Maximum Segment Size (MSS) adjust value.",
113
- )
114
- mtu: int = Field(
115
- default=DEFAULT_INTERFACE_MTU, description="MTU (Maximum Transmission Unit) size for the interface."
97
+ TunnelDcPreference.PRIMARY_DC, json_schema_extra={"vmanage_key": "tunnel-dc-preference"}
116
98
  )
99
+ tcp_mss_adjust: Optional[int] = Field(default=None, json_schema_extra={"vmanage_key": "tcp-mss-adjust"})
100
+ mtu: int = DEFAULT_INTERFACE_MTU
117
101
  dpd_interval: Optional[int] = Field(
118
- default=DEFAULT_INTERFACE_DPD_INTERVAL,
119
- json_schema_extra={"vmanage_key": "dpd-interval"},
120
- description="Dead Peer Detection (DPD) interval in seconds.",
121
- )
122
- dpd_retries: Optional[int] = Field(
123
- default=DEFAULT_INTERFACE_DPD_RETRIES,
124
- json_schema_extra={"vmanage_key": "dpd-retries"},
125
- description="Number of retries for Dead Peer Detection (DPD).",
126
- )
127
- ike_version: int = Field(
128
- default=DEFAULT_INTERFACE_IKE_VERSION,
129
- json_schema_extra={"vmanage_key": "ike-version"},
130
- description="Internet Key Exchange (IKE) protocol version.",
131
- )
132
- pre_shared_secret: Optional[str] = Field(
133
- default=None,
134
- json_schema_extra={"vmanage_key": "pre-shared-secret"},
135
- description="Pre-shared secret key for IKE authentication.",
102
+ DEFAULT_INTERFACE_DPD_INTERVAL, json_schema_extra={"vmanage_key": "dpd-interval"}
136
103
  )
104
+ dpd_retries: Optional[int] = Field(DEFAULT_INTERFACE_DPD_RETRIES, json_schema_extra={"vmanage_key": "dpd-retries"})
105
+ ike_version: int = Field(DEFAULT_INTERFACE_IKE_VERSION, json_schema_extra={"vmanage_key": "ike-version"})
106
+ pre_shared_secret: Optional[str] = Field(default=None, json_schema_extra={"vmanage_key": "pre-shared-secret"})
137
107
  ike_rekey_interval: Optional[int] = Field(
138
- default=DEFAULT_INTERFACE_IKE_REKEY_INTERVAL,
139
- json_schema_extra={"vmanage_key": "ike-rekey-interval"},
140
- description="Interval for rekeying the IKE security association.",
108
+ DEFAULT_INTERFACE_IKE_REKEY_INTERVAL, json_schema_extra={"vmanage_key": "ike-rekey-interval"}
141
109
  )
142
110
  ike_ciphersuite: Optional[IkeCiphersuite] = Field(
143
- default="aes256-cbc-sha1",
144
- json_schema_extra={"vmanage_key": "ike-ciphersuite"},
145
- description="Ciphersuite for IKE security association establishment.",
146
- )
147
- ike_group: IkeGroup = Field(
148
- default="14",
149
- json_schema_extra={"vmanage_key": "ike-group"},
150
- description="Diffie-Hellman group used for IKE key exchange.",
151
- )
152
- pre_shared_key_dynamic: bool = Field(
153
- default=True,
154
- json_schema_extra={"vmanage_key": "pre-shared-key-dynamic"},
155
- description="Flag indicating if the pre-shared key is dynamic.",
156
- )
157
- ike_local_id: Optional[str] = Field(
158
- default=None,
159
- json_schema_extra={"vmanage_key": "ike-local-id"},
160
- description="Local identifier for IKE authentication.",
161
- )
162
- ike_remote_id: Optional[str] = Field(
163
- default=None,
164
- json_schema_extra={"vmanage_key": "ike-remote-id"},
165
- description="Remote identifier for IKE authentication.",
111
+ IkeCiphersuite.AES256_CBC_SHA1, json_schema_extra={"vmanage_key": "ike-ciphersuite"}
166
112
  )
113
+ ike_group: IkeGroup = Field(IkeGroup.FOURTEEN, json_schema_extra={"vmanage_key": "ike-group"})
114
+ pre_shared_key_dynamic: bool = Field(True, json_schema_extra={"vmanage_key": "pre-shared-key-dynamic"})
115
+ ike_local_id: Optional[str] = Field(default=None, json_schema_extra={"vmanage_key": "ike-local-id"})
116
+ ike_remote_id: Optional[str] = Field(default=None, json_schema_extra={"vmanage_key": "ike-remote-id"})
167
117
  ipsec_rekey_interval: Optional[int] = Field(
168
- default=DEFAULT_INTERFACE_IPSEC_REKEY_INTERVAL,
169
- json_schema_extra={"vmanage_key": "ipsec-rekey-interval"},
170
- description="Interval for rekeying the IPsec security association.",
118
+ DEFAULT_INTERFACE_IPSEC_REKEY_INTERVAL, json_schema_extra={"vmanage_key": "ipsec-rekey-interval"}
171
119
  )
172
120
  ipsec_replay_window: Optional[int] = Field(
173
- default=DEFAULT_INTERFACE_IPSEC_REPLAY_WINDOW,
174
- json_schema_extra={"vmanage_key": "ipsec-replay-window"},
175
- description="Replay window size for IPsec security association.",
121
+ DEFAULT_INTERFACE_IPSEC_REPLAY_WINDOW, json_schema_extra={"vmanage_key": "ipsec-replay-window"}
176
122
  )
177
123
  ipsec_ciphersuite: IpsecCiphersuite = Field(
178
- default="aes256-gcm",
179
- json_schema_extra={"vmanage_key": "ipsec-ciphersuite"},
180
- description="Ciphersuite for IPsec security association establishment.",
124
+ IpsecCiphersuite.AES256_GCM, json_schema_extra={"vmanage_key": "ipsec-ciphersuite"}
181
125
  )
182
126
  perfect_forward_secrecy: PerfectForwardSecrecy = Field(
183
- default="none",
184
- json_schema_extra={"vmanage_key": "perfect-forward-secrecy"},
185
- description="Perfect Forward Secrecy (PFS) setting for IPsec key exchange.",
186
- )
187
- tracker: Optional[bool] = Field(default=None, description="Flag indicating if interface tracking is enabled.")
188
- track_enable: Optional[bool] = Field(
189
- default=True,
190
- json_schema_extra={"vmanage_key": "track-enable"},
191
- description="Flag indicating if tracking is enabled for the interface.",
127
+ PerfectForwardSecrecy.NONE, json_schema_extra={"vmanage_key": "perfect-forward-secrecy"}
192
128
  )
193
- tunnel_public_ip: Optional[ipaddress.IPv4Address] = Field(
194
- default=None,
195
- description="Public IP required to setup GRE tunnel to Zscaler",
196
- json_schema_extra={"vmanage_key": "tunnel-public-ip"},
197
- )
198
- model_config: ClassVar[ConfigDict] = ConfigDict(populate_by_name=True)
129
+ tracker: Optional[bool] = None
130
+ track_enable: Optional[bool] = Field(True, json_schema_extra={"vmanage_key": "track-enable"})
131
+ model_config = ConfigDict(populate_by_name=True)
132
+
133
+
134
+ class SvcType(str, Enum):
135
+ SIG = "sig"
199
136
 
200
137
 
201
138
  class InterfacePair(FeatureTemplateValidator):
202
- active_interface: str = Field(
203
- ..., json_schema_extra={"vmanage_key": "active-interface"}, description="Name of the active interface."
204
- )
139
+ active_interface: str = Field(json_schema_extra={"vmanage_key": "active-interface"})
205
140
  active_interface_weight: int = Field(
206
- default=DEFAULT_INTERFACE_PAIR_ACTIVE_INTERFACE_WEIGHT,
207
- json_schema_extra={"vmanage_key": "active-interface-weight"},
208
- description="Weighting factor for the active interface, used in failover decisions.",
209
- )
210
- backup_interface: Optional[str] = Field(
211
- default=None,
212
- json_schema_extra={"vmanage_key": "backup-interface"},
213
- description="Name of the backup interface. Can be 'None' if no backup interface is defined.",
141
+ DEFAULT_INTERFACE_PAIR_ACTIVE_INTERFACE_WEIGHT, json_schema_extra={"vmanage_key": "active-interface-weight"}
214
142
  )
143
+ backup_interface: Optional[str] = Field("None", json_schema_extra={"vmanage_key": "backup-interface"})
215
144
  backup_interface_weight: int = Field(
216
- default=DEFAULT_INTERFACE_PAIR_BACKUP_INTERFACE_WEIGHT,
217
- json_schema_extra={"vmanage_key": "backup-interface-weight"},
218
- description="Weighting factor for the backup interface, used in failover decisions.",
145
+ DEFAULT_INTERFACE_PAIR_BACKUP_INTERFACE_WEIGHT, json_schema_extra={"vmanage_key": "backup-interface-weight"}
219
146
  )
220
- model_config: ClassVar[ConfigDict] = ConfigDict(populate_by_name=True)
147
+ model_config = ConfigDict(populate_by_name=True)
148
+
149
+
150
+ class DisplayTimeUnit(str, Enum):
151
+ MINUTE = "MINUTE"
152
+ HOUR = "HOUR"
153
+ DAY = "DAY"
154
+
155
+
156
+ class RefreshTimeUnit(str, Enum):
157
+ MINUTE = "MINUTE"
158
+ HOUR = "HOUR"
159
+ DAY = "DAY"
221
160
 
222
161
 
223
162
  class Service(FeatureTemplateValidator):
224
- svc_type: SvcType = Field(
225
- default="sig", json_schema_extra={"vmanage_key": "svc-type"}, description="Type of service configured."
226
- )
163
+ svc_type: SvcType = Field(SvcType.SIG, json_schema_extra={"vmanage_key": "svc-type"})
227
164
  interface_pair: List[InterfacePair] = Field(
228
- ...,
229
- json_schema_extra={"data_path": ["ha-pairs"], "vmanage_key": "interface-pair"},
230
- description="List of high-availability interface pairs.",
231
- )
232
- auth_required: Optional[bool] = Field(
233
- default=False,
234
- json_schema_extra={"vmanage_key": "auth-required"},
235
- description="Flag indicating if authentication is required for the service.",
236
- )
237
- xff_forward_enabled: Optional[bool] = Field(
238
- default=False,
239
- json_schema_extra={"vmanage_key": "xff-forward-enabled"},
240
- description="Flag indicating if X-Forwarded-For HTTP header is enabled.",
241
- )
242
- ofw_enabled: Optional[bool] = Field(
243
- default=False,
244
- json_schema_extra={"vmanage_key": "ofw-enabled"},
245
- description="Flag indicating if on-premise firewall is enabled.",
246
- )
247
- ips_control: Optional[bool] = Field(
248
- default=False,
249
- json_schema_extra={"vmanage_key": "ips-control"},
250
- description="Flag indicating if Intrusion Prevention System (IPS) control is enabled.",
251
- )
252
- caution_enabled: Optional[bool] = Field(
253
- default=False,
254
- json_schema_extra={"vmanage_key": "caution-enabled"},
255
- description="Flag indicating if caution warnings are enabled.",
256
- )
257
- primary_data_center: Optional[str] = Field(
258
- default="Auto",
259
- json_schema_extra={"vmanage_key": "primary-data-center"},
260
- description="Primary data center for the service. 'Auto' for automatic selection.",
261
- )
262
- secondary_data_center: Optional[str] = Field(
263
- default="Auto",
264
- json_schema_extra={"vmanage_key": "secondary-data-center"},
265
- description="Secondary data center for the service. 'Auto' for automatic selection.",
266
- )
267
- ip: Optional[bool] = Field(
268
- default=None, description="Flag indicating if IP filtering or processing is enabled for the service."
269
- )
270
- idle_time: Optional[int] = Field(
271
- default=DEFAULT_SERVICE_IDLE_TIME,
272
- json_schema_extra={"vmanage_key": "idle-time"},
273
- description="Idle time before a session is considered inactive.",
274
- )
275
-
165
+ json_schema_extra={"data_path": ["ha-pairs"], "vmanage_key": "interface-pair"}
166
+ )
167
+ auth_required: Optional[bool] = Field(False, json_schema_extra={"vmanage_key": "auth-required"})
168
+ xff_forward_enabled: Optional[bool] = Field(False, json_schema_extra={"vmanage_key": "xff-forward-enabled"})
169
+ ofw_enabled: Optional[bool] = Field(False, json_schema_extra={"vmanage_key": "ofw-enabled"})
170
+ ips_control: Optional[bool] = Field(False, json_schema_extra={"vmanage_key": "ips-control"})
171
+ caution_enabled: Optional[bool] = Field(False, json_schema_extra={"vmanage_key": "caution-enabled"})
172
+ primary_data_center: Optional[str] = Field("Auto", json_schema_extra={"vmanage_key": "primary-data-center"})
173
+ secondary_data_center: Optional[str] = Field("Auto", json_schema_extra={"vmanage_key": "secondary-data-center"})
174
+ ip: Optional[bool] = None
175
+ idle_time: Optional[int] = Field(DEFAULT_SERVICE_IDLE_TIME, json_schema_extra={"vmanage_key": "idle-time"})
276
176
  display_time_unit: Optional[DisplayTimeUnit] = Field(
277
- default="MINUTE",
278
- json_schema_extra={"vmanage_key": "display-time-unit"},
279
- description="Unit of time used for displaying time-related settings.",
177
+ DisplayTimeUnit.MINUTE, json_schema_extra={"vmanage_key": "display-time-unit"}
280
178
  )
281
179
  ip_enforced_for_known_browsers: Optional[bool] = Field(
282
- default=False,
283
- json_schema_extra={"vmanage_key": "ip-enforced-for-known-browsers"},
284
- description="Flag indicating if IP is enforced for known browsers.",
285
- )
286
- refresh_time: Optional[int] = Field(
287
- default=DEFAULT_SERVICE_REFRESH_TIME,
288
- json_schema_extra={"vmanage_key": "refresh-time"},
289
- description="Time after which the service information is refreshed.",
180
+ False, json_schema_extra={"vmanage_key": "ip-enforced-for-known-browsers"}
290
181
  )
182
+ refresh_time: Optional[int] = Field(DEFAULT_SERVICE_REFRESH_TIME, json_schema_extra={"vmanage_key": "refresh-time"})
291
183
  refresh_time_unit: Optional[RefreshTimeUnit] = Field(
292
- default="MINUTE",
293
- json_schema_extra={"vmanage_key": "refresh-time-unit"},
294
- description="Unit of time used for the refresh time setting.",
184
+ RefreshTimeUnit.MINUTE, json_schema_extra={"vmanage_key": "refresh-time-unit"}
295
185
  )
296
- enabled: Optional[bool] = Field(default=None, description="Flag indicating if the service is enabled.")
186
+ enabled: Optional[bool] = None
297
187
  block_internet_until_accepted: Optional[bool] = Field(
298
- default=False,
299
- json_schema_extra={"vmanage_key": "block-internet-until-accepted"},
300
- description="Flag indicating if Internet access is blocked until the service is accepted.",
301
- )
302
- force_ssl_inspection: Optional[bool] = Field(
303
- default=False,
304
- json_schema_extra={"vmanage_key": "force-ssl-inspection"},
305
- description="Flag indicating if SSL inspection is forced.",
188
+ False, json_schema_extra={"vmanage_key": "block-internet-until-accepted"}
306
189
  )
307
- timeout: Optional[int] = Field(
308
- default=None, description="Timeout value for the service, after which the session is considered inactive."
309
- )
310
- location_name: Optional[str] = Field(
311
- default="Auto",
312
- json_schema_extra={"vmanage_key": "location-name"},
313
- description="Secondary data center for the service. 'Auto' for automatic selection.",
314
- )
315
- data_center_primary: Optional[str] = Field(
316
- default="Auto",
317
- json_schema_extra={"vmanage_key": "data-center-primary"},
318
- description="Zscaler location name (optional)",
319
- )
320
- data_center_secondary: Optional[str] = Field(
321
- default="Auto",
322
- json_schema_extra={"vmanage_key": "data-center-secondary"},
323
- description=(
324
- "Secondary data center for the service. 'Auto' for automatic selection "
325
- "or a specific identifier for a manual selection."
326
- ),
327
- )
328
-
190
+ force_ssl_inspection: Optional[bool] = Field(False, json_schema_extra={"vmanage_key": "force-ssl-inspection"})
191
+ timeout: Optional[int] = None
192
+ data_center_primary: Optional[str] = Field("Auto", json_schema_extra={"vmanage_key": "data-center-primary"})
193
+ data_center_secondary: Optional[str] = Field("Auto", json_schema_extra={"vmanage_key": "data-center-secondary"})
329
194
  model_config = ConfigDict(populate_by_name=True)
330
195
 
331
196
 
197
+ class TrackerType(str, Enum):
198
+ SIG = "SIG"
199
+
200
+
332
201
  class Tracker(FeatureTemplateValidator):
333
- name: str = Field(..., description="Name of the tracker.")
334
- endpoint_api_url: str = Field(
335
- ...,
336
- pattern=r"^http:\/\/[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,})(\/\S*)?$",
337
- json_schema_extra={"vmanage_key": "endpoint-api-url"},
338
- description="URL of the endpoint API used by the tracker for health checks.",
339
- )
340
- threshold: Optional[int] = Field(
341
- ge=100,
342
- default=DEFAULT_TRACKER_THRESHOLD,
343
- description="Threshold value for the tracker to trigger an alert or action.",
344
- )
345
- interval: Optional[int] = Field(
346
- default=DEFAULT_TRACKER_INTERVAL, description="Interval at which the tracker performs health checks."
347
- )
348
- multiplier: Optional[int] = Field(
349
- default=DEFAULT_TRACKER_MULTIPLIER,
350
- description="Multiplier value used by the tracker to escalate repeated failures.",
351
- )
352
- tracker_type: TrackerType = Field(
353
- ..., json_schema_extra={"vmanage_key": "tracker-type"}, description="Type of tracker used for monitoring."
354
- )
355
- model_config: ClassVar[ConfigDict] = ConfigDict(populate_by_name=True)
202
+ name: str
203
+ endpoint_api_url: str = Field(json_schema_extra={"vmanage_key": "endpoint-api-url"})
204
+ threshold: Optional[int] = DEFAULT_TRACKER_THRESHOLD
205
+ interval: Optional[int] = DEFAULT_TRACKER_INTERVAL
206
+ multiplier: Optional[int] = DEFAULT_TRACKER_MULTIPLIER
207
+ tracker_type: TrackerType = Field(json_schema_extra={"vmanage_key": "tracker-type"})
208
+ model_config = ConfigDict(populate_by_name=True)
356
209
 
357
210
 
358
211
  class CiscoSecureInternetGatewayModel(FeatureTemplate):
359
- model_config: ClassVar[ConfigDict] = ConfigDict(arbitrary_types_allowed=True, populate_by_name=True)
360
- _docs_description: str = "Cisco Secure Internet Gateway feature template configuration"
212
+ model_config = ConfigDict(arbitrary_types_allowed=True, populate_by_name=True)
361
213
 
362
- vpn_id: int = Field(
363
- default=DEFAULT_SIG_VPN_ID,
364
- json_schema_extra={"vmanage_key": "vpn-id"},
365
- description="VPN ID associated with the Cisco Secure Internet Gateway service.",
366
- )
367
- child_org_id: str = Field(
368
- default="",
369
- json_schema_extra={"vmanage_key": "childOrgId"},
370
- description="Child Organization Id",
371
- )
372
- interface: List[Interface] = Field(description="List of interface configurations associated with the service.")
373
- service: List[Service] = Field(description="List of service configurations for the Cisco Secure Internet Gateway.")
374
- tracker_src_ip: Optional[PrivateIPv4Address] = Field(
375
- default=None,
376
- json_schema_extra={"vmanage_key": "tracker-src-ip"},
377
- description="Source IP address used by the tracker for sending health check packets.",
378
- )
379
- tracker: Optional[List[Tracker]] = Field(
380
- default=None,
381
- description="List of trackers for monitoring the health of the Cisco Secure Internet Gateway service.",
214
+ vpn_id: int = Field(DEFAULT_SIG_VPN_ID, json_schema_extra={"vmanage_key": "vpn-id"})
215
+ interface: List[Interface]
216
+ service: List[Service]
217
+ tracker_src_ip: Optional[ipaddress.IPv4Interface] = Field(
218
+ default=None, json_schema_extra={"vmanage_key": "tracker-src-ip"}
382
219
  )
220
+ tracker: Optional[List[Tracker]] = None
383
221
 
384
222
  payload_path: ClassVar[Path] = Path(__file__).parent / "DEPRECATED"
385
223
  type: ClassVar[str] = "cisco_secure_internet_gateway"