ic-code 1.1.6__tar.gz → 1.1.7__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 (288) hide show
  1. {ic_code-1.1.6/src/ic_code.egg-info → ic_code-1.1.7}/PKG-INFO +41 -14
  2. ic_code-1.1.7/pyproject.toml +163 -0
  3. {ic_code-1.1.6 → ic_code-1.1.7}/requirements.txt +1 -1
  4. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/oci/vm/info.py +45 -16
  5. {ic_code-1.1.6 → ic_code-1.1.7/src/ic_code.egg-info}/PKG-INFO +41 -14
  6. ic_code-1.1.7/src/ic_code.egg-info/requires.txt +53 -0
  7. ic_code-1.1.6/pyproject.toml +0 -121
  8. ic_code-1.1.6/src/ic_code.egg-info/requires.txt +0 -26
  9. {ic_code-1.1.6 → ic_code-1.1.7}/CHANGELOG.md +0 -0
  10. {ic_code-1.1.6 → ic_code-1.1.7}/LICENSE +0 -0
  11. {ic_code-1.1.6 → ic_code-1.1.7}/MANIFEST.in +0 -0
  12. {ic_code-1.1.6 → ic_code-1.1.7}/README.md +0 -0
  13. {ic_code-1.1.6 → ic_code-1.1.7}/SECURITY.md +0 -0
  14. {ic_code-1.1.6 → ic_code-1.1.7}/docs/README.md +0 -0
  15. {ic_code-1.1.6 → ic_code-1.1.7}/docs/_templates/configuration.md +0 -0
  16. {ic_code-1.1.6 → ic_code-1.1.7}/docs/_templates/installation.md +0 -0
  17. {ic_code-1.1.6 → ic_code-1.1.7}/docs/_templates/troubleshooting.md +0 -0
  18. {ic_code-1.1.6 → ic_code-1.1.7}/docs/_templates/usage.md +0 -0
  19. {ic_code-1.1.6 → ic_code-1.1.7}/docs/aws/AWS_IMPLEMENTATION_SUMMARY.md +0 -0
  20. {ic_code-1.1.6 → ic_code-1.1.7}/docs/aws/README.md +0 -0
  21. {ic_code-1.1.6 → ic_code-1.1.7}/docs/aws/aws_cli_prd.md +0 -0
  22. {ic_code-1.1.6 → ic_code-1.1.7}/docs/aws/installation.md +0 -0
  23. {ic_code-1.1.6 → ic_code-1.1.7}/docs/azure/README.md +0 -0
  24. {ic_code-1.1.6 → ic_code-1.1.7}/docs/config_migration.md +0 -0
  25. {ic_code-1.1.6 → ic_code-1.1.7}/docs/deployment.md +0 -0
  26. {ic_code-1.1.6 → ic_code-1.1.7}/docs/development/README.md +0 -0
  27. {ic_code-1.1.6 → ic_code-1.1.7}/docs/development/cleanup_summary.md +0 -0
  28. {ic_code-1.1.6 → ic_code-1.1.7}/docs/development/development_guide.md +0 -0
  29. {ic_code-1.1.6 → ic_code-1.1.7}/docs/development/import_patterns.md +0 -0
  30. {ic_code-1.1.6 → ic_code-1.1.7}/docs/development/migration_guide.md +0 -0
  31. {ic_code-1.1.6 → ic_code-1.1.7}/docs/gcp/GCP_CONFIGURATION_GUIDE.md +0 -0
  32. {ic_code-1.1.6 → ic_code-1.1.7}/docs/gcp/GCP_SECURITY_BEST_PRACTICES.md +0 -0
  33. {ic_code-1.1.6 → ic_code-1.1.7}/docs/gcp/README.md +0 -0
  34. {ic_code-1.1.6 → ic_code-1.1.7}/docs/general/configuration.md +0 -0
  35. {ic_code-1.1.6 → ic_code-1.1.7}/docs/installation.md +0 -0
  36. {ic_code-1.1.6 → ic_code-1.1.7}/docs/mcp_integration.md +0 -0
  37. {ic_code-1.1.6 → ic_code-1.1.7}/docs/migration.md +0 -0
  38. {ic_code-1.1.6 → ic_code-1.1.7}/docs/migration_guide.md +0 -0
  39. {ic_code-1.1.6 → ic_code-1.1.7}/docs/ncp/README.md +0 -0
  40. {ic_code-1.1.6 → ic_code-1.1.7}/docs/ncp/configuration.md +0 -0
  41. {ic_code-1.1.6 → ic_code-1.1.7}/docs/ncp/installation.md +0 -0
  42. {ic_code-1.1.6 → ic_code-1.1.7}/docs/ncp/troubleshooting.md +0 -0
  43. {ic_code-1.1.6 → ic_code-1.1.7}/docs/ncp/usage.md +0 -0
  44. {ic_code-1.1.6 → ic_code-1.1.7}/docs/ncpgov/README.md +0 -0
  45. {ic_code-1.1.6 → ic_code-1.1.7}/docs/ncpgov/installation.md +0 -0
  46. {ic_code-1.1.6 → ic_code-1.1.7}/docs/oci/README.md +0 -0
  47. {ic_code-1.1.6 → ic_code-1.1.7}/docs/oci/installation.md +0 -0
  48. {ic_code-1.1.6 → ic_code-1.1.7}/docs/security.md +0 -0
  49. {ic_code-1.1.6 → ic_code-1.1.7}/docs/ssh/configuration.md +0 -0
  50. {ic_code-1.1.6 → ic_code-1.1.7}/docs/troubleshooting.md +0 -0
  51. {ic_code-1.1.6 → ic_code-1.1.7}/docs/user_guide.md +0 -0
  52. {ic_code-1.1.6 → ic_code-1.1.7}/scripts/analysis_summary.py +0 -0
  53. {ic_code-1.1.6 → ic_code-1.1.7}/scripts/bump-version.sh +0 -0
  54. {ic_code-1.1.6 → ic_code-1.1.7}/scripts/cf_edge_nsg_make/cf_edge_nsg_make.py +0 -0
  55. {ic_code-1.1.6 → ic_code-1.1.7}/scripts/cli_usage_analysis.py +0 -0
  56. {ic_code-1.1.6 → ic_code-1.1.7}/scripts/dependency_mapper.py +0 -0
  57. {ic_code-1.1.6 → ic_code-1.1.7}/scripts/deploy.sh +0 -0
  58. {ic_code-1.1.6 → ic_code-1.1.7}/scripts/final_validation_and_documentation.py +0 -0
  59. {ic_code-1.1.6 → ic_code-1.1.7}/scripts/fix_consolidated_imports.py +0 -0
  60. {ic_code-1.1.6 → ic_code-1.1.7}/scripts/migration_execution_and_validation.py +0 -0
  61. {ic_code-1.1.6 → ic_code-1.1.7}/scripts/ncp_security_scanner.py +0 -0
  62. {ic_code-1.1.6 → ic_code-1.1.7}/scripts/oracle-policy/user_policy.py +0 -0
  63. {ic_code-1.1.6 → ic_code-1.1.7}/scripts/performance_optimization.py +0 -0
  64. {ic_code-1.1.6 → ic_code-1.1.7}/scripts/setup_venv.py +0 -0
  65. {ic_code-1.1.6 → ic_code-1.1.7}/scripts/unset_env.sh +0 -0
  66. {ic_code-1.1.6 → ic_code-1.1.7}/scripts/validate_config.py +0 -0
  67. {ic_code-1.1.6 → ic_code-1.1.7}/scripts/validate_dependencies.py +0 -0
  68. {ic_code-1.1.6 → ic_code-1.1.7}/scripts/validate_ncp_security.py +0 -0
  69. {ic_code-1.1.6 → ic_code-1.1.7}/setup.cfg +0 -0
  70. {ic_code-1.1.6 → ic_code-1.1.7}/setup.py +0 -0
  71. {ic_code-1.1.6 → ic_code-1.1.7}/src/common/__init__.py +0 -0
  72. {ic_code-1.1.6 → ic_code-1.1.7}/src/common/azure_utils.py +0 -0
  73. {ic_code-1.1.6 → ic_code-1.1.7}/src/common/gather_env.py +0 -0
  74. {ic_code-1.1.6 → ic_code-1.1.7}/src/common/gcp_config_validator.py +0 -0
  75. {ic_code-1.1.6 → ic_code-1.1.7}/src/common/gcp_monitoring.py +0 -0
  76. {ic_code-1.1.6 → ic_code-1.1.7}/src/common/gcp_utils.py +0 -0
  77. {ic_code-1.1.6 → ic_code-1.1.7}/src/common/log.py +0 -0
  78. {ic_code-1.1.6 → ic_code-1.1.7}/src/common/ncp_security_utils.py +0 -0
  79. {ic_code-1.1.6 → ic_code-1.1.7}/src/common/ncp_utils.py +0 -0
  80. {ic_code-1.1.6 → ic_code-1.1.7}/src/common/ncpgov_utils.py +0 -0
  81. {ic_code-1.1.6 → ic_code-1.1.7}/src/common/progress_decorator.py +0 -0
  82. {ic_code-1.1.6 → ic_code-1.1.7}/src/common/slack.py +0 -0
  83. {ic_code-1.1.6 → ic_code-1.1.7}/src/common/utils.py +0 -0
  84. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/__init__.py +0 -0
  85. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/cli.py +0 -0
  86. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/cli_backup.py +0 -0
  87. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/commands/__init__.py +0 -0
  88. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/commands/config.py +0 -0
  89. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/commands/migration.py +0 -0
  90. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/commands/security.py +0 -0
  91. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/compat/__init__.py +0 -0
  92. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/compat/cli.py +0 -0
  93. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/compat/common.py +0 -0
  94. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/config/__init__.py +0 -0
  95. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/config/cleanup.py +0 -0
  96. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/config/docs_organizer.py +0 -0
  97. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/config/external.py +0 -0
  98. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/config/installer.py +0 -0
  99. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/config/manager.py +0 -0
  100. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/config/migration.py +0 -0
  101. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/config/migration_utils.py +0 -0
  102. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/config/path_manager.py +0 -0
  103. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/config/schema.py +0 -0
  104. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/config/secrets.py +0 -0
  105. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/config/security.py +0 -0
  106. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/core/__init__.py +0 -0
  107. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/core/dependency_validator.py +0 -0
  108. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/core/logging.py +0 -0
  109. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/core/mcp_manager.py +0 -0
  110. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/core/platform_discovery.py +0 -0
  111. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/core/session.py +0 -0
  112. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/core/silence_logging.py +0 -0
  113. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/migration/__init__.py +0 -0
  114. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/migration/manager.py +0 -0
  115. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/migration/post_validation.py +0 -0
  116. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/migration/rollback.py +0 -0
  117. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/migration/validation.py +0 -0
  118. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/__init__.py +0 -0
  119. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/__init__.py +0 -0
  120. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/cloudfront/__init__.py +0 -0
  121. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/cloudfront/info.py +0 -0
  122. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/codepipeline/__init__.py +0 -0
  123. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/codepipeline/build.py +0 -0
  124. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/codepipeline/deploy.py +0 -0
  125. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/ec2/__init__.py +0 -0
  126. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/ec2/info.py +0 -0
  127. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/ec2/list_tags.py +0 -0
  128. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/ec2/tag_check.py +0 -0
  129. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/ecs/__init__.py +0 -0
  130. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/ecs/info.py +0 -0
  131. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/ecs/service.py +0 -0
  132. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/ecs/task.py +0 -0
  133. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/eks/__init__.py +0 -0
  134. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/eks/addons.py +0 -0
  135. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/eks/fargate.py +0 -0
  136. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/eks/info.py +0 -0
  137. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/eks/nodes.py +0 -0
  138. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/eks/pods.py +0 -0
  139. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/eks/update_config.py +0 -0
  140. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/fargate/__init__.py +0 -0
  141. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/fargate/info.py +0 -0
  142. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/lb/__init__.py +0 -0
  143. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/lb/info.py +0 -0
  144. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/lb/list_tags.py +0 -0
  145. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/lb/tag_check.py +0 -0
  146. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/msk/__init__.py +0 -0
  147. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/msk/broker.py +0 -0
  148. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/msk/info.py +0 -0
  149. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/nat/__init__.py +0 -0
  150. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/nat/list_tags.py +0 -0
  151. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/nat/tag_check.py +0 -0
  152. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/profile/__init__.py +0 -0
  153. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/profile/info.py +0 -0
  154. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/rds/__init__.py +0 -0
  155. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/rds/info.py +0 -0
  156. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/rds/list_tags.py +0 -0
  157. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/rds/tag_check.py +0 -0
  158. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/s3/__init__.py +0 -0
  159. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/s3/info.py +0 -0
  160. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/s3/list_tags.py +0 -0
  161. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/s3/tag_check.py +0 -0
  162. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/sg/__init__.py +0 -0
  163. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/sg/info.py +0 -0
  164. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/vpc/__init__.py +0 -0
  165. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/vpc/info.py +0 -0
  166. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/vpc/list_tags.py +0 -0
  167. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/vpc/tag_check.py +0 -0
  168. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/vpn/__init__.py +0 -0
  169. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/aws/vpn/info.py +0 -0
  170. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/azure/README.md +0 -0
  171. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/azure/__init__.py +0 -0
  172. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/azure/aci/__init__.py +0 -0
  173. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/azure/aci/info.py +0 -0
  174. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/azure/aks/__init__.py +0 -0
  175. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/azure/aks/info.py +0 -0
  176. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/azure/lb/__init__.py +0 -0
  177. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/azure/lb/info.py +0 -0
  178. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/azure/nsg/__init__.py +0 -0
  179. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/azure/nsg/info.py +0 -0
  180. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/azure/storage/__init__.py +0 -0
  181. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/azure/storage/info.py +0 -0
  182. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/azure/vm/__init__.py +0 -0
  183. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/azure/vm/info.py +0 -0
  184. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/azure/vm/mock_data.json +0 -0
  185. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/azure/vnet/__init__.py +0 -0
  186. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/azure/vnet/info.py +0 -0
  187. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/azure/vnet/mock_data.json +0 -0
  188. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/cloudflare/README.md +0 -0
  189. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/cloudflare/__init__.py +0 -0
  190. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/cloudflare/dns/__init__.py +0 -0
  191. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/cloudflare/dns/list_info.py +0 -0
  192. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/gcp/README.md +0 -0
  193. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/gcp/__init__.py +0 -0
  194. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/gcp/billing/__init__.py +0 -0
  195. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/gcp/billing/info.py +0 -0
  196. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/gcp/billing/mock_data.json +0 -0
  197. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/gcp/compute/__init__.py +0 -0
  198. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/gcp/compute/info.py +0 -0
  199. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/gcp/compute/mock_data.json +0 -0
  200. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/gcp/firewall/__init__.py +0 -0
  201. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/gcp/firewall/info.py +0 -0
  202. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/gcp/functions/__init__.py +0 -0
  203. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/gcp/functions/info.py +0 -0
  204. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/gcp/gke/__init__.py +0 -0
  205. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/gcp/gke/info.py +0 -0
  206. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/gcp/gke/mock_data.json +0 -0
  207. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/gcp/lb/__init__.py +0 -0
  208. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/gcp/lb/info.py +0 -0
  209. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/gcp/run/__init__.py +0 -0
  210. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/gcp/run/info.py +0 -0
  211. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/gcp/sql/__init__.py +0 -0
  212. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/gcp/sql/info.py +0 -0
  213. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/gcp/storage/__init__.py +0 -0
  214. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/gcp/storage/info.py +0 -0
  215. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/gcp/vpc/__init__.py +0 -0
  216. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/gcp/vpc/info.py +0 -0
  217. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/gcp/vpc/mock_data.json +0 -0
  218. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ncp/__init__.py +0 -0
  219. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ncp/client.py +0 -0
  220. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ncp/ec2/__init__.py +0 -0
  221. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ncp/ec2/info.py +0 -0
  222. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ncp/rds/__init__.py +0 -0
  223. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ncp/rds/info.py +0 -0
  224. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ncp/s3/__init__.py +0 -0
  225. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ncp/s3/info.py +0 -0
  226. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ncp/sg/__init__.py +0 -0
  227. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ncp/sg/info.py +0 -0
  228. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ncp/vpc/__init__.py +0 -0
  229. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ncp/vpc/info.py +0 -0
  230. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ncpgov/__init__.py +0 -0
  231. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ncpgov/client.py +0 -0
  232. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ncpgov/ec2/__init__.py +0 -0
  233. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ncpgov/ec2/info.py +0 -0
  234. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ncpgov/rds/__init__.py +0 -0
  235. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ncpgov/rds/info.py +0 -0
  236. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ncpgov/s3/__init__.py +0 -0
  237. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ncpgov/s3/info.py +0 -0
  238. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ncpgov/sg/__init__.py +0 -0
  239. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ncpgov/sg/info.py +0 -0
  240. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ncpgov/vpc/__init__.py +0 -0
  241. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ncpgov/vpc/info.py +0 -0
  242. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/oci/README.md +0 -0
  243. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/oci/__init__.py +0 -0
  244. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/oci/common/__init__.py +0 -0
  245. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/oci/common/utils.py +0 -0
  246. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/oci/compartment/__init__.py +0 -0
  247. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/oci/compartment/info.py +0 -0
  248. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/oci/cost/__init__.py +0 -0
  249. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/oci/cost/credit.py +0 -0
  250. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/oci/cost/usage.py +0 -0
  251. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/oci/info/__init__.py +0 -0
  252. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/oci/info/oci_info.py +0 -0
  253. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/oci/lb/__init__.py +0 -0
  254. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/oci/lb/info.py +0 -0
  255. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/oci/nsg/__init__.py +0 -0
  256. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/oci/nsg/info.py +0 -0
  257. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/oci/obj/__init__.py +0 -0
  258. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/oci/obj/info.py +0 -0
  259. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/oci/policy/__init__.py +0 -0
  260. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/oci/policy/info.py +0 -0
  261. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/oci/policy/search.py +0 -0
  262. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/oci/vcn/__init__.py +0 -0
  263. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/oci/vcn/info.py +0 -0
  264. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/oci/vm/__init__.py +0 -0
  265. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/oci/volume/__init__.py +0 -0
  266. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/oci/volume/info.py +0 -0
  267. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ssh/README.md +0 -0
  268. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ssh/__init__.py +0 -0
  269. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ssh/auto/__init__.py +0 -0
  270. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ssh/auto/scan.py +0 -0
  271. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ssh/auto_ssh.py +0 -0
  272. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ssh/server/__init__.py +0 -0
  273. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ssh/server/info.py +0 -0
  274. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/platforms/ssh/server_info.py +0 -0
  275. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/security/README.md +0 -0
  276. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/security/__init__.py +0 -0
  277. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/security/config.py +0 -0
  278. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/security/detector.py +0 -0
  279. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/security/guidance.py +0 -0
  280. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/security/hooks.py +0 -0
  281. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/security/patterns.py +0 -0
  282. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic/security/scanner.py +0 -0
  283. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic_code.egg-info/SOURCES.txt +0 -0
  284. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic_code.egg-info/dependency_links.txt +0 -0
  285. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic_code.egg-info/entry_points.txt +0 -0
  286. {ic_code-1.1.6 → ic_code-1.1.7}/src/ic_code.egg-info/top_level.txt +0 -0
  287. {ic_code-1.1.6 → ic_code-1.1.7}/src/mcp/__init__.py +0 -0
  288. {ic_code-1.1.6 → ic_code-1.1.7}/src/mcp/gcp_connector.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ic-code
