catalystwan 0.40.1.dev0__tar.gz → 0.40.1.dev2__tar.gz

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 (619) hide show
  1. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/PKG-INFO +1 -1
  2. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/template_api.py +31 -1
  3. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/device_template/device_template.py +39 -1
  4. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration_device_template.py +15 -1
  5. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/security_port.py +8 -6
  6. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/__init__.py +37 -4
  7. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/security_group.py +22 -10
  8. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/scalable_group_tag.py +1 -1
  9. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/localized.py +0 -2
  10. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/utils/model.py +10 -1
  11. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/pyproject.toml +1 -1
  12. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/setup.py +1 -1
  13. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/LICENSE +0 -0
  14. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/README.md +0 -0
  15. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/__init__.py +0 -0
  16. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/abstractions.py +0 -0
  17. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/__init__.py +0 -0
  18. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/admin_tech_api.py +0 -0
  19. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/administration.py +0 -0
  20. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/alarms_api.py +0 -0
  21. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/api_container.py +0 -0
  22. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/basic_api.py +0 -0
  23. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/builders/__init__.py +0 -0
  24. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/builders/feature_profiles/__init__.py +0 -0
  25. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/builders/feature_profiles/application_priority.py +0 -0
  26. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/builders/feature_profiles/builder_factory.py +0 -0
  27. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/builders/feature_profiles/cli.py +0 -0
  28. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/builders/feature_profiles/other.py +0 -0
  29. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/builders/feature_profiles/report.py +0 -0
  30. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/builders/feature_profiles/service.py +0 -0
  31. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/builders/feature_profiles/system.py +0 -0
  32. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/builders/feature_profiles/transport.py +0 -0
  33. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/builders/feature_profiles/uc_voice.py +0 -0
  34. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/config_device_inventory_api.py +0 -0
  35. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/config_group_api.py +0 -0
  36. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/configuration_groups/parcel.py +0 -0
  37. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/dashboard_api.py +0 -0
  38. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/device_action_api.py +0 -0
  39. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/feature_profile_api.py +0 -0
  40. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/logs_api.py +0 -0
  41. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/monitoring_status_api.py +0 -0
  42. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/mtt_aaa_api.py +0 -0
  43. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/omp_api.py +0 -0
  44. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/packet_capture_api.py +0 -0
  45. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/parcel_api.py +0 -0
  46. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/partition_manager_api.py +0 -0
  47. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/policy_api.py +0 -0
  48. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/resource_pool_api.py +0 -0
  49. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/software_action_api.py +0 -0
  50. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/speedtest_api.py +0 -0
  51. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/task_status_api.py +0 -0
  52. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/README.md +0 -0
  53. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/bool_str.py +0 -0
  54. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/cli_template.py +0 -0
  55. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/device_variable.py +0 -0
  56. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/feature_template.py +0 -0
  57. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/feature_template_field.py +0 -0
  58. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/feature_template_payload.py +0 -0
  59. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/models/aaa_model.py +0 -0
  60. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/models/cisco_aaa_model.py +0 -0
  61. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/models/cisco_banner_model.py +0 -0
  62. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/models/cisco_bfd_model.py +0 -0
  63. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/models/cisco_bgp_model.py +0 -0
  64. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/models/cisco_logging_model.py +0 -0
  65. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/models/cisco_ntp_model.py +0 -0
  66. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/models/cisco_omp_model.py +0 -0
  67. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/models/cisco_ospf.py +0 -0
  68. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/models/cisco_ospfv3.py +0 -0
  69. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/models/cisco_secure_internet_gateway.py +0 -0
  70. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/models/cisco_snmp_model.py +0 -0
  71. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/models/cisco_system.py +0 -0
  72. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/models/cisco_vpn_interface_model.py +0 -0
  73. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/models/cisco_vpn_model.py +0 -0
  74. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/models/cli_template.py +0 -0
  75. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/models/omp_vsmart_model.py +0 -0
  76. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/models/security_vsmart_model.py +0 -0
  77. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/models/supported.py +0 -0
  78. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/models/system_vsmart_model.py +0 -0
  79. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/models/vpn_vsmart_interface_model.py +0 -0
  80. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/models/vpn_vsmart_model.py +0 -0
  81. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/payloads/aaa/aaa_model.py +0 -0
  82. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/payloads/aaa/feature/aaa.json.j2 +0 -0
  83. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/payloads/aaa/feature/accounting.json.j2 +0 -0
  84. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/payloads/aaa/feature/radius.json.j2 +0 -0
  85. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/payloads/aaa/feature/tacacs.json.j2 +0 -0
  86. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/payloads/aaa/feature/user.json.j2 +0 -0
  87. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/payloads/cisco_vpn/cisco_vpn_model.py +0 -0
  88. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/payloads/cisco_vpn/feature/cisco_vpn.json.j2 +0 -0
  89. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/payloads/cisco_vpn/feature/dns.json.j2 +0 -0
  90. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/payloads/cisco_vpn/feature/ipv4route.json.j2 +0 -0
  91. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/payloads/cisco_vpn/feature/ipv6route.json.j2 +0 -0
  92. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/payloads/cisco_vpn/feature/mapping.json.j2 +0 -0
  93. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/payloads/tenant/tenant.json.j2 +0 -0
  94. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/templates/payloads/tenant/tenant_model.py +0 -0
  95. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/tenant_backup_restore_api.py +0 -0
  96. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/tenant_management_api.py +0 -0
  97. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/tenant_migration_api.py +0 -0
  98. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/versions_utils.py +0 -0
  99. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/api/virtual_image_action_api.py +0 -0
  100. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/apigw_auth.py +0 -0
  101. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/dataclasses.py +0 -0
  102. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/__init__.py +0 -0
  103. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/administration_user_and_group.py +0 -0
  104. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/api_gateway.py +0 -0
  105. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/certificate_management_device.py +0 -0
  106. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/certificate_management_vmanage.py +0 -0
  107. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/client.py +0 -0
  108. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/cluster_management.py +0 -0
  109. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/device/software_update.py +0 -0
  110. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/disaster_recovery.py +0 -0
  111. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/feature_profile/sdwan/application_priority.py +0 -0
  112. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/feature_profile/sdwan/cli.py +0 -0
  113. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/feature_profile/sdwan/dns_security.py +0 -0
  114. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/feature_profile/sdwan/embedded_security.py +0 -0
  115. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/feature_profile/sdwan/other.py +0 -0
  116. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/feature_profile/sdwan/policy_object.py +0 -0
  117. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/feature_profile/sdwan/service.py +0 -0
  118. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/feature_profile/sdwan/sig_security.py +0 -0
  119. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/feature_profile/sdwan/system.py +0 -0
  120. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/feature_profile/sdwan/topology.py +0 -0
  121. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py +0 -0
  122. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/feature_profile/sdwan/uc_voice.py +0 -0
  123. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/network_hierarchy.py +0 -0
  124. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/abstractions.py +0 -0
  125. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/access_control_list.py +0 -0
  126. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py +0 -0
  127. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/aip.py +0 -0
  128. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/amp.py +0 -0
  129. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/app_route.py +0 -0
  130. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/cflowd.py +0 -0
  131. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/control.py +0 -0
  132. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/device_access.py +0 -0
  133. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py +0 -0
  134. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/dial_peer.py +0 -0
  135. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/dns_security.py +0 -0
  136. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/fxo_port.py +0 -0
  137. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/fxs_did_port.py +0 -0
  138. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/fxs_port.py +0 -0
  139. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py +0 -0
  140. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/intrusion_prevention.py +0 -0
  141. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/mesh.py +0 -0
  142. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/pri_isdn_port.py +0 -0
  143. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/qos_map.py +0 -0
  144. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/rewrite.py +0 -0
  145. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/route_policy.py +0 -0
  146. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/rule_set.py +0 -0
  147. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/security_group.py +0 -0
  148. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/srst_phone_profile.py +0 -0
  149. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/ssl_decryption.py +0 -0
  150. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/ssl_decryption_utd_profile.py +0 -0
  151. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/traffic_data.py +0 -0
  152. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/url_filtering.py +0 -0
  153. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/vpn_membership.py +0 -0
  154. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/vpn_qos_map.py +0 -0
  155. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py +0 -0
  156. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/app.py +0 -0
  157. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/app_probe.py +0 -0
  158. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/as_path.py +0 -0
  159. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/class_map.py +0 -0
  160. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/color.py +0 -0
  161. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/community.py +0 -0
  162. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py +0 -0
  163. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/data_prefix.py +0 -0
  164. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/expanded_community.py +0 -0
  165. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/extended_community.py +0 -0
  166. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/fax_protocol.py +0 -0
  167. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/fqdn.py +0 -0
  168. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/geo_location.py +0 -0
  169. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/identity.py +0 -0
  170. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/ips_signature.py +0 -0
  171. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py +0 -0
  172. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/local_app.py +0 -0
  173. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/local_domain.py +0 -0
  174. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/media_profile.py +0 -0
  175. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/mirror.py +0 -0
  176. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/modem_pass_through.py +0 -0
  177. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/policer.py +0 -0
  178. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/port.py +0 -0
  179. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py +0 -0
  180. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/prefix.py +0 -0
  181. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/protocol_name.py +0 -0
  182. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/region.py +0 -0
  183. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/scalable_group_tag.py +0 -0
  184. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/site.py +0 -0
  185. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/sla.py +0 -0
  186. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/supervisory_disconnect.py +0 -0
  187. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/threat_grid_api_key.py +0 -0
  188. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/tloc.py +0 -0
  189. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/translation_profile.py +0 -0
  190. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/translation_rules.py +0 -0
  191. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/trunkgroup.py +0 -0
  192. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/umbrella_data.py +0 -0
  193. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/url_allow_list.py +0 -0
  194. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/url_block_list.py +0 -0
  195. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/vpn.py +0 -0
  196. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/list/zone.py +0 -0
  197. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/security_template.py +0 -0
  198. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/vedge_template.py +0 -0
  199. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/voice_template.py +0 -0
  200. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy/vsmart_template.py +0 -0
  201. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/policy_group.py +0 -0
  202. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/software_actions.py +0 -0
  203. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration/topology_group.py +0 -0
  204. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration_dashboard_status.py +0 -0
  205. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration_device_actions.py +0 -0
  206. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration_device_inventory.py +0 -0
  207. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration_feature_profile.py +0 -0
  208. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration_general_template.py +0 -0
  209. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration_group.py +0 -0
  210. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration_settings.py +0 -0
  211. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/configuration_template_master.py +0 -0
  212. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/endpoints_container.py +0 -0
  213. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/misc.py +0 -0
  214. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/monitoring/device_details.py +0 -0
  215. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/monitoring/security_policy.py +0 -0
  216. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/monitoring/server_info.py +0 -0
  217. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/monitoring/status.py +0 -0
  218. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/real_time_monitoring/reboot_history.py +0 -0
  219. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/sdavc_cloud_connector.py +0 -0
  220. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/tenant_backup_restore.py +0 -0
  221. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/tenant_management.py +0 -0
  222. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/tenant_migration.py +0 -0
  223. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/troubleshooting_tools/device_connectivity.py +0 -0
  224. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/endpoints/url_monitoring.py +0 -0
  225. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/exceptions.py +0 -0
  226. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/integration_tests/__init__.py +0 -0
  227. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/integration_tests/base.py +0 -0
  228. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/integration_tests/feature_profile/sdwan/__init__.py +0 -0
  229. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/integration_tests/feature_profile/sdwan/policy/__init__.py +0 -0
  230. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/integration_tests/feature_profile/sdwan/policy/base.py +0 -0
  231. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/integration_tests/feature_profile/sdwan/policy/test_extended_community.py +0 -0
  232. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/integration_tests/feature_profile/sdwan/policy/test_security_app_list.py +0 -0
  233. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/integration_tests/feature_profile/sdwan/test_application_priority.py +0 -0
  234. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/integration_tests/feature_profile/sdwan/test_cli.py +0 -0
  235. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/integration_tests/feature_profile/sdwan/test_dns_security.py +0 -0
  236. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/integration_tests/feature_profile/sdwan/test_other.py +0 -0
  237. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/integration_tests/feature_profile/sdwan/test_service.py +0 -0
  238. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/integration_tests/feature_profile/sdwan/test_sig_security.py +0 -0
  239. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/integration_tests/feature_profile/sdwan/test_ssl_decryption.py +0 -0
  240. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/integration_tests/feature_profile/sdwan/test_system.py +0 -0
  241. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/integration_tests/feature_profile/sdwan/test_transport.py +0 -0
  242. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/integration_tests/feature_profile/sdwan/topology/test_topology.py +0 -0
  243. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/integration_tests/profile_builder/__init__.py +0 -0
  244. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/integration_tests/profile_builder/test_pb_service.py +0 -0
  245. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/integration_tests/profile_builder/test_pb_transport.py +0 -0
  246. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/integration_tests/profile_builder/test_pb_uc_voice.py +0 -0
  247. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/integration_tests/test_data/__init__.py +0 -0
  248. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/integration_tests/test_find_template_values.py +0 -0
  249. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/integration_tests/test_network_hierarchy.py +0 -0
  250. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/integration_tests/test_settings.py +0 -0
  251. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/logging.conf +0 -0
  252. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/common.py +0 -0
  253. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/common.py +0 -0
  254. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/README.md +0 -0
  255. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/builder.py +0 -0
  256. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/common.py +0 -0
  257. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/parcel.py +0 -0
  258. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/acl/__init__.py +0 -0
  259. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/acl/ipv4acl.py +0 -0
  260. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/acl/ipv6acl.py +0 -0
  261. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/application_priority/__init__.py +0 -0
  262. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/application_priority/policy_settings.py +0 -0
  263. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/application_priority/qos_policy.py +0 -0
  264. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/application_priority/traffic_policy.py +0 -0
  265. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/cli/__init__.py +0 -0
  266. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/cli/config.py +0 -0
  267. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/cli/full_config.py +0 -0
  268. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/dns_security/__init__.py +0 -0
  269. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/dns_security/dns.py +0 -0
  270. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/embedded_security/__init__.py +0 -0
  271. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/embedded_security/ngfirewall.py +0 -0
  272. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/embedded_security/policy.py +0 -0
  273. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/other/__init__.py +0 -0
  274. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/other/thousandeyes.py +0 -0
  275. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/other/ucse.py +0 -0
  276. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/__init__.py +0 -0
  277. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/app_probe.py +0 -0
  278. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/application_list.py +0 -0
  279. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/as_path.py +0 -0
  280. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/color_list.py +0 -0
  281. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/data_prefix.py +0 -0
  282. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/expanded_community_list.py +0 -0
  283. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/extended_community.py +0 -0
  284. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/fowarding_class.py +0 -0
  285. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv6_data_prefix.py +0 -0
  286. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv6_prefix_list.py +0 -0
  287. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/mirror.py +0 -0
  288. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/policer.py +0 -0
  289. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/prefered_group_color.py +0 -0
  290. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/prefix_list.py +0 -0
  291. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/sla_class.py +0 -0
  292. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/standard_community.py +0 -0
  293. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/tloc_list.py +0 -0
  294. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/aip.py +0 -0
  295. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/amp.py +0 -0
  296. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/application_list.py +0 -0
  297. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/data_prefix.py +0 -0
  298. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/fqdn.py +0 -0
  299. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/geolocation_list.py +0 -0
  300. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/identity.py +0 -0
  301. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/intrusion_prevention.py +0 -0
  302. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ips_signature.py +0 -0
  303. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/local_domain.py +0 -0
  304. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/protocol_list.py +0 -0
  305. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/scalable_group_tag.py +0 -0
  306. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ssl_decryption.py +0 -0
  307. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ssl_decryption_profile.py +0 -0
  308. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/url.py +0 -0
  309. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/url_filtering.py +0 -0
  310. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/zone.py +0 -0
  311. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/routing/__init__.py +0 -0
  312. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/routing/bgp.py +0 -0
  313. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/routing/ospf.py +0 -0
  314. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/routing/ospfv3.py +0 -0
  315. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/service/__init__.py +0 -0
  316. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/service/appqoe.py +0 -0
  317. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/service/dhcp_server.py +0 -0
  318. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/service/eigrp.py +0 -0
  319. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/service/lan/common.py +0 -0
  320. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/service/lan/ethernet.py +0 -0
  321. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/service/lan/gre.py +0 -0
  322. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/service/lan/ipsec.py +0 -0
  323. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/service/lan/multilink.py +0 -0
  324. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/service/lan/svi.py +0 -0
  325. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/service/lan/vpn.py +0 -0
  326. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/service/multicast.py +0 -0
  327. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/service/object_tracker.py +0 -0
  328. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/service/route_policy.py +0 -0
  329. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/service/service_insertion_attachment.py +0 -0
  330. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/service/switchport.py +0 -0
  331. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/service/tracker.py +0 -0
  332. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/service/wireless_lan.py +0 -0
  333. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/sig_security/__init__.py +0 -0
  334. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/sig_security/sig_security.py +0 -0
  335. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/system/__init__.py +0 -0
  336. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/system/aaa.py +0 -0
  337. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/system/banner.py +0 -0
  338. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/system/basic.py +0 -0
  339. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/system/bfd.py +0 -0
  340. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/system/device_access.py +0 -0
  341. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/system/device_access_ipv6.py +0 -0
  342. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/system/global_parcel.py +0 -0
  343. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/system/logging_parcel.py +0 -0
  344. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/system/mrf.py +0 -0
  345. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/system/ntp.py +0 -0
  346. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/system/omp.py +0 -0
  347. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/system/security.py +0 -0
  348. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/system/snmp.py +0 -0
  349. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/topology/__init__.py +0 -0
  350. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/topology/custom_control.py +0 -0
  351. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/topology/hubspoke.py +0 -0
  352. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/topology/mesh.py +0 -0
  353. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/transport/__init__.py +0 -0
  354. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_controller.py +0 -0
  355. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_profile.py +0 -0
  356. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/transport/gps.py +0 -0
  357. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/transport/management/ethernet.py +0 -0
  358. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/transport/t1e1controller.py +0 -0
  359. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/transport/vpn.py +0 -0
  360. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/cellular.py +0 -0
  361. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/ethernet.py +0 -0
  362. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/gre.py +0 -0
  363. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/ipsec.py +0 -0
  364. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/multilink.py +0 -0
  365. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/protocol_over.py +0 -0
  366. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/t1e1serial.py +0 -0
  367. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/uc_voice/__init__.py +0 -0
  368. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/uc_voice/analog_interface.py +0 -0
  369. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/uc_voice/call_routing.py +0 -0
  370. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/uc_voice/digital_interface.py +0 -0
  371. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/uc_voice/dsp_farm.py +0 -0
  372. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/uc_voice/media_profile.py +0 -0
  373. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/uc_voice/server_group.py +0 -0
  374. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/uc_voice/srst.py +0 -0
  375. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/uc_voice/supervisory_disconnect.py +0 -0
  376. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/uc_voice/translation_profile.py +0 -0
  377. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/uc_voice/translation_rule.py +0 -0
  378. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/uc_voice/trunk_group.py +0 -0
  379. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/uc_voice/voice_global.py +0 -0
  380. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/feature_profile/sdwan/uc_voice/voice_tenant.py +0 -0
  381. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/network_hierarchy/__init__.py +0 -0
  382. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/network_hierarchy/cflowd.py +0 -0
  383. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/network_hierarchy/node.py +0 -0
  384. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/policy_group.py +0 -0
  385. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/profile_type.py +0 -0
  386. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/configuration/topology_group.py +0 -0
  387. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/device_inventory.py +0 -0
  388. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/feature_profile_parcel.py +0 -0
  389. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/misc/application_protocols.py +0 -0
  390. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/monitoring/security_policy.py +0 -0
  391. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/monitoring/server_info.py +0 -0
  392. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/centralized.py +0 -0
  393. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/access_control_list.py +0 -0
  394. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/access_control_list_ipv6.py +0 -0
  395. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/aip.py +0 -0
  396. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/amp.py +0 -0
  397. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/app_route.py +0 -0
  398. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/cflowd.py +0 -0
  399. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/control.py +0 -0
  400. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/device_access.py +0 -0
  401. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/device_access_ipv6.py +0 -0
  402. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/dial_peer.py +0 -0
  403. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/dns_security.py +0 -0
  404. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/fxo_port.py +0 -0
  405. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/fxs_did_port.py +0 -0
  406. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/fxs_port.py +0 -0
  407. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/hub_and_spoke.py +0 -0
  408. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/intrusion_prevention.py +0 -0
  409. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/mesh.py +0 -0
  410. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/pri_isdn_port.py +0 -0
  411. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/qos_map.py +0 -0
  412. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/rewrite.py +0 -0
  413. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/route_policy.py +0 -0
  414. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/rule_set.py +0 -0
  415. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/srst_phone_profile.py +0 -0
  416. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/ssl_decryption.py +0 -0
  417. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/ssl_decryption_utd_profile.py +0 -0
  418. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/traffic_data.py +0 -0
  419. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/url_filtering.py +0 -0
  420. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/vpn_membership.py +0 -0
  421. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/vpn_qos_map.py +0 -0
  422. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/definition/zone_based_firewall.py +0 -0
  423. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/app.py +0 -0
  424. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/app_probe.py +0 -0
  425. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/as_path.py +0 -0
  426. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/class_map.py +0 -0
  427. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/color.py +0 -0
  428. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/communities.py +0 -0
  429. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/data_ipv6_prefix.py +0 -0
  430. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/data_prefix.py +0 -0
  431. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/fax_protocol.py +0 -0
  432. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/fqdn.py +0 -0
  433. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/geo_location.py +0 -0
  434. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/identity.py +0 -0
  435. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/ips_signature.py +0 -0
  436. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/ipv6_prefix.py +0 -0
  437. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/local_app.py +0 -0
  438. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/local_domain.py +0 -0
  439. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/media_profile.py +0 -0
  440. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/mirror.py +0 -0
  441. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/modem_pass_through.py +0 -0
  442. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/policer.py +0 -0
  443. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/port.py +0 -0
  444. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/preferred_color_group.py +0 -0
  445. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/prefix.py +0 -0
  446. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/protocol_name.py +0 -0
  447. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/region.py +0 -0
  448. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/site.py +0 -0
  449. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/sla.py +0 -0
  450. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/supervisory_disconnect.py +0 -0
  451. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/threat_grid_api_key.py +0 -0
  452. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/tloc.py +0 -0
  453. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/translation_profile.py +0 -0
  454. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/translation_rules.py +0 -0
  455. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/trunkgroup.py +0 -0
  456. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/umbrella_data.py +0 -0
  457. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/url.py +0 -0
  458. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/vpn.py +0 -0
  459. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/list/zone.py +0 -0
  460. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/policy.py +0 -0
  461. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/policy_definition.py +0 -0
  462. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/policy_list.py +0 -0
  463. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/security.py +0 -0
  464. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/policy/voice.py +0 -0
  465. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/settings.py +0 -0
  466. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/templates.py +0 -0
  467. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/tenant.py +0 -0
  468. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/models/url_monitoring.py +0 -0
  469. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/request_limiter.py +0 -0
  470. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/response.py +0 -0
  471. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/session.py +0 -0
  472. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/__init__.py +0 -0
  473. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/builders/uc_voice.py +0 -0
  474. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/models/__init__.py +0 -0
  475. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/__init__.py +0 -0
  476. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/__init__.py +0 -0
  477. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/aaa_basic.json +0 -0
  478. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/aaa_complex.json +0 -0
  479. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/basic/__init__.py +0 -0
  480. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/basic/alias.json +0 -0
  481. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/basic/basic.json +0 -0
  482. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/basic/basic_no_value.json +0 -0
  483. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/basic/children.json +0 -0
  484. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/basic/children_nested.json +0 -0
  485. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/basic/children_nested_datapath.json +0 -0
  486. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/basic/data_path.json +0 -0
  487. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/cisco_aaa.json +0 -0
  488. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/cisco_aaa_complex.json +0 -0
  489. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/cisco_banner.json +0 -0
  490. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/cisco_bfd.json +0 -0
  491. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/cisco_logging_complex.json +0 -0
  492. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/cisco_ntp_complex.json +0 -0
  493. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/cisco_omp_complex.json +0 -0
  494. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/cisco_ospf_complex.json +0 -0
  495. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/cisco_sig.json +0 -0
  496. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/cisco_snmp_complex.json +0 -0
  497. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/cisco_system_complex.json +0 -0
  498. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/cisco_vpn_basic.json +0 -0
  499. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/cisco_vpn_complex.json +0 -0
  500. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/cisco_vpn_interface_complex.json +0 -0
  501. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/default_cisco_system.json +0 -0
  502. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/omp_vsmart_1.json +0 -0
  503. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/omp_vsmart_2.json +0 -0
  504. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/omp_vsmart_3.json +0 -0
  505. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/omp_vsmart_complex.json +0 -0
  506. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/security_vsmart_complex.json +0 -0
  507. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/system_vsmart_complex.json +0 -0
  508. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/vpn_vsmart_basic.json +0 -0
  509. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/vpn_vsmart_complex.json +0 -0
  510. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/vpn_vsmart_interface_basic.json +0 -0
  511. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/definitions/vpn_vsmart_interface_complex.json +0 -0
  512. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/models/__init__.py +0 -0
  513. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/models/aaa.py +0 -0
  514. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/models/cisco_aaa.py +0 -0
  515. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/models/cisco_banner.py +0 -0
  516. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/models/cisco_bfd.py +0 -0
  517. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/models/cisco_logging.py +0 -0
  518. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/models/cisco_ntp.py +0 -0
  519. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/models/cisco_omp.py +0 -0
  520. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/models/cisco_ospf.py +0 -0
  521. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/models/cisco_secure_internet_gateway.py +0 -0
  522. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/models/cisco_snmp.py +0 -0
  523. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/models/cisco_system.py +0 -0
  524. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/models/cisco_vpn.py +0 -0
  525. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/models/cisco_vpn_interface.py +0 -0
  526. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/models/omp_vsmart.py +0 -0
  527. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/models/security_vsmart.py +0 -0
  528. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/models/system_vsmart.py +0 -0
  529. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/models/vpn_vsmart.py +0 -0
  530. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/models/vpn_vsmart_interface.py +0 -0
  531. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/schemas/aaa.json +0 -0
  532. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/schemas/basic/alias.json +0 -0
  533. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/schemas/basic/basic.json +0 -0
  534. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/schemas/basic/children.json +0 -0
  535. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/schemas/basic/children_nested.json +0 -0
  536. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/schemas/basic/children_nested_datapath.json +0 -0
  537. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/schemas/basic/data_path.json +0 -0
  538. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/schemas/cedge_aaa.json +0 -0
  539. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/schemas/cisco_banner.json +0 -0
  540. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/schemas/cisco_bfd.json +0 -0
  541. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/schemas/cisco_logging.json +0 -0
  542. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/schemas/cisco_ntp.json +0 -0
  543. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/schemas/cisco_omp.json +0 -0
  544. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/schemas/cisco_ospf.json +0 -0
  545. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/schemas/cisco_secure_internet_gateway.json +0 -0
  546. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/schemas/cisco_snmp.json +0 -0
  547. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/schemas/cisco_system.json +0 -0
  548. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/schemas/cisco_vpn.json +0 -0
  549. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/schemas/cisco_vpn_interface.json +0 -0
  550. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/schemas/omp-vsmart.json +0 -0
  551. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/schemas/security-vsmart.json +0 -0
  552. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/schemas/system-vsmart.json +0 -0
  553. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/schemas/vpn-vsmart-interface.json +0 -0
  554. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/schemas/vpn-vsmart.json +0 -0
  555. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/test_chose_model.py +0 -0
  556. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/test_deserialize_model.py +0 -0
  557. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/test_find_template_values.py +0 -0
  558. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/test_find_template_values_2.py +0 -0
  559. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/test_generate_payload.py +0 -0
  560. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/templates/test_serialize_model.py +0 -0
  561. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_admin_tech_api.py +0 -0
  562. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_administration.py +0 -0
  563. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_alarms_api.py +0 -0
  564. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_cli_template.py +0 -0
  565. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_creation_tools.py +0 -0
  566. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_device_action_api.py +0 -0
  567. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_devices_api.py +0 -0
  568. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_endpoints.py +0 -0
  569. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_feature_profile_api.py +0 -0
  570. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_feature_template_field.py +0 -0
  571. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_logs_api.py +0 -0
  572. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_models_common.py +0 -0
  573. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_monitoring_security_policy.py +0 -0
  574. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_monitoring_server_info.py +0 -0
  575. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_monitoring_status_api.py +0 -0
  576. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_mtt_aaa_api.py +0 -0
  577. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_omp_api.py +0 -0
  578. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_packet_capture.py +0 -0
  579. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_partition_manager_api.py +0 -0
  580. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_response.py +0 -0
  581. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_session.py +0 -0
  582. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_software_action_api.py +0 -0
  583. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_speed_test_api.py +0 -0
  584. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_task_status_api.py +0 -0
  585. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_templates.py +0 -0
  586. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_tenant_backup_restore_api.py +0 -0
  587. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_tenant_management_api.py +0 -0
  588. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_tenant_migration_api.py +0 -0
  589. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_typed_list.py +0 -0
  590. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_url_monitoring.py +0 -0
  591. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_version.py +0 -0
  592. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_version_utils.py +0 -0
  593. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/tests/test_vmanage_auth.py +0 -0
  594. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/typed_list.py +0 -0
  595. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/utils/__init__.py +0 -0
  596. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/utils/alarm_status.py +0 -0
  597. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/utils/certificate_status.py +0 -0
  598. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/utils/colors.py +0 -0
  599. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/utils/config_status.py +0 -0
  600. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/utils/creation_tools.py +0 -0
  601. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/utils/dashboard.py +0 -0
  602. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/utils/device_model.py +0 -0
  603. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/utils/dict.py +0 -0
  604. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/utils/feature_template/choose_model.py +0 -0
  605. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/utils/feature_template/find_template_values.py +0 -0
  606. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/utils/operation_status.py +0 -0
  607. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/utils/persona.py +0 -0
  608. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/utils/personality.py +0 -0
  609. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/utils/pydantic_field.py +0 -0
  610. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/utils/reachability.py +0 -0
  611. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/utils/session_type.py +0 -0
  612. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/utils/template_type.py +0 -0
  613. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/utils/type_check.py +0 -0
  614. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/utils/upgrades_helper.py +0 -0
  615. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/utils/validate_status.py +0 -0
  616. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/version.py +0 -0
  617. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/vmanage_auth.py +0 -0
  618. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/workflows/backup_restore_device_templates.py +0 -0
  619. {catalystwan-0.40.1.dev0 → catalystwan-0.40.1.dev2}/catalystwan/workflows/tenant_migration.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: catalystwan
