catocli 2.0.2__tar.gz → 2.0.3__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.

Potentially problematic release.


This version of catocli might be problematic. Click here for more details.

Files changed (528) hide show
  1. {catocli-2.0.2/catocli.egg-info → catocli-2.0.3}/PKG-INFO +1 -1
  2. {catocli-2.0.2 → catocli-2.0.3}/catocli/Utils/clidriver.py +4 -1
  3. {catocli-2.0.2 → catocli-2.0.3}/catocli/__init__.py +1 -1
  4. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/custom/__init__.py +4 -3
  5. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/custom/customLib.py +239 -1
  6. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/custom/export_rules/export_rules.py +1 -1
  7. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/custom/export_sites/export_sites.py +186 -54
  8. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/custom/import_rules_to_tf/__init__.py +1 -1
  9. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/custom/import_rules_to_tf/import_rules_to_tf.py +1 -137
  10. catocli-2.0.3/catocli/parsers/custom/import_sites_to_tf/__init__.py +45 -0
  11. catocli-2.0.3/catocli/parsers/custom/import_sites_to_tf/import_sites_to_tf.py +891 -0
  12. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_accountManagement/__init__.py +6 -6
  13. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_admin/__init__.py +6 -6
  14. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_container/__init__.py +2 -2
  15. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_hardware/__init__.py +2 -2
  16. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy/__init__.py +192 -192
  17. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sandbox/__init__.py +4 -4
  18. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site/__init__.py +56 -56
  19. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites/__init__.py +56 -56
  20. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_xdr/__init__.py +6 -6
  21. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/parserApiClient.py +36 -11
  22. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_accountBySubdomain/__init__.py +2 -2
  23. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_accountManagement/__init__.py +2 -2
  24. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_accountMetrics/__init__.py +2 -2
  25. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_accountRoles/__init__.py +2 -2
  26. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_accountSnapshot/__init__.py +2 -2
  27. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_admin/__init__.py +2 -2
  28. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_admins/__init__.py +2 -2
  29. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_appStats/__init__.py +2 -2
  30. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_appStatsTimeSeries/__init__.py +2 -2
  31. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_auditFeed/__init__.py +2 -2
  32. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_catalogs/__init__.py +2 -2
  33. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_container/__init__.py +2 -2
  34. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_devices/__init__.py +2 -2
  35. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_entityLookup/__init__.py +2 -2
  36. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_events/__init__.py +2 -2
  37. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_eventsFeed/__init__.py +2 -2
  38. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_eventsTimeSeries/__init__.py +2 -2
  39. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_hardware/__init__.py +2 -2
  40. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_hardwareManagement/__init__.py +2 -2
  41. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_licensing/__init__.py +2 -2
  42. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_policy/__init__.py +2 -2
  43. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_sandbox/__init__.py +2 -2
  44. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_site/__init__.py +2 -2
  45. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_siteLocation/__init__.py +2 -2
  46. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_subDomains/__init__.py +2 -2
  47. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_xdr/__init__.py +4 -4
  48. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/raw/README.md +4 -0
  49. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/raw/__init__.py +3 -2
  50. {catocli-2.0.2 → catocli-2.0.3/catocli.egg-info}/PKG-INFO +1 -1
  51. {catocli-2.0.2 → catocli-2.0.3}/catocli.egg-info/SOURCES.txt +2 -0
  52. {catocli-2.0.2 → catocli-2.0.3}/schema/catolib.py +14 -9
  53. {catocli-2.0.2 → catocli-2.0.3}/LICENSE +0 -0
  54. {catocli-2.0.2 → catocli-2.0.3}/MANIFEST.in +0 -0
  55. {catocli-2.0.2 → catocli-2.0.3}/README.md +0 -0
  56. {catocli-2.0.2 → catocli-2.0.3}/catocli/Utils/profile_manager.py +0 -0
  57. {catocli-2.0.2 → catocli-2.0.3}/catocli/Utils/version_checker.py +0 -0
  58. {catocli-2.0.2 → catocli-2.0.3}/catocli/__main__.py +0 -0
  59. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/configure/__init__.py +0 -0
  60. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/configure/configure.py +0 -0
  61. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/custom/README.md +0 -0
  62. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/custom/export_rules/__init__.py +0 -0
  63. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/custom/export_sites/__init__.py +0 -0
  64. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation/README.md +0 -0
  65. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_accountManagement/README.md +0 -0
  66. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_accountManagement_addAccount/README.md +0 -0
  67. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_accountManagement_removeAccount/README.md +0 -0
  68. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_accountManagement_updateAccount/README.md +0 -0
  69. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_admin/README.md +0 -0
  70. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_admin_addAdmin/README.md +0 -0
  71. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_admin_removeAdmin/README.md +0 -0
  72. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_admin_updateAdmin/README.md +0 -0
  73. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_container/README.md +0 -0
  74. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_container_delete/README.md +0 -0
  75. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_hardware/README.md +0 -0
  76. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_hardware_updateHardwareShipping/README.md +0 -0
  77. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy/README.md +0 -0
  78. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_appTenantRestriction/README.md +0 -0
  79. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_appTenantRestriction_addRule/README.md +0 -0
  80. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_appTenantRestriction_addSection/README.md +0 -0
  81. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_appTenantRestriction_createPolicyRevision/README.md +0 -0
  82. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_appTenantRestriction_discardPolicyRevision/README.md +0 -0
  83. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_appTenantRestriction_moveRule/README.md +0 -0
  84. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_appTenantRestriction_moveSection/README.md +0 -0
  85. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_appTenantRestriction_publishPolicyRevision/README.md +0 -0
  86. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_appTenantRestriction_removeRule/README.md +0 -0
  87. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_appTenantRestriction_removeSection/README.md +0 -0
  88. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_appTenantRestriction_updatePolicy/README.md +0 -0
  89. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_appTenantRestriction_updateRule/README.md +0 -0
  90. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_appTenantRestriction_updateSection/README.md +0 -0
  91. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_dynamicIpAllocation/README.md +0 -0
  92. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_dynamicIpAllocation_addRule/README.md +0 -0
  93. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_dynamicIpAllocation_addSection/README.md +0 -0
  94. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_dynamicIpAllocation_createPolicyRevision/README.md +0 -0
  95. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_dynamicIpAllocation_discardPolicyRevision/README.md +0 -0
  96. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_dynamicIpAllocation_moveRule/README.md +0 -0
  97. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_dynamicIpAllocation_moveSection/README.md +0 -0
  98. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_dynamicIpAllocation_publishPolicyRevision/README.md +0 -0
  99. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_dynamicIpAllocation_removeRule/README.md +0 -0
  100. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_dynamicIpAllocation_removeSection/README.md +0 -0
  101. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_dynamicIpAllocation_updatePolicy/README.md +0 -0
  102. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_dynamicIpAllocation_updateRule/README.md +0 -0
  103. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_dynamicIpAllocation_updateSection/README.md +0 -0
  104. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_internetFirewall/README.md +0 -0
  105. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_internetFirewall_addRule/README.md +0 -0
  106. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_internetFirewall_addSection/README.md +0 -0
  107. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_internetFirewall_createPolicyRevision/README.md +0 -0
  108. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_internetFirewall_discardPolicyRevision/README.md +0 -0
  109. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_internetFirewall_moveRule/README.md +0 -0
  110. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_internetFirewall_moveSection/README.md +0 -0
  111. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_internetFirewall_publishPolicyRevision/README.md +0 -0
  112. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_internetFirewall_removeRule/README.md +0 -0
  113. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_internetFirewall_removeSection/README.md +0 -0
  114. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_internetFirewall_updatePolicy/README.md +0 -0
  115. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_internetFirewall_updateRule/README.md +0 -0
  116. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_internetFirewall_updateSection/README.md +0 -0
  117. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_remotePortFwd/README.md +0 -0
  118. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_remotePortFwd_addRule/README.md +0 -0
  119. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_remotePortFwd_addSection/README.md +0 -0
  120. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_remotePortFwd_createPolicyRevision/README.md +0 -0
  121. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_remotePortFwd_discardPolicyRevision/README.md +0 -0
  122. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_remotePortFwd_moveRule/README.md +0 -0
  123. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_remotePortFwd_moveSection/README.md +0 -0
  124. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_remotePortFwd_publishPolicyRevision/README.md +0 -0
  125. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_remotePortFwd_removeRule/README.md +0 -0
  126. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_remotePortFwd_removeSection/README.md +0 -0
  127. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_remotePortFwd_updatePolicy/README.md +0 -0
  128. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_remotePortFwd_updateRule/README.md +0 -0
  129. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_remotePortFwd_updateSection/README.md +0 -0
  130. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_socketLan/README.md +0 -0
  131. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_socketLan_addRule/README.md +0 -0
  132. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_socketLan_addSection/README.md +0 -0
  133. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_socketLan_createPolicyRevision/README.md +0 -0
  134. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_socketLan_discardPolicyRevision/README.md +0 -0
  135. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_socketLan_moveRule/README.md +0 -0
  136. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_socketLan_moveSection/README.md +0 -0
  137. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_socketLan_publishPolicyRevision/README.md +0 -0
  138. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_socketLan_removeRule/README.md +0 -0
  139. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_socketLan_removeSection/README.md +0 -0
  140. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_socketLan_updatePolicy/README.md +0 -0
  141. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_socketLan_updateRule/README.md +0 -0
  142. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_socketLan_updateSection/README.md +0 -0
  143. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_terminalServer/README.md +0 -0
  144. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_terminalServer_addRule/README.md +0 -0
  145. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_terminalServer_addSection/README.md +0 -0
  146. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_terminalServer_createPolicyRevision/README.md +0 -0
  147. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_terminalServer_discardPolicyRevision/README.md +0 -0
  148. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_terminalServer_moveRule/README.md +0 -0
  149. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_terminalServer_moveSection/README.md +0 -0
  150. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_terminalServer_publishPolicyRevision/README.md +0 -0
  151. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_terminalServer_removeRule/README.md +0 -0
  152. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_terminalServer_removeSection/README.md +0 -0
  153. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_terminalServer_updatePolicy/README.md +0 -0
  154. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_terminalServer_updateRule/README.md +0 -0
  155. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_terminalServer_updateSection/README.md +0 -0
  156. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_wanFirewall/README.md +0 -0
  157. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_wanFirewall_addRule/README.md +0 -0
  158. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_wanFirewall_addSection/README.md +0 -0
  159. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_wanFirewall_createPolicyRevision/README.md +0 -0
  160. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_wanFirewall_discardPolicyRevision/README.md +0 -0
  161. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_wanFirewall_moveRule/README.md +0 -0
  162. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_wanFirewall_moveSection/README.md +0 -0
  163. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_wanFirewall_publishPolicyRevision/README.md +0 -0
  164. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_wanFirewall_removeRule/README.md +0 -0
  165. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_wanFirewall_removeSection/README.md +0 -0
  166. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_wanFirewall_updatePolicy/README.md +0 -0
  167. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_wanFirewall_updateRule/README.md +0 -0
  168. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_wanFirewall_updateSection/README.md +0 -0
  169. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_wanNetwork/README.md +0 -0
  170. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_wanNetwork_addRule/README.md +0 -0
  171. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_wanNetwork_addSection/README.md +0 -0
  172. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_wanNetwork_createPolicyRevision/README.md +0 -0
  173. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_wanNetwork_discardPolicyRevision/README.md +0 -0
  174. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_wanNetwork_moveRule/README.md +0 -0
  175. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_wanNetwork_moveSection/README.md +0 -0
  176. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_wanNetwork_publishPolicyRevision/README.md +0 -0
  177. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_wanNetwork_removeRule/README.md +0 -0
  178. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_wanNetwork_removeSection/README.md +0 -0
  179. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_wanNetwork_updatePolicy/README.md +0 -0
  180. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_wanNetwork_updateRule/README.md +0 -0
  181. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_policy_wanNetwork_updateSection/README.md +0 -0
  182. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sandbox/README.md +0 -0
  183. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sandbox_deleteReport/README.md +0 -0
  184. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sandbox_uploadFile/README.md +0 -0
  185. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site/README.md +0 -0
  186. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site_addBgpPeer/README.md +0 -0
  187. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site_addCloudInterconnectPhysicalConnection/README.md +0 -0
  188. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site_addCloudInterconnectSite/README.md +0 -0
  189. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site_addIpsecIkeV2Site/README.md +0 -0
  190. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site_addIpsecIkeV2SiteTunnels/README.md +0 -0
  191. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site_addNetworkRange/README.md +0 -0
  192. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site_addSecondaryAwsVSocket/README.md +0 -0
  193. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site_addSecondaryAzureVSocket/README.md +0 -0
  194. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site_addSocketAddOnCard/README.md +0 -0
  195. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site_addSocketSite/README.md +0 -0
  196. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site_addStaticHost/README.md +0 -0
  197. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site_removeBgpPeer/README.md +0 -0
  198. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site_removeCloudInterconnectPhysicalConnection/README.md +0 -0
  199. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site_removeIpsecIkeV2SiteTunnels/README.md +0 -0
  200. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site_removeNetworkRange/README.md +0 -0
  201. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site_removeSite/README.md +0 -0
  202. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site_removeSocketAddOnCard/README.md +0 -0
  203. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site_removeStaticHost/README.md +0 -0
  204. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site_startSiteUpgrade/README.md +0 -0
  205. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site_updateBgpPeer/README.md +0 -0
  206. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site_updateCloudInterconnectPhysicalConnection/README.md +0 -0
  207. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site_updateHa/README.md +0 -0
  208. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site_updateIpsecIkeV2SiteGeneralDetails/README.md +0 -0
  209. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site_updateIpsecIkeV2SiteTunnels/README.md +0 -0
  210. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site_updateNetworkRange/README.md +0 -0
  211. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site_updateSiteGeneralDetails/README.md +0 -0
  212. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site_updateSocketInterface/README.md +0 -0
  213. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_site_updateStaticHost/README.md +0 -0
  214. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites/README.md +0 -0
  215. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites_addBgpPeer/README.md +0 -0
  216. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites_addCloudInterconnectPhysicalConnection/README.md +0 -0
  217. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites_addCloudInterconnectSite/README.md +0 -0
  218. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites_addIpsecIkeV2Site/README.md +0 -0
  219. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites_addIpsecIkeV2SiteTunnels/README.md +0 -0
  220. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites_addNetworkRange/README.md +0 -0
  221. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites_addSecondaryAwsVSocket/README.md +0 -0
  222. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites_addSecondaryAzureVSocket/README.md +0 -0
  223. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites_addSocketAddOnCard/README.md +0 -0
  224. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites_addSocketSite/README.md +0 -0
  225. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites_addStaticHost/README.md +0 -0
  226. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites_removeBgpPeer/README.md +0 -0
  227. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites_removeCloudInterconnectPhysicalConnection/README.md +0 -0
  228. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites_removeIpsecIkeV2SiteTunnels/README.md +0 -0
  229. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites_removeNetworkRange/README.md +0 -0
  230. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites_removeSite/README.md +0 -0
  231. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites_removeSocketAddOnCard/README.md +0 -0
  232. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites_removeStaticHost/README.md +0 -0
  233. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites_startSiteUpgrade/README.md +0 -0
  234. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites_updateBgpPeer/README.md +0 -0
  235. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites_updateCloudInterconnectPhysicalConnection/README.md +0 -0
  236. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites_updateHa/README.md +0 -0
  237. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites_updateIpsecIkeV2SiteGeneralDetails/README.md +0 -0
  238. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites_updateIpsecIkeV2SiteTunnels/README.md +0 -0
  239. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites_updateNetworkRange/README.md +0 -0
  240. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites_updateSiteGeneralDetails/README.md +0 -0
  241. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites_updateSocketInterface/README.md +0 -0
  242. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_sites_updateStaticHost/README.md +0 -0
  243. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_xdr/README.md +0 -0
  244. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_xdr_addStoryComment/README.md +0 -0
  245. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_xdr_analystFeedback/README.md +0 -0
  246. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/mutation_xdr_deleteStoryComment/README.md +0 -0
  247. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query/README.md +0 -0
  248. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_accountBySubdomain/README.md +0 -0
  249. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_accountManagement/README.md +0 -0
  250. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_accountMetrics/README.md +0 -0
  251. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_accountRoles/README.md +0 -0
  252. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_accountSnapshot/README.md +0 -0
  253. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_admin/README.md +0 -0
  254. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_admins/README.md +0 -0
  255. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_appStats/README.md +0 -0
  256. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_appStatsTimeSeries/README.md +0 -0
  257. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_auditFeed/README.md +0 -0
  258. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_catalogs/README.md +0 -0
  259. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_container/README.md +0 -0
  260. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_devices/README.md +0 -0
  261. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_entityLookup/README.md +0 -0
  262. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_events/README.md +0 -0
  263. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_eventsFeed/README.md +0 -0
  264. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_eventsTimeSeries/README.md +0 -0
  265. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_hardware/README.md +0 -0
  266. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_hardwareManagement/README.md +0 -0
  267. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_licensing/README.md +0 -0
  268. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_policy/README.md +0 -0
  269. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_sandbox/README.md +0 -0
  270. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_site/README.md +0 -0
  271. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_siteLocation/README.md +0 -0
  272. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_subDomains/README.md +0 -0
  273. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_xdr/README.md +0 -0
  274. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_xdr_stories/README.md +0 -0
  275. {catocli-2.0.2 → catocli-2.0.3}/catocli/parsers/query_xdr_story/README.md +0 -0
  276. {catocli-2.0.2 → catocli-2.0.3}/catocli.egg-info/dependency_links.txt +0 -0
  277. {catocli-2.0.2 → catocli-2.0.3}/catocli.egg-info/entry_points.txt +0 -0
  278. {catocli-2.0.2 → catocli-2.0.3}/catocli.egg-info/requires.txt +0 -0
  279. {catocli-2.0.2 → catocli-2.0.3}/catocli.egg-info/top_level.txt +0 -0
  280. {catocli-2.0.2 → catocli-2.0.3}/graphql_client/__init__.py +0 -0
  281. {catocli-2.0.2 → catocli-2.0.3}/graphql_client/api/__init__.py +0 -0
  282. {catocli-2.0.2 → catocli-2.0.3}/graphql_client/api/call_api.py +0 -0
  283. {catocli-2.0.2 → catocli-2.0.3}/graphql_client/api_client.py +0 -0
  284. {catocli-2.0.2 → catocli-2.0.3}/graphql_client/api_client_types.py +0 -0
  285. {catocli-2.0.2 → catocli-2.0.3}/graphql_client/configuration.py +0 -0
  286. {catocli-2.0.2 → catocli-2.0.3}/graphql_client/models/__init__.py +0 -0
  287. {catocli-2.0.2 → catocli-2.0.3}/graphql_client/models/no_schema.py +0 -0
  288. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.accountManagement.addAccount.json +0 -0
  289. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.accountManagement.removeAccount.json +0 -0
  290. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.accountManagement.updateAccount.json +0 -0
  291. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.admin.addAdmin.json +0 -0
  292. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.admin.removeAdmin.json +0 -0
  293. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.admin.updateAdmin.json +0 -0
  294. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.container.delete.json +0 -0
  295. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.hardware.updateHardwareShipping.json +0 -0
  296. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.appTenantRestriction.addRule.json +0 -0
  297. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.appTenantRestriction.addSection.json +0 -0
  298. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.appTenantRestriction.createPolicyRevision.json +0 -0
  299. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.appTenantRestriction.discardPolicyRevision.json +0 -0
  300. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.appTenantRestriction.moveRule.json +0 -0
  301. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.appTenantRestriction.moveSection.json +0 -0
  302. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.appTenantRestriction.publishPolicyRevision.json +0 -0
  303. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.appTenantRestriction.removeRule.json +0 -0
  304. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.appTenantRestriction.removeSection.json +0 -0
  305. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.appTenantRestriction.updatePolicy.json +0 -0
  306. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.appTenantRestriction.updateRule.json +0 -0
  307. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.appTenantRestriction.updateSection.json +0 -0
  308. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.dynamicIpAllocation.addRule.json +0 -0
  309. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.dynamicIpAllocation.addSection.json +0 -0
  310. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.dynamicIpAllocation.createPolicyRevision.json +0 -0
  311. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.dynamicIpAllocation.discardPolicyRevision.json +0 -0
  312. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.dynamicIpAllocation.moveRule.json +0 -0
  313. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.dynamicIpAllocation.moveSection.json +0 -0
  314. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.dynamicIpAllocation.publishPolicyRevision.json +0 -0
  315. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.dynamicIpAllocation.removeRule.json +0 -0
  316. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.dynamicIpAllocation.removeSection.json +0 -0
  317. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.dynamicIpAllocation.updatePolicy.json +0 -0
  318. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.dynamicIpAllocation.updateRule.json +0 -0
  319. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.dynamicIpAllocation.updateSection.json +0 -0
  320. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.internetFirewall.addRule.json +0 -0
  321. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.internetFirewall.addSection.json +0 -0
  322. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.internetFirewall.createPolicyRevision.json +0 -0
  323. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.internetFirewall.discardPolicyRevision.json +0 -0
  324. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.internetFirewall.moveRule.json +0 -0
  325. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.internetFirewall.moveSection.json +0 -0
  326. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.internetFirewall.publishPolicyRevision.json +0 -0
  327. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.internetFirewall.removeRule.json +0 -0
  328. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.internetFirewall.removeSection.json +0 -0
  329. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.internetFirewall.updatePolicy.json +0 -0
  330. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.internetFirewall.updateRule.json +0 -0
  331. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.internetFirewall.updateSection.json +0 -0
  332. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.remotePortFwd.addRule.json +0 -0
  333. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.remotePortFwd.addSection.json +0 -0
  334. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.remotePortFwd.createPolicyRevision.json +0 -0
  335. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.remotePortFwd.discardPolicyRevision.json +0 -0
  336. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.remotePortFwd.moveRule.json +0 -0
  337. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.remotePortFwd.moveSection.json +0 -0
  338. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.remotePortFwd.publishPolicyRevision.json +0 -0
  339. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.remotePortFwd.removeRule.json +0 -0
  340. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.remotePortFwd.removeSection.json +0 -0
  341. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.remotePortFwd.updatePolicy.json +0 -0
  342. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.remotePortFwd.updateRule.json +0 -0
  343. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.remotePortFwd.updateSection.json +0 -0
  344. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.socketLan.addRule.json +0 -0
  345. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.socketLan.addSection.json +0 -0
  346. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.socketLan.createPolicyRevision.json +0 -0
  347. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.socketLan.discardPolicyRevision.json +0 -0
  348. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.socketLan.moveRule.json +0 -0
  349. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.socketLan.moveSection.json +0 -0
  350. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.socketLan.publishPolicyRevision.json +0 -0
  351. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.socketLan.removeRule.json +0 -0
  352. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.socketLan.removeSection.json +0 -0
  353. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.socketLan.updatePolicy.json +0 -0
  354. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.socketLan.updateRule.json +0 -0
  355. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.socketLan.updateSection.json +0 -0
  356. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.terminalServer.addRule.json +0 -0
  357. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.terminalServer.addSection.json +0 -0
  358. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.terminalServer.createPolicyRevision.json +0 -0
  359. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.terminalServer.discardPolicyRevision.json +0 -0
  360. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.terminalServer.moveRule.json +0 -0
  361. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.terminalServer.moveSection.json +0 -0
  362. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.terminalServer.publishPolicyRevision.json +0 -0
  363. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.terminalServer.removeRule.json +0 -0
  364. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.terminalServer.removeSection.json +0 -0
  365. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.terminalServer.updatePolicy.json +0 -0
  366. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.terminalServer.updateRule.json +0 -0
  367. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.terminalServer.updateSection.json +0 -0
  368. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.wanFirewall.addRule.json +0 -0
  369. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.wanFirewall.addSection.json +0 -0
  370. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.wanFirewall.createPolicyRevision.json +0 -0
  371. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.wanFirewall.discardPolicyRevision.json +0 -0
  372. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.wanFirewall.moveRule.json +0 -0
  373. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.wanFirewall.moveSection.json +0 -0
  374. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.wanFirewall.publishPolicyRevision.json +0 -0
  375. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.wanFirewall.removeRule.json +0 -0
  376. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.wanFirewall.removeSection.json +0 -0
  377. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.wanFirewall.updatePolicy.json +0 -0
  378. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.wanFirewall.updateRule.json +0 -0
  379. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.wanFirewall.updateSection.json +0 -0
  380. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.wanNetwork.addRule.json +0 -0
  381. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.wanNetwork.addSection.json +0 -0
  382. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.wanNetwork.createPolicyRevision.json +0 -0
  383. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.wanNetwork.discardPolicyRevision.json +0 -0
  384. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.wanNetwork.moveRule.json +0 -0
  385. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.wanNetwork.moveSection.json +0 -0
  386. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.wanNetwork.publishPolicyRevision.json +0 -0
  387. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.wanNetwork.removeRule.json +0 -0
  388. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.wanNetwork.removeSection.json +0 -0
  389. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.wanNetwork.updatePolicy.json +0 -0
  390. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.wanNetwork.updateRule.json +0 -0
  391. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.policy.wanNetwork.updateSection.json +0 -0
  392. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sandbox.deleteReport.json +0 -0
  393. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sandbox.uploadFile.json +0 -0
  394. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.site.addBgpPeer.json +0 -0
  395. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.site.addCloudInterconnectPhysicalConnection.json +0 -0
  396. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.site.addCloudInterconnectSite.json +0 -0
  397. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.site.addIpsecIkeV2Site.json +0 -0
  398. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.site.addIpsecIkeV2SiteTunnels.json +0 -0
  399. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.site.addNetworkRange.json +0 -0
  400. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.site.addSecondaryAwsVSocket.json +0 -0
  401. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.site.addSecondaryAzureVSocket.json +0 -0
  402. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.site.addSocketAddOnCard.json +0 -0
  403. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.site.addSocketSite.json +0 -0
  404. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.site.addStaticHost.json +0 -0
  405. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.site.removeBgpPeer.json +0 -0
  406. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.site.removeCloudInterconnectPhysicalConnection.json +0 -0
  407. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.site.removeIpsecIkeV2SiteTunnels.json +0 -0
  408. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.site.removeNetworkRange.json +0 -0
  409. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.site.removeSite.json +0 -0
  410. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.site.removeSocketAddOnCard.json +0 -0
  411. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.site.removeStaticHost.json +0 -0
  412. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.site.startSiteUpgrade.json +0 -0
  413. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.site.updateBgpPeer.json +0 -0
  414. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.site.updateCloudInterconnectPhysicalConnection.json +0 -0
  415. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.site.updateHa.json +0 -0
  416. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.site.updateIpsecIkeV2SiteGeneralDetails.json +0 -0
  417. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.site.updateIpsecIkeV2SiteTunnels.json +0 -0
  418. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.site.updateNetworkRange.json +0 -0
  419. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.site.updateSiteGeneralDetails.json +0 -0
  420. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.site.updateSocketInterface.json +0 -0
  421. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.site.updateStaticHost.json +0 -0
  422. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sites.addBgpPeer.json +0 -0
  423. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sites.addCloudInterconnectPhysicalConnection.json +0 -0
  424. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sites.addCloudInterconnectSite.json +0 -0
  425. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sites.addIpsecIkeV2Site.json +0 -0
  426. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sites.addIpsecIkeV2SiteTunnels.json +0 -0
  427. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sites.addNetworkRange.json +0 -0
  428. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sites.addSecondaryAwsVSocket.json +0 -0
  429. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sites.addSecondaryAzureVSocket.json +0 -0
  430. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sites.addSocketAddOnCard.json +0 -0
  431. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sites.addSocketSite.json +0 -0
  432. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sites.addStaticHost.json +0 -0
  433. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sites.removeBgpPeer.json +0 -0
  434. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sites.removeCloudInterconnectPhysicalConnection.json +0 -0
  435. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sites.removeIpsecIkeV2SiteTunnels.json +0 -0
  436. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sites.removeNetworkRange.json +0 -0
  437. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sites.removeSite.json +0 -0
  438. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sites.removeSocketAddOnCard.json +0 -0
  439. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sites.removeStaticHost.json +0 -0
  440. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sites.startSiteUpgrade.json +0 -0
  441. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sites.updateBgpPeer.json +0 -0
  442. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sites.updateCloudInterconnectPhysicalConnection.json +0 -0
  443. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sites.updateHa.json +0 -0
  444. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sites.updateIpsecIkeV2SiteGeneralDetails.json +0 -0
  445. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sites.updateIpsecIkeV2SiteTunnels.json +0 -0
  446. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sites.updateNetworkRange.json +0 -0
  447. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sites.updateSiteGeneralDetails.json +0 -0
  448. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sites.updateSocketInterface.json +0 -0
  449. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.sites.updateStaticHost.json +0 -0
  450. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.xdr.addStoryComment.json +0 -0
  451. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.xdr.analystFeedback.json +0 -0
  452. {catocli-2.0.2 → catocli-2.0.3}/models/mutation.xdr.deleteStoryComment.json +0 -0
  453. {catocli-2.0.2 → catocli-2.0.3}/models/query.accountBySubdomain.json +0 -0
  454. {catocli-2.0.2 → catocli-2.0.3}/models/query.accountManagement.json +0 -0
  455. {catocli-2.0.2 → catocli-2.0.3}/models/query.accountMetrics.json +0 -0
  456. {catocli-2.0.2 → catocli-2.0.3}/models/query.accountRoles.json +0 -0
  457. {catocli-2.0.2 → catocli-2.0.3}/models/query.accountSnapshot.json +0 -0
  458. {catocli-2.0.2 → catocli-2.0.3}/models/query.admin.json +0 -0
  459. {catocli-2.0.2 → catocli-2.0.3}/models/query.admins.json +0 -0
  460. {catocli-2.0.2 → catocli-2.0.3}/models/query.appStats.json +0 -0
  461. {catocli-2.0.2 → catocli-2.0.3}/models/query.appStatsTimeSeries.json +0 -0
  462. {catocli-2.0.2 → catocli-2.0.3}/models/query.auditFeed.json +0 -0
  463. {catocli-2.0.2 → catocli-2.0.3}/models/query.catalogs.json +0 -0
  464. {catocli-2.0.2 → catocli-2.0.3}/models/query.container.json +0 -0
  465. {catocli-2.0.2 → catocli-2.0.3}/models/query.devices.json +0 -0
  466. {catocli-2.0.2 → catocli-2.0.3}/models/query.entityLookup.json +0 -0
  467. {catocli-2.0.2 → catocli-2.0.3}/models/query.events.json +0 -0
  468. {catocli-2.0.2 → catocli-2.0.3}/models/query.eventsFeed.json +0 -0
  469. {catocli-2.0.2 → catocli-2.0.3}/models/query.eventsTimeSeries.json +0 -0
  470. {catocli-2.0.2 → catocli-2.0.3}/models/query.hardware.json +0 -0
  471. {catocli-2.0.2 → catocli-2.0.3}/models/query.hardwareManagement.json +0 -0
  472. {catocli-2.0.2 → catocli-2.0.3}/models/query.licensing.json +0 -0
  473. {catocli-2.0.2 → catocli-2.0.3}/models/query.policy.json +0 -0
  474. {catocli-2.0.2 → catocli-2.0.3}/models/query.sandbox.json +0 -0
  475. {catocli-2.0.2 → catocli-2.0.3}/models/query.site.json +0 -0
  476. {catocli-2.0.2 → catocli-2.0.3}/models/query.siteLocation.json +0 -0
  477. {catocli-2.0.2 → catocli-2.0.3}/models/query.subDomains.json +0 -0
  478. {catocli-2.0.2 → catocli-2.0.3}/models/query.xdr.stories.json +0 -0
  479. {catocli-2.0.2 → catocli-2.0.3}/models/query.xdr.story.json +0 -0
  480. {catocli-2.0.2 → catocli-2.0.3}/schema/importSchema.py +0 -0
  481. {catocli-2.0.2 → catocli-2.0.3}/scripts/catolib.py +0 -0
  482. {catocli-2.0.2 → catocli-2.0.3}/scripts/export_if_rules_to_json.py +0 -0
  483. {catocli-2.0.2 → catocli-2.0.3}/scripts/export_wf_rules_to_json.py +0 -0
  484. {catocli-2.0.2 → catocli-2.0.3}/scripts/import_wf_rules_to_tfstate.py +0 -0
  485. {catocli-2.0.2 → catocli-2.0.3}/setup.cfg +0 -0
  486. {catocli-2.0.2 → catocli-2.0.3}/setup.py +0 -0
  487. {catocli-2.0.2 → catocli-2.0.3}/vendor/certifi/__init__.py +0 -0
  488. {catocli-2.0.2 → catocli-2.0.3}/vendor/certifi/__main__.py +0 -0
  489. {catocli-2.0.2 → catocli-2.0.3}/vendor/certifi/core.py +0 -0
  490. {catocli-2.0.2 → catocli-2.0.3}/vendor/certifi/py.typed +0 -0
  491. {catocli-2.0.2 → catocli-2.0.3}/vendor/six.py +0 -0
  492. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/__init__.py +0 -0
  493. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/_base_connection.py +0 -0
  494. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/_collections.py +0 -0
  495. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/_request_methods.py +0 -0
  496. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/_version.py +0 -0
  497. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/connection.py +0 -0
  498. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/connectionpool.py +0 -0
  499. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/contrib/__init__.py +0 -0
  500. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/contrib/emscripten/__init__.py +0 -0
  501. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/contrib/emscripten/connection.py +0 -0
  502. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/contrib/emscripten/fetch.py +0 -0
  503. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/contrib/emscripten/request.py +0 -0
  504. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/contrib/emscripten/response.py +0 -0
  505. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/contrib/pyopenssl.py +0 -0
  506. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/contrib/socks.py +0 -0
  507. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/exceptions.py +0 -0
  508. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/fields.py +0 -0
  509. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/filepost.py +0 -0
  510. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/http2/__init__.py +0 -0
  511. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/http2/connection.py +0 -0
  512. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/http2/probe.py +0 -0
  513. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/poolmanager.py +0 -0
  514. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/py.typed +0 -0
  515. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/response.py +0 -0
  516. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/util/__init__.py +0 -0
  517. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/util/connection.py +0 -0
  518. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/util/proxy.py +0 -0
  519. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/util/request.py +0 -0
  520. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/util/response.py +0 -0
  521. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/util/retry.py +0 -0
  522. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/util/ssl_.py +0 -0
  523. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/util/ssl_match_hostname.py +0 -0
  524. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/util/ssltransport.py +0 -0
  525. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/util/timeout.py +0 -0
  526. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/util/url.py +0 -0
  527. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/util/util.py +0 -0
  528. {catocli-2.0.2 → catocli-2.0.3}/vendor/urllib3/util/wait.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: catocli