3
- Version: 1.1.6
3
+ Version: 1.1.7
4
4
  Summary: Infrastructure CLI tool for managing AWS, Azure, GCP, OCI, NCP, CloudFlare, SSH, and more
5
5
  Home-page: https://github.com/dgr009/ic
6
6
  Author: SangYun Kim
@@ -30,29 +30,56 @@ Description-Content-Type: text/markdown
30
30
  License-File: LICENSE
31
31
  Requires-Dist: boto3<2.0.0,>=1.26.0
32
32
  Requires-Dist: botocore<2.0.0,>=1.29.0
33
+ Requires-Dist: oci<3.0.0,>=2.149.0
33
34
  Requires-Dist: requests<3.0.0,>=2.28.0
34
- Requires-Dist: rich<15.0.0,>=12.0.0
35
- Requires-Dist: PyYAML<7.0.0,>=6.0
35
+ Requires-Dist: kubernetes<31.0.0,>=29.0.0
36
+ Requires-Dist: awscli<2.0.0,>=1.42.0
37
+ Requires-Dist: google-cloud-compute<2.0.0,>=1.36.0
38
+ Requires-Dist: google-cloud-container<3.0.0,>=2.44.0
39
+ Requires-Dist: google-cloud-storage<3.0.0,>=2.18.0
40
+ Requires-Dist: google-cloud-functions<2.0.0,>=1.16.0
41
+ Requires-Dist: google-cloud-run<1.0.0,>=0.11.0
42
+ Requires-Dist: google-cloud-billing<2.0.0,>=1.13.0
43
+ Requires-Dist: google-cloud-resource-manager<2.0.0,>=1.12.0
44
+ Requires-Dist: google-auth<3.0.0,>=2.29.0
45
+ Requires-Dist: google-auth-oauthlib<2.0.0,>=1.2.0
46
+ Requires-Dist: google-auth-httplib2<1.0.0,>=0.2.0
47
+ Requires-Dist: azure-identity<2.0.0,>=1.15.0
48
+ Requires-Dist: azure-mgmt-compute<31.0.0,>=29.1.0
49
+ Requires-Dist: azure-mgmt-network<26.0.0,>=24.0.0
50
+ Requires-Dist: azure-mgmt-containerinstance<11.0.0,>=10.1.0
51
+ Requires-Dist: azure-mgmt-containerservice<30.0.0,>=28.0.0
52
+ Requires-Dist: azure-mgmt-storage<22.0.0,>=21.1.0
53
+ Requires-Dist: azure-mgmt-sql<4.0.0,>=3.0.1
54
+ Requires-Dist: azure-mgmt-rdbms<11.0.0,>=10.1.0
55
+ Requires-Dist: azure-mgmt-eventhub<11.0.0,>=10.1.0
56
+ Requires-Dist: azure-mgmt-resource<24.0.0,>=22.0.0
57
+ Requires-Dist: azure-mgmt-subscription<4.0.0,>=3.1.1
36
58
  Requires-Dist: paramiko<5.0.0,>=2.11.0
