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
@@ -3,16 +3,15 @@
3
3
  from pathlib import Path
4
4
  from typing import ClassVar
5
5
 
6
- from pydantic import ConfigDict, Field
6
+ from pydantic import ConfigDict
7
7
 
8
8
  from catalystwan.api.templates.feature_template import FeatureTemplate
9
9
 
10
10
 
11
11
  class CliTemplateModel(FeatureTemplate):
12
12
  model_config = ConfigDict(arbitrary_types_allowed=True, populate_by_name=True)
13
- _docs_description: str = "CLI Template Feature configuration for applying command-line settings."
14
13
 
15
- config: str = Field(description="The CLI configuration commands to be applied as a template.")
14
+ config: str
16
15
 
17
16
  payload_path: ClassVar[Path] = Path(__file__).parent / "DEPRECATED"
18
17
  type: ClassVar[str] = "cli-template"
@@ -11,62 +11,26 @@ from catalystwan.api.templates.feature_template import FeatureTemplate
11
11
 
12
12
  class OMPvSmart(FeatureTemplate):
13
13
  model_config = ConfigDict(arbitrary_types_allowed=True, populate_by_name=True)
14
- _docs_description: str = "Overlay Management Protocol (OMP) settings for vSmart controller"
15
14
 
16
- graceful_restart: Optional[BoolStr] = Field(
17
- default=None,
18
- json_schema_extra={"vmanage_key": "graceful-restart"},
19
- description="Enable or disable graceful restart for the OMP session",
20
- )
21
- send_path_limit: Optional[int] = Field(
22
- default=None,
23
- json_schema_extra={"vmanage_key": "send-path-limit"},
24
- description="The maximum number of paths that can be sent to a TLOC",
25
- )
26
- send_backup_paths: Optional[BoolStr] = Field(
27
- default=None,
28
- json_schema_extra={"vmanage_key": "send-backup-paths"},
29
- description="Enable or disable sending additional backup paths",
30
- )
31
- discard_rejected: Optional[BoolStr] = Field(
32
- default=None,
33
- json_schema_extra={"vmanage_key": "discard-rejected"},
34
- description="Discard routes that are rejected by policy instead of marking them as rejected",
35
- )
36
- shutdown: Optional[BoolStr] = Field(
37
- default=None,
38
- json_schema_extra={"vmanage_key": "shutdown"},
39
- description="Enable or disable the shutdown of the OMP session",
40
- )
15
+ graceful_restart: Optional[BoolStr] = Field(default=None, json_schema_extra={"vmanage_key": "graceful-restart"})
16
+ send_path_limit: Optional[int] = Field(default=None, json_schema_extra={"vmanage_key": "send-path-limit"})
17
+ send_backup_paths: Optional[BoolStr] = Field(default=None, json_schema_extra={"vmanage_key": "send-backup-paths"})
18
+ discard_rejected: Optional[BoolStr] = Field(default=None, json_schema_extra={"vmanage_key": "discard-rejected"})
19
+ shutdown: Optional[BoolStr] = Field(default=None, json_schema_extra={"vmanage_key": "shutdown"})
41
20
  graceful_restart_timer: Optional[int] = Field(
42
- default=None,
43
- json_schema_extra={"vmanage_key": "graceful-restart-timer", "data_path": ["timers"]},
44
- description="The time interval for graceful restart of OMP sessions",
21
+ default=None, json_schema_extra={"vmanage_key": "graceful-restart-timer", "data_path": ["timers"]}
45
22
  )
46
23
  eor_timer: Optional[int] = Field(
47
- default=None,
48
- json_schema_extra={"vmanage_key": "eor-timer", "data_path": ["timers"]},
49
- description="The End of Routes (EOR) timer value",
24
+ default=None, json_schema_extra={"vmanage_key": "eor-timer", "data_path": ["timers"]}
50
25
  )