3
- Version: 2.0.2
3
+ Version: 2.0.3
4
4
  Summary: Cato Networks cli wrapper for the GraphQL API.
5
5
  Home-page: https://github.com/Cato-Networks/cato-cli
6
6
  Author: Cato Networks
@@ -256,6 +256,9 @@ def main(args=None):
256
256
  else:
257
257
  if response!=None:
258
258
  print(json.dumps(response[0], sort_keys=True, indent=4))
259
+ except KeyboardInterrupt:
260
+ print("\n\nOperation interrupted by user (Ctrl+C). Exiting gracefully...")
261
+ exit(130) # Standard exit code for SIGINT
259
262
  except Exception as e:
260
263
  if isinstance(e, AttributeError):
261
264
  print('Missing arguments. Usage: catocli <operation> -h')
@@ -265,4 +268,4 @@ def main(args=None):
265
268
  else:
266
269
  print('ERROR: ',e)
267
270
  traceback.print_exc()
268
- exit(1)
271
+ exit(1)
@@ -1,2 +1,2 @@
1
- __version__ = "2.0.2"
1
+ __version__ = "2.0.3"
2
2
  __cato_host__ = "https://api.catonetworks.com/api/v1/graphql2"
@@ -1,7 +1,8 @@
1
1
 
2
2
  import catocli.parsers.custom.customLib as customLib
