catocli 2.0.2__tar.gz → 2.0.4__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 (529) hide show
  1. {catocli-2.0.2/catocli.egg-info → catocli-2.0.4}/PKG-INFO +1 -1
  2. {catocli-2.0.2 → catocli-2.0.4}/catocli/Utils/clidriver.py +4 -1
  3. {catocli-2.0.2 → catocli-2.0.4}/catocli/__init__.py +1 -1
  4. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/custom/__init__.py +4 -3
  5. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/custom/customLib.py +239 -1
  6. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/custom/export_rules/__init__.py +2 -0
  7. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/custom/export_rules/export_rules.py +30 -6
  8. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/custom/export_sites/__init__.py +1 -0
  9. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/custom/export_sites/export_sites.py +194 -55
  10. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/custom/import_rules_to_tf/__init__.py +1 -1
  11. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/custom/import_rules_to_tf/import_rules_to_tf.py +1 -137
  12. catocli-2.0.4/catocli/parsers/custom/import_sites_to_tf/__init__.py +45 -0
  13. catocli-2.0.4/catocli/parsers/custom/import_sites_to_tf/import_sites_to_tf.py +891 -0
  14. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_accountManagement/__init__.py +6 -6
  15. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_admin/__init__.py +6 -6
  16. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_container/__init__.py +2 -2
  17. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_hardware/__init__.py +2 -2
  18. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy/__init__.py +192 -192
  19. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sandbox/__init__.py +4 -4
  20. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site/__init__.py +56 -56
  21. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites/__init__.py +56 -56
  22. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_xdr/__init__.py +6 -6
  23. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/parserApiClient.py +199 -12
  24. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_accountBySubdomain/__init__.py +2 -2
  25. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_accountManagement/__init__.py +2 -2
  26. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_accountMetrics/__init__.py +2 -2
  27. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_accountRoles/__init__.py +2 -2
  28. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_accountSnapshot/__init__.py +2 -2
  29. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_admin/__init__.py +2 -2
  30. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_admins/__init__.py +2 -2
  31. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_appStats/__init__.py +2 -2
  32. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_appStatsTimeSeries/__init__.py +2 -2
  33. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_auditFeed/__init__.py +2 -2
  34. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_catalogs/__init__.py +2 -2
  35. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_container/__init__.py +2 -2
  36. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_devices/__init__.py +2 -2
  37. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_entityLookup/__init__.py +2 -2
  38. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_events/__init__.py +2 -2
  39. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_eventsFeed/__init__.py +2 -2
  40. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_eventsTimeSeries/__init__.py +2 -2
  41. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_hardware/__init__.py +2 -2
  42. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_hardwareManagement/__init__.py +2 -2
  43. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_licensing/__init__.py +2 -2
  44. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_policy/__init__.py +2 -2
  45. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_sandbox/__init__.py +2 -2
  46. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_site/__init__.py +2 -2
  47. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_siteLocation/__init__.py +2 -2
  48. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_subDomains/__init__.py +2 -2
  49. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_xdr/__init__.py +4 -4
  50. catocli-2.0.4/catocli/parsers/raw/README.md +33 -0
  51. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/raw/__init__.py +5 -2
  52. {catocli-2.0.2 → catocli-2.0.4/catocli.egg-info}/PKG-INFO +1 -1
  53. {catocli-2.0.2 → catocli-2.0.4}/catocli.egg-info/SOURCES.txt +2 -0
  54. {catocli-2.0.2 → catocli-2.0.4}/schema/catolib.py +14 -9
  55. catocli-2.0.2/catocli/parsers/raw/README.md +0 -15
  56. {catocli-2.0.2 → catocli-2.0.4}/LICENSE +0 -0
  57. {catocli-2.0.2 → catocli-2.0.4}/MANIFEST.in +0 -0
  58. {catocli-2.0.2 → catocli-2.0.4}/README.md +0 -0
  59. {catocli-2.0.2 → catocli-2.0.4}/catocli/Utils/profile_manager.py +0 -0
  60. {catocli-2.0.2 → catocli-2.0.4}/catocli/Utils/version_checker.py +0 -0
  61. {catocli-2.0.2 → catocli-2.0.4}/catocli/__main__.py +0 -0
  62. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/configure/__init__.py +0 -0
  63. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/configure/configure.py +0 -0
  64. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/custom/README.md +0 -0
  65. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation/README.md +0 -0
  66. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_accountManagement/README.md +0 -0
  67. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_accountManagement_addAccount/README.md +0 -0
  68. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_accountManagement_removeAccount/README.md +0 -0
  69. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_accountManagement_updateAccount/README.md +0 -0
  70. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_admin/README.md +0 -0
  71. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_admin_addAdmin/README.md +0 -0
  72. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_admin_removeAdmin/README.md +0 -0
  73. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_admin_updateAdmin/README.md +0 -0
  74. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_container/README.md +0 -0
  75. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_container_delete/README.md +0 -0
  76. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_hardware/README.md +0 -0
  77. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_hardware_updateHardwareShipping/README.md +0 -0
  78. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy/README.md +0 -0
  79. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_appTenantRestriction/README.md +0 -0
  80. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_appTenantRestriction_addRule/README.md +0 -0
  81. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_appTenantRestriction_addSection/README.md +0 -0
  82. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_appTenantRestriction_createPolicyRevision/README.md +0 -0
  83. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_appTenantRestriction_discardPolicyRevision/README.md +0 -0
  84. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_appTenantRestriction_moveRule/README.md +0 -0
  85. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_appTenantRestriction_moveSection/README.md +0 -0
  86. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_appTenantRestriction_publishPolicyRevision/README.md +0 -0
  87. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_appTenantRestriction_removeRule/README.md +0 -0
  88. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_appTenantRestriction_removeSection/README.md +0 -0
  89. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_appTenantRestriction_updatePolicy/README.md +0 -0
  90. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_appTenantRestriction_updateRule/README.md +0 -0
  91. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_appTenantRestriction_updateSection/README.md +0 -0
  92. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_dynamicIpAllocation/README.md +0 -0
  93. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_dynamicIpAllocation_addRule/README.md +0 -0
  94. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_dynamicIpAllocation_addSection/README.md +0 -0
  95. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_dynamicIpAllocation_createPolicyRevision/README.md +0 -0
  96. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_dynamicIpAllocation_discardPolicyRevision/README.md +0 -0
  97. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_dynamicIpAllocation_moveRule/README.md +0 -0
  98. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_dynamicIpAllocation_moveSection/README.md +0 -0
  99. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_dynamicIpAllocation_publishPolicyRevision/README.md +0 -0
  100. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_dynamicIpAllocation_removeRule/README.md +0 -0
  101. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_dynamicIpAllocation_removeSection/README.md +0 -0
  102. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_dynamicIpAllocation_updatePolicy/README.md +0 -0
  103. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_dynamicIpAllocation_updateRule/README.md +0 -0
  104. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_dynamicIpAllocation_updateSection/README.md +0 -0
  105. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_internetFirewall/README.md +0 -0
  106. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_internetFirewall_addRule/README.md +0 -0
  107. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_internetFirewall_addSection/README.md +0 -0
  108. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_internetFirewall_createPolicyRevision/README.md +0 -0
  109. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_internetFirewall_discardPolicyRevision/README.md +0 -0
  110. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_internetFirewall_moveRule/README.md +0 -0
  111. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_internetFirewall_moveSection/README.md +0 -0
  112. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_internetFirewall_publishPolicyRevision/README.md +0 -0
  113. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_internetFirewall_removeRule/README.md +0 -0
  114. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_internetFirewall_removeSection/README.md +0 -0
  115. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_internetFirewall_updatePolicy/README.md +0 -0
  116. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_internetFirewall_updateRule/README.md +0 -0
  117. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_internetFirewall_updateSection/README.md +0 -0
  118. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_remotePortFwd/README.md +0 -0
  119. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_remotePortFwd_addRule/README.md +0 -0
  120. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_remotePortFwd_addSection/README.md +0 -0
  121. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_remotePortFwd_createPolicyRevision/README.md +0 -0
  122. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_remotePortFwd_discardPolicyRevision/README.md +0 -0
  123. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_remotePortFwd_moveRule/README.md +0 -0
  124. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_remotePortFwd_moveSection/README.md +0 -0
  125. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_remotePortFwd_publishPolicyRevision/README.md +0 -0
  126. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_remotePortFwd_removeRule/README.md +0 -0
  127. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_remotePortFwd_removeSection/README.md +0 -0
  128. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_remotePortFwd_updatePolicy/README.md +0 -0
  129. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_remotePortFwd_updateRule/README.md +0 -0
  130. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_remotePortFwd_updateSection/README.md +0 -0
  131. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_socketLan/README.md +0 -0
  132. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_socketLan_addRule/README.md +0 -0
  133. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_socketLan_addSection/README.md +0 -0
  134. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_socketLan_createPolicyRevision/README.md +0 -0
  135. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_socketLan_discardPolicyRevision/README.md +0 -0
  136. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_socketLan_moveRule/README.md +0 -0
  137. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_socketLan_moveSection/README.md +0 -0
  138. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_socketLan_publishPolicyRevision/README.md +0 -0
  139. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_socketLan_removeRule/README.md +0 -0
  140. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_socketLan_removeSection/README.md +0 -0
  141. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_socketLan_updatePolicy/README.md +0 -0
  142. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_socketLan_updateRule/README.md +0 -0
  143. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_socketLan_updateSection/README.md +0 -0
  144. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_terminalServer/README.md +0 -0
  145. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_terminalServer_addRule/README.md +0 -0
  146. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_terminalServer_addSection/README.md +0 -0
  147. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_terminalServer_createPolicyRevision/README.md +0 -0
  148. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_terminalServer_discardPolicyRevision/README.md +0 -0
  149. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_terminalServer_moveRule/README.md +0 -0
  150. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_terminalServer_moveSection/README.md +0 -0
  151. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_terminalServer_publishPolicyRevision/README.md +0 -0
  152. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_terminalServer_removeRule/README.md +0 -0
  153. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_terminalServer_removeSection/README.md +0 -0
  154. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_terminalServer_updatePolicy/README.md +0 -0
  155. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_terminalServer_updateRule/README.md +0 -0
  156. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_terminalServer_updateSection/README.md +0 -0
  157. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_wanFirewall/README.md +0 -0
  158. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_wanFirewall_addRule/README.md +0 -0
  159. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_wanFirewall_addSection/README.md +0 -0
  160. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_wanFirewall_createPolicyRevision/README.md +0 -0
  161. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_wanFirewall_discardPolicyRevision/README.md +0 -0
  162. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_wanFirewall_moveRule/README.md +0 -0
  163. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_wanFirewall_moveSection/README.md +0 -0
  164. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_wanFirewall_publishPolicyRevision/README.md +0 -0
  165. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_wanFirewall_removeRule/README.md +0 -0
  166. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_wanFirewall_removeSection/README.md +0 -0
  167. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_wanFirewall_updatePolicy/README.md +0 -0
  168. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_wanFirewall_updateRule/README.md +0 -0
  169. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_wanFirewall_updateSection/README.md +0 -0
  170. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_wanNetwork/README.md +0 -0
  171. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_wanNetwork_addRule/README.md +0 -0
  172. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_wanNetwork_addSection/README.md +0 -0
  173. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_wanNetwork_createPolicyRevision/README.md +0 -0
  174. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_wanNetwork_discardPolicyRevision/README.md +0 -0
  175. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_wanNetwork_moveRule/README.md +0 -0
  176. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_wanNetwork_moveSection/README.md +0 -0
  177. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_wanNetwork_publishPolicyRevision/README.md +0 -0
  178. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_wanNetwork_removeRule/README.md +0 -0
  179. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_wanNetwork_removeSection/README.md +0 -0
  180. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_wanNetwork_updatePolicy/README.md +0 -0
  181. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_wanNetwork_updateRule/README.md +0 -0
  182. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_policy_wanNetwork_updateSection/README.md +0 -0
  183. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sandbox/README.md +0 -0
  184. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sandbox_deleteReport/README.md +0 -0
  185. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sandbox_uploadFile/README.md +0 -0
  186. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site/README.md +0 -0
  187. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site_addBgpPeer/README.md +0 -0
  188. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site_addCloudInterconnectPhysicalConnection/README.md +0 -0
  189. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site_addCloudInterconnectSite/README.md +0 -0
  190. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site_addIpsecIkeV2Site/README.md +0 -0
  191. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site_addIpsecIkeV2SiteTunnels/README.md +0 -0
  192. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site_addNetworkRange/README.md +0 -0
  193. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site_addSecondaryAwsVSocket/README.md +0 -0
  194. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site_addSecondaryAzureVSocket/README.md +0 -0
  195. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site_addSocketAddOnCard/README.md +0 -0
  196. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site_addSocketSite/README.md +0 -0
  197. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site_addStaticHost/README.md +0 -0
  198. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site_removeBgpPeer/README.md +0 -0
  199. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site_removeCloudInterconnectPhysicalConnection/README.md +0 -0
  200. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site_removeIpsecIkeV2SiteTunnels/README.md +0 -0
  201. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site_removeNetworkRange/README.md +0 -0
  202. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site_removeSite/README.md +0 -0
  203. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site_removeSocketAddOnCard/README.md +0 -0
  204. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site_removeStaticHost/README.md +0 -0
  205. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site_startSiteUpgrade/README.md +0 -0
  206. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site_updateBgpPeer/README.md +0 -0
  207. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site_updateCloudInterconnectPhysicalConnection/README.md +0 -0
  208. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site_updateHa/README.md +0 -0
  209. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site_updateIpsecIkeV2SiteGeneralDetails/README.md +0 -0
  210. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site_updateIpsecIkeV2SiteTunnels/README.md +0 -0
  211. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site_updateNetworkRange/README.md +0 -0
  212. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site_updateSiteGeneralDetails/README.md +0 -0
  213. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site_updateSocketInterface/README.md +0 -0
  214. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_site_updateStaticHost/README.md +0 -0
  215. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites/README.md +0 -0
  216. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites_addBgpPeer/README.md +0 -0
  217. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites_addCloudInterconnectPhysicalConnection/README.md +0 -0
  218. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites_addCloudInterconnectSite/README.md +0 -0
  219. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites_addIpsecIkeV2Site/README.md +0 -0
  220. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites_addIpsecIkeV2SiteTunnels/README.md +0 -0
  221. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites_addNetworkRange/README.md +0 -0
  222. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites_addSecondaryAwsVSocket/README.md +0 -0
  223. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites_addSecondaryAzureVSocket/README.md +0 -0
  224. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites_addSocketAddOnCard/README.md +0 -0
  225. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites_addSocketSite/README.md +0 -0
  226. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites_addStaticHost/README.md +0 -0
  227. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites_removeBgpPeer/README.md +0 -0
  228. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites_removeCloudInterconnectPhysicalConnection/README.md +0 -0
  229. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites_removeIpsecIkeV2SiteTunnels/README.md +0 -0
  230. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites_removeNetworkRange/README.md +0 -0
  231. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites_removeSite/README.md +0 -0
  232. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites_removeSocketAddOnCard/README.md +0 -0
  233. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites_removeStaticHost/README.md +0 -0
  234. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites_startSiteUpgrade/README.md +0 -0
  235. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites_updateBgpPeer/README.md +0 -0
  236. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites_updateCloudInterconnectPhysicalConnection/README.md +0 -0
  237. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites_updateHa/README.md +0 -0
  238. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites_updateIpsecIkeV2SiteGeneralDetails/README.md +0 -0
  239. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites_updateIpsecIkeV2SiteTunnels/README.md +0 -0
  240. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites_updateNetworkRange/README.md +0 -0
  241. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites_updateSiteGeneralDetails/README.md +0 -0
  242. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites_updateSocketInterface/README.md +0 -0
  243. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_sites_updateStaticHost/README.md +0 -0
  244. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_xdr/README.md +0 -0
  245. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_xdr_addStoryComment/README.md +0 -0
  246. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_xdr_analystFeedback/README.md +0 -0
  247. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/mutation_xdr_deleteStoryComment/README.md +0 -0
  248. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query/README.md +0 -0
  249. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_accountBySubdomain/README.md +0 -0
  250. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_accountManagement/README.md +0 -0
  251. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_accountMetrics/README.md +0 -0
  252. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_accountRoles/README.md +0 -0
  253. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_accountSnapshot/README.md +0 -0
  254. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_admin/README.md +0 -0
  255. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_admins/README.md +0 -0
  256. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_appStats/README.md +0 -0
  257. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_appStatsTimeSeries/README.md +0 -0
  258. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_auditFeed/README.md +0 -0
  259. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_catalogs/README.md +0 -0
  260. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_container/README.md +0 -0
  261. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_devices/README.md +0 -0
  262. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_entityLookup/README.md +0 -0
  263. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_events/README.md +0 -0
  264. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_eventsFeed/README.md +0 -0
  265. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_eventsTimeSeries/README.md +0 -0
  266. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_hardware/README.md +0 -0
  267. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_hardwareManagement/README.md +0 -0
  268. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_licensing/README.md +0 -0
  269. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_policy/README.md +0 -0
  270. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_sandbox/README.md +0 -0
  271. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_site/README.md +0 -0
  272. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_siteLocation/README.md +0 -0
  273. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_subDomains/README.md +0 -0
  274. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_xdr/README.md +0 -0
  275. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_xdr_stories/README.md +0 -0
  276. {catocli-2.0.2 → catocli-2.0.4}/catocli/parsers/query_xdr_story/README.md +0 -0
  277. {catocli-2.0.2 → catocli-2.0.4}/catocli.egg-info/dependency_links.txt +0 -0
  278. {catocli-2.0.2 → catocli-2.0.4}/catocli.egg-info/entry_points.txt +0 -0
  279. {catocli-2.0.2 → catocli-2.0.4}/catocli.egg-info/requires.txt +0 -0
  280. {catocli-2.0.2 → catocli-2.0.4}/catocli.egg-info/top_level.txt +0 -0
  281. {catocli-2.0.2 → catocli-2.0.4}/graphql_client/__init__.py +0 -0
  282. {catocli-2.0.2 → catocli-2.0.4}/graphql_client/api/__init__.py +0 -0
  283. {catocli-2.0.2 → catocli-2.0.4}/graphql_client/api/call_api.py +0 -0
  284. {catocli-2.0.2 → catocli-2.0.4}/graphql_client/api_client.py +0 -0
  285. {catocli-2.0.2 → catocli-2.0.4}/graphql_client/api_client_types.py +0 -0
  286. {catocli-2.0.2 → catocli-2.0.4}/graphql_client/configuration.py +0 -0
  287. {catocli-2.0.2 → catocli-2.0.4}/graphql_client/models/__init__.py +0 -0
  288. {catocli-2.0.2 → catocli-2.0.4}/graphql_client/models/no_schema.py +0 -0
  289. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.accountManagement.addAccount.json +0 -0
  290. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.accountManagement.removeAccount.json +0 -0
  291. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.accountManagement.updateAccount.json +0 -0
  292. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.admin.addAdmin.json +0 -0
  293. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.admin.removeAdmin.json +0 -0
  294. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.admin.updateAdmin.json +0 -0
  295. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.container.delete.json +0 -0
  296. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.hardware.updateHardwareShipping.json +0 -0
  297. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.appTenantRestriction.addRule.json +0 -0
  298. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.appTenantRestriction.addSection.json +0 -0
  299. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.appTenantRestriction.createPolicyRevision.json +0 -0
  300. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.appTenantRestriction.discardPolicyRevision.json +0 -0
  301. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.appTenantRestriction.moveRule.json +0 -0
  302. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.appTenantRestriction.moveSection.json +0 -0
  303. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.appTenantRestriction.publishPolicyRevision.json +0 -0
  304. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.appTenantRestriction.removeRule.json +0 -0
  305. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.appTenantRestriction.removeSection.json +0 -0
  306. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.appTenantRestriction.updatePolicy.json +0 -0
  307. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.appTenantRestriction.updateRule.json +0 -0
  308. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.appTenantRestriction.updateSection.json +0 -0
  309. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.dynamicIpAllocation.addRule.json +0 -0
  310. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.dynamicIpAllocation.addSection.json +0 -0
  311. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.dynamicIpAllocation.createPolicyRevision.json +0 -0
  312. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.dynamicIpAllocation.discardPolicyRevision.json +0 -0
  313. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.dynamicIpAllocation.moveRule.json +0 -0
  314. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.dynamicIpAllocation.moveSection.json +0 -0
  315. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.dynamicIpAllocation.publishPolicyRevision.json +0 -0
  316. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.dynamicIpAllocation.removeRule.json +0 -0
  317. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.dynamicIpAllocation.removeSection.json +0 -0
  318. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.dynamicIpAllocation.updatePolicy.json +0 -0
  319. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.dynamicIpAllocation.updateRule.json +0 -0
  320. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.dynamicIpAllocation.updateSection.json +0 -0
  321. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.internetFirewall.addRule.json +0 -0
  322. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.internetFirewall.addSection.json +0 -0
  323. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.internetFirewall.createPolicyRevision.json +0 -0
  324. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.internetFirewall.discardPolicyRevision.json +0 -0
  325. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.internetFirewall.moveRule.json +0 -0
  326. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.internetFirewall.moveSection.json +0 -0
  327. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.internetFirewall.publishPolicyRevision.json +0 -0
  328. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.internetFirewall.removeRule.json +0 -0
  329. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.internetFirewall.removeSection.json +0 -0
  330. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.internetFirewall.updatePolicy.json +0 -0
  331. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.internetFirewall.updateRule.json +0 -0
  332. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.internetFirewall.updateSection.json +0 -0
  333. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.remotePortFwd.addRule.json +0 -0
  334. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.remotePortFwd.addSection.json +0 -0
  335. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.remotePortFwd.createPolicyRevision.json +0 -0
  336. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.remotePortFwd.discardPolicyRevision.json +0 -0
  337. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.remotePortFwd.moveRule.json +0 -0
  338. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.remotePortFwd.moveSection.json +0 -0
  339. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.remotePortFwd.publishPolicyRevision.json +0 -0
  340. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.remotePortFwd.removeRule.json +0 -0
  341. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.remotePortFwd.removeSection.json +0 -0
  342. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.remotePortFwd.updatePolicy.json +0 -0
  343. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.remotePortFwd.updateRule.json +0 -0
  344. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.remotePortFwd.updateSection.json +0 -0
  345. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.socketLan.addRule.json +0 -0
  346. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.socketLan.addSection.json +0 -0
  347. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.socketLan.createPolicyRevision.json +0 -0
  348. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.socketLan.discardPolicyRevision.json +0 -0
  349. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.socketLan.moveRule.json +0 -0
  350. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.socketLan.moveSection.json +0 -0
  351. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.socketLan.publishPolicyRevision.json +0 -0
  352. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.socketLan.removeRule.json +0 -0
  353. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.socketLan.removeSection.json +0 -0
  354. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.socketLan.updatePolicy.json +0 -0
  355. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.socketLan.updateRule.json +0 -0
  356. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.socketLan.updateSection.json +0 -0
  357. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.terminalServer.addRule.json +0 -0
  358. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.terminalServer.addSection.json +0 -0
  359. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.terminalServer.createPolicyRevision.json +0 -0
  360. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.terminalServer.discardPolicyRevision.json +0 -0
  361. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.terminalServer.moveRule.json +0 -0
  362. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.terminalServer.moveSection.json +0 -0
  363. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.terminalServer.publishPolicyRevision.json +0 -0
  364. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.terminalServer.removeRule.json +0 -0
  365. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.terminalServer.removeSection.json +0 -0
  366. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.terminalServer.updatePolicy.json +0 -0
  367. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.terminalServer.updateRule.json +0 -0
  368. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.terminalServer.updateSection.json +0 -0
  369. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.wanFirewall.addRule.json +0 -0
  370. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.wanFirewall.addSection.json +0 -0
  371. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.wanFirewall.createPolicyRevision.json +0 -0
  372. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.wanFirewall.discardPolicyRevision.json +0 -0
  373. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.wanFirewall.moveRule.json +0 -0
  374. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.wanFirewall.moveSection.json +0 -0
  375. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.wanFirewall.publishPolicyRevision.json +0 -0
  376. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.wanFirewall.removeRule.json +0 -0
  377. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.wanFirewall.removeSection.json +0 -0
  378. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.wanFirewall.updatePolicy.json +0 -0
  379. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.wanFirewall.updateRule.json +0 -0
  380. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.wanFirewall.updateSection.json +0 -0
  381. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.wanNetwork.addRule.json +0 -0
  382. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.wanNetwork.addSection.json +0 -0
  383. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.wanNetwork.createPolicyRevision.json +0 -0
  384. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.wanNetwork.discardPolicyRevision.json +0 -0
  385. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.wanNetwork.moveRule.json +0 -0
  386. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.wanNetwork.moveSection.json +0 -0
  387. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.wanNetwork.publishPolicyRevision.json +0 -0
  388. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.wanNetwork.removeRule.json +0 -0
  389. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.wanNetwork.removeSection.json +0 -0
  390. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.wanNetwork.updatePolicy.json +0 -0
  391. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.wanNetwork.updateRule.json +0 -0
  392. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.policy.wanNetwork.updateSection.json +0 -0
  393. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sandbox.deleteReport.json +0 -0
  394. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sandbox.uploadFile.json +0 -0
  395. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.site.addBgpPeer.json +0 -0
  396. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.site.addCloudInterconnectPhysicalConnection.json +0 -0
  397. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.site.addCloudInterconnectSite.json +0 -0
  398. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.site.addIpsecIkeV2Site.json +0 -0
  399. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.site.addIpsecIkeV2SiteTunnels.json +0 -0
  400. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.site.addNetworkRange.json +0 -0
  401. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.site.addSecondaryAwsVSocket.json +0 -0
  402. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.site.addSecondaryAzureVSocket.json +0 -0
  403. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.site.addSocketAddOnCard.json +0 -0
  404. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.site.addSocketSite.json +0 -0
  405. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.site.addStaticHost.json +0 -0
  406. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.site.removeBgpPeer.json +0 -0
  407. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.site.removeCloudInterconnectPhysicalConnection.json +0 -0
  408. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.site.removeIpsecIkeV2SiteTunnels.json +0 -0
  409. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.site.removeNetworkRange.json +0 -0
  410. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.site.removeSite.json +0 -0
  411. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.site.removeSocketAddOnCard.json +0 -0
  412. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.site.removeStaticHost.json +0 -0
  413. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.site.startSiteUpgrade.json +0 -0
  414. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.site.updateBgpPeer.json +0 -0
  415. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.site.updateCloudInterconnectPhysicalConnection.json +0 -0
  416. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.site.updateHa.json +0 -0
  417. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.site.updateIpsecIkeV2SiteGeneralDetails.json +0 -0
  418. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.site.updateIpsecIkeV2SiteTunnels.json +0 -0
  419. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.site.updateNetworkRange.json +0 -0
  420. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.site.updateSiteGeneralDetails.json +0 -0
  421. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.site.updateSocketInterface.json +0 -0
  422. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.site.updateStaticHost.json +0 -0
  423. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sites.addBgpPeer.json +0 -0
  424. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sites.addCloudInterconnectPhysicalConnection.json +0 -0
  425. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sites.addCloudInterconnectSite.json +0 -0
  426. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sites.addIpsecIkeV2Site.json +0 -0
  427. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sites.addIpsecIkeV2SiteTunnels.json +0 -0
  428. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sites.addNetworkRange.json +0 -0
  429. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sites.addSecondaryAwsVSocket.json +0 -0
  430. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sites.addSecondaryAzureVSocket.json +0 -0
  431. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sites.addSocketAddOnCard.json +0 -0
  432. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sites.addSocketSite.json +0 -0
  433. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sites.addStaticHost.json +0 -0
  434. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sites.removeBgpPeer.json +0 -0
  435. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sites.removeCloudInterconnectPhysicalConnection.json +0 -0
  436. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sites.removeIpsecIkeV2SiteTunnels.json +0 -0
  437. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sites.removeNetworkRange.json +0 -0
  438. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sites.removeSite.json +0 -0
  439. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sites.removeSocketAddOnCard.json +0 -0
  440. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sites.removeStaticHost.json +0 -0
  441. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sites.startSiteUpgrade.json +0 -0
  442. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sites.updateBgpPeer.json +0 -0
  443. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sites.updateCloudInterconnectPhysicalConnection.json +0 -0
  444. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sites.updateHa.json +0 -0
  445. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sites.updateIpsecIkeV2SiteGeneralDetails.json +0 -0
  446. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sites.updateIpsecIkeV2SiteTunnels.json +0 -0
  447. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sites.updateNetworkRange.json +0 -0
  448. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sites.updateSiteGeneralDetails.json +0 -0
  449. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sites.updateSocketInterface.json +0 -0
  450. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.sites.updateStaticHost.json +0 -0
  451. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.xdr.addStoryComment.json +0 -0
  452. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.xdr.analystFeedback.json +0 -0
  453. {catocli-2.0.2 → catocli-2.0.4}/models/mutation.xdr.deleteStoryComment.json +0 -0
  454. {catocli-2.0.2 → catocli-2.0.4}/models/query.accountBySubdomain.json +0 -0
  455. {catocli-2.0.2 → catocli-2.0.4}/models/query.accountManagement.json +0 -0
  456. {catocli-2.0.2 → catocli-2.0.4}/models/query.accountMetrics.json +0 -0
  457. {catocli-2.0.2 → catocli-2.0.4}/models/query.accountRoles.json +0 -0
  458. {catocli-2.0.2 → catocli-2.0.4}/models/query.accountSnapshot.json +0 -0
  459. {catocli-2.0.2 → catocli-2.0.4}/models/query.admin.json +0 -0
  460. {catocli-2.0.2 → catocli-2.0.4}/models/query.admins.json +0 -0
  461. {catocli-2.0.2 → catocli-2.0.4}/models/query.appStats.json +0 -0
  462. {catocli-2.0.2 → catocli-2.0.4}/models/query.appStatsTimeSeries.json +0 -0
  463. {catocli-2.0.2 → catocli-2.0.4}/models/query.auditFeed.json +0 -0
  464. {catocli-2.0.2 → catocli-2.0.4}/models/query.catalogs.json +0 -0
  465. {catocli-2.0.2 → catocli-2.0.4}/models/query.container.json +0 -0
  466. {catocli-2.0.2 → catocli-2.0.4}/models/query.devices.json +0 -0
  467. {catocli-2.0.2 → catocli-2.0.4}/models/query.entityLookup.json +0 -0
  468. {catocli-2.0.2 → catocli-2.0.4}/models/query.events.json +0 -0
  469. {catocli-2.0.2 → catocli-2.0.4}/models/query.eventsFeed.json +0 -0
  470. {catocli-2.0.2 → catocli-2.0.4}/models/query.eventsTimeSeries.json +0 -0
  471. {catocli-2.0.2 → catocli-2.0.4}/models/query.hardware.json +0 -0
  472. {catocli-2.0.2 → catocli-2.0.4}/models/query.hardwareManagement.json +0 -0
  473. {catocli-2.0.2 → catocli-2.0.4}/models/query.licensing.json +0 -0
  474. {catocli-2.0.2 → catocli-2.0.4}/models/query.policy.json +0 -0
  475. {catocli-2.0.2 → catocli-2.0.4}/models/query.sandbox.json +0 -0
  476. {catocli-2.0.2 → catocli-2.0.4}/models/query.site.json +0 -0
  477. {catocli-2.0.2 → catocli-2.0.4}/models/query.siteLocation.json +0 -0
  478. {catocli-2.0.2 → catocli-2.0.4}/models/query.subDomains.json +0 -0
  479. {catocli-2.0.2 → catocli-2.0.4}/models/query.xdr.stories.json +0 -0
  480. {catocli-2.0.2 → catocli-2.0.4}/models/query.xdr.story.json +0 -0
  481. {catocli-2.0.2 → catocli-2.0.4}/schema/importSchema.py +0 -0
  482. {catocli-2.0.2 → catocli-2.0.4}/scripts/catolib.py +0 -0
  483. {catocli-2.0.2 → catocli-2.0.4}/scripts/export_if_rules_to_json.py +0 -0
  484. {catocli-2.0.2 → catocli-2.0.4}/scripts/export_wf_rules_to_json.py +0 -0
  485. {catocli-2.0.2 → catocli-2.0.4}/scripts/import_wf_rules_to_tfstate.py +0 -0
  486. {catocli-2.0.2 → catocli-2.0.4}/setup.cfg +0 -0
  487. {catocli-2.0.2 → catocli-2.0.4}/setup.py +0 -0
  488. {catocli-2.0.2 → catocli-2.0.4}/vendor/certifi/__init__.py +0 -0
  489. {catocli-2.0.2 → catocli-2.0.4}/vendor/certifi/__main__.py +0 -0
  490. {catocli-2.0.2 → catocli-2.0.4}/vendor/certifi/core.py +0 -0
  491. {catocli-2.0.2 → catocli-2.0.4}/vendor/certifi/py.typed +0 -0
  492. {catocli-2.0.2 → catocli-2.0.4}/vendor/six.py +0 -0
  493. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/__init__.py +0 -0
  494. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/_base_connection.py +0 -0
  495. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/_collections.py +0 -0
  496. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/_request_methods.py +0 -0
  497. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/_version.py +0 -0
  498. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/connection.py +0 -0
  499. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/connectionpool.py +0 -0
  500. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/contrib/__init__.py +0 -0
  501. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/contrib/emscripten/__init__.py +0 -0
  502. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/contrib/emscripten/connection.py +0 -0
  503. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/contrib/emscripten/fetch.py +0 -0
  504. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/contrib/emscripten/request.py +0 -0
  505. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/contrib/emscripten/response.py +0 -0
  506. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/contrib/pyopenssl.py +0 -0
  507. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/contrib/socks.py +0 -0
  508. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/exceptions.py +0 -0
  509. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/fields.py +0 -0
  510. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/filepost.py +0 -0
  511. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/http2/__init__.py +0 -0
  512. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/http2/connection.py +0 -0
  513. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/http2/probe.py +0 -0
  514. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/poolmanager.py +0 -0
  515. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/py.typed +0 -0
  516. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/response.py +0 -0
  517. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/util/__init__.py +0 -0
  518. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/util/connection.py +0 -0
  519. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/util/proxy.py +0 -0
  520. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/util/request.py +0 -0
  521. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/util/response.py +0 -0
  522. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/util/retry.py +0 -0
  523. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/util/ssl_.py +0 -0
  524. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/util/ssl_match_hostname.py +0 -0
  525. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/util/ssltransport.py +0 -0
  526. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/util/timeout.py +0 -0
  527. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/util/url.py +0 -0
  528. {catocli-2.0.2 → catocli-2.0.4}/vendor/urllib3/util/util.py +0 -0
  529. {catocli-2.0.2 → catocli-2.0.4}/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.4
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.4"
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}"
@@ -20,6 +20,7 @@ def export_rules_parse(subparsers):
20
20
 