51
26
  holdtime: Optional[int] = Field(
52
- default=None,
53
- json_schema_extra={"vmanage_key": "holdtime", "data_path": ["timers"]},
54
- description="The hold time interval for OMP sessions",
27
+ default=None, json_schema_extra={"vmanage_key": "holdtime", "data_path": ["timers"]}
55
28
  )
56
29
  affinity_group_preference: Optional[BoolStr] = Field(
57
- default=False,
58
- json_schema_extra={"vmanage_key": "affinity-group-preference", "data_path": ["filter-route", "outbound"]},
59
- description="Filter routes based on affinity preference list",
30
+ default=None, json_schema_extra={"vmanage_key": "affinity-group-preference"}
60
31
  )
61
32
  advertisement_interval: Optional[int] = Field(
62
- default=None,
63
- json_schema_extra={"vmanage_key": "advertisement-interval", "data_path": ["timers"]},
64
- description="Interval between sending OMP route advertisements",
65
- )
66
- tloc_color: Optional[BoolStr] = Field(
67
- default=False,
68
- json_schema_extra={"vmanage_key": "tloc-color", "data_path": ["filter-route", "outbound"]},
69
- description="Filter routes based on TLOC color",
33
+ default=None, json_schema_extra={"vmanage_key": "advertisement-interval", "data_path": ["timers"]}
70
34
  )
71
35
 
72
36
  payload_path: ClassVar[Path] = Path(__file__).parent / "DEPRECATED"
@@ -1,28 +1,25 @@
1
1
  # Copyright 2023 Cisco Systems, Inc. and its affiliates
2
2
 
3
+ from enum import Enum
3
4
  from pathlib import Path
4
- from typing import ClassVar, Literal, Optional
5
+ from typing import ClassVar, Optional
5
6
 
6
7
  from pydantic import ConfigDict, Field
7
8
 
8
9
  from catalystwan.api.templates.feature_template import FeatureTemplate
9
10
 
10
- Protocol = Literal["dtls", "tls"]
11
+
12
+ class Protocol(str, Enum):
13
+ DTLS = "dtls"
14
+ TLS = "tls"
11
15
 
12
16
 
13
17
  class SecurityvSmart(FeatureTemplate):
14
18
  model_config = ConfigDict(arbitrary_types_allowed=True, populate_by_name=True)
15
- _docs_description: str = "Security settings for vSmart controller"
16
19
 
17
- protocol: Optional[Protocol] = Field(
18
- default=None,
19
- json_schema_extra={"data_path": ["control"]},
20
- description="The security protocol used for control plane communication",
21
- )
20
+ protocol: Optional[Protocol] = Field(default=None, json_schema_extra={"data_path": ["control"]})
22
21
  tls_port: Optional[int] = Field(
23
- default=None,
24
- json_schema_extra={"vmanage_key": "tls-port", "data_path": ["control"]},
25
- description="The port used for TLS communications",
22
+ default=None, json_schema_extra={"vmanage_key": "tls-port", "data_path": ["control"]}
26
23
  )
27
24
  payload_path: ClassVar[Path] = Path(__file__).parent / "DEPRECATED"
28
25
  type: ClassVar[str] = "security-vsmart"
@@ -1,6 +1,5 @@
1
1
  # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
2
 
3
- from catalystwan.api.templates.models.aaa_model import AAAModel
4
3
  from catalystwan.api.templates.models.cisco_aaa_model import CiscoAAAModel
5
4
  from catalystwan.api.templates.models.cisco_banner_model import CiscoBannerModel
6
5
  from catalystwan.api.templates.models.cisco_bfd_model import CiscoBFDModel
@@ -16,17 +15,17 @@ from catalystwan.api.templates.models.cisco_vpn_model import CiscoVPNModel
16
15
  from catalystwan.api.templates.models.omp_vsmart_model import OMPvSmart
17
16
  from catalystwan.api.templates.models.security_vsmart_model import SecurityvSmart
18
17
  from catalystwan.api.templates.models.system_vsmart_model import SystemVsmart