37
- Requires-Dist: python-dotenv<2.0.0,>=0.19.0
38
- Requires-Dist: cryptography<50.0.0,>=3.4.8
39
59
  Requires-Dist: netifaces<1.0.0,>=0.11.0
60
+ Requires-Dist: rich<15.0.0,>=12.0.0
61
+ Requires-Dist: InquirerPy<1.0.0,>=0.3.4
40
62
  Requires-Dist: tqdm<5.0.0,>=4.67.0
41
- Requires-Dist: jsonschema<5.0.0,>=4.23.0
63
+ Requires-Dist: python-dotenv<2.0.0,>=0.19.0
42
64
  Requires-Dist: python-dateutil<3.0.0,>=2.8.0
65
+ Requires-Dist: PyYAML<7.0.0,>=6.0
43
66
  Requires-Dist: click<9.0.0,>=8.0.0
44
- Requires-Dist: packaging<25.0,>=21.0
45
- Requires-Dist: setuptools<71.0,>=61.0
67
+ Requires-Dist: docutils<1.0.0,>=0.19
68
+ Requires-Dist: invoke<3.0.0,>=2.2.0
69
+ Requires-Dist: jsonschema<5.0.0,>=4.23.0
70
+ Requires-Dist: cryptography<50.0.0,>=3.4.8
46
71
  Requires-Dist: watchdog<4.0.0,>=3.0.0
