ic-code 1.0.9__tar.gz → 1.1.1__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 (257) hide show
  1. {ic_code-1.0.9/src/ic_code.egg-info → ic_code-1.1.1}/PKG-INFO +1 -1
  2. {ic_code-1.0.9 → ic_code-1.1.1}/common/ncp_utils.py +2 -2
  3. {ic_code-1.0.9 → ic_code-1.1.1}/common/ncpgov_utils.py +2 -2
  4. ic_code-1.1.1/docs/ssh/configuration.md +109 -0
  5. {ic_code-1.0.9 → ic_code-1.1.1}/pyproject.toml +1 -1
  6. {ic_code-1.0.9 → ic_code-1.1.1}/scripts/cli_usage_analysis.py +4 -4
  7. {ic_code-1.0.9 → ic_code-1.1.1}/scripts/fix_consolidated_imports.py +3 -3
  8. {ic_code-1.0.9 → ic_code-1.1.1}/setup.py +1 -1
  9. ic_code-1.1.1/src/ic/__init__.py +36 -0
  10. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/cli.py +137 -57
  11. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/commands/config.py +4 -18
  12. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/commands/migration.py +4 -1
  13. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/migration/__init__.py +4 -1
  14. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/migration/post_validation.py +52 -13
  15. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncp/ec2/info.py +4 -1
  16. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncp/rds/info.py +4 -1
  17. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncp/s3/info.py +4 -1
  18. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncp/sg/info.py +4 -1
  19. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncp/vpc/info.py +4 -1
  20. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncpgov/ec2/info.py +8 -2
  21. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncpgov/rds/info.py +4 -1
  22. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncpgov/s3/info.py +8 -2
  23. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncpgov/sg/info.py +4 -1
  24. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncpgov/vpc/info.py +4 -1
  25. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/lb/info.py +4 -1
  26. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/nsg/info.py +4 -1
  27. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/obj/info.py +4 -1
  28. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/policy/info.py +4 -1
  29. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/vcn/info.py +4 -1
  30. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/vm/info.py +4 -1
  31. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/volume/info.py +4 -1
  32. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ssh/auto_ssh.py +30 -4
  33. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ssh/server_info.py +24 -2
  34. {ic_code-1.0.9 → ic_code-1.1.1/src/ic_code.egg-info}/PKG-INFO +1 -1
  35. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic_code.egg-info/SOURCES.txt +1 -0
  36. ic_code-1.0.9/src/ic/__init__.py +0 -29
  37. {ic_code-1.0.9 → ic_code-1.1.1}/CHANGELOG.md +0 -0
  38. {ic_code-1.0.9 → ic_code-1.1.1}/LICENSE +0 -0
  39. {ic_code-1.0.9 → ic_code-1.1.1}/MANIFEST.in +0 -0
  40. {ic_code-1.0.9 → ic_code-1.1.1}/README.md +0 -0
  41. {ic_code-1.0.9 → ic_code-1.1.1}/SECURITY.md +0 -0
  42. {ic_code-1.0.9 → ic_code-1.1.1}/common/__init__.py +0 -0
  43. {ic_code-1.0.9 → ic_code-1.1.1}/common/azure_utils.py +0 -0
  44. {ic_code-1.0.9 → ic_code-1.1.1}/common/gather_env.py +0 -0
  45. {ic_code-1.0.9 → ic_code-1.1.1}/common/gcp_config_validator.py +0 -0
  46. {ic_code-1.0.9 → ic_code-1.1.1}/common/gcp_monitoring.py +0 -0
  47. {ic_code-1.0.9 → ic_code-1.1.1}/common/gcp_utils.py +0 -0
  48. {ic_code-1.0.9 → ic_code-1.1.1}/common/log.py +0 -0
  49. {ic_code-1.0.9 → ic_code-1.1.1}/common/ncp_security_utils.py +0 -0
  50. {ic_code-1.0.9 → ic_code-1.1.1}/common/progress_decorator.py +0 -0
  51. {ic_code-1.0.9 → ic_code-1.1.1}/common/slack.py +0 -0
  52. {ic_code-1.0.9 → ic_code-1.1.1}/common/utils.py +0 -0
  53. {ic_code-1.0.9 → ic_code-1.1.1}/docs/README.md +0 -0
  54. {ic_code-1.0.9 → ic_code-1.1.1}/docs/_templates/configuration.md +0 -0
  55. {ic_code-1.0.9 → ic_code-1.1.1}/docs/_templates/installation.md +0 -0
  56. {ic_code-1.0.9 → ic_code-1.1.1}/docs/_templates/troubleshooting.md +0 -0
  57. {ic_code-1.0.9 → ic_code-1.1.1}/docs/_templates/usage.md +0 -0
  58. {ic_code-1.0.9 → ic_code-1.1.1}/docs/aws/AWS_IMPLEMENTATION_SUMMARY.md +0 -0
  59. {ic_code-1.0.9 → ic_code-1.1.1}/docs/aws/README.md +0 -0
  60. {ic_code-1.0.9 → ic_code-1.1.1}/docs/aws/aws_cli_prd.md +0 -0
  61. {ic_code-1.0.9 → ic_code-1.1.1}/docs/aws/installation.md +0 -0
  62. {ic_code-1.0.9 → ic_code-1.1.1}/docs/azure/README.md +0 -0
  63. {ic_code-1.0.9 → ic_code-1.1.1}/docs/config_migration.md +0 -0
  64. {ic_code-1.0.9 → ic_code-1.1.1}/docs/deployment.md +0 -0
  65. {ic_code-1.0.9 → ic_code-1.1.1}/docs/gcp/GCP_CONFIGURATION_GUIDE.md +0 -0
  66. {ic_code-1.0.9 → ic_code-1.1.1}/docs/gcp/GCP_SECURITY_BEST_PRACTICES.md +0 -0
  67. {ic_code-1.0.9 → ic_code-1.1.1}/docs/gcp/README.md +0 -0
  68. {ic_code-1.0.9 → ic_code-1.1.1}/docs/general/configuration.md +0 -0
  69. {ic_code-1.0.9 → ic_code-1.1.1}/docs/installation.md +0 -0
  70. {ic_code-1.0.9 → ic_code-1.1.1}/docs/mcp_integration.md +0 -0
  71. {ic_code-1.0.9 → ic_code-1.1.1}/docs/migration.md +0 -0
  72. {ic_code-1.0.9 → ic_code-1.1.1}/docs/migration_guide.md +0 -0
  73. {ic_code-1.0.9 → ic_code-1.1.1}/docs/ncp/README.md +0 -0
  74. {ic_code-1.0.9 → ic_code-1.1.1}/docs/ncp/configuration.md +0 -0
  75. {ic_code-1.0.9 → ic_code-1.1.1}/docs/ncp/installation.md +0 -0
  76. {ic_code-1.0.9 → ic_code-1.1.1}/docs/ncp/troubleshooting.md +0 -0
  77. {ic_code-1.0.9 → ic_code-1.1.1}/docs/ncp/usage.md +0 -0
  78. {ic_code-1.0.9 → ic_code-1.1.1}/docs/ncpgov/README.md +0 -0
  79. {ic_code-1.0.9 → ic_code-1.1.1}/docs/ncpgov/installation.md +0 -0
  80. {ic_code-1.0.9 → ic_code-1.1.1}/docs/oci/README.md +0 -0
  81. {ic_code-1.0.9 → ic_code-1.1.1}/docs/oci/installation.md +0 -0
  82. {ic_code-1.0.9 → ic_code-1.1.1}/docs/security.md +0 -0
  83. {ic_code-1.0.9 → ic_code-1.1.1}/docs/troubleshooting.md +0 -0
  84. {ic_code-1.0.9 → ic_code-1.1.1}/docs/user_guide.md +0 -0
  85. {ic_code-1.0.9 → ic_code-1.1.1}/mcp/__init__.py +0 -0
  86. {ic_code-1.0.9 → ic_code-1.1.1}/mcp/gcp_connector.py +0 -0
  87. {ic_code-1.0.9 → ic_code-1.1.1}/requirements.txt +0 -0
  88. {ic_code-1.0.9 → ic_code-1.1.1}/scripts/analysis_summary.py +0 -0
  89. {ic_code-1.0.9 → ic_code-1.1.1}/scripts/bump-version.sh +0 -0
  90. {ic_code-1.0.9 → ic_code-1.1.1}/scripts/cf_edge_nsg_make/cf_edge_nsg_make.py +0 -0
  91. {ic_code-1.0.9 → ic_code-1.1.1}/scripts/dependency_mapper.py +0 -0
  92. {ic_code-1.0.9 → ic_code-1.1.1}/scripts/deploy.sh +0 -0
  93. {ic_code-1.0.9 → ic_code-1.1.1}/scripts/final_validation_and_documentation.py +0 -0
  94. {ic_code-1.0.9 → ic_code-1.1.1}/scripts/migration_execution_and_validation.py +0 -0
  95. {ic_code-1.0.9 → ic_code-1.1.1}/scripts/ncp_security_scanner.py +0 -0
  96. {ic_code-1.0.9 → ic_code-1.1.1}/scripts/oracle-policy/user_policy.py +0 -0
  97. {ic_code-1.0.9 → ic_code-1.1.1}/scripts/performance_optimization.py +0 -0
  98. {ic_code-1.0.9 → ic_code-1.1.1}/scripts/setup_venv.py +0 -0
  99. {ic_code-1.0.9 → ic_code-1.1.1}/scripts/unset_env.sh +0 -0
  100. {ic_code-1.0.9 → ic_code-1.1.1}/scripts/validate_config.py +0 -0
  101. {ic_code-1.0.9 → ic_code-1.1.1}/scripts/validate_dependencies.py +0 -0
  102. {ic_code-1.0.9 → ic_code-1.1.1}/scripts/validate_ncp_security.py +0 -0
  103. {ic_code-1.0.9 → ic_code-1.1.1}/setup.cfg +0 -0
  104. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/commands/__init__.py +0 -0
  105. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/commands/security.py +0 -0
  106. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/compat/__init__.py +0 -0
  107. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/compat/cli.py +0 -0
  108. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/compat/common.py +0 -0
  109. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/config/__init__.py +0 -0
  110. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/config/cleanup.py +0 -0
  111. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/config/docs_organizer.py +0 -0
  112. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/config/external.py +0 -0
  113. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/config/installer.py +0 -0
  114. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/config/manager.py +0 -0
  115. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/config/migration.py +0 -0
  116. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/config/migration_utils.py +0 -0
  117. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/config/path_manager.py +0 -0
  118. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/config/schema.py +0 -0
  119. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/config/secrets.py +0 -0
  120. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/config/security.py +0 -0
  121. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/core/__init__.py +0 -0
  122. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/core/dependency_validator.py +0 -0
  123. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/core/logging.py +0 -0
  124. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/core/mcp_manager.py +0 -0
  125. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/core/session.py +0 -0
  126. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/core/silence_logging.py +0 -0
  127. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/migration/manager.py +0 -0
  128. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/migration/rollback.py +0 -0
  129. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/migration/validation.py +0 -0
  130. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/__init__.py +0 -0
  131. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/__init__.py +0 -0
  132. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/cloudfront/__init__.py +0 -0
  133. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/cloudfront/info.py +0 -0
  134. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/codepipeline/__init__.py +0 -0
  135. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/codepipeline/build.py +0 -0
  136. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/codepipeline/deploy.py +0 -0
  137. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/ec2/__init__.py +0 -0
  138. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/ec2/info.py +0 -0
  139. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/ec2/list_tags.py +0 -0
  140. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/ec2/tag_check.py +0 -0
  141. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/ecs/__init__.py +0 -0
  142. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/ecs/info.py +0 -0
  143. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/ecs/service.py +0 -0
  144. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/ecs/task.py +0 -0
  145. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/eks/__init__.py +0 -0
  146. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/eks/addons.py +0 -0
  147. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/eks/fargate.py +0 -0
  148. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/eks/info.py +0 -0
  149. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/eks/nodes.py +0 -0
  150. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/eks/pods.py +0 -0
  151. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/eks/update_config.py +0 -0
  152. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/fargate/__init__.py +0 -0
  153. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/fargate/info.py +0 -0
  154. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/lb/__init__.py +0 -0
  155. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/lb/info.py +0 -0
  156. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/lb/list_tags.py +0 -0
  157. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/lb/tag_check.py +0 -0
  158. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/msk/__init__.py +0 -0
  159. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/msk/broker.py +0 -0
  160. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/msk/info.py +0 -0
  161. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/nat/__init__.py +0 -0
  162. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/nat/list_tags.py +0 -0
  163. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/nat/tag_check.py +0 -0
  164. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/profile/__init__.py +0 -0
  165. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/profile/info.py +0 -0
  166. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/rds/__init__.py +0 -0
  167. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/rds/info.py +0 -0
  168. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/rds/list_tags.py +0 -0
  169. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/rds/tag_check.py +0 -0
  170. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/s3/__init__.py +0 -0
  171. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/s3/info.py +0 -0
  172. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/s3/list_tags.py +0 -0
  173. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/s3/tag_check.py +0 -0
  174. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/sg/__init__.py +0 -0
  175. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/sg/info.py +0 -0
  176. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/vpc/__init__.py +0 -0
  177. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/vpc/info.py +0 -0
  178. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/vpc/list_tags.py +0 -0
  179. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/vpc/tag_check.py +0 -0
  180. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/vpn/__init__.py +0 -0
  181. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/vpn/info.py +0 -0
  182. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/azure/__init__.py +0 -0
  183. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/azure/aci/info.py +0 -0
  184. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/azure/aks/info.py +0 -0
  185. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/azure/lb/info.py +0 -0
  186. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/azure/nsg/info.py +0 -0
  187. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/azure/storage/info.py +0 -0
  188. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/azure/vm/info.py +0 -0
  189. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/azure/vnet/info.py +0 -0
  190. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/cloudflare/__init__.py +0 -0
  191. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/cloudflare/dns/__init__.py +0 -0
  192. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/cloudflare/dns/list_info.py +0 -0
  193. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/__init__.py +0 -0
  194. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/billing/__init__.py +0 -0
  195. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/billing/info.py +0 -0
  196. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/compute/__init__.py +0 -0
  197. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/compute/info.py +0 -0
  198. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/firewall/__init__.py +0 -0
  199. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/firewall/info.py +0 -0
  200. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/functions/__init__.py +0 -0
  201. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/functions/info.py +0 -0
  202. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/gke/__init__.py +0 -0
  203. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/gke/info.py +0 -0
  204. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/lb/__init__.py +0 -0
  205. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/lb/info.py +0 -0
  206. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/run/__init__.py +0 -0
  207. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/run/info.py +0 -0
  208. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/sql/__init__.py +0 -0
  209. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/sql/info.py +0 -0
  210. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/storage/__init__.py +0 -0
  211. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/storage/info.py +0 -0
  212. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/vpc/__init__.py +0 -0
  213. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/vpc/info.py +0 -0
  214. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncp/__init__.py +0 -0
  215. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncp/client.py +0 -0
  216. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncp/ec2/__init__.py +0 -0
  217. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncp/rds/__init__.py +0 -0
  218. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncp/s3/__init__.py +0 -0
  219. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncp/sg/__init__.py +0 -0
  220. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncp/vpc/__init__.py +0 -0
  221. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncpgov/__init__.py +0 -0
  222. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncpgov/client.py +0 -0
  223. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncpgov/ec2/__init__.py +0 -0
  224. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncpgov/rds/__init__.py +0 -0
  225. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncpgov/s3/__init__.py +0 -0
  226. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncpgov/sg/__init__.py +0 -0
  227. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncpgov/vpc/__init__.py +0 -0
  228. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/__init__.py +0 -0
  229. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/common/__init__.py +0 -0
  230. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/common/utils.py +0 -0
  231. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/compartment/__init__.py +0 -0
  232. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/compartment/info.py +0 -0
  233. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/cost/__init__.py +0 -0
  234. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/cost/credit.py +0 -0
  235. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/cost/usage.py +0 -0
  236. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/info/__init__.py +0 -0
  237. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/info/oci_info.py +0 -0
  238. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/lb/__init__.py +0 -0
  239. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/nsg/__init__.py +0 -0
  240. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/obj/__init__.py +0 -0
  241. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/policy/__init__.py +0 -0
  242. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/policy/search.py +0 -0
  243. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/vcn/__init__.py +0 -0
  244. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/vm/__init__.py +0 -0
  245. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/volume/__init__.py +0 -0
  246. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ssh/__init__.py +0 -0
  247. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/security/__init__.py +0 -0
  248. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/security/config.py +0 -0
  249. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/security/detector.py +0 -0
  250. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/security/guidance.py +0 -0
  251. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/security/hooks.py +0 -0
  252. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/security/patterns.py +0 -0
  253. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/security/scanner.py +0 -0
  254. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic_code.egg-info/dependency_links.txt +0 -0
  255. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic_code.egg-info/entry_points.txt +0 -0
  256. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic_code.egg-info/requires.txt +0 -0
  257. {ic_code-1.0.9 → ic_code-1.1.1}/src/ic_code.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ic-code