19
- from catalystwan.api.templates.models.vpn_vsmart_interface_model import VpnVsmartInterfaceModel
20
- from catalystwan.api.templates.models.vpn_vsmart_model import VpnVsmartModel
21
18
 
22
19
  available_models = {
23
- "aaa": AAAModel,
24
20
  "cisco_aaa": CiscoAAAModel,
25
- "cisco_banner": CiscoBannerModel,
26
21
  "cisco_bfd": CiscoBFDModel,
22
+ "cisco_banner": CiscoBannerModel,
27
23
  "cisco_ntp": CiscoNTPModel,
28
24
  "cisco_ospf": CiscoOSPFModel,
29
25
  "cisco_logging": CiscoLoggingModel,
26
+ "omp_vsmart": OMPvSmart,
27
+ "security_vsmart": SecurityvSmart,
28
+ "system_vsmart": SystemVsmart,
30
29
  "cisco_vpn_interface": CiscoVpnInterfaceModel,
31
30
  "cisco_system": CiscoSystemModel,
32
31
  "cisco_vpn": CiscoVPNModel,
@@ -34,9 +33,4 @@ available_models = {
34
33
  "cisco_system": CiscoSystemModel,
35
34
  "cisco_secure_internet_gateway": CiscoSecureInternetGatewayModel,
36
35
  "cisco_omp": CiscoOMPModel,
37
- "omp_vsmart": OMPvSmart,
38
- "security_vsmart": SecurityvSmart,
39
- "system_vsmart": SystemVsmart,
40
- "vpn_vsmart": VpnVsmartModel,
41
- "vpn_vsmart_interface": VpnVsmartInterfaceModel,
42
36
  }
@@ -1,182 +1,45 @@
1
1
  # Copyright 2023 Cisco Systems, Inc. and its affiliates
2
2
 
3
3
  from pathlib import Path
4
- from typing import ClassVar, List, Literal, Optional, Union
4
+ from typing import ClassVar, Optional
5
5
 
6
6
  from pydantic import ConfigDict, Field
7
7
 
8
- from catalystwan.api.templates.bool_str import BoolStr
9
- from catalystwan.api.templates.device_variable import DeviceVariable
10
- from catalystwan.api.templates.feature_template import FeatureTemplate, FeatureTemplateValidator
11
- from catalystwan.models.common import Timezone, TLOCColor
12
-
13
- Toology = Literal["hub-and-spoke"]
14
-
15
-
16
- class TlocColorComparison(FeatureTemplateValidator):
17
- color_1: Optional[TLOCColor] = Field(
18
- default=None,
19
- description="First TLOC color in comparsion",
20
- json_schema_extra={"vmanage_key": "color-1"},
21
- )
22
- color_2: Optional[TLOCColor] = Field(
23
- default=None,
24
- description="Second TLOC color in comparsion",
25
- json_schema_extra={"vmanage_key": "color-2"},
26
- )
27
- model_config = ConfigDict(populate_by_name=True)
8
+ from catalystwan.api.templates.feature_template import FeatureTemplate
9
+ from catalystwan.utils.timezone import Timezone
28
10
 
29
11
 
30
12
  class SystemVsmart(FeatureTemplate):
31
13
  model_config = ConfigDict(arbitrary_types_allowed=True, populate_by_name=True)
32
- _docs_description: str = "Security settings for vSmart controller"
33
14
 
34
- timezone: Optional[Timezone] = Field(
35
- default="UTC",
36
- description="The timezone setting for the vSmart controller",
37
- json_schema_extra={"data_path": ["clock"]},
38
- )
39
- host_name: DeviceVariable = Field(
40
- default=DeviceVariable(name="system_host_name"),
41
- json_schema_extra={"vmanage_key": "host-name"},
42
- description="The hostname for the vSmart controller",
43
- )
44
- dual_stack_ipv6: Union[DeviceVariable, BoolStr] = Field(
45
- default=DeviceVariable(name="system_ipv6-strict-control"),
46
- json_schema_extra={"vmanage_key": "ipv6-strict-control"},
47
- description="Enable Dual Stack IPv6 Default",
48
- )
49
- description: Optional[str] = Field(default=None, description="Set a text description of the device")
50
- location: Optional[str] = Field(
51
- default=None, description="A description of the physical location of the vSmart controller"
52
- )
53
- system_tunnel_mtu: Optional[int] = Field(
54
- default=1024, json_schema_extra={"vmanage_key": "system-tunnel-mtu"}, description="MTU size for system tunnels"
55
- )
56
- latitude: Optional[int] = Field(
57
- default=None,
58
- ge=-90,
59
- le=90,
60
- json_schema_extra={"data_path": ["gps-location"]},
61
- description="Geographical latitude of the vSmart controller",
62
- )
63
- longitude: Optional[int] = Field(
64
- default=None,
65
- ge=-180,
66
- le=180,
67
- json_schema_extra={"data_path": ["gps-location"]},
68
- description="Geographical longitude of the vSmart controller",
69
- )
70
- device_groups: List[str] = Field(
71
- default_factory=list,
72
- json_schema_extra={"vmanage_key": "device-groups"},
73
- description="Device group names for the vSmart controller",
74
- )
75
- system_ip: DeviceVariable = Field(
76
- default=DeviceVariable(name="system_system_ip"),
77
- json_schema_extra={"vmanage_key": "system-ip"},
78
- description="System IP address for the vSmart controller",
79
- )
80
- site_id: DeviceVariable = Field(
81
- default=DeviceVariable(name="system_site_id"),
82
- json_schema_extra={"vmanage_key": "site-id"},
83
- description="Site ID for the vSmart controller",
84
- )
85
- overlay_id: Optional[int] = Field(
86
- default=1,
87
- ge=1,
88
- le=4294967295,
89
- json_schema_extra={"vmanage_key": "overlay-id"},
90
- description="Overlay ID for the vSmart controller",
15
+ timezone: Optional[Timezone] = Field(default=None)
16
+ idle_timeout: Optional[int] = Field(default=None, ge=0, le=300, json_schema_extra={"vmanage_key": "idle-timeout"})
17
+ admin_tech_on_failure: Optional[bool] = Field(
18
+ default=True, json_schema_extra={"vmanage_key": "admin-tech-on-failure"}
91
19
  )
92
- topology: Optional[List[Toology]] = Field(
93
- default=None,
94
- description="Set the topology",
95
- )
96
- port_offset: Optional[int] = Field(
97
- default=0,
98
- ge=0,
99
- le=20,
100
- json_schema_extra={"vmanage_key": "port-offset"},
101
- description="Port offset for port hopping",
102
- )
103
- port_hop: Optional[bool] = Field(
104
- default=True, json_schema_extra={"vmanage_key": "port-hop"}, description="Enable or disable port hopping"
105
- )
106
- control_session_pps: Optional[int] = Field(
107
- default=300,
108
- json_schema_extra={"vmanage_key": "control-session-pps"},
109
- description="Control session packets per second limit",
110
- )
111
- controller_group_id: Optional[int] = Field(
112
- default=0,
113
- ge=0,
114
- le=100,
115
- json_schema_extra={"vmanage_key": "controller-group-id"},
116
- description="Group ID for the vSmart controller",
117
- )
118
- track_transport: Optional[BoolStr] = Field(
119
- default=True,
120
- json_schema_extra={"vmanage_key": "track-transport"},
121
- description="Enable or disable tracking of transport connections",
122
- )
123
- track_default_gateway: Optional[BoolStr] = Field(
124
- default=True,
125
- json_schema_extra={"vmanage_key": "track-default-gateway"},
126
- description="Enable or disable tracking of the default gateway",
127
- )
128
- iptables_enable: Optional[BoolStr] = Field(
129
- default=True,
130
- json_schema_extra={"vmanage_key": "iptables-enable"},
131
- description="Enable or disable iptables for security",
132
- )
133
- admin_tech_on_failure: Optional[BoolStr] = Field(
134
- default=True,
135
- json_schema_extra={"vmanage_key": "admin-tech-on-failure"},
136
- description="Enable automatic generation of tech-support file on failure",
137
- )
138
- idle_timeout: Optional[int] = Field(
139
- default=None,
140
- ge=0,
141
- le=300,
142
- json_schema_extra={"vmanage_key": "idle-timeout"},
143
- description="Idle timeout in minutes for user sessions",
20
+ iptables_enable: Optional[bool] = Field(default=True, json_schema_extra={"vmanage_key": "iptables-enable"})
21
+ track_default_gateway: Optional[bool] = Field(
22
+ default=True, json_schema_extra={"vmanage_key": "track-default-gateway"}
144
23
  )
145
24
  dns_cache_timeout: Optional[int] = Field(
146
- default=2,
147
- ge=1,
148
- le=30,
149
- json_schema_extra={"vmanage_key": "dns-cache-timeout"},
150
- description="DNS cache timeout in minutes",
151
- )
152
- region_list_id: Optional[int] = Field(
153
- default=None,
154
- ge=1,
155
- le=64,
156
- json_schema_extra={"vmanage_key": "region-id-list"},
157
- description="Configure a list of region ID",
158
- )
159
- management_region: Optional[BoolStr] = Field(
160
- default=None,
161
- json_schema_extra={"vmanage_key": "management-region"},
162
- description="Management Region",
163
- )
164
- compatible: Optional[List[TlocColorComparison]] = Field(
165
- default=None,
166
- json_schema_extra={
167
- "data_path": ["tloc-color-compatibility"],
168
- "priority_order": ["color-1", "color-2"],
169
- },
170
- description="Configure compatible TLOC color",
171
- )
172
- incompatible: Optional[List[TlocColorComparison]] = Field(
173
- default=None,
174
- json_schema_extra={
175
- "data_path": ["tloc-color-compatibility"],
176
- "priority_order": ["color-1", "color-2"],
177
- },
178
- description="Configure incompatible TLOC color",
25
+ default=2, ge=1, le=30, json_schema_extra={"vmanage_key": "dns-cache-timeout"}
179
26
  )
27
+ track_transport: Optional[bool] = Field(default=True, json_schema_extra={"vmanage_key": "track-transport"})
28
+ controller_group_id: Optional[int] = Field(
29
+ default=0, ge=0, le=100, json_schema_extra={"vmanage_key": "controller-group-id"}
30
+ )
31
+ control_session_pps: Optional[int] = Field(default=300, json_schema_extra={"vmanage_key": "control-session-pps"})
32
+ port_hop: Optional[bool] = Field(default=True, json_schema_extra={"vmanage_key": "port-hop"})
33
+ port_offset: Optional[int] = Field(default=0, ge=0, le=20, json_schema_extra={"vmanage_key": "port-offset"})
34
+ overlay_id: Optional[int] = Field(default=1, ge=1, le=4294967295, json_schema_extra={"vmanage_key": "overlay-id"})
35
+ site_id: Optional[int] = Field(default=1, ge=1, le=4294967295, json_schema_extra={"vmanage_key": "site-id"})
36
+ system_ip: Optional[str] = Field(default=None, json_schema_extra={"vmanage_key": "system-ip"})
37
+ device_groups: Optional[str] = Field(default=None, json_schema_extra={"vmanage_key": "device-groups"})
38
+ longitude: Optional[int] = Field(default=None, ge=-180, le=180)
39
+ latitude: Optional[int] = Field(default=None, ge=-90, le=90)
40
+ system_tunnel_mtu: Optional[int] = Field(default=1024, json_schema_extra={"vmanage_key": "system-tunnel-mtu"})
41
+ location: Optional[str] = None
42
+ host_name: Optional[str] = Field(default=None, json_schema_extra={"vmanage_key": "host-name"})
180
43
 
181
44
  payload_path: ClassVar[Path] = Path(__file__).parent / "DEPRECATED"
182
45
  type: ClassVar[str] = "system-vsmart"
catalystwan/apigw_auth.py CHANGED
@@ -7,10 +7,10 @@ from urllib.parse import urlparse
7
7
  from pydantic import BaseModel, Field, PositiveInt
8
8
  from requests import HTTPError, PreparedRequest, post
9
9
  from requests.auth import AuthBase
10
- from requests.exceptions import JSONDecodeError, Timeout
10
+ from requests.exceptions import JSONDecodeError
11
11
 
12
12
  from catalystwan.abstractions import APIEndpointClient, AuthProtocol
13
- from catalystwan.exceptions import ApiGwAuthTimeout, CatalystwanException
13
+ from catalystwan.exceptions import CatalystwanException
14
14
  from catalystwan.response import auth_response_debug
15
15
 
16
16
  LoginMode = Literal["machine", "user", "session"]
@@ -106,8 +106,6 @@ class ApiGwAuth(AuthBase, AuthProtocol):
106
106
  raise CatalystwanException(
107
107
  f"Problem with connection to ApiGateway login endpoint, ({ex}). Response: ({response.text})"
108
108
  )
109
- except Timeout as ex:
110
- raise ApiGwAuthTimeout(f"The request to the API GW login timeout, ({ex}).")
111
109
  except KeyError as ex:
112
110
  raise CatalystwanException(f"Not found token in login response from ApiGateway, ({ex})")
113
111
  else:
@@ -141,8 +139,6 @@ class ApiGwAuth(AuthBase, AuthProtocol):
141
139
  f"Problem with connecting to API GW organization registration endpoint, ({ex}).\
142
140
  Response: ({response.text})"
143
141
  )
144
- except Timeout as ex:
145
- raise ApiGwAuthTimeout(f"The request to the API GW organization registration timeout, ({ex}).")
146
142
  except Exception as ex:
147
143
  raise CatalystwanException(f"Org registration to API-GW failed: {ex}")
148
144
 
@@ -11,9 +11,9 @@ from catalystwan.utils.alarm_status import Severity
11
11
  from catalystwan.utils.certificate_status import ValidityPeriod
12
12
  from catalystwan.utils.colors import PrintColors
13
13
  from catalystwan.utils.creation_tools import FIELD_NAME, asdict, convert_attributes
14
- from catalystwan.utils.persona import Persona
15
14
  from catalystwan.utils.personality import Personality
16
15
  from catalystwan.utils.reachability import Reachability
16
+ from catalystwan.utils.template_type import TemplateType
17
17
 
18
18
 
19
19
  class DataclassBase:
@@ -252,6 +252,36 @@ class User(DataclassBase):
252
252
  resource_group: Optional[str] = field(default=None, metadata={FIELD_NAME: "resGroupName"})
253
253
 
254
254
 
255
+ @define(kw_only=True)
256
+ class TemplateInfo(DataclassBase):
257
+ last_updated_by: str = field(metadata={FIELD_NAME: "lastUpdatedBy"})
258
+ id: str = field(metadata={FIELD_NAME: "templateId"})
259
+ factory_default: bool = field(metadata={FIELD_NAME: "factoryDefault"})
260
+ name: str = field(metadata={FIELD_NAME: "templateName"})
261
+ devices_attached: int = field(metadata={FIELD_NAME: "devicesAttached"})
262
+ description: str = field(metadata={FIELD_NAME: "templateDescription"})
263
+ last_updated_on: dt.datetime = field(metadata={FIELD_NAME: "lastUpdatedOn"})
264
+ resource_group: Optional[str] = field(default=None, metadata={FIELD_NAME: "resourceGroup"})
265
+
266
+
267
+ @define(kw_only=True)
268
+ class FeatureTemplateInfo(TemplateInfo):
269
+ template_type: str = field(metadata={FIELD_NAME: "templateType"})
270
+ device_type: List[str] = field(metadata={FIELD_NAME: "deviceType"})
271
+ version: str = field(metadata={FIELD_NAME: "templateMinVersion"})
272
+ template_definiton: Optional[str] = field(default=None, metadata={FIELD_NAME: "templateDefinition"})
273
+
274
+
275
+ @define(kw_only=True)
276
+ class DeviceTemplateInfo(TemplateInfo):
277
+ device_type: str = field(metadata={FIELD_NAME: "deviceType"})
278
+ template_class: str = field(metadata={FIELD_NAME: "templateClass"})
279
+ config_type: TemplateType = field(converter=TemplateType, metadata={FIELD_NAME: "configType"})
280
+ template_attached: int = field(metadata={FIELD_NAME: "templateAttached"})
281
+ draft_mode: Optional[str] = field(default=None, metadata={FIELD_NAME: "draftMode"})
282
+ device_role: Optional[str] = field(default=None, metadata={FIELD_NAME: "deviceRole"})
283
+
284
+
255
285
  @define
256
286
  class Speedtest(DataclassBase):
257
287
  device_ip: str
@@ -282,7 +312,7 @@ class ServiceConfigurationData(DataclassBase):
282
312
  vmanage_id: str = field(metadata={FIELD_NAME: "vmanageID"})
283
313
  device_ip: str = field(metadata={FIELD_NAME: "deviceIP"}) # consider using ip4 module to verify
284
314
  services: dict = field(metadata={FIELD_NAME: "services"}) # consider using nested dataclasses
285
- persona: Persona = field(default="COMPUTE_AND_DATA")
315
+ persona: str = field(default="COMPUTE_AND_DATA") # TODO Enum
286
316
  username: Optional[str] = field(default=None)
287
317
  password: Optional[str] = field(default=None)
288
318
 
@@ -344,6 +374,27 @@ class TierInfo(DataclassBase):
344
374
  nat_session_limit: Optional[int] = field(default=None, metadata={FIELD_NAME: "natSessionLimit"})
345
375
 
346
376
 
377
+ @define(frozen=True)
378
+ class FeatureTemplateInformation(DataclassBase):
379
+ """Endpoint: /dataservice/template/feature"""
380
+
381
+ id: str = field(metadata={FIELD_NAME: "templateId"})
382
+ name: str = field(metadata={FIELD_NAME: "templateName"})
383
+ description: str = field(metadata={FIELD_NAME: "templateDescription"})
384
+ type: str = field(metadata={FIELD_NAME: "templateType"}) # TODO Enum
385
+ device_types: List[str] = field(metadata={FIELD_NAME: "deviceType"}) # TODO Enum
386
+ last_updated_by: str = field(metadata={FIELD_NAME: "lastUpdatedBy"})
387
+ last_updated_on: dt.datetime = field(metadata={FIELD_NAME: "lastUpdatedOn"})
388
+ factory_default: bool = field(metadata={FIELD_NAME: "factoryDefault"})
389
+ devices_attached: int = field(metadata={FIELD_NAME: "devicesAttached"})
390
+ attached_masters: int = field(metadata={FIELD_NAME: "attachedMastersCount"})
391
+ version: str = field(metadata={FIELD_NAME: "templateMinVersion"})
392
+ config_type: str = field(metadata={FIELD_NAME: "configType"})
393
+ created_by: str = field(metadata={FIELD_NAME: "createdBy"})
394
+ created_on: dt.datetime = field(metadata={FIELD_NAME: "createdOn"})
395
+ resource_group: str = field(metadata={FIELD_NAME: "resourceGroup"})
396
+
397
+
347
398
  @define
348
399
  class Organization(DataclassBase):
349
400
  name: str = field(metadata={FIELD_NAME: "org"})