47
72
  Requires-Dist: cerberus<2.0.0,>=1.3.4
48
73
  Requires-Dist: pydantic<3.0.0,>=2.0.0
49
- Requires-Dist: InquirerPy<1.0.0,>=0.3.4
74
+ Requires-Dist: packaging<25.0,>=21.0
75
+ Requires-Dist: setuptools<71.0,>=61.0
50
76
  Provides-Extra: dev
51
- Requires-Dist: pytest>=7.0.0; extra == "dev"
52
- Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
53
- Requires-Dist: black>=22.0.0; extra == "dev"
54
- Requires-Dist: flake8>=5.0.0; extra == "dev"
55
- Requires-Dist: mypy>=0.991; extra == "dev"
77
+ Requires-Dist: pytest<9.0.0,>=7.0.0; extra == "dev"
78
+ Requires-Dist: pytest-cov<6.0.0,>=4.0.0; extra == "dev"
79
+ Requires-Dist: black<25.0.0,>=22.0.0; extra == "dev"
80
+ Requires-Dist: flake8<8.0.0,>=5.0.0; extra == "dev"
81
+ Requires-Dist: mypy<2.0.0,>=1.0.0; extra == "dev"
82
+ Requires-Dist: pre-commit<4.0.0,>=2.20.0; extra == "dev"
56
83
  Dynamic: author
57
84
  Dynamic: home-page
58
85
  Dynamic: license-file