3
- Version: 1.0.9
3
+ Version: 1.1.1
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
@@ -32,7 +32,7 @@ def get_ncp_config_path() -> Path:
32
32
  """NCP 설정 파일 경로 반환 (hierarchical lookup)"""
33
33
  # Import here to avoid circular imports
34
34
  try:
35
- from src.ic.config.path_manager import ConfigPathManager
35
+ from ic.config.path_manager import ConfigPathManager
36
36
  path_manager = ConfigPathManager()
37
37
  config_path = path_manager.get_ncp_config_path()
38
38
  if config_path:
@@ -64,7 +64,7 @@ def load_ncp_config(profile: str = 'default') -> Dict[str, Any]:
64
64
  """
65
65
  try:
66
66
  # Try to use ConfigManager for hierarchical lookup
67
- from src.ic.config.manager import ConfigManager
67
+ from ic.config.manager import ConfigManager
68
68
  config_manager = ConfigManager()
69
69
 
70
70
  # Monitor configuration access
@@ -29,7 +29,7 @@ def get_ncpgov_config_path() -> Path:
29
29
  """NCP Gov 설정 파일 경로 반환 (hierarchical lookup)"""
30
30
  # Import here to avoid circular imports
31
31
  try:
32
- from src.ic.config.path_manager import ConfigPathManager
32
+ from ic.config.path_manager import ConfigPathManager
33
33
  path_manager = ConfigPathManager()
34
34
  config_path = path_manager.get_ncpgov_config_path()
35
35
  if config_path:
@@ -61,7 +61,7 @@ def load_ncpgov_config(profile: str = 'default') -> Dict[str, Any]:
61
61
  """