21
21
  if_rules_parser.add_argument('-accountID', help='Account ID to export rules from (uses CATO_ACCOUNT_ID environment variable if not specified)', required=False)
22
22
  if_rules_parser.add_argument('--output-file-path', help='Full path including filename and extension for output file. If not specified, uses default: config_data/all_ifw_rules_and_sections_{account_id}.json')
23
+ if_rules_parser.add_argument('--append-timestamp', action='store_true', help='Append timestamp to the filename after account ID (format: YYYY-MM-DD_HH-MM-SS)')
23
24
  if_rules_parser.add_argument('-v', '--verbose', action='store_true', help='Verbose output')
24
25
 
25
26
  if_rules_parser.set_defaults(func=export_rules.export_if_rules_to_json)
@@ -33,6 +34,7 @@ def export_rules_parse(subparsers):
33
34
 
34
35
  wf_rules_parser.add_argument('-accountID', help='Account ID to export rules from (uses CATO_ACCOUNT_ID environment variable if not specified)', required=False)
35
36
  wf_rules_parser.add_argument('--output-file-path', help='Full path including filename and extension for output file. If not specified, uses default: config_data/all_wf_rules_and_sections_{account_id}.json')
37
+ wf_rules_parser.add_argument('--append-timestamp', action='store_true', help='Append timestamp to the filename after account ID (format: YYYY-MM-DD_HH-MM-SS)')
36
38
  wf_rules_parser.add_argument('-v', '--verbose', action='store_true', help='Verbose output')
