catalystwan 0.40.1.dev6__py3-none-any.whl → 2.0.0a0__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 (630) hide show
  1. catalystwan/core/__init__.py +2 -0
  2. catalystwan/core/abstractions.py +26 -0
  3. catalystwan/{apigw_auth.py → core/apigw_auth.py} +29 -14
  4. catalystwan/core/client.py +71 -0
  5. catalystwan/core/encoder.py +12 -0
  6. catalystwan/{exceptions.py → core/exceptions.py} +29 -9
  7. catalystwan/core/loader.py +37 -0
  8. catalystwan/{__init__.py → core/metadata.py} +9 -22
  9. catalystwan/core/models/deserialize.py +203 -0
  10. catalystwan/core/models/serialize.py +137 -0
  11. catalystwan/core/request_adapter.py +246 -0
  12. catalystwan/{request_limiter.py → core/request_limiter.py} +1 -2
  13. catalystwan/{response.py → core/response.py} +38 -85
  14. catalystwan/{session.py → core/session.py} +84 -101
  15. catalystwan/core/types.py +33 -0
  16. catalystwan/{version.py → core/version.py} +3 -5
  17. catalystwan/{vmanage_auth.py → core/vmanage_auth.py} +46 -21
  18. catalystwan-2.0.0a0.dist-info/METADATA +327 -0
  19. catalystwan-2.0.0a0.dist-info/RECORD +24 -0
  20. {catalystwan-0.40.1.dev6.dist-info → catalystwan-2.0.0a0.dist-info}/WHEEL +2 -1
  21. catalystwan-2.0.0a0.dist-info/top_level.txt +1 -0
  22. catalystwan/abstractions.py +0 -77
  23. catalystwan/api/admin_tech_api.py +0 -176
  24. catalystwan/api/administration.py +0 -434
  25. catalystwan/api/alarms_api.py +0 -186
  26. catalystwan/api/api_container.py +0 -73
  27. catalystwan/api/basic_api.py +0 -338
  28. catalystwan/api/builders/__init__.py +0 -14
  29. catalystwan/api/builders/feature_profiles/application_priority.py +0 -58
  30. catalystwan/api/builders/feature_profiles/builder_factory.py +0 -59
  31. catalystwan/api/builders/feature_profiles/cli.py +0 -76
  32. catalystwan/api/builders/feature_profiles/other.py +0 -79
  33. catalystwan/api/builders/feature_profiles/report.py +0 -137
  34. catalystwan/api/builders/feature_profiles/service.py +0 -213
  35. catalystwan/api/builders/feature_profiles/system.py +0 -80
  36. catalystwan/api/builders/feature_profiles/transport.py +0 -214
  37. catalystwan/api/builders/feature_profiles/uc_voice.py +0 -287
  38. catalystwan/api/config_device_inventory_api.py +0 -58
  39. catalystwan/api/config_group_api.py +0 -150
  40. catalystwan/api/configuration_groups/parcel.py +0 -206
  41. catalystwan/api/dashboard_api.py +0 -215
  42. catalystwan/api/device_action_api.py +0 -216
  43. catalystwan/api/feature_profile_api.py +0 -2401
  44. catalystwan/api/logs_api.py +0 -63
  45. catalystwan/api/monitoring_status_api.py +0 -76
  46. catalystwan/api/mtt_aaa_api.py +0 -197
  47. catalystwan/api/omp_api.py +0 -124
  48. catalystwan/api/packet_capture_api.py +0 -152
  49. catalystwan/api/parcel_api.py +0 -42
  50. catalystwan/api/partition_manager_api.py +0 -143
  51. catalystwan/api/policy_api.py +0 -1163
  52. catalystwan/api/resource_pool_api.py +0 -74
  53. catalystwan/api/software_action_api.py +0 -269
  54. catalystwan/api/speedtest_api.py +0 -153
  55. catalystwan/api/task_status_api.py +0 -171
  56. catalystwan/api/template_api.py +0 -761
  57. catalystwan/api/templates/README.md +0 -101
  58. catalystwan/api/templates/bool_str.py +0 -6
  59. catalystwan/api/templates/cli_template.py +0 -236
  60. catalystwan/api/templates/device_template/device_template.py +0 -181
  61. catalystwan/api/templates/device_variable.py +0 -7
  62. catalystwan/api/templates/feature_template.py +0 -133
  63. catalystwan/api/templates/feature_template_field.py +0 -175
  64. catalystwan/api/templates/feature_template_payload.py +0 -17
  65. catalystwan/api/templates/models/aaa_model.py +0 -387
  66. catalystwan/api/templates/models/cisco_aaa_model.py +0 -331
  67. catalystwan/api/templates/models/cisco_banner_model.py +0 -27
  68. catalystwan/api/templates/models/cisco_bfd_model.py +0 -61
  69. catalystwan/api/templates/models/cisco_bgp_model.py +0 -510
  70. catalystwan/api/templates/models/cisco_logging_model.py +0 -122
  71. catalystwan/api/templates/models/cisco_ntp_model.py +0 -60
  72. catalystwan/api/templates/models/cisco_omp_model.py +0 -121
  73. catalystwan/api/templates/models/cisco_ospf.py +0 -241
  74. catalystwan/api/templates/models/cisco_ospfv3.py +0 -498
  75. catalystwan/api/templates/models/cisco_secure_internet_gateway.py +0 -385
  76. catalystwan/api/templates/models/cisco_snmp_model.py +0 -102
  77. catalystwan/api/templates/models/cisco_system.py +0 -318
  78. catalystwan/api/templates/models/cisco_vpn_interface_model.py +0 -822
  79. catalystwan/api/templates/models/cisco_vpn_model.py +0 -603
  80. catalystwan/api/templates/models/cli_template.py +0 -18
  81. catalystwan/api/templates/models/omp_vsmart_model.py +0 -73
  82. catalystwan/api/templates/models/security_vsmart_model.py +0 -28
  83. catalystwan/api/templates/models/supported.py +0 -42
  84. catalystwan/api/templates/models/system_vsmart_model.py +0 -182
  85. catalystwan/api/templates/models/vpn_vsmart_interface_model.py +0 -198
  86. catalystwan/api/templates/models/vpn_vsmart_model.py +0 -124
  87. catalystwan/api/templates/payloads/aaa/aaa_model.py +0 -91
  88. catalystwan/api/templates/payloads/aaa/feature/aaa.json.j2 +0 -373
  89. catalystwan/api/templates/payloads/aaa/feature/accounting.json.j2 +0 -40
  90. catalystwan/api/templates/payloads/aaa/feature/radius.json.j2 +0 -107
  91. catalystwan/api/templates/payloads/aaa/feature/tacacs.json.j2 +0 -95
  92. catalystwan/api/templates/payloads/aaa/feature/user.json.j2 +0 -60
  93. catalystwan/api/templates/payloads/cisco_vpn/cisco_vpn_model.py +0 -92
  94. catalystwan/api/templates/payloads/cisco_vpn/feature/cisco_vpn.json.j2 +0 -224
  95. catalystwan/api/templates/payloads/cisco_vpn/feature/dns.json.j2 +0 -86
  96. catalystwan/api/templates/payloads/cisco_vpn/feature/ipv4route.json.j2 +0 -59
  97. catalystwan/api/templates/payloads/cisco_vpn/feature/ipv6route.json.j2 +0 -58
  98. catalystwan/api/templates/payloads/cisco_vpn/feature/mapping.json.j2 +0 -24
  99. catalystwan/api/templates/payloads/tenant/tenant.json.j2 +0 -127
  100. catalystwan/api/templates/payloads/tenant/tenant_model.py +0 -43
  101. catalystwan/api/tenant_backup_restore_api.py +0 -154
  102. catalystwan/api/tenant_management_api.py +0 -127
  103. catalystwan/api/tenant_migration_api.py +0 -121
  104. catalystwan/api/versions_utils.py +0 -414
  105. catalystwan/api/virtual_image_action_api.py +0 -200
  106. catalystwan/dataclasses.py +0 -493
  107. catalystwan/endpoints/__init__.py +0 -606
  108. catalystwan/endpoints/administration_user_and_group.py +0 -341
  109. catalystwan/endpoints/api_gateway.py +0 -24
  110. catalystwan/endpoints/certificate_management_device.py +0 -137
  111. catalystwan/endpoints/certificate_management_vmanage.py +0 -48
  112. catalystwan/endpoints/client.py +0 -96
  113. catalystwan/endpoints/cluster_management.py +0 -130
  114. catalystwan/endpoints/configuration/device/software_update.py +0 -31
  115. catalystwan/endpoints/configuration/disaster_recovery.py +0 -305
  116. catalystwan/endpoints/configuration/feature_profile/sdwan/application_priority.py +0 -107
  117. catalystwan/endpoints/configuration/feature_profile/sdwan/cli.py +0 -60
  118. catalystwan/endpoints/configuration/feature_profile/sdwan/dns_security.py +0 -83
  119. catalystwan/endpoints/configuration/feature_profile/sdwan/embedded_security.py +0 -88
  120. catalystwan/endpoints/configuration/feature_profile/sdwan/other.py +0 -62
  121. catalystwan/endpoints/configuration/feature_profile/sdwan/policy_object.py +0 -105
  122. catalystwan/endpoints/configuration/feature_profile/sdwan/service.py +0 -137
  123. catalystwan/endpoints/configuration/feature_profile/sdwan/sig_security.py +0 -88
  124. catalystwan/endpoints/configuration/feature_profile/sdwan/system.py +0 -205
  125. catalystwan/endpoints/configuration/feature_profile/sdwan/topology.py +0 -93
  126. catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py +0 -214
  127. catalystwan/endpoints/configuration/feature_profile/sdwan/uc_voice.py +0 -77
  128. catalystwan/endpoints/configuration/network_hierarchy.py +0 -32
  129. catalystwan/endpoints/configuration/policy/abstractions.py +0 -49
  130. catalystwan/endpoints/configuration/policy/definition/access_control_list.py +0 -57
  131. catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py +0 -57
  132. catalystwan/endpoints/configuration/policy/definition/aip.py +0 -52
  133. catalystwan/endpoints/configuration/policy/definition/amp.py +0 -52
  134. catalystwan/endpoints/configuration/policy/definition/app_route.py +0 -50
  135. catalystwan/endpoints/configuration/policy/definition/cflowd.py +0 -46
  136. catalystwan/endpoints/configuration/policy/definition/control.py +0 -57
  137. catalystwan/endpoints/configuration/policy/definition/device_access.py +0 -57
  138. catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py +0 -59
  139. catalystwan/endpoints/configuration/policy/definition/dial_peer.py +0 -57
  140. catalystwan/endpoints/configuration/policy/definition/dns_security.py +0 -50
  141. catalystwan/endpoints/configuration/policy/definition/fxo_port.py +0 -57
  142. catalystwan/endpoints/configuration/policy/definition/fxs_did_port.py +0 -57
  143. catalystwan/endpoints/configuration/policy/definition/fxs_port.py +0 -57
  144. catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py +0 -57
  145. catalystwan/endpoints/configuration/policy/definition/intrusion_prevention.py +0 -52
  146. catalystwan/endpoints/configuration/policy/definition/mesh.py +0 -53
  147. catalystwan/endpoints/configuration/policy/definition/pri_isdn_port.py +0 -57
  148. catalystwan/endpoints/configuration/policy/definition/qos_map.py +0 -53
  149. catalystwan/endpoints/configuration/policy/definition/rewrite.py +0 -57
  150. catalystwan/endpoints/configuration/policy/definition/route_policy.py +0 -50
  151. catalystwan/endpoints/configuration/policy/definition/rule_set.py +0 -53
  152. catalystwan/endpoints/configuration/policy/definition/security_group.py +0 -57
  153. catalystwan/endpoints/configuration/policy/definition/srst_phone_profile.py +0 -59
  154. catalystwan/endpoints/configuration/policy/definition/ssl_decryption.py +0 -50
  155. catalystwan/endpoints/configuration/policy/definition/ssl_decryption_utd_profile.py +0 -52
  156. catalystwan/endpoints/configuration/policy/definition/traffic_data.py +0 -58
  157. catalystwan/endpoints/configuration/policy/definition/url_filtering.py +0 -50
  158. catalystwan/endpoints/configuration/policy/definition/vpn_membership.py +0 -57
  159. catalystwan/endpoints/configuration/policy/definition/vpn_qos_map.py +0 -50
  160. catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py +0 -57
  161. catalystwan/endpoints/configuration/policy/list/app.py +0 -48
  162. catalystwan/endpoints/configuration/policy/list/app_probe.py +0 -52
  163. catalystwan/endpoints/configuration/policy/list/as_path.py +0 -48
  164. catalystwan/endpoints/configuration/policy/list/class_map.py +0 -48
  165. catalystwan/endpoints/configuration/policy/list/color.py +0 -48
  166. catalystwan/endpoints/configuration/policy/list/community.py +0 -48
  167. catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py +0 -52
  168. catalystwan/endpoints/configuration/policy/list/data_prefix.py +0 -48
  169. catalystwan/endpoints/configuration/policy/list/expanded_community.py +0 -52
  170. catalystwan/endpoints/configuration/policy/list/extended_community.py +0 -52
  171. catalystwan/endpoints/configuration/policy/list/fax_protocol.py +0 -48
  172. catalystwan/endpoints/configuration/policy/list/fqdn.py +0 -48
  173. catalystwan/endpoints/configuration/policy/list/geo_location.py +0 -48
  174. catalystwan/endpoints/configuration/policy/list/identity.py +0 -48
  175. catalystwan/endpoints/configuration/policy/list/ips_signature.py +0 -52
  176. catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py +0 -48
  177. catalystwan/endpoints/configuration/policy/list/local_app.py +0 -48
  178. catalystwan/endpoints/configuration/policy/list/local_domain.py +0 -48
  179. catalystwan/endpoints/configuration/policy/list/media_profile.py +0 -52
  180. catalystwan/endpoints/configuration/policy/list/mirror.py +0 -48
  181. catalystwan/endpoints/configuration/policy/list/modem_pass_through.py +0 -52
  182. catalystwan/endpoints/configuration/policy/list/policer.py +0 -48
  183. catalystwan/endpoints/configuration/policy/list/port.py +0 -48
  184. catalystwan/endpoints/configuration/policy/list/preferred_color_group.py +0 -52
  185. catalystwan/endpoints/configuration/policy/list/prefix.py +0 -49
  186. catalystwan/endpoints/configuration/policy/list/protocol_name.py +0 -52
  187. catalystwan/endpoints/configuration/policy/list/region.py +0 -47
  188. catalystwan/endpoints/configuration/policy/list/scalable_group_tag.py +0 -52
  189. catalystwan/endpoints/configuration/policy/list/site.py +0 -52
  190. catalystwan/endpoints/configuration/policy/list/sla.py +0 -48
  191. catalystwan/endpoints/configuration/policy/list/supervisory_disconnect.py +0 -52
  192. catalystwan/endpoints/configuration/policy/list/threat_grid_api_key.py +0 -52
  193. catalystwan/endpoints/configuration/policy/list/tloc.py +0 -48
  194. catalystwan/endpoints/configuration/policy/list/translation_profile.py +0 -52
  195. catalystwan/endpoints/configuration/policy/list/translation_rules.py +0 -52
  196. catalystwan/endpoints/configuration/policy/list/trunkgroup.py +0 -48
  197. catalystwan/endpoints/configuration/policy/list/umbrella_data.py +0 -52
  198. catalystwan/endpoints/configuration/policy/list/url_allow_list.py +0 -48
  199. catalystwan/endpoints/configuration/policy/list/url_block_list.py +0 -48
  200. catalystwan/endpoints/configuration/policy/list/vpn.py +0 -50
  201. catalystwan/endpoints/configuration/policy/list/zone.py +0 -48
  202. catalystwan/endpoints/configuration/policy/security_template.py +0 -55
  203. catalystwan/endpoints/configuration/policy/vedge_template.py +0 -52
  204. catalystwan/endpoints/configuration/policy/voice_template.py +0 -39
  205. catalystwan/endpoints/configuration/policy/vsmart_template.py +0 -79
  206. catalystwan/endpoints/configuration/policy_group.py +0 -30
  207. catalystwan/endpoints/configuration/software_actions.py +0 -201
  208. catalystwan/endpoints/configuration/topology_group.py +0 -51
  209. catalystwan/endpoints/configuration_dashboard_status.py +0 -127
  210. catalystwan/endpoints/configuration_device_actions.py +0 -385
  211. catalystwan/endpoints/configuration_device_inventory.py +0 -309
  212. catalystwan/endpoints/configuration_device_template.py +0 -39
  213. catalystwan/endpoints/configuration_feature_profile.py +0 -135
  214. catalystwan/endpoints/configuration_general_template.py +0 -31
  215. catalystwan/endpoints/configuration_group.py +0 -197
  216. catalystwan/endpoints/configuration_settings.py +0 -749
  217. catalystwan/endpoints/configuration_template_master.py +0 -48
  218. catalystwan/endpoints/endpoints_container.py +0 -279
  219. catalystwan/endpoints/misc.py +0 -21
  220. catalystwan/endpoints/monitoring/device_details.py +0 -246
  221. catalystwan/endpoints/monitoring/security_policy.py +0 -12
  222. catalystwan/endpoints/monitoring/server_info.py +0 -12
  223. catalystwan/endpoints/monitoring/status.py +0 -76
  224. catalystwan/endpoints/real_time_monitoring/reboot_history.py +0 -35
  225. catalystwan/endpoints/sdavc_cloud_connector.py +0 -43
  226. catalystwan/endpoints/tenant_backup_restore.py +0 -40
  227. catalystwan/endpoints/tenant_management.py +0 -215
  228. catalystwan/endpoints/tenant_migration.py +0 -102
  229. catalystwan/endpoints/troubleshooting_tools/device_connectivity.py +0 -128
  230. catalystwan/endpoints/url_monitoring.py +0 -26
  231. catalystwan/integration_tests/__init__.py +0 -0
  232. catalystwan/integration_tests/base.py +0 -81
  233. catalystwan/integration_tests/feature_profile/sdwan/__init__.py +0 -0
  234. catalystwan/integration_tests/feature_profile/sdwan/policy/__init__.py +0 -0
  235. catalystwan/integration_tests/feature_profile/sdwan/policy/base.py +0 -33
  236. catalystwan/integration_tests/feature_profile/sdwan/policy/test_extended_community.py +0 -33
  237. catalystwan/integration_tests/feature_profile/sdwan/policy/test_security_app_list.py +0 -32
  238. catalystwan/integration_tests/feature_profile/sdwan/test_application_priority.py +0 -433
  239. catalystwan/integration_tests/feature_profile/sdwan/test_cli.py +0 -54
  240. catalystwan/integration_tests/feature_profile/sdwan/test_dns_security.py +0 -106
  241. catalystwan/integration_tests/feature_profile/sdwan/test_other.py +0 -49
  242. catalystwan/integration_tests/feature_profile/sdwan/test_service.py +0 -1078
  243. catalystwan/integration_tests/feature_profile/sdwan/test_sig_security.py +0 -322
  244. catalystwan/integration_tests/feature_profile/sdwan/test_ssl_decryption.py +0 -85
  245. catalystwan/integration_tests/feature_profile/sdwan/test_system.py +0 -368
  246. catalystwan/integration_tests/feature_profile/sdwan/test_transport.py +0 -1700
  247. catalystwan/integration_tests/feature_profile/sdwan/topology/test_topology.py +0 -93
  248. catalystwan/integration_tests/profile_builder/__init__.py +0 -0
  249. catalystwan/integration_tests/profile_builder/test_pb_service.py +0 -78
  250. catalystwan/integration_tests/profile_builder/test_pb_transport.py +0 -56
  251. catalystwan/integration_tests/profile_builder/test_pb_uc_voice.py +0 -277
  252. catalystwan/integration_tests/test_data/__init__.py +0 -117
  253. catalystwan/integration_tests/test_find_template_values.py +0 -38
  254. catalystwan/integration_tests/test_network_hierarchy.py +0 -82
  255. catalystwan/integration_tests/test_settings.py +0 -30
  256. catalystwan/logging.conf +0 -37
  257. catalystwan/models/common.py +0 -1508
  258. catalystwan/models/configuration/common.py +0 -11
  259. catalystwan/models/configuration/feature_profile/README.md +0 -344
  260. catalystwan/models/configuration/feature_profile/builder.py +0 -22
  261. catalystwan/models/configuration/feature_profile/common.py +0 -749
  262. catalystwan/models/configuration/feature_profile/parcel.py +0 -232
  263. catalystwan/models/configuration/feature_profile/sdwan/acl/__init__.py +0 -13
  264. catalystwan/models/configuration/feature_profile/sdwan/acl/ipv4acl.py +0 -298
  265. catalystwan/models/configuration/feature_profile/sdwan/acl/ipv6acl.py +0 -344
  266. catalystwan/models/configuration/feature_profile/sdwan/application_priority/__init__.py +0 -215
  267. catalystwan/models/configuration/feature_profile/sdwan/application_priority/policy_settings.py +0 -31
  268. catalystwan/models/configuration/feature_profile/sdwan/application_priority/qos_policy.py +0 -102
  269. catalystwan/models/configuration/feature_profile/sdwan/application_priority/traffic_policy.py +0 -1054
  270. catalystwan/models/configuration/feature_profile/sdwan/cli/__init__.py +0 -23
  271. catalystwan/models/configuration/feature_profile/sdwan/cli/config.py +0 -18
  272. catalystwan/models/configuration/feature_profile/sdwan/cli/full_config.py +0 -15
  273. catalystwan/models/configuration/feature_profile/sdwan/dns_security/__init__.py +0 -13
  274. catalystwan/models/configuration/feature_profile/sdwan/dns_security/dns.py +0 -107
  275. catalystwan/models/configuration/feature_profile/sdwan/embedded_security/__init__.py +0 -23
  276. catalystwan/models/configuration/feature_profile/sdwan/embedded_security/ngfirewall.py +0 -915
  277. catalystwan/models/configuration/feature_profile/sdwan/embedded_security/policy.py +0 -171
  278. catalystwan/models/configuration/feature_profile/sdwan/other/__init__.py +0 -23
  279. catalystwan/models/configuration/feature_profile/sdwan/other/thousandeyes.py +0 -147
  280. catalystwan/models/configuration/feature_profile/sdwan/other/ucse.py +0 -110
  281. catalystwan/models/configuration/feature_profile/sdwan/policy_object/__init__.py +0 -175
  282. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/app_probe.py +0 -56
  283. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/application_list.py +0 -31
  284. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/as_path.py +0 -22
  285. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/color_list.py +0 -21
  286. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/data_prefix.py +0 -35
  287. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/expanded_community_list.py +0 -25
  288. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/extended_community.py +0 -34
  289. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/fowarding_class.py +0 -26
  290. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv6_data_prefix.py +0 -28
  291. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv6_prefix_list.py +0 -38
  292. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/mirror.py +0 -27
  293. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/policer.py +0 -42
  294. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/prefered_group_color.py +0 -83
  295. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/prefix_list.py +0 -28
  296. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/sla_class.py +0 -130
  297. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/standard_community.py +0 -30
  298. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/tloc_list.py +0 -44
  299. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/aip.py +0 -64
  300. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/amp.py +0 -79
  301. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/application_list.py +0 -31
  302. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/data_prefix.py +0 -22
  303. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/fqdn.py +0 -24
  304. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/geolocation_list.py +0 -32
  305. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/identity.py +0 -30
  306. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/intrusion_prevention.py +0 -58
  307. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ips_signature.py +0 -44
  308. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/local_domain.py +0 -24
  309. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/protocol_list.py +0 -21
  310. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/scalable_group_tag.py +0 -26
  311. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/security_port.py +0 -45
  312. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ssl_decryption.py +0 -126
  313. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ssl_decryption_profile.py +0 -165
  314. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/url.py +0 -32
  315. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/url_filtering.py +0 -148
  316. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/zone.py +0 -44
  317. catalystwan/models/configuration/feature_profile/sdwan/routing/__init__.py +0 -26
  318. catalystwan/models/configuration/feature_profile/sdwan/routing/bgp.py +0 -594
  319. catalystwan/models/configuration/feature_profile/sdwan/routing/ospf.py +0 -170
  320. catalystwan/models/configuration/feature_profile/sdwan/routing/ospfv3.py +0 -298
  321. catalystwan/models/configuration/feature_profile/sdwan/service/__init__.py +0 -85
  322. catalystwan/models/configuration/feature_profile/sdwan/service/appqoe.py +0 -270
  323. catalystwan/models/configuration/feature_profile/sdwan/service/dhcp_server.py +0 -127
  324. catalystwan/models/configuration/feature_profile/sdwan/service/eigrp.py +0 -103
  325. catalystwan/models/configuration/feature_profile/sdwan/service/lan/common.py +0 -33
  326. catalystwan/models/configuration/feature_profile/sdwan/service/lan/ethernet.py +0 -275
  327. catalystwan/models/configuration/feature_profile/sdwan/service/lan/gre.py +0 -136
  328. catalystwan/models/configuration/feature_profile/sdwan/service/lan/ipsec.py +0 -119
  329. catalystwan/models/configuration/feature_profile/sdwan/service/lan/multilink.py +0 -101
  330. catalystwan/models/configuration/feature_profile/sdwan/service/lan/svi.py +0 -172
  331. catalystwan/models/configuration/feature_profile/sdwan/service/lan/vpn.py +0 -624
  332. catalystwan/models/configuration/feature_profile/sdwan/service/multicast.py +0 -242
  333. catalystwan/models/configuration/feature_profile/sdwan/service/object_tracker.py +0 -84
  334. catalystwan/models/configuration/feature_profile/sdwan/service/route_policy.py +0 -419
  335. catalystwan/models/configuration/feature_profile/sdwan/service/service_insertion_attachment.py +0 -184
  336. catalystwan/models/configuration/feature_profile/sdwan/service/switchport.py +0 -112
  337. catalystwan/models/configuration/feature_profile/sdwan/service/tracker.py +0 -92
  338. catalystwan/models/configuration/feature_profile/sdwan/service/wireless_lan.py +0 -216
  339. catalystwan/models/configuration/feature_profile/sdwan/sig_security/__init__.py +0 -19
  340. catalystwan/models/configuration/feature_profile/sdwan/sig_security/sig_security.py +0 -379
  341. catalystwan/models/configuration/feature_profile/sdwan/system/__init__.py +0 -59
  342. catalystwan/models/configuration/feature_profile/sdwan/system/aaa.py +0 -406
  343. catalystwan/models/configuration/feature_profile/sdwan/system/banner.py +0 -30
  344. catalystwan/models/configuration/feature_profile/sdwan/system/basic.py +0 -290
  345. catalystwan/models/configuration/feature_profile/sdwan/system/bfd.py +0 -69
  346. catalystwan/models/configuration/feature_profile/sdwan/system/device_access.py +0 -157
  347. catalystwan/models/configuration/feature_profile/sdwan/system/device_access_ipv6.py +0 -157
  348. catalystwan/models/configuration/feature_profile/sdwan/system/global_parcel.py +0 -149
  349. catalystwan/models/configuration/feature_profile/sdwan/system/logging_parcel.py +0 -162
  350. catalystwan/models/configuration/feature_profile/sdwan/system/mrf.py +0 -75
  351. catalystwan/models/configuration/feature_profile/sdwan/system/ntp.py +0 -103
  352. catalystwan/models/configuration/feature_profile/sdwan/system/omp.py +0 -111
  353. catalystwan/models/configuration/feature_profile/sdwan/system/security.py +0 -179
  354. catalystwan/models/configuration/feature_profile/sdwan/system/snmp.py +0 -173
  355. catalystwan/models/configuration/feature_profile/sdwan/topology/__init__.py +0 -29
  356. catalystwan/models/configuration/feature_profile/sdwan/topology/custom_control.py +0 -425
  357. catalystwan/models/configuration/feature_profile/sdwan/topology/hubspoke.py +0 -60
  358. catalystwan/models/configuration/feature_profile/sdwan/topology/mesh.py +0 -23
  359. catalystwan/models/configuration/feature_profile/sdwan/transport/__init__.py +0 -93
  360. catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_controller.py +0 -58
  361. catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_profile.py +0 -71
  362. catalystwan/models/configuration/feature_profile/sdwan/transport/gps.py +0 -37
  363. catalystwan/models/configuration/feature_profile/sdwan/transport/management/ethernet.py +0 -121
  364. catalystwan/models/configuration/feature_profile/sdwan/transport/t1e1controller.py +0 -124
  365. catalystwan/models/configuration/feature_profile/sdwan/transport/vpn.py +0 -285
  366. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/cellular.py +0 -166
  367. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/ethernet.py +0 -281
  368. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/gre.py +0 -46
  369. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/ipsec.py +0 -98
  370. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/multilink.py +0 -219
  371. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/protocol_over.py +0 -405
  372. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/t1e1serial.py +0 -195
  373. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/__init__.py +0 -62
  374. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/analog_interface.py +0 -436
  375. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/call_routing.py +0 -179
  376. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/digital_interface.py +0 -329
  377. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/dsp_farm.py +0 -193
  378. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/media_profile.py +0 -25
  379. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/server_group.py +0 -51
  380. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/srst.py +0 -86
  381. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/supervisory_disconnect.py +0 -68
  382. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/translation_profile.py +0 -42
  383. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/translation_rule.py +0 -31
  384. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/trunk_group.py +0 -26
  385. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/voice_global.py +0 -55
  386. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/voice_tenant.py +0 -40
  387. catalystwan/models/configuration/network_hierarchy/__init__.py +0 -22
  388. catalystwan/models/configuration/network_hierarchy/cflowd.py +0 -120
  389. catalystwan/models/configuration/network_hierarchy/node.py +0 -88
  390. catalystwan/models/configuration/policy_group.py +0 -74
  391. catalystwan/models/configuration/profile_type.py +0 -5
  392. catalystwan/models/configuration/topology_group.py +0 -52
  393. catalystwan/models/device_inventory.py +0 -30
  394. catalystwan/models/feature_profile_parcel.py +0 -15
  395. catalystwan/models/misc/application_protocols.py +0 -29
  396. catalystwan/models/monitoring/security_policy.py +0 -16
  397. catalystwan/models/monitoring/server_info.py +0 -12
  398. catalystwan/models/policy/__init__.py +0 -392
  399. catalystwan/models/policy/centralized.py +0 -265
  400. catalystwan/models/policy/definition/access_control_list.py +0 -193
  401. catalystwan/models/policy/definition/access_control_list_ipv6.py +0 -187
  402. catalystwan/models/policy/definition/aip.py +0 -60
  403. catalystwan/models/policy/definition/amp.py +0 -65
  404. catalystwan/models/policy/definition/app_route.py +0 -246
  405. catalystwan/models/policy/definition/cflowd.py +0 -95
  406. catalystwan/models/policy/definition/control.py +0 -366
  407. catalystwan/models/policy/definition/device_access.py +0 -117
  408. catalystwan/models/policy/definition/device_access_ipv6.py +0 -115
  409. catalystwan/models/policy/definition/dial_peer.py +0 -60
  410. catalystwan/models/policy/definition/dns_security.py +0 -130
  411. catalystwan/models/policy/definition/fxo_port.py +0 -63
  412. catalystwan/models/policy/definition/fxs_did_port.py +0 -58
  413. catalystwan/models/policy/definition/fxs_port.py +0 -56
  414. catalystwan/models/policy/definition/hub_and_spoke.py +0 -87
  415. catalystwan/models/policy/definition/intrusion_prevention.py +0 -55
  416. catalystwan/models/policy/definition/mesh.py +0 -47
  417. catalystwan/models/policy/definition/pri_isdn_port.py +0 -48
  418. catalystwan/models/policy/definition/qos_map.py +0 -111
  419. catalystwan/models/policy/definition/rewrite.py +0 -47
  420. catalystwan/models/policy/definition/route_policy.py +0 -187
  421. catalystwan/models/policy/definition/rule_set.py +0 -270
  422. catalystwan/models/policy/definition/security_group.py +0 -93
  423. catalystwan/models/policy/definition/srst_phone_profile.py +0 -37
  424. catalystwan/models/policy/definition/ssl_decryption.py +0 -209
  425. catalystwan/models/policy/definition/ssl_decryption_utd_profile.py +0 -87
  426. catalystwan/models/policy/definition/traffic_data.py +0 -496
  427. catalystwan/models/policy/definition/url_filtering.py +0 -70
  428. catalystwan/models/policy/definition/vpn_membership.py +0 -42
  429. catalystwan/models/policy/definition/vpn_qos_map.py +0 -46
  430. catalystwan/models/policy/definition/zone_based_firewall.py +0 -301
  431. catalystwan/models/policy/list/app.py +0 -44
  432. catalystwan/models/policy/list/app_probe.py +0 -42
  433. catalystwan/models/policy/list/as_path.py +0 -30
  434. catalystwan/models/policy/list/class_map.py +0 -30
  435. catalystwan/models/policy/list/color.py +0 -28
  436. catalystwan/models/policy/list/communities.py +0 -83
  437. catalystwan/models/policy/list/data_ipv6_prefix.py +0 -30
  438. catalystwan/models/policy/list/data_prefix.py +0 -30
  439. catalystwan/models/policy/list/fax_protocol.py +0 -45
  440. catalystwan/models/policy/list/fqdn.py +0 -24
  441. catalystwan/models/policy/list/geo_location.py +0 -33
  442. catalystwan/models/policy/list/identity.py +0 -29
  443. catalystwan/models/policy/list/ips_signature.py +0 -27
  444. catalystwan/models/policy/list/ipv6_prefix.py +0 -33
  445. catalystwan/models/policy/list/local_app.py +0 -45
  446. catalystwan/models/policy/list/local_domain.py +0 -36
  447. catalystwan/models/policy/list/media_profile.py +0 -44
  448. catalystwan/models/policy/list/mirror.py +0 -27
  449. catalystwan/models/policy/list/modem_pass_through.py +0 -27
  450. catalystwan/models/policy/list/policer.py +0 -39
  451. catalystwan/models/policy/list/port.py +0 -33
  452. catalystwan/models/policy/list/preferred_color_group.py +0 -82
  453. catalystwan/models/policy/list/prefix.py +0 -33
  454. catalystwan/models/policy/list/protocol_name.py +0 -26
  455. catalystwan/models/policy/list/region.py +0 -45
  456. catalystwan/models/policy/list/scalable_group_tag.py +0 -30
  457. catalystwan/models/policy/list/site.py +0 -34
  458. catalystwan/models/policy/list/sla.py +0 -77
  459. catalystwan/models/policy/list/supervisory_disconnect.py +0 -62
  460. catalystwan/models/policy/list/threat_grid_api_key.py +0 -32
  461. catalystwan/models/policy/list/tloc.py +0 -32
  462. catalystwan/models/policy/list/translation_profile.py +0 -32
  463. catalystwan/models/policy/list/translation_rules.py +0 -29
  464. catalystwan/models/policy/list/trunkgroup.py +0 -56
  465. catalystwan/models/policy/list/umbrella_data.py +0 -30
  466. catalystwan/models/policy/list/url.py +0 -39
  467. catalystwan/models/policy/list/vpn.py +0 -40
  468. catalystwan/models/policy/list/zone.py +0 -45
  469. catalystwan/models/policy/localized.py +0 -154
  470. catalystwan/models/policy/policy.py +0 -100
  471. catalystwan/models/policy/policy_definition.py +0 -1624
  472. catalystwan/models/policy/policy_list.py +0 -47
  473. catalystwan/models/policy/security.py +0 -279
  474. catalystwan/models/policy/voice.py +0 -71
  475. catalystwan/models/settings.py +0 -41
  476. catalystwan/models/templates.py +0 -79
  477. catalystwan/models/tenant.py +0 -105
  478. catalystwan/models/url_monitoring.py +0 -28
  479. catalystwan/tests/__init__.py +0 -0
  480. catalystwan/tests/builders/uc_voice.py +0 -85
  481. catalystwan/tests/models/__init__.py +0 -0
  482. catalystwan/tests/templates/__init__.py +0 -0
  483. catalystwan/tests/templates/definitions/__init__.py +0 -0
  484. catalystwan/tests/templates/definitions/aaa_basic.json +0 -96
  485. catalystwan/tests/templates/definitions/aaa_complex.json +0 -464
  486. catalystwan/tests/templates/definitions/basic/__init__.py +0 -0
  487. catalystwan/tests/templates/definitions/basic/alias.json +0 -7
  488. catalystwan/tests/templates/definitions/basic/basic.json +0 -7
  489. catalystwan/tests/templates/definitions/basic/basic_no_value.json +0 -7
  490. catalystwan/tests/templates/definitions/basic/children.json +0 -39
  491. catalystwan/tests/templates/definitions/basic/children_nested.json +0 -72
  492. catalystwan/tests/templates/definitions/basic/children_nested_datapath.json +0 -72
  493. catalystwan/tests/templates/definitions/basic/data_path.json +0 -13
  494. catalystwan/tests/templates/definitions/cisco_aaa.json +0 -178
  495. catalystwan/tests/templates/definitions/cisco_aaa_complex.json +0 -361
  496. catalystwan/tests/templates/definitions/cisco_banner.json +0 -20
  497. catalystwan/tests/templates/definitions/cisco_bfd.json +0 -90
  498. catalystwan/tests/templates/definitions/cisco_logging_complex.json +0 -268
  499. catalystwan/tests/templates/definitions/cisco_ntp_complex.json +0 -143
  500. catalystwan/tests/templates/definitions/cisco_omp_complex.json +0 -175
  501. catalystwan/tests/templates/definitions/cisco_ospf_complex.json +0 -302
  502. catalystwan/tests/templates/definitions/cisco_sig.json +0 -405
  503. catalystwan/tests/templates/definitions/cisco_snmp_complex.json +0 -258
  504. catalystwan/tests/templates/definitions/cisco_system_complex.json +0 -502
  505. catalystwan/tests/templates/definitions/cisco_vpn_basic.json +0 -17
  506. catalystwan/tests/templates/definitions/cisco_vpn_complex.json +0 -1081
  507. catalystwan/tests/templates/definitions/cisco_vpn_interface_complex.json +0 -821
  508. catalystwan/tests/templates/definitions/default_cisco_system.json +0 -184
  509. catalystwan/tests/templates/definitions/omp_vsmart_1.json +0 -26
  510. catalystwan/tests/templates/definitions/omp_vsmart_2.json +0 -48
  511. catalystwan/tests/templates/definitions/omp_vsmart_3.json +0 -71
  512. catalystwan/tests/templates/definitions/omp_vsmart_complex.json +0 -73
  513. catalystwan/tests/templates/definitions/security_vsmart_complex.json +0 -24
  514. catalystwan/tests/templates/definitions/system_vsmart_complex.json +0 -193
  515. catalystwan/tests/templates/definitions/vpn_vsmart_basic.json +0 -17
  516. catalystwan/tests/templates/definitions/vpn_vsmart_complex.json +0 -179
  517. catalystwan/tests/templates/definitions/vpn_vsmart_interface_basic.json +0 -42
  518. catalystwan/tests/templates/definitions/vpn_vsmart_interface_complex.json +0 -208
  519. catalystwan/tests/templates/models/__init__.py +0 -53
  520. catalystwan/tests/templates/models/aaa.py +0 -106
  521. catalystwan/tests/templates/models/cisco_aaa.py +0 -124
  522. catalystwan/tests/templates/models/cisco_banner.py +0 -7
  523. catalystwan/tests/templates/models/cisco_bfd.py +0 -15
  524. catalystwan/tests/templates/models/cisco_logging.py +0 -65
  525. catalystwan/tests/templates/models/cisco_ntp.py +0 -17
  526. catalystwan/tests/templates/models/cisco_omp.py +0 -37
  527. catalystwan/tests/templates/models/cisco_ospf.py +0 -60
  528. catalystwan/tests/templates/models/cisco_secure_internet_gateway.py +0 -95
  529. catalystwan/tests/templates/models/cisco_snmp.py +0 -40
  530. catalystwan/tests/templates/models/cisco_system.py +0 -113
  531. catalystwan/tests/templates/models/cisco_vpn.py +0 -240
  532. catalystwan/tests/templates/models/cisco_vpn_interface.py +0 -200
  533. catalystwan/tests/templates/models/omp_vsmart.py +0 -53
  534. catalystwan/tests/templates/models/security_vsmart.py +0 -11
  535. catalystwan/tests/templates/models/system_vsmart.py +0 -37
  536. catalystwan/tests/templates/models/vpn_vsmart.py +0 -32
  537. catalystwan/tests/templates/models/vpn_vsmart_interface.py +0 -54
  538. catalystwan/tests/templates/schemas/aaa.json +0 -1096
  539. catalystwan/tests/templates/schemas/basic/alias.json +0 -24
  540. catalystwan/tests/templates/schemas/basic/basic.json +0 -23
  541. catalystwan/tests/templates/schemas/basic/children.json +0 -59
  542. catalystwan/tests/templates/schemas/basic/children_nested.json +0 -112
  543. catalystwan/tests/templates/schemas/basic/children_nested_datapath.json +0 -112
  544. catalystwan/tests/templates/schemas/basic/data_path.json +0 -29
  545. catalystwan/tests/templates/schemas/cedge_aaa.json +0 -1185
  546. catalystwan/tests/templates/schemas/cisco_banner.json +0 -44
  547. catalystwan/tests/templates/schemas/cisco_bfd.json +0 -266
  548. catalystwan/tests/templates/schemas/cisco_logging.json +0 -577
  549. catalystwan/tests/templates/schemas/cisco_ntp.json +0 -265
  550. catalystwan/tests/templates/schemas/cisco_omp.json +0 -479
  551. catalystwan/tests/templates/schemas/cisco_ospf.json +0 -908
  552. catalystwan/tests/templates/schemas/cisco_secure_internet_gateway.json +0 -1520
  553. catalystwan/tests/templates/schemas/cisco_snmp.json +0 -561
  554. catalystwan/tests/templates/schemas/cisco_system.json +0 -3099
  555. catalystwan/tests/templates/schemas/cisco_vpn.json +0 -2504
  556. catalystwan/tests/templates/schemas/cisco_vpn_interface.json +0 -3348
  557. catalystwan/tests/templates/schemas/omp-vsmart.json +0 -222
  558. catalystwan/tests/templates/schemas/security-vsmart.json +0 -58
  559. catalystwan/tests/templates/schemas/system-vsmart.json +0 -2585
  560. catalystwan/tests/templates/schemas/vpn-vsmart-interface.json +0 -859
  561. catalystwan/tests/templates/schemas/vpn-vsmart.json +0 -445
  562. catalystwan/tests/templates/test_chose_model.py +0 -32
  563. catalystwan/tests/templates/test_deserialize_model.py +0 -69
  564. catalystwan/tests/templates/test_find_template_values.py +0 -193
  565. catalystwan/tests/templates/test_find_template_values_2.py +0 -193
  566. catalystwan/tests/templates/test_generate_payload.py +0 -137
  567. catalystwan/tests/templates/test_serialize_model.py +0 -52
  568. catalystwan/tests/test_admin_tech_api.py +0 -198
  569. catalystwan/tests/test_administration.py +0 -470
  570. catalystwan/tests/test_alarms_api.py +0 -251
  571. catalystwan/tests/test_cli_template.py +0 -218
  572. catalystwan/tests/test_creation_tools.py +0 -155
  573. catalystwan/tests/test_device_action_api.py +0 -117
  574. catalystwan/tests/test_devices_api.py +0 -674
  575. catalystwan/tests/test_endpoints.py +0 -907
  576. catalystwan/tests/test_feature_profile_api.py +0 -282
  577. catalystwan/tests/test_feature_template_field.py +0 -33
  578. catalystwan/tests/test_logs_api.py +0 -40
  579. catalystwan/tests/test_models_common.py +0 -53
  580. catalystwan/tests/test_monitoring_security_policy.py +0 -65
  581. catalystwan/tests/test_monitoring_server_info.py +0 -49
  582. catalystwan/tests/test_monitoring_status_api.py +0 -118
  583. catalystwan/tests/test_mtt_aaa_api.py +0 -293
  584. catalystwan/tests/test_omp_api.py +0 -438
  585. catalystwan/tests/test_packet_capture.py +0 -125
  586. catalystwan/tests/test_partition_manager_api.py +0 -121
  587. catalystwan/tests/test_response.py +0 -183
  588. catalystwan/tests/test_session.py +0 -102
  589. catalystwan/tests/test_software_action_api.py +0 -154
  590. catalystwan/tests/test_speed_test_api.py +0 -143
  591. catalystwan/tests/test_task_status_api.py +0 -381
  592. catalystwan/tests/test_templates.py +0 -405
  593. catalystwan/tests/test_tenant_backup_restore_api.py +0 -88
  594. catalystwan/tests/test_tenant_management_api.py +0 -153
  595. catalystwan/tests/test_tenant_migration_api.py +0 -102
  596. catalystwan/tests/test_typed_list.py +0 -426
  597. catalystwan/tests/test_url_monitoring.py +0 -80
  598. catalystwan/tests/test_version.py +0 -99
  599. catalystwan/tests/test_version_utils.py +0 -240
  600. catalystwan/tests/test_vmanage_auth.py +0 -149
  601. catalystwan/typed_list.py +0 -288
  602. catalystwan/utils/__init__.py +0 -0
  603. catalystwan/utils/alarm_status.py +0 -16
  604. catalystwan/utils/certificate_status.py +0 -13
  605. catalystwan/utils/colors.py +0 -12
  606. catalystwan/utils/config_status.py +0 -8
  607. catalystwan/utils/creation_tools.py +0 -136
  608. catalystwan/utils/dashboard.py +0 -255
  609. catalystwan/utils/device_model.py +0 -322
  610. catalystwan/utils/dict.py +0 -61
  611. catalystwan/utils/feature_template/choose_model.py +0 -30
  612. catalystwan/utils/feature_template/find_template_values.py +0 -111
  613. catalystwan/utils/model.py +0 -45
  614. catalystwan/utils/operation_status.py +0 -22
  615. catalystwan/utils/persona.py +0 -5
  616. catalystwan/utils/personality.py +0 -10
  617. catalystwan/utils/pydantic_field.py +0 -12
  618. catalystwan/utils/reachability.py +0 -14
  619. catalystwan/utils/session_type.py +0 -17
  620. catalystwan/utils/template_type.py +0 -8
  621. catalystwan/utils/type_check.py +0 -22
  622. catalystwan/utils/upgrades_helper.py +0 -95
  623. catalystwan/utils/validate_status.py +0 -8
  624. catalystwan/workflows/backup_restore_device_templates.py +0 -467
  625. catalystwan/workflows/tenant_migration.py +0 -203
  626. catalystwan-0.40.1.dev6.dist-info/METADATA +0 -539
  627. catalystwan-0.40.1.dev6.dist-info/RECORD +0 -618
  628. /catalystwan/{api → core/models}/__init__.py +0 -0
  629. /catalystwan/{api/builders/feature_profiles/__init__.py → core/py.typed} +0 -0
  630. {catalystwan-0.40.1.dev6.dist-info → catalystwan-2.0.0a0.dist-info}/LICENSE +0 -0
@@ -1,81 +0,0 @@
1
- # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
- import logging
3
- import os
4
- import unittest
5
- from typing import Union
6
- from uuid import UUID, uuid4
7
-
8
- from packaging.version import Version # type: ignore
9
-
10
- from catalystwan.api.builders.feature_profiles.uc_voice import UcVoiceFeatureProfileAPI
11
- from catalystwan.api.feature_profile_api import (
12
- ApplicationPriorityFeatureProfileAPI,
13
- CliFeatureProfileAPI,
14
- DnsSecurityFeatureProfileAPI,
15
- OtherFeatureProfileAPI,
16
- ServiceFeatureProfileAPI,
17
- SIGSecurityAPI,
18
- SystemFeatureProfileAPI,
19
- TransportFeatureProfileAPI,
20
- )
21
- from catalystwan.exceptions import CatalystwanException
22
- from catalystwan.session import ManagerSession, create_manager_session
23
-
24
- logger = logging.getLogger(__name__)
25
-
26
- RUN_ID: str = str(uuid4())[:4]
27
-
28
-
29
- def load_config() -> dict:
30
- """Load the configuration from the environment variables"""
31
- url = os.environ.get("VMANAGE_URL")
32
- port = os.environ.get("VMANAGE_PORT")
33
- username = os.environ.get("VMANAGE_USERNAME")
34
- password = os.environ.get("VMANAGE_PASSWORD")
35
- if url is None or port is None or username is None or password is None:
36
- raise CatalystwanException("Missing environment variables")
37
- return dict(
38
- url=url,
39
- username=username,
40
- password=password,
41
- port=port,
42
- )
43
-
44
-
45
- def create_session() -> ManagerSession:
46
- """Try to create a session with the environment variables, if it fails, raise an exception"""
47
- try:
48
- session = create_manager_session(**load_config())
49
- return session
50
- except Exception:
51
- raise CatalystwanException("Failed to create session")
52
-
53
-
54
- SESSION = create_session()
55
- IS_API_20_12: bool = SESSION.api_version == Version("20.12")
56
-
57
-
58
- def create_name_with_run_id(name: str) -> str:
59
- """Prevent collisions when running on the same resource"""
60
- return f"{RUN_ID}_{name}"
61
-
62
-
63
- class TestCaseBase(unittest.TestCase):
64
- session: ManagerSession
65
- profile_uuid: UUID
66
-
67
- api: Union[
68
- ApplicationPriorityFeatureProfileAPI,
69
- CliFeatureProfileAPI,
70
- DnsSecurityFeatureProfileAPI,
71
- OtherFeatureProfileAPI,
72
- ServiceFeatureProfileAPI,
73
- SIGSecurityAPI,
74
- SystemFeatureProfileAPI,
75
- TransportFeatureProfileAPI,
76
- UcVoiceFeatureProfileAPI,
77
- ]
78
-
79
- @classmethod
80
- def setUpClass(cls) -> None:
81
- cls.session = SESSION
@@ -1,33 +0,0 @@
1
- # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
- from typing import Type
3
-
4
- from catalystwan.api.feature_profile_api import PolicyObjectFeatureProfileAPI
5
- from catalystwan.endpoints.configuration_feature_profile import ConfigurationFeatureProfile
6
- from catalystwan.integration_tests.base import TestCaseBase
7
- from catalystwan.models.configuration.feature_profile.sdwan.policy_object import AnyPolicyObjectParcel
8
-
9
-
10
- class PolicyTestCaseBase(TestCaseBase):
11
- policy_api: PolicyObjectFeatureProfileAPI
12
- parcel_type: Type[AnyPolicyObjectParcel]
13
-
14
- @classmethod
15
- def setUpClass(cls) -> None:
16
- super().setUpClass()
17
- cls.policy_api = cls.session.api.sdwan_feature_profiles.policy_object
18
- cls.profile_uuid = (
19
- ConfigurationFeatureProfile(cls.session)
20
- .get_sdwan_feature_profiles()
21
- .filter(profile_type="policy-object")
22
- .single_or_default()
23
- ).profile_id
24
-
25
- def setUp(self) -> None:
26
- self.created_id = None
27
- return super().setUp()
28
-
29
- def tearDown(self) -> None:
30
- if self.created_id:
31
- self.policy_api.delete(self.profile_uuid, self.parcel_type, self.created_id)
32
-
33
- return super().tearDown()
@@ -1,33 +0,0 @@
1
- # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
-
3
- from catalystwan.integration_tests.base import create_name_with_run_id
4
- from catalystwan.integration_tests.feature_profile.sdwan.policy.base import PolicyTestCaseBase
5
- from catalystwan.models.configuration.feature_profile.sdwan.policy_object import ExtendedCommunityParcel
6
- from catalystwan.typed_list import DataSequence
7
-
8
-
9
- class TestExtendedCommunityParcel(PolicyTestCaseBase):
10
- parcel_type = ExtendedCommunityParcel
11
-
12
- def test_get_all_parcels(self):
13
- parcels = self.policy_api.get(self.profile_uuid, self.parcel_type)
14
- assert type(parcels) is DataSequence
15
-
16
- def test_create_extended_community_parcel(self):
17
- # Arrange
18
- parcel_name = create_name_with_run_id("ext")
19
- ext = ExtendedCommunityParcel(parcel_name=parcel_name)
20
- ext.add_route_target_community(100, 2000)
21
- ext.add_route_target_community(300, 5000)
22
- ext.add_site_of_origin_community("1.2.3.4", 1000)
23
- ext.add_site_of_origin_community("10.20.30.40", 3000)
24
- # Act
25
- self.created_id = self.policy_api.create_parcel(self.profile_uuid, ext).id
26
- parcel = self.policy_api.get(self.profile_uuid, self.parcel_type, parcel_id=self.created_id)
27
- # Assert
28
- assert parcel.payload.parcel_name == parcel_name
29
- assert len(parcel.payload.entries) == 4
30
- assert parcel.payload.entries[0].extended_community.value == "rt 100:2000"
31
- assert parcel.payload.entries[1].extended_community.value == "rt 300:5000"
32
- assert parcel.payload.entries[2].extended_community.value == "soo 1.2.3.4:1000"
33
- assert parcel.payload.entries[3].extended_community.value == "soo 10.20.30.40:3000"
@@ -1,32 +0,0 @@
1
- # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
- from catalystwan.integration_tests.base import create_name_with_run_id
3
- from catalystwan.integration_tests.feature_profile.sdwan.policy.base import PolicyTestCaseBase
4
- from catalystwan.models.configuration.feature_profile.sdwan.policy_object.security.application_list import (
5
- SecurityApplicationListParcel,
6
- )
7
- from catalystwan.typed_list import DataSequence
8
-
9
-
10
- class TestSecurityApplicationListParcel(PolicyTestCaseBase):
11
- parcel_type = SecurityApplicationListParcel
12
-
13
- def test_get_all_parcels(self):
14
- parcels = self.policy_api.get(self.profile_uuid, self.parcel_type)
15
- assert type(parcels) is DataSequence
16
-
17
- def test_createsecurity_application_list_parcel(self):
18
- # Arrange
19
- parcel_name = create_name_with_run_id("sal")
20
- sal = SecurityApplicationListParcel(parcel_name=parcel_name)
21
- sal.add_application_family("web")
22
- sal.add_application_family("file-server")
23
- sal.add_application_family("audio-video")
24
- # Act
25
- self.created_id = self.policy_api.create_parcel(self.profile_uuid, sal).id
26
- parcel = self.policy_api.get(self.profile_uuid, self.parcel_type, parcel_id=self.created_id)
27
- # Assert
28
- assert parcel.payload.parcel_name == parcel_name
29
- assert len(parcel.payload.entries) == 3
30
- assert parcel.payload.entries[0].app_list_family.value == "web"
31
- assert parcel.payload.entries[1].app_list_family.value == "file-server"
32
- assert parcel.payload.entries[2].app_list_family.value == "audio-video"
@@ -1,433 +0,0 @@
1
- # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
- import unittest
3
- from ipaddress import IPv4Address, IPv4Network, IPv6Address, IPv6Network
4
- from typing import List
5
-
6
- import pytest
7
-
8
- from catalystwan.api.configuration_groups.parcel import Default, Global
9
- from catalystwan.exceptions import ManagerHTTPError
10
- from catalystwan.integration_tests.base import IS_API_20_12, TestCaseBase, create_name_with_run_id
11
- from catalystwan.models.common import (
12
- AcceptDropActionType,
13
- DestinationRegion,
14
- DNSEntryType,
15
- EncapType,
16
- IcmpMsgType,
17
- LossProtectionType,
18
- SequenceIpType,
19
- ServiceChainNumber,
20
- ServiceType,
21
- TLOCColor,
22
- TrafficTargetType,
23
- )
24
- from catalystwan.models.configuration.feature_profile.sdwan.application_priority import (
25
- PolicySettingsParcel,
26
- QosMap,
27
- QosPolicyParcel,
28
- TrafficPolicyParcel,
29
- )
30
- from catalystwan.models.configuration.feature_profile.sdwan.application_priority.qos_policy import QosPolicyTarget
31
- from catalystwan.models.configuration.feature_profile.sdwan.application_priority.traffic_policy import (
32
- AppqoeOptimization,
33
- AppqoeOptimizationAction,
34
- BackupSlaPreferredColorAction,
35
- CflowdAction,
36
- CountAction,
37
- DestinationIpMatch,
38
- DestinationPortMatch,
39
- DestinationRegionMatch,
40
- DnsMatch,
41
- DscpMatch,
42
- FallbackToRoutingAction,
43
- IcmpMessageMatch,
44
- LocalTlocList,
45
- LogAction,
46
- LossCorrection,
47
- LossCorrectionAction,
48
- Match,
49
- Nat,
50
- NatAction,
51
- NatPoolAction,
52
- PacketLengthMatch,
53
- PreferredRemoteColor,
54
- ProtocolMatch,
55
- RedirectDns,
56
- RedirectDnsAction,
57
- SecureServiceEdgeInstance,
58
- Sequence,
59
- ServiceAreaMatch,
60
- ServiceAreaValue,
61
- ServiceChain,
62
- ServiceTloc,
63
- SetAction,
64
- SetDscp,
65
- SetLocalTlocList,
66
- SetNextHop,
67
- SetNextHopIpv6,
68
- SetNextHopLoose,
69
- SetPreferredRemoteColor,
70
- SetService,
71
- SetServiceChain,
72
- SetTloc,
73
- SetVpn,
74
- SigAction,
75
- SourceIpMatch,
76
- SourcePortMatch,
77
- Sse,
78
- SseAction,
79
- TcpMatch,
80
- Tloc,
81
- TrafficCategory,
82
- TrafficCategoryMatch,
83
- TrafficClass,
84
- TrafficClassMatch,
85
- TrafficPolicyTarget,
86
- TrafficToMatch,
87
- )
88
- from catalystwan.models.configuration.feature_profile.sdwan.service.lan.vpn import LanVpnParcel
89
- from catalystwan.models.policy.centralized import TrafficDataDirection
90
-
91
-
92
- @unittest.skipIf(IS_API_20_12, "PolicySettingsParcel is not supported in 20.12")
93
- class TestPolicySettingsParcel(TestCaseBase):
94
- def setUp(self) -> None:
95
- self.api = self.session.api.sdwan_feature_profiles.application_priority
96
- self.profile_id = self.api.create_profile(
97
- create_name_with_run_id("TestApplicationPriorityProfile"), "Description"
98
- ).id
99
-
100
- def test_create_policy_settings_parcel(self):
101
- policy_settings_parcel = PolicySettingsParcel(
102
- name="policy_settings_test_parcel",
103
- )
104
- # Act
105
- parcel_id = self.api.create_parcel(self.profile_id, policy_settings_parcel).id
106
- # Assert
107
- assert parcel_id
108
- parcel = self.api.get_parcel(self.profile_id, PolicySettingsParcel, parcel_id).payload
109
-
110
- assert parcel.parcel_name == "policy_settings_test_parcel"
111
-
112
- def test_update_policy_settings_parcel(self):
113
- policy_settings_parcel = PolicySettingsParcel(
114
- name="policy_settings_test_parcel",
115
- app_visibility=Default[bool](value=False),
116
- flow_visibility=Global[bool](value=True),
117
- app_visibility_ipv6=Global[bool](value=True),
118
- flow_visibility_ipv6=Global[bool](value=True),
119
- )
120
- parcel_id = self.api.create_parcel(self.profile_id, policy_settings_parcel).id
121
- parcel = self.api.get_parcel(self.profile_id, PolicySettingsParcel, parcel_id).payload
122
- parcel.app_visibility = Global[bool](value=True)
123
- # Act
124
- self.api.update_parcel(self.profile_id, parcel, parcel_id)
125
- parcel = self.api.get_parcel(self.profile_id, PolicySettingsParcel, parcel_id).payload
126
-
127
- # Assert
128
- assert parcel.app_visibility == Global[bool](value=True)
129
-
130
- def test_delete_qos_policy_parcel(self):
131
- policy_settings_parcel = PolicySettingsParcel(
132
- name="policy_settings_test_parcel",
133
- app_visibility=Global[bool](value=True),
134
- flow_visibility=Global[bool](value=True),
135
- app_visibility_ipv6=Global[bool](value=True),
136
- flow_visibility_ipv6=Global[bool](value=True),
137
- )
138
- parcel_id = self.api.create_parcel(self.profile_id, policy_settings_parcel).id
139
- # Act
140
- self.api.delete_parcel(self.profile_id, PolicySettingsParcel, parcel_id)
141
-
142
- # Assert
143
- with pytest.raises(ManagerHTTPError):
144
- self.api.get_parcel(self.profile_id, PolicySettingsParcel, parcel_id).payload
145
-
146
- def tearDown(self) -> None:
147
- self.api.delete_profile(self.profile_id)
148
-
149
-
150
- class TestQosPolicyParcel(TestCaseBase):
151
- def setUp(self) -> None:
152
- self.api = self.session.api.sdwan_feature_profiles.application_priority
153
- self.profile_id = self.api.create_profile(
154
- create_name_with_run_id("TestApplicationPriorityProfile"), "Description"
155
- ).id
156
-
157
- def test_create_qos_policy_parcel(self):
158
- qos_policy_parcel = QosPolicyParcel(
159
- name="qos_policy_test_parcel",
160
- qos_map=QosMap(qos_schedulers=[]),
161
- )
162
- # Act
163
- parcel_id = self.api.create_parcel(self.profile_id, qos_policy_parcel).id
164
- # Assert
165
- assert parcel_id
166
- parcel = self.api.get_parcel(self.profile_id, QosPolicyParcel, parcel_id).payload
167
-
168
- assert parcel.parcel_name == "qos_policy_test_parcel"
169
- assert len(parcel.qos_map.qos_schedulers) == 0
170
-
171
- def test_update_qos_policy_parcel(self):
172
- qos_policy_parcel = QosPolicyParcel(
173
- name="qos_policy_test_parcel",
174
- qos_map=QosMap(qos_schedulers=[]),
175
- target=QosPolicyTarget(interfaces=Global[List[str]](value=["GigabitEthernet1"])),
176
- )
177
- parcel_id = self.api.create_parcel(self.profile_id, qos_policy_parcel).id
178
- parcel = self.api.get_parcel(self.profile_id, QosPolicyParcel, parcel_id).payload
179
- parcel.target = QosPolicyTarget(interfaces=Global[List[str]](value=["GigabitEthernet2"]))
180
- # Act
181
- self.api.update_parcel(self.profile_id, parcel, parcel_id)
182
- parcel = self.api.get_parcel(self.profile_id, QosPolicyParcel, parcel_id).payload
183
-
184
- # Assert
185
- assert parcel.target == QosPolicyTarget(interfaces=Global[List[str]](value=["GigabitEthernet2"]))
186
-
187
- def test_delete_qos_policy_parcel(self):
188
- qos_policy_parcel = QosPolicyParcel(
189
- name="qos_policy_test_parcel",
190
- qos_map=QosMap(qos_schedulers=[]),
191
- )
192
- parcel_id = self.api.create_parcel(self.profile_id, qos_policy_parcel).id
193
- # Act
194
- self.api.delete_parcel(self.profile_id, QosPolicyParcel, parcel_id)
195
-
196
- # Assert
197
- with pytest.raises(ManagerHTTPError):
198
- self.api.get_parcel(self.profile_id, QosPolicyParcel, parcel_id).payload
199
-
200
- def tearDown(self) -> None:
201
- self.api.delete_profile(self.profile_id)
202
-
203
-
204
- @unittest.skip("Prepare for 20.12")
205
- class TestTrafficPolicyParcel(TestCaseBase):
206
- @classmethod
207
- def setUpClass(cls):
208
- super().setUpClass()
209
- cls.service_api = cls.session.api.sdwan_feature_profiles.service
210
- cls.service_profile_uuid = cls.service_api.create_profile(
211
- create_name_with_run_id("TestProfileServiceVpn"), "Description"
212
- ).id
213
- cls.vpn_name_1 = create_name_with_run_id("TestVpnParcelForTraffic")
214
- cls.service_api.create_parcel(
215
- cls.service_profile_uuid,
216
- LanVpnParcel(parcel_name=cls.vpn_name_1, parcel_description="Test Vpn Parcel", vpn_id=Global[int](value=2)),
217
- )
218
- cls.vpn_name_2 = create_name_with_run_id("TestVpnParcelForTraffic2")
219
- cls.service_api.create_parcel(
220
- cls.service_profile_uuid,
221
- LanVpnParcel(parcel_name=cls.vpn_name_2, parcel_description="Test Vpn Parcel", vpn_id=Global[int](value=2)),
222
- )
223
-
224
- def setUp(self) -> None:
225
- self.api = self.session.api.sdwan_feature_profiles.application_priority
226
- self.profile_id = self.api.create_profile(
227
- create_name_with_run_id("TestApplicationPriorityProfile"), "Description"
228
- ).id
229
-
230
- def test_create_traffic_policy_parcel(self):
231
- traffic_policy_parcel = TrafficPolicyParcel(
232
- name="traffic_policy_test_parcel",
233
- data_default_action=Global[AcceptDropActionType](value="accept"),
234
- target=TrafficPolicyTarget(
235
- direction=Global[TrafficDataDirection](value="all"), vpn=Global[List[str]](value=[self.vpn_name_1])
236
- ),
237
- )
238
- # Act
239
- parcel_id = self.api.create_parcel(self.profile_id, traffic_policy_parcel).id
240
- # Assert
241
- assert parcel_id
242
- parcel = self.api.get_parcel(self.profile_id, TrafficPolicyParcel, parcel_id).payload
243
-
244
- assert parcel.parcel_name == "traffic_policy_test_parcel"
245
-
246
- def test_create_complex_traffic_policy_parcel(self):
247
- sequences = []
248
- sequence1 = Sequence(
249
- actions=[
250
- BackupSlaPreferredColorAction(backup_sla_preferred_color=Global[List[TLOCColor]](value=["mpls"])),
251
- RedirectDnsAction(redirect_dns=RedirectDns()),
252
- AppqoeOptimizationAction(
253
- appqoe_optimization=AppqoeOptimization(
254
- service_node_group=Global[str](value="SNG-APPQOE"),
255
- )
256
- ),
257
- LossCorrectionAction(
258
- loss_correction=LossCorrection(loss_correction_type=Global[LossProtectionType](value="fecAdaptive"))
259
- ),
260
- CountAction(count=Global[str](value="my_counter")),
261
- LogAction(log=Global[bool](value=True)),
262
- CflowdAction(cflowd=Global[bool](value=True)),
263
- NatPoolAction(nat_pool=Global[int](value=1)),
264
- FallbackToRoutingAction(fallback_to_routing=Global[bool](value=True)),
265
- SseAction(
266
- sse=Sse(
267
- secure_service_edge=Global[Global[bool]](value=Global[bool](value=True)),
268
- secure_service_edge_instance=Global[SecureServiceEdgeInstance](value="zScaler"),
269
- )
270
- ),
271
- SetAction(
272
- set=[
273
- SetDscp(dscp=Global[int](value=1)),
274
- SetNextHop(next_hop=Global[IPv4Address](value=IPv4Address("10.0.1.1"))),
275
- SetNextHopLoose(next_hop_loose=Global[bool](value=True)),
276
- SetPreferredRemoteColor(
277
- preferred_remote_color=PreferredRemoteColor(color=Global[List[TLOCColor]](value=["mpls"]))
278
- ),
279
- SetService(
280
- service=ServiceTloc(
281
- tloc=Tloc(
282
- color=Global[List[TLOCColor]](value=["mpls"]),
283
- encap=Global[EncapType](value="ipsec"),
284
- ip=Global[IPv4Address](value=IPv4Address("10.0.1.1")),
285
- ),
286
- type=Global[ServiceType](value="FW"),
287
- vpn=Global[int](value=1),
288
- )
289
- ),
290
- ]
291
- ),
292
- ],
293
- base_action=Global[AcceptDropActionType](value="accept"),
294
- match=Match(
295
- entries=[
296
- ServiceAreaMatch(service_area=Global[List[ServiceAreaValue]](value=["common"])),
297
- TrafficCategoryMatch(traffic_category=Global[TrafficCategory](value="all")),
298
- TrafficClassMatch(traffic_class=Global[TrafficClass](value="bronze")),
299
- DscpMatch(dscp=Global[int](value=0)),
300
- PacketLengthMatch(packet_length=Global[str](value="1000")),
301
- ProtocolMatch(protocol=Global[List[str]](value=["1", "16"])),
302
- IcmpMessageMatch(icmp_message=Global[List[IcmpMsgType]](value=["echo"])),
303
- SourceIpMatch(source_ip=Global[IPv4Network](value=IPv4Network("192.168.1.1/32"))),
304
- SourcePortMatch(source_port=Global[List[str]](value=["22"])),
305
- DestinationIpMatch(destination_ip=Global[IPv4Network](value=IPv4Network("10.0.0.1/32"))),
306
- DestinationPortMatch(destination_port=Global[List[str]](value=["80"])),
307
- TcpMatch(),
308
- DestinationRegionMatch(destination_region=Global[DestinationRegion](value="other-region")),
309
- TrafficToMatch(traffic_to=Global[TrafficTargetType](value="access")),
310
- DnsMatch(dns=Global[DNSEntryType](value="request")),
311
- ]
312
- ),
313
- sequence_id=Global[int](value=1),
314
- sequence_ip_type=Global[SequenceIpType](value="ipv4"),
315
- sequence_name=Global[str](value="seq1"),
316
- )
317
- sequence2 = Sequence(
318
- actions=[
319
- NatAction(nat=Nat(use_vpn=Global[bool](value=True))),
320
- SigAction(sig=Global[bool](value=True)),
321
- SetAction(
322
- set=[
323
- SetVpn(vpn=Global[int](value=1)),
324
- SetServiceChain(
325
- service_chain=ServiceChain(
326
- local=Global[bool](value=True),
327
- restrict=Global[bool](value=True),
328
- type=Global[ServiceChainNumber](value="SC1"),
329
- )
330
- ),
331
- ]
332
- ),
333
- ],
334
- base_action=Global[AcceptDropActionType](value="accept"),
335
- match=Match(entries=[]),
336
- sequence_id=Global[int](value=2),
337
- sequence_ip_type=Global[SequenceIpType](value="ipv4"),
338
- sequence_name=Global[str](value="seq2"),
339
- )
340
- sequence3 = Sequence(
341
- actions=[
342
- SetAction(
343
- set=[
344
- SetNextHopIpv6(next_hop_ipv6=Global[IPv6Address](value=IPv6Address("2001::1"))),
345
- SetLocalTlocList(local_tloc_list=LocalTlocList(color=Global[List[TLOCColor]](value=["mpls"]))),
346
- SetTloc(
347
- tloc=Tloc(
348
- color=Global[List[TLOCColor]](value=["mpls"]),
349
- encap=Global[EncapType](value="ipsec"),
350
- ip=Global[IPv4Address](value=IPv4Address("10.0.1.1")),
351
- )
352
- ),
353
- ]
354
- ),
355
- ],
356
- base_action=Global[AcceptDropActionType](value="accept"),
357
- match=Match(entries=[]),
358
- sequence_id=Global[int](value=3),
359
- sequence_ip_type=Global[SequenceIpType](value="ipv6"),
360
- sequence_name=Global[str](value="seq3"),
361
- )
362
- sequence3.match_tcp()
363
- sequence3.match_source_ipv6(IPv6Network("2001::0/64"))
364
- sequence3.match_source_ipv6(IPv6Network("2002::0/64"))
365
- sequence3.match_protocol("1")
366
- sequence3.match_protocol("16")
367
- sequence3.match_traffic_category("all")
368
- sequence3.match_service_area("skype")
369
- sequence3.match_service_area("exchange")
370
- sequences.append(sequence1)
371
- sequences.append(sequence2)
372
- sequences.append(sequence3)
373
- traffic_policy_parcel = TrafficPolicyParcel(
374
- name="traffic_policy_test_parcel",
375
- data_default_action=Global[AcceptDropActionType](value="accept"),
376
- sequences=sequences,
377
- target=TrafficPolicyTarget(
378
- direction=Global[TrafficDataDirection](value="all"), vpn=Global[List[str]](value=[self.vpn_name_1])
379
- ),
380
- )
381
- # Act
382
- parcel_id = self.api.create_parcel(self.profile_id, traffic_policy_parcel).id
383
- # Assert
384
- assert parcel_id
385
- parcel = self.api.get_parcel(self.profile_id, TrafficPolicyParcel, parcel_id).payload
386
-
387
- assert parcel.parcel_name == "traffic_policy_test_parcel"
388
-
389
- def test_update_traffic_policy_parcel(self):
390
- traffic_policy_parcel = TrafficPolicyParcel(
391
- name="traffic_policy_test_parcel",
392
- data_default_action=Global[AcceptDropActionType](value="accept"),
393
- target=TrafficPolicyTarget(
394
- direction=Global[TrafficDataDirection](value="all"), vpn=Global[List[str]](value=[self.vpn_name_1])
395
- ),
396
- )
397
- parcel_id = self.api.create_parcel(self.profile_id, traffic_policy_parcel).id
398
- parcel = self.api.get_parcel(self.profile_id, TrafficPolicyParcel, parcel_id).payload
399
- parcel.target = TrafficPolicyTarget(
400
- direction=Global[TrafficDataDirection](value="service"), vpn=Global[List[str]](value=[self.vpn_name_2])
401
- )
402
- # Act
403
- self.api.update_parcel(self.profile_id, parcel, parcel_id)
404
- parcel = self.api.get_parcel(self.profile_id, TrafficPolicyParcel, parcel_id).payload
405
-
406
- # Assert
407
- assert parcel.target == TrafficPolicyTarget(
408
- direction=Global[TrafficDataDirection](value="service"), vpn=Global[List[str]](value=[self.vpn_name_2])
409
- )
410
-
411
- def test_delete_traffic_policy_parcel(self):
412
- traffic_policy_parcel = TrafficPolicyParcel(
413
- name="traffic_policy_test_parcel",
414
- data_default_action=Global[AcceptDropActionType](value="accept"),
415
- target=TrafficPolicyTarget(
416
- direction=Global[TrafficDataDirection](value="all"), vpn=Global[List[str]](value=[self.vpn_name_1])
417
- ),
418
- )
419
- parcel_id = self.api.create_parcel(self.profile_id, traffic_policy_parcel).id
420
- # Act
421
- self.api.delete_parcel(self.profile_id, TrafficPolicyParcel, parcel_id)
422
-
423
- # Assert
424
- with pytest.raises(ManagerHTTPError):
425
- self.api.get_parcel(self.profile_id, TrafficPolicyParcel, parcel_id).payload
426
-
427
- def tearDown(self) -> None:
428
- self.api.delete_profile(self.profile_id)
429
-
430
- @classmethod
431
- def tearDownClass(cls):
432
- super().tearDownClass()
433
- cls.service_api.delete_profile(cls.service_profile_uuid)
@@ -1,54 +0,0 @@
1
- # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
- import pytest
3
-
4
- from catalystwan.exceptions import ManagerHTTPError
5
- from catalystwan.integration_tests.base import TestCaseBase, create_name_with_run_id
6
- from catalystwan.models.configuration.feature_profile.sdwan.cli import ConfigParcel
7
-
8
-
9
- class TestCliConfigParcel(TestCaseBase):
10
- def setUp(self) -> None:
11
- self.api = self.session.api.sdwan_feature_profiles.cli
12
- self.profile_id = self.api.create_profile(create_name_with_run_id("TestCliProfileService"), "Description").id
13
- self.config_group_id = self.session.api.config_group.create(
14
- create_name_with_run_id("TestCLIConfigGroup"), "TestCLIConfigGroup", "sdwan", [self.profile_id]
15
- ).id
16
-
17
- def test_create_cli_config_parcel(self):
18
- config_parcel = ConfigParcel(
19
- parcel_name="ConfigCliDefault", parcel_description="Config CLI Parcel", config="test-config"
20
- )
21
- # Act
22
- parcel_id = self.api.create_parcel(self.profile_id, config_parcel).id
23
- # Assert
24
- assert parcel_id
25
- parcel = self.api.get_parcel_by_id(self.profile_id, parcel_id).payload
26
-
27
- assert parcel.parcel_name == "ConfigCliDefault"
28
- assert parcel.config == "test-config"
29
-
30
- def test_update_cli_config_parcel(self):
31
- config_parcel = ConfigParcel(
32
- parcel_name="ConfigCliDefault", parcel_description="Config CLI Parcel", config="test-config"
33
- )
34
- parcel_id = self.api.create_parcel(self.profile_id, config_parcel).id
35
- parcel = self.api.get_parcel_by_id(self.profile_id, parcel_id).payload
36
- parcel.config = "updated-config"
37
- self.api.update_parcel(self.profile_id, parcel_id, parcel)
38
- parcel = self.api.get_parcel_by_id(self.profile_id, parcel_id).payload
39
-
40
- assert parcel.config == "updated-config"
41
-
42
- def test_delete_cli_config_parcel(self):
43
- config_parcel = ConfigParcel(
44
- parcel_name="ConfigCliDefault", parcel_description="Config CLI Parcel", config="test-config"
45
- )
46
- parcel_id = self.api.create_parcel(self.profile_id, config_parcel).id
47
- self.api.delete_parcel(self.profile_id, parcel_id)
48
-
49
- with pytest.raises(ManagerHTTPError):
50
- self.api.get_parcel_by_id(self.profile_id, parcel_id).payload
51
-
52
- def tearDown(self) -> None:
53
- self.session.api.config_group.delete(self.config_group_id)
54
- self.api.delete_profile(self.profile_id)