@@ -0,0 +1,163 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61.0", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "ic-code"
7
+ version = "1.1.7"
8
+ authors = [
9
+ {name = "sykim", email = "cruiser594@gmail.com"},
10
+ ]
11
+ description = "Infrastructure CLI tool for managing AWS, Azure, GCP, OCI, NCP, CloudFlare, SSH, and more"
12
+ readme = "README.md"
13
+ requires-python = ">=3.9,<3.14"
14
+ classifiers = [
15
+ "Development Status :: 5 - Production/Stable",
16
+ "Intended Audience :: Developers",
17
+ "Intended Audience :: System Administrators",
18
+ "License :: OSI Approved :: MIT License",
19
+ "Operating System :: OS Independent",
20
+ "Programming Language :: Python :: 3",
21
+ "Programming Language :: Python :: 3.9",
22
+ "Programming Language :: Python :: 3.10",
23
+ "Programming Language :: Python :: 3.11",
24
+ "Programming Language :: Python :: 3.12",
25
+ "Programming Language :: Python :: 3.13",
26
+ "Topic :: System :: Systems Administration",
27
+ "Topic :: Utilities",
28
+ "Topic :: Software Development :: Libraries :: Python Modules",
29
+ "Environment :: Console",
30
+ ]
31
+ keywords = ["cli", "infrastructure", "aws", "oci", "gcp", "azure", "ncp", "naver-cloud", "cloudflare", "ssh", "devops", "multi-cloud"]
32
+ dependencies = [
33
+ # Core Cloud SDKs - Compatible with Python 3.9-3.12
34
+ "boto3>=1.26.0,<2.0.0", # AWS SDK for Python
35
+ "botocore>=1.29.0,<2.0.0", # AWS SDK core library
36
+ "oci>=2.149.0,<3.0.0", # Oracle Cloud Infrastructure SDK
37
+ "requests>=2.28.0,<3.0.0", # HTTP library for API calls (required for NCP REST API)
38
+ "kubernetes>=29.0.0,<31.0.0", # Kubernetes Python client
39
+ "awscli>=1.42.0,<2.0.0", # AWS CLI for additional functionality
40
+
41
+ # Google Cloud SDKs - Compatible with Python 3.9-3.12
42
+ "google-cloud-compute>=1.36.0,<2.0.0", # Google Compute Engine API
43
+ "google-cloud-container>=2.44.0,<3.0.0", # Google Kubernetes Engine API
44
+ "google-cloud-storage>=2.18.0,<3.0.0", # Google Cloud Storage API
45
+ "google-cloud-functions>=1.16.0,<2.0.0", # Google Cloud Functions API
46
+ "google-cloud-run>=0.11.0,<1.0.0", # Google Cloud Run API
47
+ "google-cloud-billing>=1.13.0,<2.0.0", # Google Cloud Billing API
48
+ "google-cloud-resource-manager>=1.12.0,<2.0.0", # Google Cloud Resource Manager API
49
+ "google-auth>=2.29.0,<3.0.0", # Google authentication library
50
+ "google-auth-oauthlib>=1.2.0,<2.0.0", # Google OAuth2 authentication
51
+ "google-auth-httplib2>=0.2.0,<1.0.0", # Google HTTP transport for authentication
52
+
53
+ # Azure SDKs - Compatible with Python 3.9-3.12
54
+ "azure-identity>=1.15.0,<2.0.0", # Azure identity and authentication
55
+ "azure-mgmt-compute>=29.1.0,<31.0.0", # Azure Virtual Machines management
56
+ "azure-mgmt-network>=24.0.0,<26.0.0", # Azure networking management
57
+ "azure-mgmt-containerinstance>=10.1.0,<11.0.0", # Azure Container Instances
58
+ "azure-mgmt-containerservice>=28.0.0,<30.0.0", # Azure Kubernetes Service
59
+ "azure-mgmt-storage>=21.1.0,<22.0.0", # Azure Storage management
60
+ "azure-mgmt-sql>=3.0.1,<4.0.0", # Azure SQL management
61
+ "azure-mgmt-rdbms>=10.1.0,<11.0.0", # Azure Database services
62
+ "azure-mgmt-eventhub>=10.1.0,<11.0.0", # Azure Event Hubs
63
+ "azure-mgmt-resource>=22.0.0,<24.0.0", # Azure Resource Manager
64
+ "azure-mgmt-subscription>=3.1.1,<4.0.0", # Azure Subscription management
65
+
66
+ # SSH and Network - Compatible with Python 3.9-3.12
67
+ "paramiko>=2.11.0,<5.0.0", # SSH client library (4.0.0+ for Python 3.9+ support)
68
+ "netifaces>=0.11.0,<1.0.0", # Network interface information
69
+
70
+ # CLI User Interface and Output - Compatible with Python 3.9-3.12
71
+ "rich>=12.0.0,<15.0.0", # Rich text and beautiful formatting
72
+ "InquirerPy>=0.3.4,<1.0.0", # Interactive command line prompts
73
+ "tqdm>=4.67.0,<5.0.0", # Progress bars
74
+
75
+ # Configuration and Utilities - Compatible with Python 3.9-3.12
76
+ "python-dotenv>=0.19.0,<2.0.0", # Environment variable loading
77
+ "python-dateutil>=2.8.0,<3.0.0", # Date/time utilities
78
+ "PyYAML>=6.0,<7.0.0", # YAML parser (required for NCP config files)
79
+ "click>=8.0.0,<9.0.0", # Command line interface framework
80
+ "docutils>=0.19,<1.0.0", # Documentation utilities
81
+ "invoke>=2.2.0,<3.0.0", # Task execution library
82
+
83
+ # Security and Validation - Compatible with Python 3.9-3.12
84
+ "jsonschema>=4.23.0,<5.0.0", # JSON schema validation
85
+ "cryptography>=3.4.8,<50.0.0", # Cryptographic recipes and primitives (required for NCP HMAC-SHA256 signatures)
86
+
87
+ # Additional dependencies for new config system (v2.0) - Compatible with Python 3.9-3.12
88
+ "watchdog>=3.0.0,<4.0.0", # File change monitoring
89
+ "cerberus>=1.3.4,<2.0.0", # Schema validation
90
+ "pydantic>=2.0.0,<3.0.0", # Data validation and settings management
91
+
92
+ # Package management and compatibility
93
+ "packaging>=21.0,<25.0", # Version parsing and comparison
94
+ "setuptools>=61.0,<71.0", # Package building tools
95
+ ]
96
+
97
+ [project.optional-dependencies]
98
+ dev = [
99
+ "pytest>=7.0.0,<9.0.0",
100
+ "pytest-cov>=4.0.0,<6.0.0",
101
+ "black>=22.0.0,<25.0.0",
102
+ "flake8>=5.0.0,<8.0.0",
103
+ "mypy>=1.0.0,<2.0.0",
104
+ "pre-commit>=2.20.0,<4.0.0",
105
+ ]
106
+
107
+ [project.urls]
108
+ "Homepage" = "https://github.com/dgr009/ic"
109
+ "Bug Reports" = "https://github.com/dgr009/ic/issues"
110
+ "Source" = "https://github.com/dgr009/ic"
111
+ "Documentation" = "https://github.com/dgr009/ic#readme"
112
+
113
+ [project.scripts]
114
+ ic = "ic.cli:main"
115
+
116
+ [tool.setuptools.packages.find]
117
+ where = ["src"]
118
+ include = ["ic*", "common*", "mcp*"]
119
+
120
+ [tool.setuptools]
121
+ include-package-data = true
122
+
123
+ [tool.setuptools.package-data]
124
+ "*" = ["*.yaml", "*.yml", "*.json", "*.md", "*.txt"]
125
+
126
+ [tool.black]
127
+ line-length = 88
128
+ target-version = ['py39']
129
+ include = '\.pyi?$'
130
+ extend-exclude = '''
131
+ /(
132
+ # directories
133
+ \.eggs
134
+ | \.git
135
+ | \.hg
136
+ | \.mypy_cache
137
+ | \.tox
138
+ | \.venv
139
+ | build
140
+ | dist
141
+ )/
142
+ '''
143
+
144
+ [tool.pytest.ini_options]
145
+ minversion = "6.0"
146
+ addopts = "-ra -q --strict-markers --tb=short"
147
+ testpaths = [
148
+ "tests",
149
+ ]
150
+ python_files = [
151
+ "test_*.py",
152
+ "*_test.py",
153
+ ]
154
+ markers = [
155
+ "unit: Unit tests",
156
+ "integration: Integration tests",
157
+ "performance: Performance tests",
158
+ "security: Security tests",
159
+ "slow: Slow running tests",
160
+ "ci_safe: Tests safe to run in CI environment",
161
+ "requires_config: Tests that require configuration files",
162
+ "requires_credentials: Tests that require live credentials"
163
+ ]
@@ -7,7 +7,7 @@
7
7
  # Core Cloud SDKs - Compatible with Python 3.9-3.12
8
8
  boto3>=1.26.0,<2.0.0 # AWS SDK for Python
9
9
  botocore>=1.29.0,<2.0.0 # AWS SDK core library