37
39
 
38
40
  wf_rules_parser.set_defaults(func=export_rules.export_wf_rules_to_json)
@@ -1,6 +1,7 @@
1
1
  import os
2
2
  import json
3
3
  import sys
4
+ from datetime import datetime
4
5
  from graphql_client.api.call_api import ApiClient, CallApi
5
6
  from graphql_client.api_client import ApiException
6
7
  from ..customLib import writeDataToFile, makeCall, getAccountID
@@ -64,10 +65,15 @@ def export_if_rules_to_json(args, configuration):
64
65
  processed_data['data']['policy']['internetFirewall']['policy']['rules'] = filtered_rules
65
66
 
66
67
  # Add index_in_section to each rule
67
- # Group rules by section and add index_in_section
68
+ # Handle empty section names by assigning a default section name
68
69
  section_counters = {}
69
70
  for rule_data in processed_data['data']['policy']['internetFirewall']['policy']['rules']:
70
71
  section_name = rule_data['rule']['section']['name']
72
+ # If section name is empty, use "Default Section" as the section name
73
+ if not section_name or section_name.strip() == "":
74
+ section_name = "Default Section"
75
+ rule_data['rule']['section']['name'] = section_name
76
+
71
77
  if section_name not in section_counters:
72
78
  section_counters[section_name] = 0
73
79
  section_counters[section_name] += 1
@@ -104,12 +110,18 @@ def export_if_rules_to_json(args, configuration):
104
110
 
105
111
  # Replace the original sections array with the reformatted one
106
112
  processed_data['data']['policy']['internetFirewall']['policy']['sections'] = processed_sections
113
+
114
+ # Handle timestamp in filename if requested
115
+ filename_template = "all_ifw_rules_and_sections_{account_id}.json"
116
+ if hasattr(args, 'append_timestamp') and args.append_timestamp:
117
+ timestamp = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
118
+ filename_template = "all_ifw_rules_and_sections_{account_id}_" + timestamp + ".json"
107
119
 
108
120
  output_file = writeDataToFile(
109
121
  data=processed_data,
110
122
  args=args,
111
123
  account_id=account_id,
112
- default_filename_template="all_ifw_rules_and_sections_{account_id}.json",
124
+ default_filename_template=filename_template,
113
125
  default_directory="config_data"
114
126
  )
115
127
 
@@ -157,9 +169,15 @@ def export_wf_rules_to_json(args, configuration):
157
169
  processed_data['data']['policy']['wanFirewall']['policy']['rules'] = filtered_rules
158
170
 
159
171
  # Add index_in_section to each rule
172
+ # Handle empty section names by assigning a default section name
160
173
  section_counters = {}
161
174
  for rule_data in processed_data['data']['policy']['wanFirewall']['policy']['rules']:
162
175
  section_name = rule_data['rule']['section']['name']
176
+ # If section name is empty, use "Default Section" as the section name
177
+ if not section_name or section_name.strip() == "":
178
+ section_name = "Default Section"
179
+ rule_data['rule']['section']['name'] = section_name
180
+
163
181
  if section_name not in section_counters:
164
182
  section_counters[section_name] = 0
165
183
  section_counters[section_name] += 1
@@ -174,8 +192,8 @@ def export_wf_rules_to_json(args, configuration):
174
192
  "section_name": rule_info['section']['name'],
175
193
  "rule_name": rule_info['name']
176
194
  })
177
- # rule_info.pop("index_in_section", None)
178
- # rule_info.pop("index", None)
195
+ rule_info.pop("index_in_section", None)
196
+ rule_info.pop("index", None)
179
197
  # rule_info["enabled"] = True
180
198
 
181
199
  # Add rules_in_sections to the policy structure
@@ -187,19 +205,25 @@ def export_wf_rules_to_json(args, configuration):
187
205
  processed_sections = []
188
206
  for index, section_data in enumerate(sections_with_ids):
189
207
  processed_sections.append({
190
- "section_index": index,
208
+ "section_index": index+1,
191
209
  "section_name": section_data['section']['name'],
192
210
  "section_id": section_data['section']['id']
193
211
  })
194
212
 
195
213
  # Replace the original sections array with the reformatted one
196
214
  processed_data['data']['policy']['wanFirewall']['policy']['sections'] = processed_sections
215
+
216
+ # Handle timestamp in filename if requested
217
+ filename_template = "all_wf_rules_and_sections_{account_id}.json"
218
+ if hasattr(args, 'append_timestamp') and args.append_timestamp:
219
+ timestamp = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
220
+ filename_template = "all_wf_rules_and_sections_{account_id}_" + timestamp + ".json"
197
221
 
198
222
  output_file = writeDataToFile(
199
223
  data=processed_data,
200
224
  args=args,
201
225
  account_id=account_id,
202
- default_filename_template="all_wf_rules_and_sections_{account_id}.json",
226
+ default_filename_template=filename_template,
203
227
  default_directory="config_data"
204
228
  )
205
229
 
@@ -13,6 +13,7 @@ def export_sites_parse(subparsers):
13
13
  socket_sites_parser.add_argument('-accountID', help='Account ID to export data from (uses CATO_ACCOUNT_ID environment variable if not specified)', required=False)
14
14
  socket_sites_parser.add_argument('-siteIDs', help='Comma-separated list of site IDs to export (e.g., "132606,132964,133511")', required=False)
15
15
  socket_sites_parser.add_argument('--output-file-path', help='Full path including filename and extension for output file. If not specified, uses default: config_data/socket_site_data_{account_id}.json')
16
+ socket_sites_parser.add_argument('--append-timestamp', action='store_true', help='Append timestamp to the filename after account ID (format: YYYY-MM-DD_HH-MM-SS)')
16
17
  socket_sites_parser.add_argument('-v', '--verbose', action='store_true', help='Verbose output')
17
18
 
18
19
  socket_sites_parser.set_defaults(func=export_sites.export_socket_site_to_json)