3
3
  from catocli.parsers.custom.export_rules import export_rules_parse
4
- from catocli.parsers.custom.import_rules_to_tf import import_parse
4
+ from catocli.parsers.custom.import_rules_to_tf import rule_import_parse
5
+ from catocli.parsers.custom.import_sites_to_tf import site_import_parse
5
6
  from catocli.parsers.configure import configure_parse
6
7
  from catocli.parsers.custom.export_sites import export_sites_parse
7
8
 
@@ -33,14 +34,14 @@ def custom_parse(subparsers):
33
34
 
34
35
  # Add additional custom parsers here
35
36
  export_rules_parse(subparsers)
36
- import_parse(subparsers)
37
+ import_parser = rule_import_parse(subparsers)
38
+ site_import_parse(subparsers, import_parser)
37
39
  configure_parse(subparsers)
38
40
 
39
41
  def get_help_custom(path):
40
42
  matchCmd = "catocli "+path.replace("_"," ")
41
43
  import os
42
44
  pwd = os.path.dirname(__file__)
43
- # doc = path+"/README.md"
44
45
  abs_path = os.path.join(pwd, "README.md")
45
46
  new_line = "\nEXAMPLES:\n"
46
47
  lines = open(abs_path, "r").readlines()
@@ -1,5 +1,8 @@
1
1
  import os