62
62
  try:
63
63
  # Try to use ConfigManager for hierarchical lookup
64
- from src.ic.config.manager import ConfigManager
64
+ from ic.config.manager import ConfigManager
65
65
  config_manager = ConfigManager()
66
66
 
67
67
  # Monitor configuration access for government cloud
@@ -0,0 +1,109 @@
1
+ # SSH Configuration Guide
2
+
3
+ ## SSH Host Key Policy 설정
4
+
5
+ IC CLI의 SSH 기능은 보안을 위해 다양한 호스트 키 정책을 지원합니다.
6
+
7
+ ### 설정 방법
8
+
9
+ `~/.ic/config/default.yaml` 파일에서 SSH 설정을 수정할 수 있습니다:
10
+
11
+ ```yaml
12
+ ssh:
13
+ config_file: ~/.ssh/config
14
+ key_dir: ~/.ssh
15
+ timeout: 5
16
+ workers: 20
17
+ host_key_policy: auto # 새로 추가된 설정
18
+ skip_prefixes:
19
+ - git
20
+ - test
21
+ ```
22
+
23
+ ### Host Key Policy 옵션
24
+
25
+ 1. **auto** (기본값, 권장)
26
+ - 처음 연결하는 호스트의 키를 자동으로 `~/.ssh/known_hosts`에 추가
27
+ - 편의성과 보안의 균형을 제공
28
+ - 대부분의 사용 사례에 적합
29
+
30
+ 2. **warning**
31
+ - 알려지지 않은 호스트에 대해 경고를 출력하지만 연결 허용
32
+ - 개발 환경이나 테스트 환경에 적합
33
+ - 보안 경고를 확인할 수 있음
34
+
35
+ 3. **reject**
36
+ - 알려지지 않은 호스트에 대한 연결을 거부
37
+ - 최고 수준의 보안
38
+ - 프로덕션 환경에 적합하지만 초기 설정이 복잡할 수 있음
39
+
40
+ ### 환경 변수 오버라이드
41
+
42
+ 개발이나 테스트 목적으로 임시로 정책을 변경할 수 있습니다:
43
+
44
+ ```bash
45
+ # 테스트 모드 (경고 정책 사용)
46
+ IC_TEST_MODE=1 ic ssh info
47
+
48
+ # 개발 모드 (경고 정책 사용)
49
+ IC_DEV_MODE=1 ic ssh info
50
+ ```
51
+
52
+ ### 보안 고려사항
53
+
54
+ - **프로덕션 환경**: `reject` 정책 사용 권장
55
+ - **개발 환경**: `auto` 또는 `warning` 정책 사용 권장
56
+ - **CI/CD 환경**: `IC_TEST_MODE=1` 환경 변수 사용 권장
57
+
58
+ ### 문제 해결
59
+
60
+ #### 모든 서버가 "Connection Fail"로 표시되는 경우
61
+
62
+ 1. **임시 해결책**:
63
+ ```bash
64
+ IC_DEV_MODE=1 ic ssh info
65
+ ```
66
+
67
+ 2. **영구 해결책**:
68
+ 설정 파일에서 `host_key_policy`를 `auto`로 변경:
69
+ ```yaml
70
+ ssh:
71
+ host_key_policy: auto
72
+ ```
73
+
74
+ 3. **known_hosts 파일 확인**:
75
+ ```bash
76
+ ls -la ~/.ssh/known_hosts
77
+ ```
78
+
79
+ #### 특정 서버만 연결 실패하는 경우
80
+
81
+ 1. SSH 키 권한 확인:
82
+ ```bash
83
+ chmod 600 ~/.ssh/id_rsa
84
+ chmod 644 ~/.ssh/id_rsa.pub
85
+ ```
86
+
87
+ 2. SSH 설정 파일 확인:
88
+ ```bash
89
+ ssh -T [hostname]
90
+ ```
91
+
92
+ ### 예제 설정
93
+
94
+ 완전한 SSH 설정 예제:
95
+
96
+ ```yaml
97
+ ssh:
98
+ config_file: ~/.ssh/config
99
+ key_dir: ~/.ssh
100
+ timeout: 10
101
+ workers: 30
102
+ host_key_policy: auto
103
+ skip_prefixes:
104
+ - git
105
+ - github
106
+ - gitlab
107
+ - test-
108
+ - temp-
109
+ ```
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "ic-code"
7
- version = "1.0.9"
7
+ version = "1.1.1"
8
8
  authors = [
9
9
  {name = "sykim", email = "cruiser594@gmail.com"},
10
10
  ]