10
- # oci>=2.149.0,<3.0.0 # Oracle Cloud Infrastructure SDK (commented out due to naming conflict with local oci_module)
10
+ oci>=2.149.0,<3.0.0 # Oracle Cloud Infrastructure SDK
11
11
  requests>=2.28.0,<3.0.0 # HTTP library for API calls (required for NCP REST API)
12
12
  kubernetes>=29.0.0,<31.0.0 # Kubernetes Python client
13
13
  awscli>=1.42.0,<2.0.0 # AWS CLI for additional functionality
@@ -2,7 +2,6 @@
2
2
  # -*- coding: utf-8 -*-
3
3
 
4
4
  import sys
5
- import datetime
6
5
  import concurrent.futures
7
6
  import time
8
7
 
@@ -12,17 +11,45 @@ from rich.table import Table
12
11
  from rich import box
13
12
  from rich.rule import Rule
14
13
  try:
15
- from ....common.log import log_info_non_console
14
+ from src.ic.common.log import log_info_non_console
16
15
  except ImportError:
17
- from common.log import log_info_non_console
16
+ try:
17
+ from common.log import log_info_non_console
18
+ except ImportError:
19
+ # Fallback for missing log module
20
+ def log_info_non_console(msg):
21
+ pass
22
+
18
23
  try:
19
- from ....common.progress_decorator import progress_bar, ManualProgress
24
+ from src.ic.common.progress_decorator import progress_bar, ManualProgress
20
25
  except ImportError:
21
- from common.progress_decorator import progress_bar, ManualProgress
26
+ try:
27
+ from common.progress_decorator import progress_bar, ManualProgress
28
+ except ImportError:
29
+ # Fallback progress decorators
30
+ def progress_bar(desc):
31
+ def decorator(func):
32
+ return func
33
+ return decorator
34
+
35
+ class ManualProgress:
36
+ def __init__(self, desc, total=100):
37
+ self.desc = desc
38
+ self.total = total
39
+ def __enter__(self):
40
+ return self
41
+ def __exit__(self, *args):
42
+ pass
43
+ def update(self, desc, advance=1):
44
+ pass
45
+
22
46
  try:
23
- from ..common.utils import get_all_subscribed_regions, get_compartments
47
+ from src.ic.platforms.oci.common.utils import get_all_subscribed_regions, get_compartments
24
48
  except ImportError:
25
- from ic.platforms.oci.common.utils import get_all_subscribed_regions, get_compartments
49
+ try:
50
+ from ..common.utils import get_all_subscribed_regions, get_compartments
51
+ except ImportError:
52
+ from ic.platforms.oci.common.utils import get_all_subscribed_regions, get_compartments
26
53
 
27
54
  # ###############################################################################
28
55
  # # CLI 인자 정의
@@ -249,7 +276,7 @@ def print_instance_table(console, inst_rows, verbose):
249
276
  # main
250
277
  ###############################################################################
251
278
  @progress_bar("OCI VM Information Collection")
252
- def main(args):
279
+ def main(args, config=None):
253
280
  console = Console()
254
281
  name_filter = args.name.lower() if args.name else None
255
282
  compartment_filter = args.compartment.lower() if args.compartment else None
@@ -258,33 +285,35 @@ def main(args):
258
285
  with ManualProgress("Initializing OCI configuration and discovering resources", total=4) as progress:
259
286
  try:
260
287
  progress.update("Loading OCI configuration", advance=1)
261
- config = oci.config.from_file("~/.oci/config", "DEFAULT")
262
- identity_client = oci.identity.IdentityClient(config)
288
+ oci_config = oci.config.from_file("~/.oci/config", "DEFAULT")
289
+ identity_client = oci.identity.IdentityClient(oci_config)
263
290
  except Exception as e:
264
291
  console.print(f"[red]OCI 설정 파일 로드 실패: {e}[/red]")
265
- sys.exit(1)
292
+ return {"error": str(e), "success": False}
266
293
 
267
294
  progress.update("Discovering available regions", advance=1)
268
295
  if args.regions:
269
- subscribed = get_all_subscribed_regions(identity_client, config["tenancy"])
296
+ subscribed = get_all_subscribed_regions(identity_client, oci_config["tenancy"])
270
297
  region_list = [r.strip() for r in args.regions.split(',') if r.strip() and r in subscribed]
271
298
  if not region_list:
272
299
  console.print("[red]유효한 리전이 없어 종료합니다[/red]")
273
- sys.exit(0)
300
+ return {"error": "No valid regions found", "success": False}
274
301
  else:
275
- region_list = get_all_subscribed_regions(identity_client, config["tenancy"])
302
+ region_list = get_all_subscribed_regions(identity_client, oci_config["tenancy"])
276
303
 
277
304
  progress.update("Discovering compartments", advance=1)
278
- compartments = get_compartments(identity_client, config["tenancy"], compartment_filter, console)
305
+ compartments = get_compartments(identity_client, oci_config["tenancy"], compartment_filter, console)
279
306
 
280
307
  progress.update(f"Found {len(compartments)} compartments and {len(region_list)} regions", advance=1)
281
308
 
282
309
  # Collect instance information with progress tracking
283
- inst_rows = collect_instances_parallel_fast(config, compartments, region_list, name_filter, console)
310
+ inst_rows = collect_instances_parallel_fast(oci_config, compartments, region_list, name_filter, console)
284
311
 
285
312
  # Display results
286
313
  console.print(f"\n[bold green]Collection complete![/bold green] Found {len(inst_rows)} instances.")
287
314
  print_instance_table(console, inst_rows, args.verbose)
315
+
316
+ return {"success": True, "data": {"instances": len(inst_rows)}, "message": f"Found {len(inst_rows)} instances"}
288
317
 
289
318
  if __name__ == '__main__':
290
319
  import argparse
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ic-code
3
- Version: 1.1.6
3
+ Version: 1.1.7
4
4
  Summary: Infrastructure CLI tool for managing AWS, Azure, GCP, OCI, NCP, CloudFlare, SSH, and more
5
5
  Home-page: https://github.com/dgr009/ic
6
6
  Author: SangYun Kim
@@ -30,29 +30,56 @@ Description-Content-Type: text/markdown
30
30
  License-File: LICENSE
31
31
  Requires-Dist: boto3<2.0.0,>=1.26.0
32
32
  Requires-Dist: botocore<2.0.0,>=1.29.0
33
+ Requires-Dist: oci<3.0.0,>=2.149.0
33
34
  Requires-Dist: requests<3.0.0,>=2.28.0