2
2
  import json
3
+ import subprocess
4
+ import glob
5
+ from pathlib import Path
3
6
  from graphql_client.api.call_api import ApiClient, CallApi
4
7
  from graphql_client.api_client import ApiException
5
8
  import logging
@@ -320,4 +323,239 @@ def getAccountID(args, configuration):
320
323
  if not account_id:
321
324
  raise ValueError("Account ID is required. Provide it using the -accountID flag or set CATO_ACCOUNT_ID environment variable.")
322
325
 
323
- return account_id
326
+ return account_id
327
+
328
+ def check_terraform_binary():
329
+ """Check if terraform binary is available"""
330
+ try:
331
+ result = subprocess.run(['terraform', '--version'], capture_output=True, text=True)
332
+ if result.returncode == 0:
333
+ return True, result.stdout.strip().split('\n')[0]
334
+ else:
335
+ return False, "Terraform binary not found or not working"
336
+ except FileNotFoundError:
337
+ return False, "Terraform binary not found in PATH"
338
+ except Exception as e:
339
+ return False, f"Error checking terraform binary: {e}"
340
+
341
+
342
+ def check_terraform_config_files():
343
+ """Check if Terraform configuration files exist in current directory"""
344
+ tf_files = glob.glob('*.tf') + glob.glob('*.tf.json')
345
+ if tf_files:
346
+ return True, tf_files
347
+ else:
348
+ return False, []
349
+
350
+
351
+ def check_terraform_init():
352
+ """Check if Terraform has been initialized"""
353
+ terraform_dir = Path('.terraform')
354
+ if terraform_dir.exists() and terraform_dir.is_dir():
355
+ # Check for providers
356
+ providers_dir = terraform_dir / 'providers'
357
+ if providers_dir.exists():
358
+ return True, "Terraform is initialized"
359
+ else:
360
+ return False, "Terraform directory exists but no providers found"
361
+ else:
362
+ return False, "Terraform not initialized (.terraform directory not found)"
363
+
364
+
365
+ def check_module_exists(module_name):
366
+ """Check if the specified module exists in Terraform configuration"""
367
+ try:
368
+ # Remove 'module.' prefix if present
369
+ clean_module_name = module_name.replace('module.', '')
370
+
371
+ # Method 1: Check .tf files directly for module definitions
372
+ tf_files = glob.glob('*.tf') + glob.glob('*.tf.json')
373
+ for tf_file in tf_files:
374
+ try:
375
+ with open(tf_file, 'r') as f:
376
+ content = f.read()
377
+ # Look for module "module_name" blocks
378
+ if f'module "{clean_module_name}"' in content or f"module '{clean_module_name}'" in content:
379
+ return True, f"Module '{clean_module_name}' found in {tf_file}"
380
+ except Exception as e:
381
+ print(f"Warning: Could not read {tf_file}: {e}")
382
+ continue
383
+
384
+ # Method 2: Try terraform show -json as fallback
385
+ try:
386
+ result = subprocess.run(
387
+ ['terraform', 'show', '-json'],
388
+ capture_output=True,
389
+ text=True,
390
+ cwd=Path.cwd()
391
+ )
392
+
393
+ if result.returncode == 0:
394
+ state_data = json.loads(result.stdout)
395
+
396
+ # Check if module exists in configuration
397
+ if 'configuration' in state_data and state_data['configuration']:
398
+ modules = state_data.get('configuration', {}).get('root_module', {}).get('module_calls', {})
399
+ if clean_module_name in modules:
400
+ return True, f"Module '{clean_module_name}' found in Terraform state"
401
+
402
+ # Also check in planned_values for modules
403
+ if 'planned_values' in state_data and state_data['planned_values']:
404
+ modules = state_data.get('planned_values', {}).get('root_module', {}).get('child_modules', [])
405
+ for module in modules:
406
+ module_addr = module.get('address', '')
407
+ if clean_module_name in module_addr:
408
+ return True, f"Module '{clean_module_name}' found in planned values"
409
+ except (subprocess.SubprocessError, json.JSONDecodeError) as e:
410
+ print(f"Warning: Could not check terraform state: {e}")
411
+
412
+ return False, f"Module '{clean_module_name}' not found in Terraform configuration files"
413
+
414
+ except Exception as e:
415
+ return False, f"Error checking module existence: {e}"
416
+
417
+
418
+ def validate_terraform_environment(module_name, verbose=False):
419
+ """Validate the complete Terraform environment"""
420
+ print("\n Validating Terraform environment...")
421
+
422
+ # 1. Check terraform binary
423
+ print("\n Checking Terraform binary...")
424
+ has_terraform, terraform_msg = check_terraform_binary()
425
+ if not has_terraform:
426
+ raise Exception(f" Terraform not available: {terraform_msg}")
427
+ if verbose:
428
+ print(f" {terraform_msg}")
429
+ else:
430
+ print(" Terraform binary found")
431
+
432
+ # 2. Check for configuration files
433
+ print("\n Checking Terraform configuration files...")
434
+ has_config, config_files = check_terraform_config_files()
435
+ if not has_config:
436
+ raise Exception(" No Terraform configuration files (.tf or .tf.json) found in current directory")
437
+ if verbose:
438
+ print(f" Found {len(config_files)} configuration files: {', '.join(config_files)}")
439
+ else:
440
+ print(f" Found {len(config_files)} Terraform configuration files")
441
+
442
+ # 3. Check if terraform is initialized
443
+ print("\n Checking Terraform initialization...")
444
+ is_initialized, init_msg = check_terraform_init()
445
+ if not is_initialized:
446
+ raise Exception(f" {init_msg}. Run 'terraform init' first.")
447
+ if verbose:
448
+ print(f" {init_msg}")
449
+ else:
450
+ print(" Terraform is initialized")
451
+
452
+ # 4. Check if the specified module exists
453
+ print(f"\n Checking if module '{module_name}' exists...")
454
+ module_exists, module_msg = check_module_exists(module_name)
455
+ if not module_exists:
456
+ raise Exception(f" {module_msg}. Please add the module to your Terraform configuration first.")
457
+ if verbose:
458
+ print(f" {module_msg}")
459
+ else:
460
+ print(f" Module '{module_name}' found")
461
+
462
+ # 5. Check if modules are properly installed by running terraform validate
463
+ print("\n Checking if modules are properly installed...")
464
+ try:
465
+ result = subprocess.run(
466
+ ['terraform', 'validate'],
467
+ capture_output=True,
468
+ text=True,
469
+ cwd=Path.cwd()
470
+ )
471
+
472
+ if result.returncode != 0:
473
+ error_output = result.stderr.strip()
474
+ if "module is not yet installed" in error_output or "Module not installed" in error_output:
475
+ raise Exception(f" Terraform modules are not installed. Please run 'terraform init' to install all required modules.")
476
+ else:
477
+ raise Exception(f" Terraform validation failed:\n\n{error_output}")
478
+
479
+ print(" All modules are properly installed")
480
+
481
+ except subprocess.SubprocessError as e:
482
+ raise Exception(f" Failed to validate Terraform configuration: {e}")
483
+
484
+ print("\n All Terraform environment checks passed!")
485
+
486
+
487
+
488
+ def check_terraform_config_files():
489
+ """Check if Terraform configuration files exist in current directory"""
490
+ tf_files = glob.glob('*.tf') + glob.glob('*.tf.json')
491
+ if tf_files:
492
+ return True, tf_files
493
+ else:
494
+ return False, []
495
+
496
+
497
+ def check_terraform_init():
498
+ """Check if Terraform has been initialized"""
499
+ terraform_dir = Path('.terraform')
500
+ if terraform_dir.exists() and terraform_dir.is_dir():
501
+ # Check for providers
502
+ providers_dir = terraform_dir / 'providers'
503
+ if providers_dir.exists():
504
+ return True, "Terraform is initialized"
505
+ else:
506
+ return False, "Terraform directory exists but no providers found"
507
+ else:
508
+ return False, "Terraform not initialized (.terraform directory not found)"
509
+
510
+
511
+ def check_module_exists(module_name):
512
+ """Check if the specified module exists in Terraform configuration"""
513
+ try:
514
+ # Remove 'module.' prefix if present
515
+ clean_module_name = module_name.replace('module.', '')
516
+
517
+ # Method 1: Check .tf files directly for module definitions
518
+ tf_files = glob.glob('*.tf') + glob.glob('*.tf.json')
519
+ for tf_file in tf_files:
520
+ try:
521
+ with open(tf_file, 'r') as f:
522
+ content = f.read()
523
+ # Look for module "module_name" blocks
524
+ if f'module "{clean_module_name}"' in content or f"module '{clean_module_name}'" in content:
525
+ return True, f"Module '{clean_module_name}' found in {tf_file}"
526
+ except Exception as e:
527
+ print(f"Warning: Could not read {tf_file}: {e}")
528
+ continue
529
+
530
+ # Method 2: Try terraform show -json as fallback
531
+ try:
532
+ result = subprocess.run(
533
+ ['terraform', 'show', '-json'],
534
+ capture_output=True,
535
+ text=True,
536
+ cwd=Path.cwd()
537
+ )
538
+
539
+ if result.returncode == 0:
540
+ state_data = json.loads(result.stdout)
541
+
542
+ # Check if module exists in configuration
543
+ if 'configuration' in state_data and state_data['configuration']:
544
+ modules = state_data.get('configuration', {}).get('root_module', {}).get('module_calls', {})
545
+ if clean_module_name in modules:
546
+ return True, f"Module '{clean_module_name}' found in Terraform state"
547
+
548
+ # Also check in planned_values for modules
549
+ if 'planned_values' in state_data and state_data['planned_values']:
550
+ modules = state_data.get('planned_values', {}).get('root_module', {}).get('child_modules', [])
551
+ for module in modules:
552
+ module_addr = module.get('address', '')
553
+ if clean_module_name in module_addr:
554
+ return True, f"Module '{clean_module_name}' found in planned values"
555
+ except (subprocess.SubprocessError, json.JSONDecodeError) as e:
556
+ print(f"Warning: Could not check terraform state: {e}")
557
+
558
+ return False, f"Module '{clean_module_name}' not found in Terraform configuration files"
559
+
560
+ except Exception as e:
561
+ return False, f"Error checking module existence: {e}"
@@ -187,7 +187,7 @@ def export_wf_rules_to_json(args, configuration):
187
187
  processed_sections = []
188
188
  for index, section_data in enumerate(sections_with_ids):
189
189
  processed_sections.append({
190
- "section_index": index,
190
+ "section_index": index+1,
191
191
  "section_name": section_data['section']['name'],
192
192
  "section_id": section_data['section']['id']
193
193
  })
@@ -1,5 +1,7 @@
1
1
  import os
2
2
  import json
3
+ import traceback
4
+ import sys
3
5
  from graphql_client.api.call_api import ApiClient, CallApi
4
6
  from graphql_client.api_client import ApiException
5
7
  from ..customLib import writeDataToFile, makeCall, getAccountID
@@ -8,9 +10,19 @@ def export_socket_site_to_json(args, configuration):
8
10
  """
9
11
  Export consolidated site and socket data to JSON format
10
12
  """
11
- processed_data = {'sites':{}}
13
+ processed_data = {'sites':[]}
14
+ warning_stats = {
15
+ 'missing_sites': 0,
16
+ 'missing_interfaces': 0,
17
+ 'missing_data': 0,
18
+ 'missing_interface_details': []
19
+ }
12
20
 
13
21
  try:
22
+ settings = {}
23
+ with open(os.path.join(os.path.dirname(__file__), '../../../../settings.json'), 'r', encoding='utf-8') as f:
24
+ settings = json.load(f)
25
+
14
26
  account_id = getAccountID(args, configuration)
15
27
  # Get account snapshot with siteIDs if provided
16
28
  # Get siteIDs from args if provided (comma-separated string)
@@ -32,68 +44,162 @@ def export_socket_site_to_json(args, configuration):
32
44
  ##################################################################
33
45
  ## Create processed_data object indexed by siteId with location ##
34
46
  ##################################################################
35
- for site_data in snapshot_sites:
47
+ for snapshot_site in snapshot_sites['data']['accountSnapshot']['sites']:
36
48
  cur_site = {
37
- 'wan_interfaces': {},
38
- 'lan_interfaces': {},
49
+ 'wan_interfaces': [],
50
+ 'lan_interfaces': [],
39
51
  }
40
- site_id = site_data.get('id')
41
- cur_site['id'] = site_id
42
- cur_site['name'] = site_data.get('infoSiteSnapshot', {}).get('name')
43
- cur_site['description'] = site_data.get('infoSiteSnapshot', {}).get('description')
44
- cur_site['connectionType'] = site_data.get('infoSiteSnapshot', {}).get('connType')
45
- cur_site['type'] = site_data.get('infoSiteSnapshot', {}).get('type')
46
- cur_site = populateSiteLocationData(args, site_data, cur_site)
47
-
48
- site_interfaces = site_data.get('infoSiteSnapshot', {}).get('interfaces', [])
49
- for wan_ni in site_interfaces:
50
- cur_wan_interface = {}
51
- id = wan_ni.get('wanRoleInterfaceInfo', "")
52
- if id[0:3] == "wan":
53
- cur_wan_interface['id'] = id
54
- cur_wan_interface['name'] = wan_ni.get('name', "")
55
- cur_wan_interface['upstreamBandwidth'] = wan_ni.get('upstreamBandwidth', 0)
56
- cur_wan_interface['downstreamBandwidth'] = wan_ni.get('downstreamBandwidth', 0)
57
- cur_wan_interface['destType'] = wan_ni.get('destType', "")
58
- cur_site['wan_interfaces'][id] = cur_wan_interface
59
-
60
- if site_id:
61
- processed_data['sites'][site_id] = cur_site
52
+ site_id = snapshot_site.get('id')
53
+ connectionType = snapshot_site.get('infoSiteSnapshot', {}).get('connType', "")
54
+ if connectionType not in settings["ignore_export_by_socket_type"]:
55
+ cur_site['id'] = site_id
56
+ cur_site['name'] = snapshot_site.get('infoSiteSnapshot', {}).get('name')
57
+ cur_site['description'] = snapshot_site.get('infoSiteSnapshot', {}).get('description')
58
+ cur_site['connectionType'] = connectionType
59
+ cur_site['type'] = snapshot_site.get('infoSiteSnapshot', {}).get('type')
60
+ cur_site = populateSiteLocationData(args, snapshot_site, cur_site)
61
+
62
+ site_interfaces = snapshot_site.get('infoSiteSnapshot', {}).get('interfaces', [])
63
+ for wan_ni in site_interfaces:
64
+ cur_wan_interface = {}
65
+ role = wan_ni.get('wanRoleInterfaceInfo', "")
66
+ if role is not None and role[0:3] == "wan":
67
+ if connectionType == "SOCKET_X1500":
68
+ cur_wan_interface['id'] = site_id+":"+ wan_ni.get('id', "")
69
+ else:
70
+ cur_wan_interface['id'] = site_id+":INT_"+ wan_ni.get('id', "")
71
+ cur_wan_interface['id'] = site_id+":INT_"+ wan_ni.get('id', "")
72
+ cur_wan_interface['name'] = wan_ni.get('name', "")
73
+ cur_wan_interface['upstreamBandwidth'] = wan_ni.get('upstreamBandwidth', 0)
74
+ cur_wan_interface['downstreamBandwidth'] = wan_ni.get('downstreamBandwidth', 0)
75
+ cur_wan_interface['destType'] = wan_ni.get('destType', "")
76
+ cur_wan_interface['role'] = role
77
+ cur_site['wan_interfaces'].append(cur_wan_interface)
78
+
79
+ if site_id:
80
+ processed_data['sites'].append(cur_site)
62
81
 
63
82
  ##################################################################################
64
83
  ## Process entity lookup LAN network interfaces adding to site object by site_id##
65
84
  ##################################################################################
85
+ interface_map = {}
66
86
  for lan_ni in entity_network_interfaces:
67
87
  cur_lan_interface = {
68
- 'network_ranges': {},
88
+ 'network_ranges': [],
69
89
  }
70
- site_id = lan_ni.get("helperFields","").get('siteId', "")
71
- id = lan_ni.get('entity', "").get('id', "")
72
- interfaceName = lan_ni.get('entity', "").get('interfaceName', "")
90
+ site_id = str(lan_ni.get("helperFields","").get('siteId', ""))
91
+ id = str(lan_ni.get('entity', "").get('id', ""))
92
+ interfaceName = lan_ni.get('helperFields', "").get('interfaceName', "")
73
93
  cur_lan_interface['id'] = id
74
94
  cur_lan_interface['name'] = interfaceName
95
+ # Split interfaceName on " \ " and take the last element
75
96
  cur_lan_interface['index'] = lan_ni.get("helperFields","").get('interfaceId', "")
76
- cur_lan_interface['upstreamBandwidth'] = lan_ni.get('upstreamBandwidth', 0)
77
- cur_lan_interface['downstreamBandwidth'] = lan_ni.get('downstreamBandwidth', 0)
78
- cur_lan_interface['destType'] = lan_ni.get('destType', "")
79
- processed_data['sites'][site_id]['lan_interfaces'][interfaceName] = cur_lan_interface
97
+ cur_lan_interface['destType'] = lan_ni.get("helperFields","").get('destType', "")
98
+
99
+ # Create a composite key for interface mapping that includes site_id
100
+ interface_key = f"{site_id}_{interfaceName}"
101
+ interface_map[interface_key] = id
102
+
103
+ # Only add interface if the site exists in processed_data
104
+ site_entry = next((site for site in processed_data['sites'] if site['id'] == site_id), None)
105
+ if site_entry:
106
+ site_entry['lan_interfaces'].append(cur_lan_interface)
107
+ else:
108
+ if hasattr(args, 'verbose') and args.verbose:
109
+ print(f"WARNING: Site {site_id} not found in snapshot data, skipping interface {interfaceName} ({id})")
80
110
 
81
111
  #############################################################################
82
112
  ## Process entity lookup network ranges populating by network interface id ##
83
113
  #############################################################################
84
114
  for range in entity_network_ranges:
115
+ if hasattr(args, 'verbose') and args.verbose:
116
+ print(f"Processing network range: {type(range)} - {range}")
85
117
  cur_range = {}
86
- site_id = lan_ni.get("helperFields","").get('siteId', "")
87
- id = lan_ni.get('entity', "").get('id', "")
88
- interface_name = lan_ni.get('entity', "").get('interfaceName', "")
89
- cur_lan_interface['id'] = id
90
- cur_lan_interface['subnet'] = lan_ni.get("helperFields","").get('subnet', "")
91
- cur_lan_interface['vlanTag'] = lan_ni.get("helperFields","").get('vlanTag', "")
92
- cur_lan_interface['microsegmentation'] = lan_ni.get("helperFields","").get('microsegmentation', "")
118
+ helper_fields = range.get("helperFields", {})
119
+ entity_data = range.get('entity', {})
93
120
 
94
- processed_data['sites'][site_id]['lan_interfaces'][interface_name] = cur_range
95
-
121
+ if hasattr(args, 'verbose') and args.verbose:
122
+ print(f" helperFields type: {type(helper_fields)}, value: {helper_fields}")
123
+ print(f" entity type: {type(entity_data)}, value: {entity_data}")
124
+
125
+ range_id = entity_data.get('id', "")
126
+ site_id = str(helper_fields.get('siteId', ""))
127
+ interface_name = str(helper_fields.get('interfaceName', ""))
128
+ # Use the composite key to lookup interface_id
129
+ interface_key = f"{site_id}_{interface_name}"
130
+ interface_id = str(interface_map.get(interface_key, ""))
131
+ cur_range['id'] = range_id
132
+ range_name = entity_data.get('name', "")
133
+ if range_name and " \\ " in range_name:
134
+ cur_range['rangeName'] = range_name.split(" \\ ").pop()
135
+ else:
136
+ cur_range['rangeName'] = range_name
137
+ cur_range['name'] = range_name
138
+ cur_range['subnet'] = helper_fields.get('subnet', "")
139
+ cur_range['vlanTag'] = helper_fields.get('vlanTag', "")
140
+ cur_range['microsegmentation'] = helper_fields.get('microsegmentation', "")
141
+
142
+ # Safely add to processed_data with existence checks
143
+ if site_id and interface_id and range_id:
144
+ site_entry = next((site for site in processed_data['sites'] if site['id'] == site_id), None)
145
+ if not site_entry:
146
+ # print(f"WARNING: Site ID {site_id} not found in processed_data")
147
+ warning_stats['missing_sites'] += 1
148
+ continue
149
+
150
+ # Find the interface in the lan_interfaces array
151
+ interface_entry = next((iface for iface in site_entry['lan_interfaces'] if iface['id'] == interface_id), None)
152
+ if not interface_entry:
153
+ print(f"WARNING: Interface {interface_id} (name: {interface_name}) not found in site {site_id}. Range {range_id} will be skipped.")
154
+ warning_stats['missing_interfaces'] += 1
155
+ warning_stats['missing_interface_details'].append({
156
+ 'interface_id': interface_id,
157
+ 'interface_name': interface_name,
158
+ 'site_id': site_id,
159
+ 'range_id': range_id
160
+ })
161
+ if hasattr(args, 'verbose') and args.verbose:
162
+ available_interfaces = [iface['id'] for iface in site_entry['lan_interfaces']]
163
+ print(f" Available interfaces in site {site_id}: {available_interfaces}")
164
+ print(f" Looked up interface with key: {interface_key}")
165
+ continue
166
+ interface_entry['network_ranges'].append(cur_range)
167
+ if hasattr(args, 'verbose') and args.verbose:
168
+ print(f" Successfully added range {range_id} to site {site_id}, interface_name {interface_name} with interface_id {interface_id}")
169
+ else:
170
+ if not interface_id:
171
+ print(f"WARNING: Interface lookup failed for range {range_id}. Site: {site_id}, Interface name: {interface_name}, Lookup key: {interface_key}")
172
+ if hasattr(args, 'verbose') and args.verbose:
173
+ print(f" Available interface keys: {list(interface_map.keys())[:10]}...") # Show first 10 keys
174
+ else:
175
+ print(f"WARNING: Missing required data for range: site_id={site_id}, interface_id={interface_id}, range_id={range_id}")
176
+ warning_stats['missing_data'] += 1
96
177
 
178
+ # Print warning summary
179
+ total_warnings = warning_stats['missing_sites'] + warning_stats['missing_interfaces'] + warning_stats['missing_data']
180
+ if total_warnings > 0:
181
+ print(f"\n=== WARNING SUMMARY ===")
182
+ print(f"Total warnings: {total_warnings}")
183
+ print(f"- Missing sites: {warning_stats['missing_sites']}")
184
+ print(f"- Missing interfaces: {warning_stats['missing_interfaces']}")
185
+ print(f"- Missing data: {warning_stats['missing_data']}")
186
+
187
+ if warning_stats['missing_interfaces'] > 0:
188
+ print(f"\nMissing interface details:")
189
+ unique_interfaces = {}
190
+ for detail in warning_stats['missing_interface_details']:
191
+ key = f"{detail['interface_id']} ({detail['interface_name']})"
192
+ if key not in unique_interfaces:
193
+ unique_interfaces[key] = []
194
+ unique_interfaces[key].append(detail['site_id'])
195
+
196
+ for interface, sites in unique_interfaces.items():
197
+ print(f" - Interface {interface} missing in sites: {', '.join(sites)}")
198
+
199
+ print(f"\nThese warnings indicate network ranges that reference interfaces that don't exist in the site data.")
200
+ print(f"This is usually caused by data inconsistencies and can be safely ignored if the export completes successfully.")
201
+ print(f"=========================\n")
202
+
97
203
  # Write the processed data to file using the general-purpose function
98
204
  output_file = writeDataToFile(
99
205
  data=processed_data,
@@ -106,8 +212,33 @@ def export_socket_site_to_json(args, configuration):
106
212
  return [{"success": True, "output_file": output_file, "account_id": account_id}]
107
213
 
108
214
  except Exception as e:
109
- print(f"ERROR: {str(e)}")
110
- return [{"success": False, "error": str(e)}]
215
+ # Get the current exception info
216
+ exc_type, exc_value, exc_traceback = sys.exc_info()
217
+
218
+ # Get the line number where the error occurred
219
+ line_number = exc_traceback.tb_lineno
220
+ filename = exc_traceback.tb_frame.f_code.co_filename
221
+ function_name = exc_traceback.tb_frame.f_code.co_name
222
+
223
+ # Get the full traceback as a string
224
+ full_traceback = traceback.format_exc()
225
+
226
+ # Create detailed error message
227
+ error_details = {
228
+ "error_type": exc_type.__name__,
229
+ "error_message": str(exc_value),
230
+ "line_number": line_number,
231
+ "function_name": function_name,
232
+ "filename": os.path.basename(filename),
233
+ "full_traceback": full_traceback
234
+ }
235
+
236
+ # Print detailed error information
237
+ print(f"ERROR: {exc_type.__name__}: {str(exc_value)}")
238
+ print(f"Location: {os.path.basename(filename)}:{line_number} in {function_name}()")
239
+ print(f"Full traceback:\n{full_traceback}")
240
+
241
+ return [{"success": False, "error": str(e), "error_details": error_details}]
111
242
 
112
243
 
113
244
  ##########################################################################
@@ -135,16 +266,17 @@ def populateSiteLocationData(args, site_data, cur_site):
135
266
  print(f"Warning: Could not load site location data: {e}")
136
267
 
137
268
  ## siteLocation attributes
138
- cur_site['address'] = site_data.get('infoSiteSnapshot', {}).get('address')
139
- cur_site['city'] = site_data.get('infoSiteSnapshot', {}).get('cityName')
140
- cur_site['stateName'] = site_data.get('infoSiteSnapshot', {}).get('countryStateName')
141
- cur_site['countryCode'] = site_data.get('infoSiteSnapshot', {}).get('countryCode')
142
- cur_site['countryName'] = site_data.get('infoSiteSnapshot', {}).get('countryName')
269
+ cur_site['site_location'] = {}
270
+ cur_site['site_location']['address'] = site_data.get('infoSiteSnapshot', {}).get('address')
271
+ cur_site['site_location']['city'] = site_data.get('infoSiteSnapshot', {}).get('cityName')
272
+ cur_site['site_location']['stateName'] = site_data.get('infoSiteSnapshot', {}).get('countryStateName')
273
+ cur_site['site_location']['countryCode'] = site_data.get('infoSiteSnapshot', {}).get('countryCode')
274
+ cur_site['site_location']['countryName'] = site_data.get('infoSiteSnapshot', {}).get('countryName')
143
275
 
144
276
  # Look up timezone and state code from location data
145
- country_name = cur_site['countryName']
146
- state_name = cur_site['stateName']
147
- city = cur_site['city']
277
+ country_name = cur_site['site_location']['countryName']
278
+ state_name = cur_site['site_location']['stateName']
279
+ city = cur_site['site_location']['city']
148
280
 
149
281
  # Create lookup key based on available data
150
282
  if state_name:
@@ -173,7 +305,7 @@ def populateSiteLocationData(args, site_data, cur_site):
173
305
 
174
306
  # Get timezone - always use the 0 element in the timezones array
175
307
  timezones = location_data.get('timezone', [])
176
- cur_site['timezone'] = timezones[0] if timezones else None
308
+ cur_site['site_location']['timezone'] = timezones[0] if timezones else None
177
309
  return cur_site
178
310
 
179
311
  def getEntityLookup(args, configuration, account_id, entity_type):
@@ -1,6 +1,6 @@
1
1
  import catocli.parsers.custom.import_rules_to_tf.import_rules_to_tf as import_rules_to_tf
2
2
 
3
- def import_parse(subparsers):
3
+ def rule_import_parse(subparsers):
4
4
  """Create import command parsers"""
5
5
 
6
6
  # Create the main import parser