@@ -400,10 +400,10 @@ class CLIUsageAnalyzer:
400
400
  old_import = f"from {imp.module_path} import {imp.imported_name}"
401
401
  if imp.module_path.startswith('ncp.'):
402
402
  service = imp.module_path.split('.')[1]
403
- new_import = f"from src.ic.platforms.ncp.{service} import {imp.imported_name}"
403
+ new_import = f"from ic.platforms.ncp.{service} import {imp.imported_name}"
404
404
  elif imp.module_path.startswith('ncp_module.'):
405
405
  service = imp.module_path.split('.')[1]
406
- new_import = f"from src.ic.platforms.ncp.{service} import {imp.imported_name}"
406
+ new_import = f"from ic.platforms.ncp.{service} import {imp.imported_name}"
407
407
  else:
408
408
  new_import = old_import
409
409
 
@@ -413,10 +413,10 @@ class CLIUsageAnalyzer:
413
413
  old_import = f"from {imp.module_path} import {imp.imported_name}"
414
414
  if imp.module_path.startswith('ncpgov.'):
415
415
  service = imp.module_path.split('.')[1]
416
- new_import = f"from src.ic.platforms.ncpgov.{service} import {imp.imported_name}"
416
+ new_import = f"from ic.platforms.ncpgov.{service} import {imp.imported_name}"
417
417
  elif imp.module_path.startswith('ncpgov_module.'):