34
- Requires-Dist: rich<15.0.0,>=12.0.0
35
- Requires-Dist: PyYAML<7.0.0,>=6.0
35
+ Requires-Dist: kubernetes<31.0.0,>=29.0.0
36
+ Requires-Dist: awscli<2.0.0,>=1.42.0
37
+ Requires-Dist: google-cloud-compute<2.0.0,>=1.36.0
38
+ Requires-Dist: google-cloud-container<3.0.0,>=2.44.0
39
+ Requires-Dist: google-cloud-storage<3.0.0,>=2.18.0
40
+ Requires-Dist: google-cloud-functions<2.0.0,>=1.16.0
41
+ Requires-Dist: google-cloud-run<1.0.0,>=0.11.0
42
+ Requires-Dist: google-cloud-billing<2.0.0,>=1.13.0
43
+ Requires-Dist: google-cloud-resource-manager<2.0.0,>=1.12.0
44
+ Requires-Dist: google-auth<3.0.0,>=2.29.0
45
+ Requires-Dist: google-auth-oauthlib<2.0.0,>=1.2.0
46
+ Requires-Dist: google-auth-httplib2<1.0.0,>=0.2.0
47
+ Requires-Dist: azure-identity<2.0.0,>=1.15.0
48
+ Requires-Dist: azure-mgmt-compute<31.0.0,>=29.1.0
49
+ Requires-Dist: azure-mgmt-network<26.0.0,>=24.0.0
50
+ Requires-Dist: azure-mgmt-containerinstance<11.0.0,>=10.1.0
51
+ Requires-Dist: azure-mgmt-containerservice<30.0.0,>=28.0.0
52
+ Requires-Dist: azure-mgmt-storage<22.0.0,>=21.1.0
53
+ Requires-Dist: azure-mgmt-sql<4.0.0,>=3.0.1
54
+ Requires-Dist: azure-mgmt-rdbms<11.0.0,>=10.1.0
55
+ Requires-Dist: azure-mgmt-eventhub<11.0.0,>=10.1.0
56
+ Requires-Dist: azure-mgmt-resource<24.0.0,>=22.0.0
57
+ Requires-Dist: azure-mgmt-subscription<4.0.0,>=3.1.1
36
58
  Requires-Dist: paramiko<5.0.0,>=2.11.0
37
- Requires-Dist: python-dotenv<2.0.0,>=0.19.0
38
- Requires-Dist: cryptography<50.0.0,>=3.4.8
39
59
  Requires-Dist: netifaces<1.0.0,>=0.11.0
60
+ Requires-Dist: rich<15.0.0,>=12.0.0
61
+ Requires-Dist: InquirerPy<1.0.0,>=0.3.4
40
62
  Requires-Dist: tqdm<5.0.0,>=4.67.0
41
- Requires-Dist: jsonschema<5.0.0,>=4.23.0
63
+ Requires-Dist: python-dotenv<2.0.0,>=0.19.0
42
64
  Requires-Dist: python-dateutil<3.0.0,>=2.8.0
65
+ Requires-Dist: PyYAML<7.0.0,>=6.0
43
66
  Requires-Dist: click<9.0.0,>=8.0.0
44
- Requires-Dist: packaging<25.0,>=21.0
45
- Requires-Dist: setuptools<71.0,>=61.0
67
+ Requires-Dist: docutils<1.0.0,>=0.19
68
+ Requires-Dist: invoke<3.0.0,>=2.2.0
69
+ Requires-Dist: jsonschema<5.0.0,>=4.23.0
70
+ Requires-Dist: cryptography<50.0.0,>=3.4.8
46
71
  Requires-Dist: watchdog<4.0.0,>=3.0.0
47
72
  Requires-Dist: cerberus<2.0.0,>=1.3.4
48
73
  Requires-Dist: pydantic<3.0.0,>=2.0.0
49
- Requires-Dist: InquirerPy<1.0.0,>=0.3.4
74
+ Requires-Dist: packaging<25.0,>=21.0
75
+ Requires-Dist: setuptools<71.0,>=61.0
50
76
  Provides-Extra: dev
51
- Requires-Dist: pytest>=7.0.0; extra == "dev"
52
- Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
53
- Requires-Dist: black>=22.0.0; extra == "dev"
54
- Requires-Dist: flake8>=5.0.0; extra == "dev"
55
- Requires-Dist: mypy>=0.991; extra == "dev"
77
+ Requires-Dist: pytest<9.0.0,>=7.0.0; extra == "dev"
78
+ Requires-Dist: pytest-cov<6.0.0,>=4.0.0; extra == "dev"
79
+ Requires-Dist: black<25.0.0,>=22.0.0; extra == "dev"
80
+ Requires-Dist: flake8<8.0.0,>=5.0.0; extra == "dev"
81
+ Requires-Dist: mypy<2.0.0,>=1.0.0; extra == "dev"
82
+ Requires-Dist: pre-commit<4.0.0,>=2.20.0; extra == "dev"
56
83
  Dynamic: author
57
84
  Dynamic: home-page
58
85
  Dynamic: license-file