3
- Version: 0.40.1.dev0
3
+ Version: 0.40.1.dev2
4
4
  Summary: Cisco Catalyst WAN SDK for Python
5
5
  Home-page: https://github.com/cisco-en-programmability/catalystwan-sdk
6
6
  Author: kagorski
@@ -5,7 +5,7 @@ from __future__ import annotations
5
5
  import json
6
6
  import logging
7
7
  from enum import Enum
8
- from typing import TYPE_CHECKING, Any, Optional, Type, overload
8
+ from typing import TYPE_CHECKING, Any, List, Optional, Type, overload
9
9
 
10
10
  from ciscoconfparse import CiscoConfParse # type: ignore
11
11
  from typing_extensions import deprecated
@@ -13,6 +13,8 @@ from typing_extensions import deprecated
13
13
  from catalystwan.api.task_status_api import Task
14
14
  from catalystwan.api.templates.cli_template import CLITemplate
15
15
  from catalystwan.api.templates.device_template.device_template import (
16
+ CreateDeviceInputPayload,
17
+ DeviceInputValues,
16
18
  DeviceSpecificValue,
17
19
  DeviceTemplate,
18
20
  GeneralTemplate,
@@ -729,3 +731,31 @@ class TemplatesAPI:
729
731
  endpoint = f"/dataservice/template/device/object/{template_id}"
730
732
  response = self.session.get(endpoint)
731
733
  return DeviceTemplate(**response.json())
734
+
735
+ def get_device_template_attached_devices_variables(self, template_id: str) -> List[DeviceInputValues]:
736
+ """
737
+ Fetches and processes attached device variables for a given device template.
738
+
739
+ Args:
740
+ template_id (str): The ID of the device template.
741
+
742
+ Returns:
743
+ List[DeviceInputValues]: A list of DeviceInputValues objects containing device variables.
744
+ """
745
+ api = self.session.endpoints.configuration_device_template
746
+
747
+ # Fetch attached devices for the template
748
+ attached_devices = api.get_device_config_attached(template_id)
749
+
750
+ # Prepare payload for fetching device variables
751
+ payload = CreateDeviceInputPayload(
752
+ template_id=template_id,
753
+ device_ids=[d.uuid for d in attached_devices if d.uuid],
754
+ is_edited=False,
755
+ is_master_edited=False,
756
+ )
757
+
758
+ # Fetch device variables
759
+ result = api.create_device_input(payload).data
760
+
761
+ return result
@@ -3,7 +3,7 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import logging
6
- from typing import TYPE_CHECKING, List, Literal, Optional
6
+ from typing import TYPE_CHECKING, Any, Dict, List, Literal, Optional
7
7
  from uuid import UUID
8
8
 
9
9
  from pydantic import BaseModel, ConfigDict, Field, field_validator
@@ -141,3 +141,41 @@ class DeviceTemplate(BaseModel):
141
141
 
142
142
  class DeviceSpecificValue(BaseModel):
143
143
  property: str
144
+
145
+
146
+ class DeviceTemplateConfigAttached(BaseModel):
147
+ model_config = ConfigDict(arbitrary_types_allowed=True, populate_by_name=True)
148
+ host_name: Optional[str] = Field(None, serialization_alias="host-name", validation_alias="host-name")
149
+ device_ip: Optional[str] = Field(None, serialization_alias="deviceIP", validation_alias="deviceIP")
150
+ local_system_ip: Optional[str] = Field(
151
+ None, serialization_alias="local-system-ip", validation_alias="local-system-ip"
152
+ )
153
+ site_id: Optional[str] = Field(None, serialization_alias="site-id", validation_alias="site-id")
154
+ device_groups: Optional[List[str]] = Field(
155
+ None, serialization_alias="device-groups", validation_alias="device-groups"
156
+ )
157
+ uuid: Optional[str] = Field(None, serialization_alias="uuid", validation_alias="uuid")
158
+ personality: Optional[str] = Field(None, serialization_alias="personality", validation_alias="personality")
159
+ config_cloudx_mode: Optional[str] = Field(
160
+ None, serialization_alias="configCloudxMode", validation_alias="configCloudxMode"
161
+ )
162
+
163
+
164
+ class CreateDeviceInputPayload(BaseModel):
165
+ model_config = ConfigDict(populate_by_name=True)
166
+ template_id: str = Field(serialization_alias="templateId", validation_alias="templateId")
167
+ device_ids: List[str] = Field(serialization_alias="deviceIds", validation_alias="deviceIds")
168
+ is_edited: bool = Field(serialization_alias="isEdited", validation_alias="isEdited")
169
+ is_master_edited: bool = Field(serialization_alias="isMasterEdited", validation_alias="isMasterEdited")
170
+
171
+
172
+ class DeviceInputValues(BaseModel):
173
+ model_config = ConfigDict(populate_by_name=True, extra="allow")
174
+ csv_device_ip: str = Field(validation_alias="csv-deviceIP", serialization_alias="csv-deviceIP")
175
+ csv_device_id: str = Field(validation_alias="csv-deviceId", serialization_alias="csv-deviceId")
176
+ csv_host_name: str = Field(validation_alias="csv-host-name", serialization_alias="csv-host-name")
177
+ csv_status: str = Field(validation_alias="csv-status", serialization_alias="csv-status")
178
+
179
+ @property
180
+ def values(self) -> Dict[str, Any]:
181
+ return self.__pydantic_extra__ or dict()
@@ -5,7 +5,13 @@ from typing import Dict
5
5
 
6
6
  from pydantic import BaseModel, ConfigDict, Field
7
7
 
8
- from catalystwan.endpoints import APIEndpoints, post, view
8
+ from catalystwan.api.templates.device_template.device_template import (
9
+ CreateDeviceInputPayload,
10
+ DeviceInputValues,
11
+ DeviceTemplateConfigAttached,
12
+ )
13
+ from catalystwan.endpoints import APIEndpoints, get, post, view
14
+ from catalystwan.typed_list import DataSequence
9
15
  from catalystwan.utils.session_type import ProviderView
10
16
 
11
17
 
@@ -23,3 +29,11 @@ class ConfigurationDeviceTemplate(APIEndpoints):
23
29
  @post("/template/device/config/config/")
24
30
  def get_device_configuration_preview(self, payload: FeatureToCLIPayload) -> str:
25
31
  ...
32
+
33
+ @get("/template/device/config/attached/{template_id}", resp_json_key="data")
34
+ def get_device_config_attached(self, template_id: str) -> DataSequence[DeviceTemplateConfigAttached]:
35
+ ...
36
+
37
+ @post("/template/device/config/input/", resp_json_key="data")
38
+ def create_device_input(self, payload: CreateDeviceInputPayload) -> DataSequence[DeviceInputValues]:
39
+ ...
@@ -4,26 +4,28 @@ from typing import List, Literal
4
4
 
5
5
  from pydantic import AliasPath, ConfigDict, Field, field_validator
6
6
 
7
- from catalystwan.api.configuration_groups.parcel import Global, _ParcelBase, _ParcelEntry, as_global
7
+ from catalystwan.api.configuration_groups.parcel import Global, _ParcelBase, _ParcelEntry
8
8
 
9
9
 
10
10
  class SecurityPortListEntry(_ParcelEntry):
11
11
  model_config = ConfigDict(populate_by_name=True)
12
- port: Global[str] = Field(description="Ex: 1 or 1-10 by range. Range 0 to 65530")
12
+ port: Global[str] = Field(
13
+ description="Ex: 1 or 1-10 by range. Range 0 to 65535"
14
+ ) # Not clear why UI validation accepts max 65530
13
15
 
14
16
  @field_validator("port")
15
17
  @classmethod
16
18
  def check_port(cls, port: Global[str]):
17
19
  value = port.value
18
20
  if value.count("-") == 0:
19
- assert 0 <= int(value) <= 65530
21
+ assert 0 <= int(value) <= 65535
20
22
  return port
21
23
 
22
24
  start_port, end_port = value.split("-")
23
25
  start = int(start_port)
24
26
  end = int(end_port)
25
- assert 0 <= start <= 65530
26
- assert 0 <= end <= 65530
27
+ assert 0 <= start <= 65535
28
+ assert 0 <= end <= 65535
27
29
  assert start < end
28
30
  return port
29
31
 
@@ -34,7 +36,7 @@ class SecurityPortParcel(_ParcelBase):
34
36
  entries: List[SecurityPortListEntry] = Field(default_factory=list, validation_alias=AliasPath("data", "entries"))
35
37
 
36
38
  def _add_port(self, port: str):
37
- self.entries.append(SecurityPortListEntry(port=as_global(port)))
39
+ self.entries.append(SecurityPortListEntry(port=Global[str](value=port)))
38
40
 
39
41
  def add_port(self, port: int):
40
42
  self._add_port(str(port))
@@ -1,7 +1,8 @@
1
1
  # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
2
 
3
3
  # This stub provide top-level "public" policy models to be used with PolicyAPI()
4
- from typing import List, Union
4
+ from functools import lru_cache
5
+ from typing import List, Sequence, Type, Union, cast
5
6
 
6
7
  from pydantic import Field
7
8
  from typing_extensions import Annotated
@@ -65,8 +66,9 @@ from catalystwan.models.policy.list.umbrella_data import UmbrellaDataList, Umbre
65
66
  from catalystwan.models.policy.list.url import URLAllowList, URLAllowListInfo, URLBlockList, URLBlockListInfo
66
67
  from catalystwan.models.policy.list.vpn import VPNList, VPNListInfo
67
68
  from catalystwan.models.policy.list.zone import ZoneList, ZoneListInfo
69
+ from catalystwan.utils.model import get_model_type_field, resolve_nested_base_model_unions
68
70
 
69
- from .centralized import CentralizedPolicy, TrafficDataDirection
71
+ from .centralized import CentralizedPolicy, CentralizedPolicyInfo, TrafficDataDirection
70
72
  from .definition.access_control_list import AclPolicy, AclPolicyGetResponse
71
73
  from .definition.access_control_list_ipv6 import AclIPv6Policy, AclIPv6PolicyGetResponse
72
74
  from .definition.aip import AdvancedInspectionProfilePolicy, AdvancedInspectionProfilePolicyGetResponse
@@ -93,7 +95,7 @@ from .definition.traffic_data import TrafficDataPolicy, TrafficDataPolicyGetResp
93
95
  from .definition.url_filtering import UrlFilteringPolicy, UrlFilteringPolicyGetResponse
94
96
  from .definition.vpn_membership import VPNMembershipPolicy, VPNMembershipPolicyGetResponse
95
97
  from .definition.zone_based_firewall import ZoneBasedFWPolicy, ZoneBasedFWPolicyGetResponse
96
- from .localized import LocalizedPolicy
98
+ from .localized import LocalizedPolicy, LocalizedPolicyInfo
97
99
  from .policy_definition import (
98
100
  CarrierType,
99
101
  ControlPathType,
@@ -104,7 +106,13 @@ from .policy_definition import (
104
106
  ServiceType,
105
107
  TLOCActionType,
106
108
  )
107
- from .security import SecurityPolicy, UnifiedSecurityPolicy
109
+ from .security import (
110
+ AnySecurityPolicy,
111
+ AnySecurityPolicyInfo,
112
+ AnySecurityPolicyInfoList,
113
+ SecurityPolicy,
114
+ UnifiedSecurityPolicy,
115
+ )
108
116
 
109
117
  AnyPolicyDefinition = Annotated[
110
118
  Union[
@@ -275,6 +283,26 @@ AnyPolicyDefinitionInfo = Annotated[
275
283
  ]
276
284
 
277
285
 
286
+ @lru_cache
287
+ def find_policy_list_model(model_type: str) -> Type[AnyPolicyListInfo]:
288
+ types = cast(
289
+ Sequence[Type[AnyPolicyListInfo]],
290
+ resolve_nested_base_model_unions(AnyPolicyListInfo),
291
+ )
292
+ model = next(t for t in types if get_model_type_field(t) == model_type)
293
+ return model
294
+
295
+
296
+ @lru_cache
297
+ def find_policy_definition_model(model_type: str) -> Type[AnyPolicyDefinitionInfo]:
298
+ types = cast(
299
+ Sequence[Type[AnyPolicyDefinitionInfo]],
300
+ resolve_nested_base_model_unions(AnyPolicyDefinitionInfo),
301
+ )
302
+ model = next(t for t in types if get_model_type_field(t) == model_type)
303
+ return model
304
+
305
+
278
306
  __all__ = (
279
307
  "AclIPv6Policy",
280
308
  "AclPolicy",
@@ -282,12 +310,16 @@ __all__ = (
282
310
  "AdvancedMalwareProtectionPolicy",
283
311
  "AnyPolicyDefinitionInfo",
284
312
  "AnyPolicyList",
313
+ "AnySecurityPolicy",
314
+ "AnySecurityPolicyInfo",
315
+ "AnySecurityPolicyInfoList",
285
316
  "AppList",
286
317
  "AppProbeClassList",
287
318
  "AppRoutePolicy",
288
319
  "ASPathList",
289
320
  "CarrierType",
290
321
  "CentralizedPolicy",
322
+ "CentralizedPolicyInfo",
291
323
  "CflowdPolicy",
292
324
  "ClassMapList",
293
325
  "ColorList",
@@ -312,6 +344,7 @@ __all__ = (
312
344
  "LocalAppList",
313
345
  "LocalDomainList",
314
346
  "LocalizedPolicy",
347
+ "LocalizedPolicyInfo",
315
348
  "MeshPolicy",
316
349
  "MirrorList",
317
350
  "MultiRegionRole",
@@ -10,7 +10,7 @@ from catalystwan.models.policy.policy_definition import (
10
10
  PolicyDefinitionBase,
11
11
  PolicyDefinitionGetResponse,
12
12
  PolicyDefinitionId,
13
- Reference,
13
+ ReferenceList,
14
14
  VariableName,
15
15
  )
16
16
 
@@ -21,14 +21,20 @@ SequenceIPType = Literal[
21
21
 
22
22
 
23
23
  class SecurityGroupIPv4Definition(BaseModel):
24
- data_prefix: Union[IPv4Network, VariableName, None] = Field(None, alias="dataPrefix")
25
- data_prefix_list: Optional[Reference] = Field(None, alias="dataPrefixList")
24
+ data_prefix: Union[IPv4Network, VariableName, None] = Field(
25
+ None, serialization_alias="dataPrefix", validation_alias="dataPrefix"
26
+ )
27
+ data_prefix_list: Optional[ReferenceList] = Field(
28
+ None, serialization_alias="dataPrefixList", validation_alias="dataPrefixList"
29
+ )
26
30
  fqdn: Optional[str] = None
27
- fqdn_list: Optional[Reference] = Field(None, alias="fqdnList")
28
- geo_location: Optional[str] = Field(None, alias="geoLocation")
29
- geo_location_list: Optional[Reference] = Field(None, alias="geoLocationList")
31
+ fqdn_list: Optional[ReferenceList] = Field(None, serialization_alias="fqdnList", validation_alias="fqdnList")
32
+ geo_location: Optional[str] = Field(None, serialization_alias="geoLocation", validation_alias="geoLocation")
33
+ geo_location_list: Optional[ReferenceList] = Field(
34
+ None, serialization_alias="geoLocationList", validation_alias="geoLocationList"
35
+ )
30
36
  port: Optional[str] = None
31
- port_list: Optional[Reference] = Field(None, alias="portList")
37
+ port_list: Optional[ReferenceList] = Field(None, serialization_alias="portList", validation_alias="portList")
32
38
  model_config = ConfigDict(extra="forbid", populate_by_name=True)
33
39
 
34
40
  @model_validator(mode="after")
@@ -46,8 +52,12 @@ class SecurityGroupIPv4Definition(BaseModel):
46
52
 
47
53
 
48
54
  class SecurityGroupIPv6Definition(BaseModel):
49
- data_ipv6_prefix: Union[IPv6Network, VariableName, None] = Field(None, alias="dataIPV6Prefix")
50
- data_ipv6_prefix_list: Optional[Reference] = Field(None, alias="dataIPV6PrefixList")
55
+ data_ipv6_prefix: Union[IPv6Network, VariableName, None] = Field(
56
+ None, serialization_alias="dataIPV6Prefix", validation_alias="dataIPV6Prefix"
57
+ )
58
+ data_ipv6_prefix_list: Optional[ReferenceList] = Field(
59
+ None, serialization_alias="dataIPV6PrefixList", validation_alias="dataIPV6PrefixList"
60
+ )
51
61
  model_config = ConfigDict(extra="forbid", populate_by_name=True)
52
62
 
53
63
  @model_validator(mode="after")
@@ -61,7 +71,9 @@ class SecurityGroup(PolicyDefinitionBase):
61
71
  # EndpointAPI would need to support annotated union as payload parameter
62
72
  type: Literal["securityGroup"] = "securityGroup"
63
73
  mode: Literal["unified"] = "unified"
64
- sequence_ip_type: SequenceIPType = Field(alias="sequenceIpType")
74
+ sequence_ip_type: SequenceIPType = Field(
75
+ default="ipv4", serialization_alias="sequenceIpType", validation_alias="sequenceIpType"
76
+ )
65
77
  definition: Union[SecurityGroupIPv4Definition, SecurityGroupIPv6Definition]
66
78
 
67
79
  @model_validator(mode="after")
@@ -15,7 +15,7 @@ class ScalableGroupTagListEntry(BaseModel):
15
15
 
16
16
 
17
17
  class ScalableGroupTagList(PolicyListBase):
18
- type: Literal["scalablegrouptag", "scalableGroupTag"] = "scalablegrouptag"
18
+ type: Literal["scalablegrouptag", "scalableGroupTag"] = "scalableGroupTag"
19
19
  entries: List[ScalableGroupTagListEntry] = Field(default_factory=list)
20
20
 
21
21
  def add_entry(self, stg_name: str, tag: str) -> None:
@@ -133,8 +133,6 @@ class LocalizedPolicy(PolicyCreationPayload):
133
133
  if (policy_definition := values.get("policyDefinition")) and values.get("policyType") != "cli":
134
134
  if isinstance(policy_definition, str):
135
135
  values["policyDefinition"] = LocalizedPolicyDefinition.model_validate_json(policy_definition)
136
- else:
137
- values["policyDefinition"] = LocalizedPolicyDefinition()
138
136
  return values
139
137
 
140
138
 
@@ -1,6 +1,7 @@
1
1
  # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
+ from functools import lru_cache
2
3
  from inspect import isclass
3
- from typing import Any, List, Type, Union
4
+ from typing import Any, List, Optional, Type, Union
4
5
 
5
6
  from pydantic import BaseModel
6
7
  from typing_extensions import Annotated, get_args, get_origin
@@ -34,3 +35,11 @@ def resolve_nested_base_model_unions(
34
35
  return list(dict.fromkeys(models_types))
35
36
 
36
37
  return list()
38
+
39
+
40
+ @lru_cache
41
+ def get_model_type_field(model: Type[BaseModel]) -> Optional[str]:
42
+ if type_field := model.model_fields.get("type"):
43
+ if default_value := type_field.default:
44
+ return str(default_value)
45
+ return None
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "catalystwan"
3
- version = "0.40.1dev0"
3
+ version = "0.40.1dev2"
4
4
  description = "Cisco Catalyst WAN SDK for Python"
5
5
  authors = ["kagorski <kagorski@cisco.com>"]
6
6
  readme = "README.md"
@@ -90,7 +90,7 @@ install_requires = \
90
90
 
91
91
  setup_kwargs = {
92
92
  'name': 'catalystwan',
93
- 'version': '0.40.1.dev0',
93
+ 'version': '0.40.1.dev2',
94
94
  'description': 'Cisco Catalyst WAN SDK for Python',
95
95
  'long_description': '<p align="center">\n <a href="#"><img src="docs/images/catalystwan.svg" alt="Cisco Catalyst WAN SDK Logo" style="height:150px" />\n</p>\n\n[![Python-Supported](https://img.shields.io/static/v1?label=Python&logo=Python&color=3776AB&message=3.8%20|%203.9%20|%203.10%20|%203.11%20|%203.12)](https://www.python.org/)\n\nCisco Catalyst WAN SDK is a package for creating simple and parallel automatic requests via official SD-WAN Manager API. It is intended to serve as a multiple session handler (provider, provider as a tenant, tenant). The library is not dependent on environment which is being run in, you just need a connection to any SD-WAN Manager.\n\n## Important Notice: Early Beta Release\n\nWelcome to the Cisco Catalyst WAN SDK!\n\nWe are thrilled to announce that Cisco Catalyst WAN SDK is now available in early beta. This is an exciting step forward in enabling developers to harness the full potential of Cisco\'s networking solutions. Please be aware that, as an early beta release, this version of the SDK is still undergoing development and testing. As such, it is provided "as is" and support to address any issues are limited and best effort.\n\n## Not recommend to use in production environments.\nWe encourage developers to explore and test the SDK\'s capabilities, but please exercise caution when using it in production environments. We are dedicated to improving the Cisco Catalyst WAN SDK and we value your input. Your feedback is crucial to us-it will guide us in refining and enhancing the SDK to better meet your needs.\nTo report any issues, share your insights, or suggest improvements, please visit our Issues page on GitHub or reach out to us through the provided communication channels.\n\nThank you for being a part of our development journey!\n\n## Installation\n```console\npip install catalystwan\n```\n\n## Manager Session\nIn order to execute SDK APIs **ManagerSession** needs to be created. The fastest way to get started is to use `create_manager_session()` method which configures session, performs authentication for given credentials and returns **ManagerSession** instance in operational state. **ManagerSession** provides a collection of supported APIs in `api` instance variable.\nPlease check example below:\n\n```python\nfrom catalystwan.session import create_manager_session\n\nurl = "example.com"\nusername = "admin"\npassword = "password123"\n\nwith create_manager_session(url=url, username=username, password=password) as session:\n devices = session.api.devices.get()\n print(devices)\n```\n\n**ManagerSession** extends [requests.Session](https://requests.readthedocs.io/en/latest/user/advanced/#session-objects) so all functionality from [requests](https://requests.readthedocs.io/en/latest/) library is avaiable to user, it also implements python [contextmanager](https://docs.python.org/3.8/library/contextlib.html#contextlib.contextmanager) and automatically frees server resources on exit.\n\n<details>\n <summary> <b>Configure Manager Session before using</b> <i>(click to expand)</i></summary>\n\nIt is possible to configure **ManagerSession** prior sending any request.\n\n```python\nfrom catalystwan.session import ManagerSession\nfrom catalystwan.vmanage_auth import vManageAuth\n\nurl = "example.com"\nusername = "admin"\npassword = "password123"\n\n# configure session using constructor - nothing will be sent to target server yet\nauth = vManageAuth(username, password)\nsession = ManagerSession(url=url, auth=auth)\n# login and send requests\nsession.login()\nsession.get("/dataservice/device")\nsession.close()\n```\nWhen interacting with the SDWAN Manager API without using a context manager, it\'s important \nto manually execute the `close()` method to release the user session resource.\nEnsure that the `close()` method is called after you have finished using the session to maintain optimal resource management and avoid potential errors.\n\n</details>\n\n<details>\n <summary> <b>Login as Tenant</b> <i>(click to expand)</i></summary>\n\nTenant domain needs to be provided in url together with Tenant credentials.\n\n```python\nfrom catalystwan.session import create_manager_session\n\nurl = "tenant.example.com"\nusername = "tenant_user"\npassword = "password123"\n\nwith create_manager_session(url=url, username=username, password=password) as session:\n print(session.session_type)\n```\n\n</details>\n\n<details>\n <summary> <b>Login as Provider-as-Tenant</b> <i>(click to expand)</i></summary>\n\nTenant `subdomain` needs to be provided as additional argument together with Provider credentials.\n\n```python\nfrom catalystwan.session import create_manager_session\n\nurl = "example.com"\nusername = "provider"\npassword = "password123"\nsubdomain = "tenant.example.com"\n\nwith create_manager_session(url=url, username=username, password=password, subdomain=subdomain) as session:\n print(session.session_type)\n```\n\n</details>\n\n<details>\n <summary> <b>Login using Api Gateway</b> <i>(click to expand)</i></summary>\n\n```python\nfrom catalystwan.session import create_apigw_session\n\nwith create_apigw_session(\n url="example.com",\n client_id="client_id",\n client_secret="client_secret",\n org_name="Org-Name",\n username="user",\n mode="user",\n token_duration=10,\n) as session:\n devices = session.api.devices.get()\n print(devices)\n```\n</details>\n\n<details>\n <summary> <b>Threading</b> <i>(click to expand)</i></summary>\n\n```python\nfrom threading import Thread\nfrom catalystwan.session import ManagerSession\nfrom catalystwan.vmanage_auth import vManageAuth\nfrom copy import copy\n\ndef print_devices(manager: ManagerSession):\n # using context manager (recommended)\n with manager.login() as session:\n print(session.api.devices.get())\n\nif __name__ =="__main__":\n\n # 1. Create shared authentication handler for user session\n auth = vManageAuth(username="username", password="password")\n # 2. Configure session with base url and attach authentication handler\n manager = ManagerSession(base_url="https://url:port", auth=auth)\n\n # 3. Make sure each thread gets own copy of ManagerSession object\n t1 = Thread(target=print_devices, args=(manager,))\n t2 = Thread(target=print_devices, args=(copy(manager),))\n t3 = Thread(target=print_devices, args=(copy(manager),))\n\n t1.start()\n t2.start()\n t3.start()\n\n t1.join()\n t2.join()\n t3.join()\n\n print("Done!")\n```\nThreading can be achieved by using a shared auth object with sessions in each thread. As `ManagerSession` is not guaranteed to be thread-safe, it is recommended to create one session per thread. `ManagerSession` also comes in with a default `RequestLimiter`, which limits the number of concurrent requests to 50. It keeps `ManagerSession` from overloading the server and avoids HTTP 503 and HTTP 429 errors.\nIf you wish to modify the limit, you can pass a modified `RequestLimiter` to `ManagerSession`:\n```python\nfrom catalystwan.session import ManagerSession\nfrom catalystwan.vmanage_auth import vManageAuth\nfrom catalystwan.request_limiter import RequestLimiter\n\nauth = vManageAuth(username="username", password="password")\nlimiter = RequestLimiter(max_requests=30)\nmanager = ManagerSession(base_url="https://url:port", auth=auth, request_limiter=limiter)\n```\n</details>\n\n## API usage examples\nAll examples below assumes `session` variable contains logged-in [Manager Session](#Manager-Session) instance.\n\n<details>\n <summary> <b>Get devices</b> <i>(click to expand)</i></summary>\n\n```python\ndevices = session.api.devices.get()\n```\n\n</details>\n\n<details>\n <summary> <b>Admin Tech</b> <i>(click to expand)</i></summary>\n\n```Python\nadmin_tech_file = session.api.admin_tech.generate("172.16.255.11")\nsession.api.admin_tech.download(admin_tech_file)\nsession.api.admin_tech.delete(admin_tech_file)\n```\n</details>\n\n<details>\n <summary> <b>Speed test</b> <i>(click to expand)</i></summary>\n\n```python\ndevices = session.api.devices.get()\nspeedtest = session.api.speedtest.speedtest(devices[0], devices[1])\n```\n\n</details>\n\n<details>\n <summary> <b>Upgrade device</b> <i>(click to expand)</i></summary>\n\n```python\n# Prepare devices list\ncontrollers = session.endpoints.configuration_device_inventory.get_device_details(\'controllers\')\nvsmarts = controllers.filter(personality=Personality.VSMART)\nimage = "viptela-20.7.2-x86_64.tar.gz"\n\n# Upload image\nsession.api.repository.upload_image(image)\n\n# Install software\n\ninstall_task = session.api.software.install(devices=vsmarts, image=image)\n\n# Check action status\ninstall_task.wait_for_completed()\n```\n\n</details>\n\n<details>\n <summary> <b>Get alarms</b> <i>(click to expand)</i></summary>\nTo get all alarms:\n\n```python\nalarms = session.api.alarms.get()\n```\n\nTo get all not viewed alarms:\n\n```python\nnot_viewed_alarms = session.api.alarms.get().filter(viewed=False)\n```\n\nTo get all alarms from past `n` hours:\n\n```python\nn = 24\nalarms_from_n_hours = session.api.alarms.get(from_time=n)\n```\n\nTo get all critical alarms from past `n` hours:\n\n```python\nfrom catalystwan.utils.alarm_status import Severity\nn = 48\ncritical_alarms = session.api.alarms.get(from_time=n).filter(severity=Severity.CRITICAL)\n```\n\n</details>\n\n<details>\n <summary> <b>Users</b> <i>(click to expand)</i></summary>\n\n```python\n# Get all users\nsession.api.users.get()\n\n# Create user\nfrom catalystwan.endpoints.administration_user_and_group import User\nnew_user = User(username="new_user", password="new_user", group=["netadmin"], description="new user")\nsession.api.users.create(new_user)\n\n# Update user data\nnew_user_update = UserUpdateRequest(username="new_user", group=["netadmin", "netops"], locale="en_US", description="updated-new_user-description")\nsession.api.users.update(new_user_update)\n\n# Update user password\nsession.api.users.update_password("new_user", "n3W-P4s$w0rd")\n\n# Reset user\nsession.api.users.reset("new_user")\n\n# Delete user\nsession.api.users.delete("new_user")\n\n# Get current user authentication type and role\nsession.api.users.get_auth_type()\nsession.api.users.get_role()\n```\n\n</details>\n\n<details>\n <summary> <b>User Groups</b> <i>(click to expand)</i></summary>\n\n```python\n# Get all user groups\nsession.api.user_groups.get()\n\n# Create user group\ngroup = UserGroup("new_user_group", [])\ngroup.enable_read({"Audit Log", "Alarms"})\ngroup.enable_read_and_write({"Device Inventory"})\nsession.api.user_groups.create(group)\n\n# Update user group\ngroup.disable({"Alarms"})\nsession.api.user_groups.update(group)\n\n# Delete user group\nsession.api.user_groups.delete(group.group_name)\n```\n\n</details>\n\n</details>\n\n<details>\n <summary> <b>Sessions</b> <i>(click to expand)</i></summary>\n\n```python\n# Get all active sessions\nactive_sessions = session.api.sessions.get()\n\n# Invalidate sessions for given user\nnew_user_sessions = active_sessions.filter(raw_username="new_user")\nsession.api.sessions.invalidate(new_user_sessions)\n```\n\n</details>\n\n<details>\n <summary> <b>Resource Groups</b> <i>(click to expand)</i></summary>\n\n```python\n# get resource groups\nsession.api.resource_groups.get()\n\n# create resource group\nnew_resource_group = ResourceGroup(\n name="new_resource_group",\n desc="Custom Resource Group #1",\n siteIds=[]\n)\nsession.api.resource_groups.create(new_resource_group)\n\n# update resource group\nresource_group = session.api.resource_groups.get().filter(name="new_resource_group").single_or_default()\nupdated_resource_group = ResourceGroupUpdateRequest(\n id=resource_group.id,\n name=resource_group.name,\n desc="Custom Resource Group #1 with updated description and site ids",\n siteIds=[200]\n)\n\n# switch to resource group view\nsession.api.resource_groups.switch("new_resource_group")\n\n# delete resource group\nsession.api.resource_groups.delete(resource_group.id)\n```\n\n</details>\n\n<details>\n <summary> <b>Tenant management</b> <i>(click to expand)</i></summary>\n\n```python\napi = session.api.tenant_management\n# create tenants\ntenants = [\n Tenant(\n name="tenant1",\n org_name="CiscoDevNet",\n subdomain="alpha.bravo.net",\n desc="This is tenant for unit tests",\n edge_connector_enable=True,\n edge_connector_system_ip="172.16.255.81",\n edge_connector_tunnel_interface_name="GigabitEthernet1",\n wan_edge_forecast=1,\n )\n]\ncreate_task = api.create(tenants)\ncreate_task.wait_for_completed()\n# list all tenants\ntenants_data = api.get_all()\n# pick tenant from list by name\ntenant = tenants_data.filter(name="tenant1").single_or_default()\n# get selected tenant id\ntenant_id = tenant.tenant_id\n# get vsession id of selected tenant\nvsessionid = api.vsession_id(tenant_id)\n# delete tenant by ids\ndelete_task = api.delete([tenant_id])\ndelete_task.wait_for_completed()\n# others\napi.get_hosting_capacity_on_vsmarts()\napi.get_statuses()\napi.get_vsmart_mapping()\n```\n</details>\n\n<details>\n <summary> <b>Tenant migration</b> <i>(click to expand)</i></summary>\n\n```python\nfrom pathlib import Path\nfrom catalystwan.session import create_manager_session\nfrom catalystwan.models.tenant import TenantExport\nfrom catalystwan.workflows.tenant_migration import migration_workflow\n\ntenant = TenantExport(\n name="mango",\n desc="Mango tenant description",\n org_name="Provider Org-Mango Inc",\n subdomain="mango.fruits.com",\n wan_edge_forecast=100,\n migration_key="MangoTenantMigrationKey", # only for SDWAN Manager >= 20.13\n is_destination_overlay_mt=True, # only for SDWAN Manager >= 20.13\n)\n\nwith create_manager_session(url="10.0.1.15", username="st-admin", password="") as origin_session, \\\n create_manager_session(url="10.9.0.16", username="mt-provider-admin", password="") as target_session:\n migration_workflow(\n origin_session=origin_session,\n target_session=target_session,\n workdir=Path("workdir"),\n tenant=tenant,\n validator="10.9.12.26"\n )\n```\n\n`migration_workflow` performs multi-step migration procedure according to [Migrate Single-Tenant Cisco SD-WAN Overlay to Multitenant Cisco SD-WAN Deployment](https://www.cisco.com/c/en/us/td/docs/routers/sdwan/configuration/system-interface/vedge-20-x/systems-interfaces-book/sdwan-multitenancy.html#concept_sjj_jmm_z4b)\n\n\nSince 20.13 also MT to ST is supported (just provide suitable origin/target sessions, and `is_destination_overlay_mt` parameter)\n\n\nEach step of the `migration_workflow` procedure can be executed independently using api methods: `export_tenant`, `download`, `import_tenant`, `store_token`, `migrate_network`\n\n```python\norigin_api = origin_session.api.tenant_migration_api\ntarget_api = target_session.api.tenant_migration_api\ntenant_file = Path("~/tenant.tar.gz")\ntoken_file = Path("~/tenant-token.txt")\n# export\nexport_task = origin_api.export_tenant(tenant=tenant)\nremote_filename = export_task.wait_for_file()\n# download\norigin_api.download(export_path, remote_filename)\n# import\nimport_task = target_api.import_tenant(export_path, tenant.migration_key)\nimport_task.wait_for_completed()\n# get token\nmigration_id = import_task.import_info.migration_token_query_params.migration_id\ntarget_api.store_token(migration_id, token_path)\n# migrate network\nmigrate_task = origin_api.migrate_network(token_path)\nmigrate_task.wait_for_completed()\n```\n</details>\n\n<details>\n <summary> <b>Feature Templates</b> <i>(click to expand)</i></summary>\n\n```python\nfrom catalystwan.api.templates.models.omp_vsmart_model import OMPvSmart\n\nomp_vsmart = OMPvSmart(\n name="my_first_template",\n description="NA",\n device_models=["vsmart"]\n\n)\n\nsession.api.templates.create(omp_vsmart)\n```\n\nMore details about how to use and how to add new: [Feature Templates README.md](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/api/templates/README.md)\n</details>\n\n### Note:\nTo remove `InsecureRequestWarning`, you can include in your scripts (warning is suppressed when `catalystwan_devel` environment variable is set):\n```Python\nimport urllib3\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n```\n\n## Catching Exceptions\n```python\ntry:\n session.api.users.delete("bogus-user-name")\nexcept ManagerHTTPError as error:\n # Process an error.\n print(error.response.status_code)\n print(error.info.code)\n print(error.info.message)\n print(error.info.details)\n\n```\n\n## [Supported API endpoints](https://github.com/cisco-en-programmability/catalystwan-sdk/blob/main/ENDPOINTS.md)\n\n\n## [Contributing, bug reporting and feature requests](https://github.com/cisco-en-programmability/catalystwan-sdk/blob/main/CONTRIBUTING.md)\n\n## Seeking support\n\nYou can contact us by submitting [issues](https://github.com/cisco-en-programmability/catalystwan-sdk/issues), or directly via mail on catalystwan@cisco.com.\n',
96
96
  'author': 'kagorski',