418
418
  service = imp.module_path.split('.')[1]
419
- new_import = f"from src.ic.platforms.ncpgov.{service} import {imp.imported_name}"
419
+ new_import = f"from ic.platforms.ncpgov.{service} import {imp.imported_name}"
420
420
  else:
421
421
  new_import = old_import
422
422
 
@@ -40,7 +40,7 @@ def fix_consolidated_imports():
40
40
  # Fix imports in the content
41
41
  content = content.replace(
42
42
  "from ncp_module.client import NCPClient, NCPAPIError",
43
- "from src.ic.platforms.ncp.client import NCPClient, NCPAPIError"
43
+ "from ic.platforms.ncp.client import NCPClient, NCPAPIError"
44
44
  )
45
45
 
46
46
  # Write to consolidated location
@@ -68,11 +68,11 @@ def fix_consolidated_imports():
68
68
  # Fix imports in the content
69
69
  content = content.replace(
70
70
  "from ncpgov_module.client import NCPGovClient, NCPAPIError",
71
- "from src.ic.platforms.ncpgov.client import NCPGovClient, NCPAPIError"
71
+ "from ic.platforms.ncpgov.client import NCPGovClient, NCPAPIError"
72
72
  )
73
73
  content = content.replace(
74
74
  "from ncp_module.client import NCPClient, NCPAPIError",
75
- "from src.ic.platforms.ncp.client import NCPClient, NCPAPIError"
75
+ "from ic.platforms.ncp.client import NCPClient, NCPAPIError"
76
76
  )
77
77
 
78
78
  # Write to consolidated location
@@ -61,7 +61,7 @@ class PostInstallCommand(install):
61
61
  """Run post-installation configuration setup."""
62
62
  try:
63
63
  # Import here to avoid import errors during setup
64
- from src.ic.config.installer import ConfigInstaller
64
+ from ic.config.installer import ConfigInstaller
65
65
 
66
66
  installer = ConfigInstaller()
67
67
 
@@ -0,0 +1,36 @@
1
+ """
2
+ IC (Infra Resource Management CLI) - A comprehensive tool for managing cloud infrastructure resources.
3
+
4
+ This package provides CLI tools and libraries for managing AWS, Azure, GCP, OCI, and CloudFlare resources.
5
+ """
6
+
7
+ __version__ = "2.0.0"
8
+ __author__ = "SangYun"
9
+ __email__ = "cruiser594@gmail.com"
10
+
11
+ # Core components
12
+ try:
13
+ from .core.mcp_manager import MCPManager, MCPQueryResult, create_default_mcp_config
14
+ from .config.security import SecurityManager
15
+ from .config.manager import ConfigManager
16
+ from .core.logging import ICLogger
17
+ from .core.session import AWSSessionManager
18
+ except ImportError:
19
+ from ic.core.mcp_manager import MCPManager, MCPQueryResult, create_default_mcp_config
20
+ from ic.config.security import SecurityManager
21
+ from ic.config.manager import ConfigManager
22
+ from ic.core.logging import ICLogger
23
+ from ic.core.session import AWSSessionManager
24
+
25
+ __all__ = [
26
+ "__version__",
27
+ "__author__",
28
+ "__email__",
29
+ "MCPManager",
30
+ "MCPQueryResult",
31
+ "create_default_mcp_config",
32
+ "SecurityManager",
33
+ "ConfigManager",
34
+ "ICLogger",
35
+ "AWSSessionManager"
36
+ ]
@@ -181,63 +181,128 @@ try:
181
181
  except ImportError:
182
182
  pass
183
183
  # AWS imports - Unified module structure
184
- from src.ic.platforms.aws.ec2 import list_tags as ec2_list_tags
185
- from src.ic.platforms.aws.ec2 import tag_check as ec2_tag_check
186
- from src.ic.platforms.aws.ec2 import info as ec2_info
187
- from src.ic.platforms.aws.lb import list_tags as lb_list_tags
188
- from src.ic.platforms.aws.lb import tag_check as lb_tag_check
189
- from src.ic.platforms.aws.vpc import tag_check as vpc_tag_check
190
- from src.ic.platforms.aws.vpc import list_tags as vpc_list_tags
191
- from src.ic.platforms.aws.rds import list_tags as rds_list_tags
192
- from src.ic.platforms.aws.rds import tag_check as rds_tag_check
193
- from src.ic.platforms.aws.s3 import list_tags as s3_list_tags
194
- from src.ic.platforms.aws.s3 import tag_check as s3_tag_check
195
- from src.ic.platforms.aws.sg import info as sg_info
196
- from src.ic.platforms.aws.eks import info as eks_info
197
- from src.ic.platforms.aws.eks import nodes as eks_nodes
198
- from src.ic.platforms.aws.eks import pods as eks_pods
199
- from src.ic.platforms.aws.eks import fargate as eks_fargate
200
- from src.ic.platforms.aws.eks import addons as eks_addons
201
- from src.ic.platforms.aws.eks import update_config as eks_update_config
202
- from src.ic.platforms.aws.fargate import info as fargate_info
203
- from src.ic.platforms.aws.codepipeline import build as codepipeline_build
204
- from src.ic.platforms.aws.codepipeline import deploy as codepipeline_deploy
205
- from src.ic.platforms.aws.ecs import info as ecs_info
206
- from src.ic.platforms.aws.ecs import service as ecs_service
207
- from src.ic.platforms.aws.ecs import task as ecs_task
208
- from src.ic.platforms.aws.msk import info as msk_info
209
- from src.ic.platforms.aws.msk import broker as msk_broker
210
- from src.ic.platforms.aws.profile.info import ProfileInfoCollector, ProfileTableRenderer
211
- from src.ic.platforms.aws.cloudfront.info import CloudFrontCollector, CloudFrontRenderer
184
+ try:
185
+ from .platforms.aws.ec2 import list_tags as ec2_list_tags
186
+ from .platforms.aws.ec2 import tag_check as ec2_tag_check
187
+ from .platforms.aws.ec2 import info as ec2_info
188
+ from .platforms.aws.lb import list_tags as lb_list_tags
189
+ from .platforms.aws.lb import tag_check as lb_tag_check
190
+ from .platforms.aws.vpc import tag_check as vpc_tag_check
191
+ from .platforms.aws.vpc import list_tags as vpc_list_tags
192
+ from .platforms.aws.rds import list_tags as rds_list_tags
193
+ from .platforms.aws.rds import tag_check as rds_tag_check
194
+ from .platforms.aws.s3 import list_tags as s3_list_tags
195
+ from .platforms.aws.s3 import tag_check as s3_tag_check
196
+ from .platforms.aws.sg import info as sg_info
197
+ from .platforms.aws.eks import info as eks_info
198
+ from .platforms.aws.eks import nodes as eks_nodes
199
+ from .platforms.aws.eks import pods as eks_pods
200
+ from .platforms.aws.eks import fargate as eks_fargate
201
+ from .platforms.aws.eks import addons as eks_addons
202
+ from .platforms.aws.eks import update_config as eks_update_config
203
+ from .platforms.aws.fargate import info as fargate_info
204
+ from .platforms.aws.codepipeline import build as codepipeline_build
205
+ from .platforms.aws.codepipeline import deploy as codepipeline_deploy
206
+ from .platforms.aws.ecs import info as ecs_info
207
+ from .platforms.aws.ecs import service as ecs_service
208
+ from .platforms.aws.ecs import task as ecs_task
209
+ from .platforms.aws.msk import info as msk_info
210
+ from .platforms.aws.msk import broker as msk_broker
211
+ from .platforms.aws.profile.info import ProfileInfoCollector, ProfileTableRenderer
212
+ from .platforms.aws.cloudfront.info import CloudFrontCollector, CloudFrontRenderer
213
+ except ImportError:
214
+ # Fallback for installed package
215
+ from ic.platforms.aws.ec2 import list_tags as ec2_list_tags
216
+ from ic.platforms.aws.ec2 import tag_check as ec2_tag_check
217
+ from ic.platforms.aws.ec2 import info as ec2_info
218
+ from ic.platforms.aws.lb import list_tags as lb_list_tags
219
+ from ic.platforms.aws.lb import tag_check as lb_tag_check
220
+ from ic.platforms.aws.vpc import tag_check as vpc_tag_check
221
+ from ic.platforms.aws.vpc import list_tags as vpc_list_tags
222
+ from ic.platforms.aws.rds import list_tags as rds_list_tags
223
+ from ic.platforms.aws.rds import tag_check as rds_tag_check
224
+ from ic.platforms.aws.s3 import list_tags as s3_list_tags
225
+ from ic.platforms.aws.s3 import tag_check as s3_tag_check
226
+ from ic.platforms.aws.sg import info as sg_info
227
+ from ic.platforms.aws.eks import info as eks_info
228
+ from ic.platforms.aws.eks import nodes as eks_nodes
229
+ from ic.platforms.aws.eks import pods as eks_pods
230
+ from ic.platforms.aws.eks import fargate as eks_fargate
231
+ from ic.platforms.aws.eks import addons as eks_addons
232
+ from ic.platforms.aws.eks import update_config as eks_update_config
233
+ from ic.platforms.aws.fargate import info as fargate_info
234
+ from ic.platforms.aws.codepipeline import build as codepipeline_build
235
+ from ic.platforms.aws.codepipeline import deploy as codepipeline_deploy
236
+ from ic.platforms.aws.ecs import info as ecs_info
237
+ from ic.platforms.aws.ecs import service as ecs_service
238
+ from ic.platforms.aws.ecs import task as ecs_task
239
+ from ic.platforms.aws.msk import info as msk_info
240
+ from ic.platforms.aws.msk import broker as msk_broker
241
+ from ic.platforms.aws.profile.info import ProfileInfoCollector, ProfileTableRenderer
242
+ from ic.platforms.aws.cloudfront.info import CloudFrontCollector, CloudFrontRenderer
212
243
  # CloudFlare imports - Unified module structure
213
- from src.ic.platforms.cloudflare.dns import list_info as dns_info
244
+ try:
245
+ from .platforms.cloudflare.dns import list_info as dns_info
246
+ except ImportError:
247
+ from ic.platforms.cloudflare.dns import list_info as dns_info
214
248
  # OCI imports - Unified module structure
215
- from src.ic.platforms.oci.info import oci_info as oci_info # Deprecated. 통합 oci info
216
- from src.ic.platforms.oci.vm import add_arguments as vm_add_args, main as vm_main
217
- from src.ic.platforms.oci.lb import add_arguments as lb_add_args, main as lb_main
218
- from src.ic.platforms.oci.nsg import add_arguments as nsg_add_args, main as nsg_main
219
- from src.ic.platforms.oci.volume import add_arguments as volume_add_args, main as volume_main
220
- from src.ic.platforms.oci.policy import add_arguments as policy_add_args, main as policy_main
221
- from src.ic.platforms.oci.policy import search as oci_policy_search
222
- from src.ic.platforms.oci.obj import add_arguments as obj_add_args, main as obj_main
223
- from src.ic.platforms.oci.cost.usage import add_arguments as cost_usage_add_args, main as cost_usage_main
224
- from src.ic.platforms.oci.cost.credit import add_arguments as cost_credit_add_args, main as cost_credit_main
225
- from src.ic.platforms.oci.vcn import info as vcn_info
226
- from src.ic.platforms.oci.compartment.info import CompartmentTreeBuilder, CompartmentTreeRenderer
249
+ try:
250
+ from .platforms.oci.info import oci_info as oci_info # Deprecated. 통합 oci info
251
+ from .platforms.oci.vm import add_arguments as vm_add_args, main as vm_main
252
+ from .platforms.oci.lb import add_arguments as lb_add_args, main as lb_main
253
+ from .platforms.oci.nsg import add_arguments as nsg_add_args, main as nsg_main
254
+ from .platforms.oci.volume import add_arguments as volume_add_args, main as volume_main
255
+ from .platforms.oci.policy import add_arguments as policy_add_args, main as policy_main
256
+ from .platforms.oci.policy import search as oci_policy_search
257
+ from .platforms.oci.obj import add_arguments as obj_add_args, main as obj_main
258
+ from .platforms.oci.cost.usage import add_arguments as cost_usage_add_args, main as cost_usage_main
259
+ from .platforms.oci.cost.credit import add_arguments as cost_credit_add_args, main as cost_credit_main
260
+ from .platforms.oci.vcn import info as vcn_info
261
+ from .platforms.oci.compartment.info import CompartmentTreeBuilder, CompartmentTreeRenderer
262
+ except ImportError:
263
+ from ic.platforms.oci.info import oci_info as oci_info # Deprecated. 통합 oci info
264
+ from ic.platforms.oci.vm import add_arguments as vm_add_args, main as vm_main
265
+ from ic.platforms.oci.lb import add_arguments as lb_add_args, main as lb_main
266
+ from ic.platforms.oci.nsg import add_arguments as nsg_add_args, main as nsg_main
267
+ from ic.platforms.oci.volume import add_arguments as volume_add_args, main as volume_main
268
+ from ic.platforms.oci.policy import add_arguments as policy_add_args, main as policy_main
269
+ from ic.platforms.oci.policy import search as oci_policy_search
270
+ from ic.platforms.oci.obj import add_arguments as obj_add_args, main as obj_main
271
+ from ic.platforms.oci.cost.usage import add_arguments as cost_usage_add_args, main as cost_usage_main
272
+ from ic.platforms.oci.cost.credit import add_arguments as cost_credit_add_args, main as cost_credit_main
273
+ from ic.platforms.oci.vcn import info as vcn_info
274
+ from ic.platforms.oci.compartment.info import CompartmentTreeBuilder, CompartmentTreeRenderer
227
275
  # SSH imports - Unified module structure
228
- from src.ic.platforms.ssh import auto_ssh, server_info
276
+ try:
277
+ from .platforms.ssh import auto_ssh, server_info
278
+ except ImportError:
279
+ from ic.platforms.ssh import auto_ssh, server_info
229
280
  # NCP imports - Unified module structure
230
- from src.ic.platforms.ncp.ec2 import info as ncp_ec2_info
231
- from src.ic.platforms.ncp.s3 import info as ncp_s3_info
232
- from src.ic.platforms.ncp.vpc import info as ncp_vpc_info
233
- from src.ic.platforms.ncp.sg import info as ncp_sg_info
234
- from src.ic.platforms.ncp.rds import info as ncp_rds_info
281
+ try:
282
+ from .platforms.ncp.ec2 import info as ncp_ec2_info
283
+ from .platforms.ncp.s3 import info as ncp_s3_info
284
+ from .platforms.ncp.vpc import info as ncp_vpc_info
285
+ from .platforms.ncp.sg import info as ncp_sg_info
286
+ from .platforms.ncp.rds import info as ncp_rds_info
287
+ except ImportError:
288
+ from ic.platforms.ncp.ec2 import info as ncp_ec2_info
289
+ from ic.platforms.ncp.s3 import info as ncp_s3_info
290
+ from ic.platforms.ncp.vpc import info as ncp_vpc_info
291
+ from ic.platforms.ncp.sg import info as ncp_sg_info
292
+ from ic.platforms.ncp.rds import info as ncp_rds_info
235
293
  # NCP Gov imports - Unified module structure
236
- from src.ic.platforms.ncpgov.ec2 import info as ncpgov_ec2_info
237
- from src.ic.platforms.ncpgov.s3 import info as ncpgov_s3_info
238
- from src.ic.platforms.ncpgov.vpc import info as ncpgov_vpc_info
239
- from src.ic.platforms.ncpgov.sg import info as ncpgov_sg_info
240
- from src.ic.platforms.ncpgov.rds import info as ncpgov_rds_info
294
+ try:
295
+ from .platforms.ncpgov.ec2 import info as ncpgov_ec2_info
296
+ from .platforms.ncpgov.s3 import info as ncpgov_s3_info
297
+ from .platforms.ncpgov.vpc import info as ncpgov_vpc_info
298
+ from .platforms.ncpgov.sg import info as ncpgov_sg_info
299
+ from .platforms.ncpgov.rds import info as ncpgov_rds_info
300
+ except ImportError:
301
+ from ic.platforms.ncpgov.ec2 import info as ncpgov_ec2_info
302
+ from ic.platforms.ncpgov.s3 import info as ncpgov_s3_info
303
+ from ic.platforms.ncpgov.vpc import info as ncpgov_vpc_info
304
+ from ic.platforms.ncpgov.sg import info as ncpgov_sg_info
305
+ from ic.platforms.ncpgov.rds import info as ncpgov_rds_info
241
306
  import concurrent.futures
242
307
  from threading import Lock
243
308
 
@@ -516,7 +581,10 @@ def main():
516
581
  lb_check_parser.set_defaults(func=lb_tag_check.main)
517
582
 
518
583
  lb_info_parser = lb_subparsers.add_parser("info", help="LB 상세 정보 조회")
519
- from src.ic.platforms.aws.lb import info as lb_info
584
+ try:
585
+ from .platforms.aws.lb import info as lb_info
586
+ except ImportError:
587
+ from ic.platforms.aws.lb import info as lb_info
520
588
  lb_info.add_arguments(lb_info_parser)
521
589
  lb_info_parser.set_defaults(func=lb_info.main)
522
590
 
@@ -530,14 +598,20 @@ def main():
530
598
  vpc_list_parser.set_defaults(func=vpc_list_tags.main)
531
599
 
532
600
  vpc_info_parser = vpc_subparsers.add_parser("info", help="VPC 상세 정보 조회")
533
- from src.ic.platforms.aws.vpc import info as vpc_info
601
+ try:
602
+ from .platforms.aws.vpc import info as vpc_info
603
+ except ImportError:
604
+ from ic.platforms.aws.vpc import info as vpc_info
534
605
  vpc_info.add_arguments(vpc_info_parser)
535
606
  vpc_info_parser.set_defaults(func=vpc_info.main)
536
607
 
537
608
  vpn_parser = aws_subparsers.add_parser("vpn", help="TGW, VGW, VPN Connection, Endpoint 관련 명령어")
538
609
  vpn_subparsers = vpn_parser.add_subparsers(dest="command", required=True)
539
610
  vpn_info_parser = vpn_subparsers.add_parser("info", help="VPN 관련 상세 정보 조회")
540
- from src.ic.platforms.aws.vpn import info as vpn_info
611
+ try:
612
+ from .platforms.aws.vpn import info as vpn_info
613
+ except ImportError:
614
+ from ic.platforms.aws.vpn import info as vpn_info
541
615
  vpn_info.add_arguments(vpn_info_parser)
542
616
  vpn_info_parser.set_defaults(func=vpn_info.main)
543
617
 
@@ -552,7 +626,10 @@ def main():
552
626
  rds_check_cmd.set_defaults(func=rds_tag_check.main)
553
627
 
554
628
  rds_info_parser = rds_subparsers.add_parser("info", help="RDS 상세 정보 조회")
555
- from src.ic.platforms.aws.rds import info as rds_info
629
+ try:
630
+ from .platforms.aws.rds import info as rds_info
631
+ except ImportError:
632
+ from ic.platforms.aws.rds import info as rds_info
556
633
  rds_info.add_arguments(rds_info_parser)
557
634
  rds_info_parser.set_defaults(func=rds_info.main)
558
635
 
@@ -566,7 +643,10 @@ def main():
566
643
  s3_check_cmd.set_defaults(func=s3_tag_check.main)
567
644
 
568
645
  s3_info_parser = s3_subparsers.add_parser("info", help="S3 상세 정보 조회")
569
- from src.ic.platforms.aws.s3 import info as s3_info
646
+ try:
647
+ from .platforms.aws.s3 import info as s3_info
648
+ except ImportError:
649
+ from ic.platforms.aws.s3 import info as s3_info
570
650
  s3_info.add_arguments(s3_info_parser)
571
651
  s3_info_parser.set_defaults(func=s3_info.main)
572
652
 
@@ -441,22 +441,8 @@ class ConfigCommands:
441
441
  """
442
442
 
443
443
  try:
444
- # Load configuration
445
- self.config_manager.load_config()
446
- config = self.config_manager.get_config()
447
-
448
- # Also load secrets if available
449
- secrets_path = Path.home() / ".ic" / "config" / "secrets.yaml"
450
- if secrets_path.exists():
451
- try:
452
- with open(secrets_path, 'r') as f:
453
- secrets = yaml.safe_load(f) or {}
454
- # Merge secrets into config for display
455
- if 'secrets' not in config:
456
- config['secrets'] = {}
457
- config['secrets'].update(secrets)
458
- except Exception as e:
459
- self.console.print(f"⚠️ Warning: Could not load secrets: {e}")
444
+ # Load all configurations including secrets
445
+ config = self.config_manager.load_all_configs()
460
446
 
461
447
  # Mask sensitive data if requested
462
448
  if args.mask_sensitive:
@@ -556,8 +542,8 @@ class ConfigCommands:
556
542
  args: Command line arguments
557
543
  """
558
544
  try:
559
- # Load configuration
560
- self.config_manager.load_config()
545
+ # Load all configurations including secrets
546
+ self.config_manager.load_all_configs()
561
547
 
562
548
  # Get value
563
549
  value = self.config_manager.get_config_value(args.key_path, args.default)
@@ -15,7 +15,10 @@ try:
15
15
  except ImportError:
16
16
  # Handle case when run directly
17
17
  sys.path.insert(0, str(Path(__file__).parent.parent.parent))
18
- from src.ic.migration import MigrationManager
18
+ try:
19
+ from .migration import MigrationManager
20
+ except ImportError:
21
+ from ic.migration import MigrationManager
19
22
 
20
23
 
21
24
  class MigrationCommands:
@@ -11,7 +11,10 @@ Components:
11
11
  - MigrationManager: Unified interface for managing the complete migration process
12
12
 
13
13
  Usage:
14
- from src.ic.migration import MigrationManager
14
+ try:
15
+ from .migration import MigrationManager
16
+ except ImportError:
17
+ from ic.migration import MigrationManager
15
18
 
16
19
  manager = MigrationManager()
17
20