@@ -0,0 +1,53 @@
1
+ boto3<2.0.0,>=1.26.0
2
+ botocore<2.0.0,>=1.29.0
3
+ oci<3.0.0,>=2.149.0
4
+ requests<3.0.0,>=2.28.0
5
+ kubernetes<31.0.0,>=29.0.0
6
+ awscli<2.0.0,>=1.42.0
7
+ google-cloud-compute<2.0.0,>=1.36.0
8
+ google-cloud-container<3.0.0,>=2.44.0
9
+ google-cloud-storage<3.0.0,>=2.18.0
10
+ google-cloud-functions<2.0.0,>=1.16.0
11
+ google-cloud-run<1.0.0,>=0.11.0
12
+ google-cloud-billing<2.0.0,>=1.13.0
13
+ google-cloud-resource-manager<2.0.0,>=1.12.0
14
+ google-auth<3.0.0,>=2.29.0
15
+ google-auth-oauthlib<2.0.0,>=1.2.0
16
+ google-auth-httplib2<1.0.0,>=0.2.0
17
+ azure-identity<2.0.0,>=1.15.0
18
+ azure-mgmt-compute<31.0.0,>=29.1.0
19
+ azure-mgmt-network<26.0.0,>=24.0.0
20
+ azure-mgmt-containerinstance<11.0.0,>=10.1.0
21
+ azure-mgmt-containerservice<30.0.0,>=28.0.0
22
+ azure-mgmt-storage<22.0.0,>=21.1.0
23
+ azure-mgmt-sql<4.0.0,>=3.0.1
24
+ azure-mgmt-rdbms<11.0.0,>=10.1.0
25
+ azure-mgmt-eventhub<11.0.0,>=10.1.0
26
+ azure-mgmt-resource<24.0.0,>=22.0.0
27
+ azure-mgmt-subscription<4.0.0,>=3.1.1
28
+ paramiko<5.0.0,>=2.11.0
29
+ netifaces<1.0.0,>=0.11.0
30
+ rich<15.0.0,>=12.0.0
31
+ InquirerPy<1.0.0,>=0.3.4
32
+ tqdm<5.0.0,>=4.67.0
33
+ python-dotenv<2.0.0,>=0.19.0
34
+ python-dateutil<3.0.0,>=2.8.0
35
+ PyYAML<7.0.0,>=6.0
36
+ click<9.0.0,>=8.0.0
37
+ docutils<1.0.0,>=0.19
38
+ invoke<3.0.0,>=2.2.0
39
+ jsonschema<5.0.0,>=4.23.0
40
+ cryptography<50.0.0,>=3.4.8
41
+ watchdog<4.0.0,>=3.0.0
42
+ cerberus<2.0.0,>=1.3.4
43
+ pydantic<3.0.0,>=2.0.0
44
+ packaging<25.0,>=21.0
45
+ setuptools<71.0,>=61.0
46
+
47
+ [dev]
48
+ pytest<9.0.0,>=7.0.0
49
+ pytest-cov<6.0.0,>=4.0.0
50
+ black<25.0.0,>=22.0.0
51
+ flake8<8.0.0,>=5.0.0
52
+ mypy<2.0.0,>=1.0.0
53
+ pre-commit<4.0.0,>=2.20.0
@@ -1,121 +0,0 @@
1
- [build-system]
2
- requires = ["setuptools>=61.0", "wheel"]
3
- build-backend = "setuptools.build_meta"
4
-
5
- [project]
6
- name = "ic-code"
7
- version = "1.1.6"
8
- authors = [
9
- {name = "sykim", email = "cruiser594@gmail.com"},
10
- ]
11
- description = "Infrastructure CLI tool for managing AWS, Azure, GCP, OCI, NCP, CloudFlare, SSH, and more"
12
- readme = "README.md"
13
- requires-python = ">=3.9,<3.14"
14
- classifiers = [
15
- "Development Status :: 5 - Production/Stable",
16
- "Intended Audience :: Developers",
17
- "Intended Audience :: System Administrators",
18
- "License :: OSI Approved :: MIT License",
19
- "Operating System :: OS Independent",
20
- "Programming Language :: Python :: 3",
21
- "Programming Language :: Python :: 3.9",
22
- "Programming Language :: Python :: 3.10",
23
- "Programming Language :: Python :: 3.11",
24
- "Programming Language :: Python :: 3.12",
25
- "Programming Language :: Python :: 3.13",
26
- "Topic :: System :: Systems Administration",
27
- "Topic :: Utilities",
28
- "Topic :: Software Development :: Libraries :: Python Modules",
29
- "Environment :: Console",
30
- ]
31
- keywords = ["cli", "infrastructure", "aws", "oci", "gcp", "azure", "ncp", "naver-cloud", "cloudflare", "ssh", "devops", "multi-cloud"]
32
- dependencies = [
33
- # Core dependencies - aligned with requirements.txt
34
- "boto3>=1.26.0,<2.0.0",
35
- "botocore>=1.29.0,<2.0.0",
36
- "requests>=2.28.0,<3.0.0", # Required for NCP REST API calls
37
- "rich>=12.0.0,<15.0.0",
38
- "PyYAML>=6.0,<7.0.0", # Required for NCP configuration files
39
- "paramiko>=2.11.0,<5.0.0",
40
- "python-dotenv>=0.19.0,<2.0.0",
41
- "cryptography>=3.4.8,<50.0.0", # Required for NCP HMAC-SHA256 signatures
42
- "netifaces>=0.11.0,<1.0.0",
43
- "tqdm>=4.67.0,<5.0.0",
44
- "jsonschema>=4.23.0,<5.0.0",
45
- "python-dateutil>=2.8.0,<3.0.0",
46
- "click>=8.0.0,<9.0.0",
47
- "packaging>=21.0,<25.0",
48
- "setuptools>=61.0,<71.0",
49
- # Configuration system dependencies
50
- "watchdog>=3.0.0,<4.0.0",
51
- "cerberus>=1.3.4,<2.0.0",
52
- "pydantic>=2.0.0,<3.0.0",
53
- "InquirerPy>=0.3.4,<1.0.0",
54
- ]
55
-
56
- [project.optional-dependencies]
57
- dev = [
58
- "pytest>=7.0.0",
59
- "pytest-cov>=4.0.0",
60
- "black>=22.0.0",
61
- "flake8>=5.0.0",
62
- "mypy>=0.991",
63
- ]
64
-
65
- [project.urls]
66
- "Homepage" = "https://github.com/dgr009/ic"
67
- "Bug Reports" = "https://github.com/dgr009/ic/issues"
68
- "Source" = "https://github.com/dgr009/ic"
69
- "Documentation" = "https://github.com/dgr009/ic#readme"
70
-
71
- [project.scripts]
72
- ic = "ic.cli:main"
73
-
74
- [tool.setuptools.packages.find]
75
- where = ["src"]
76
- include = ["ic*", "common*", "mcp*"]
77
-
78
- [tool.setuptools]
79
- include-package-data = true
80
-
81
- [tool.setuptools.package-data]
82
- "*" = ["*.yaml", "*.yml", "*.json", "*.md", "*.txt"]
83
-
84
- [tool.black]
85
- line-length = 88
86
- target-version = ['py39']
87
- include = '\.pyi?$'
88
- extend-exclude = '''
89
- /(
90
- # directories
91
- \.eggs
92
- | \.git
93
- | \.hg
94
- | \.mypy_cache
95
- | \.tox
96
- | \.venv
97
- | build
98
- | dist
99
- )/
100
- '''
101
-
102
- [tool.pytest.ini_options]
103
- minversion = "6.0"
104
- addopts = "-ra -q --strict-markers --tb=short"
105
- testpaths = [
106
- "tests",
107
- ]
108
- python_files = [
109
- "test_*.py",
110
- "*_test.py",
111
- ]
112
- markers = [
113
- "unit: Unit tests",
114
- "integration: Integration tests",
115
- "performance: Performance tests",
116
- "security: Security tests",
117
- "slow: Slow running tests",
118
- "ci_safe: Tests safe to run in CI environment",
119
- "requires_config: Tests that require configuration files",
120
- "requires_credentials: Tests that require live credentials"
121
- ]
@@ -1,26 +0,0 @@
1
- boto3<2.0.0,>=1.26.0
2
- botocore<2.0.0,>=1.29.0
3
- requests<3.0.0,>=2.28.0
4
- rich<15.0.0,>=12.0.0
5
- PyYAML<7.0.0,>=6.0
6
- paramiko<5.0.0,>=2.11.0
7
- python-dotenv<2.0.0,>=0.19.0
8
- cryptography<50.0.0,>=3.4.8
9
- netifaces<1.0.0,>=0.11.0
10
- tqdm<5.0.0,>=4.67.0
11
- jsonschema<5.0.0,>=4.23.0
12
- python-dateutil<3.0.0,>=2.8.0
13
- click<9.0.0,>=8.0.0
14
- packaging<25.0,>=21.0
15
- setuptools<71.0,>=61.0
16
- watchdog<4.0.0,>=3.0.0
17
- cerberus<2.0.0,>=1.3.4
18
- pydantic<3.0.0,>=2.0.0
19
- InquirerPy<1.0.0,>=0.3.4
20
-
21
- [dev]
22
- pytest>=7.0.0
23
- pytest-cov>=4.0.0
24
- black>=22.0.0
25
- flake8>=5.0.0
26
- mypy>=0.991
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes