ic-code 1.7.1__tar.gz → 1.7.2__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 (281) hide show
  1. ic_code-1.7.2/PKG-INFO +688 -0
  2. ic_code-1.7.2/README.md +587 -0
  3. ic_code-1.7.2/docs/installation.md +79 -0
  4. {ic_code-1.7.1 → ic_code-1.7.2}/pyproject.toml +1 -1
  5. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/__init__.py +1 -1
  6. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/cli.py +12 -1
  7. ic_code-1.7.2/src/ic_code.egg-info/PKG-INFO +688 -0
  8. ic_code-1.7.1/PKG-INFO +0 -575
  9. ic_code-1.7.1/README.md +0 -474
  10. ic_code-1.7.1/docs/installation.md +0 -57
  11. ic_code-1.7.1/src/ic_code.egg-info/PKG-INFO +0 -575
  12. {ic_code-1.7.1 → ic_code-1.7.2}/LICENSE +0 -0
  13. {ic_code-1.7.1 → ic_code-1.7.2}/MANIFEST.in +0 -0
  14. {ic_code-1.7.1 → ic_code-1.7.2}/SECURITY.md +0 -0
  15. {ic_code-1.7.1 → ic_code-1.7.2}/config/default.yaml +0 -0
  16. {ic_code-1.7.1 → ic_code-1.7.2}/docs/README.md +0 -0
  17. {ic_code-1.7.1 → ic_code-1.7.2}/docs/aws/README.md +0 -0
  18. {ic_code-1.7.1 → ic_code-1.7.2}/docs/cloudflare/README.md +0 -0
  19. {ic_code-1.7.1 → ic_code-1.7.2}/docs/gcp/README.md +0 -0
  20. {ic_code-1.7.1 → ic_code-1.7.2}/docs/oci/README.md +0 -0
  21. {ic_code-1.7.1 → ic_code-1.7.2}/docs/release-guide.md +0 -0
  22. {ic_code-1.7.1 → ic_code-1.7.2}/docs/security.md +0 -0
  23. {ic_code-1.7.1 → ic_code-1.7.2}/docs/ssh/README.md +0 -0
  24. {ic_code-1.7.1 → ic_code-1.7.2}/docs/tencent/README.md +0 -0
  25. {ic_code-1.7.1 → ic_code-1.7.2}/docs/troubleshooting.md +0 -0
  26. {ic_code-1.7.1 → ic_code-1.7.2}/docs/user_guide.md +0 -0
  27. {ic_code-1.7.1 → ic_code-1.7.2}/requirements.txt +0 -0
  28. {ic_code-1.7.1 → ic_code-1.7.2}/scripts/bump-version.sh +0 -0
  29. {ic_code-1.7.1 → ic_code-1.7.2}/scripts/cf_edge_nsg_make/cf_edge_nsg_make.py +0 -0
  30. {ic_code-1.7.1 → ic_code-1.7.2}/scripts/ci-detect-platforms.py +0 -0
  31. {ic_code-1.7.1 → ic_code-1.7.2}/scripts/ci-generate-matrix.py +0 -0
  32. {ic_code-1.7.1 → ic_code-1.7.2}/scripts/ci-smoke-test.sh +0 -0
  33. {ic_code-1.7.1 → ic_code-1.7.2}/scripts/deploy.sh +0 -0
  34. {ic_code-1.7.1 → ic_code-1.7.2}/scripts/oracle-policy/user_policy.py +0 -0
  35. {ic_code-1.7.1 → ic_code-1.7.2}/setup.cfg +0 -0
  36. {ic_code-1.7.1 → ic_code-1.7.2}/setup.py +0 -0
  37. {ic_code-1.7.1 → ic_code-1.7.2}/src/common/__init__.py +0 -0
  38. {ic_code-1.7.1 → ic_code-1.7.2}/src/common/gather_env.py +0 -0
  39. {ic_code-1.7.1 → ic_code-1.7.2}/src/common/gcp_config_validator.py +0 -0
  40. {ic_code-1.7.1 → ic_code-1.7.2}/src/common/gcp_monitoring.py +0 -0
  41. {ic_code-1.7.1 → ic_code-1.7.2}/src/common/gcp_utils.py +0 -0
  42. {ic_code-1.7.1 → ic_code-1.7.2}/src/common/log.py +0 -0
  43. {ic_code-1.7.1 → ic_code-1.7.2}/src/common/progress_decorator.py +0 -0
  44. {ic_code-1.7.1 → ic_code-1.7.2}/src/common/slack.py +0 -0
  45. {ic_code-1.7.1 → ic_code-1.7.2}/src/common/utils.py +0 -0
  46. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/commands/__init__.py +0 -0
  47. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/commands/config.py +0 -0
  48. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/commands/security.py +0 -0
  49. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/compat/__init__.py +0 -0
  50. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/compat/cli.py +0 -0
  51. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/compat/common.py +0 -0
  52. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/config/__init__.py +0 -0
  53. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/config/cleanup.py +0 -0
  54. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/config/docs_organizer.py +0 -0
  55. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/config/external.py +0 -0
  56. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/config/installer.py +0 -0
  57. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/config/manager.py +0 -0
  58. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/config/migration.py +0 -0
  59. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/config/migration_utils.py +0 -0
  60. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/config/path_manager.py +0 -0
  61. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/config/schema.py +0 -0
  62. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/config/secrets.py +0 -0
  63. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/config/security.py +0 -0
  64. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/core/__init__.py +0 -0
  65. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/core/dependency_validator.py +0 -0
  66. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/core/desc_helper.py +0 -0
  67. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/core/interfaces/__init__.py +0 -0
  68. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/core/interfaces/command.py +0 -0
  69. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/core/interfaces/formatter.py +0 -0
  70. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/core/interfaces/result.py +0 -0
  71. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/core/logging.py +0 -0
  72. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/core/platform_discovery.py +0 -0
  73. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/core/session.py +0 -0
  74. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/core/silence_logging.py +0 -0
  75. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/__init__.py +0 -0
  76. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/__init__.py +0 -0
  77. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/cloudfront/__init__.py +0 -0
  78. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/cloudfront/info.py +0 -0
  79. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/codepipeline/__init__.py +0 -0
  80. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/codepipeline/build.py +0 -0
  81. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/codepipeline/deploy.py +0 -0
  82. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/disk/__init__.py +0 -0
  83. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/disk/info.py +0 -0
  84. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/ebs/__init__.py +0 -0
  85. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/ebs/info.py +0 -0
  86. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/ebs/mock_data.json +0 -0
  87. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/ec2/__init__.py +0 -0
  88. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/ec2/desc.py +0 -0
  89. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/ec2/info.py +0 -0
  90. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/ec2/list_tags.py +0 -0
  91. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/ec2/tag_check.py +0 -0
  92. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/ecs/__init__.py +0 -0
  93. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/ecs/info.py +0 -0
  94. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/ecs/service.py +0 -0
  95. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/ecs/task.py +0 -0
  96. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/eks/__init__.py +0 -0
  97. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/eks/addons.py +0 -0
  98. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/eks/fargate.py +0 -0
  99. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/eks/info.py +0 -0
  100. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/eks/nodes.py +0 -0
  101. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/eks/pods.py +0 -0
  102. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/eks/update_config.py +0 -0
  103. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/fargate/__init__.py +0 -0
  104. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/fargate/info.py +0 -0
  105. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/healthdashboard/__init__.py +0 -0
  106. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/healthdashboard/reboot.py +0 -0
  107. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/iam/__init__.py +0 -0
  108. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/iam/_helpers.py +0 -0
  109. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/iam/check.py +0 -0
  110. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/iam/policy.py +0 -0
  111. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/iam/role.py +0 -0
  112. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/iam/user.py +0 -0
  113. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/lb/__init__.py +0 -0
  114. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/lb/desc.py +0 -0
  115. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/lb/info.py +0 -0
  116. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/lb/list_tags.py +0 -0
  117. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/lb/tag_check.py +0 -0
  118. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/msk/__init__.py +0 -0
  119. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/msk/broker.py +0 -0
  120. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/msk/info.py +0 -0
  121. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/nat/__init__.py +0 -0
  122. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/nat/list_tags.py +0 -0
  123. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/nat/tag_check.py +0 -0
  124. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/profile/__init__.py +0 -0
  125. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/profile/info.py +0 -0
  126. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/profile/switch.py +0 -0
  127. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/rds/__init__.py +0 -0
  128. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/rds/info.py +0 -0
  129. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/rds/list_tags.py +0 -0
  130. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/rds/tag_check.py +0 -0
  131. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/s3/__init__.py +0 -0
  132. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/s3/info.py +0 -0
  133. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/s3/list_tags.py +0 -0
  134. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/s3/tag_check.py +0 -0
  135. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/sg/__init__.py +0 -0
  136. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/sg/info.py +0 -0
  137. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/vpc/__init__.py +0 -0
  138. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/vpc/info.py +0 -0
  139. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/vpc/list_tags.py +0 -0
  140. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/vpc/tag_check.py +0 -0
  141. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/vpn/__init__.py +0 -0
  142. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/vpn/info.py +0 -0
  143. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/__init__.py +0 -0
  144. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/account/__init__.py +0 -0
  145. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/account/info.py +0 -0
  146. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/client.py +0 -0
  147. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/dns/__init__.py +0 -0
  148. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/dns/info.py +0 -0
  149. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/dns/list_info.py +0 -0
  150. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/rules/__init__.py +0 -0
  151. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/rules/info.py +0 -0
  152. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/traffic/__init__.py +0 -0
  153. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/traffic/info.py +0 -0
  154. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/waf/__init__.py +0 -0
  155. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/waf/info.py +0 -0
  156. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/zone/__init__.py +0 -0
  157. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/zone/info.py +0 -0
  158. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/__init__.py +0 -0
  159. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/billing/__init__.py +0 -0
  160. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/billing/info.py +0 -0
  161. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/billing/mock_data.json +0 -0
  162. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/compute/__init__.py +0 -0
  163. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/compute/desc.py +0 -0
  164. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/compute/info.py +0 -0
  165. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/compute/mock_data.json +0 -0
  166. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/disk/__init__.py +0 -0
  167. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/disk/info.py +0 -0
  168. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/disk/mock_data.json +0 -0
  169. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/dns/__init__.py +0 -0
  170. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/dns/info.py +0 -0
  171. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/dns/mock_data.json +0 -0
  172. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/firewall/__init__.py +0 -0
  173. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/firewall/info.py +0 -0
  174. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/firewall/mock_data.json +0 -0
  175. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/functions/__init__.py +0 -0
  176. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/functions/info.py +0 -0
  177. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/functions/mock_data.json +0 -0
  178. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/gke/__init__.py +0 -0
  179. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/gke/info.py +0 -0
  180. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/gke/mock_data.json +0 -0
  181. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/lb/__init__.py +0 -0
  182. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/lb/desc.py +0 -0
  183. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/lb/info.py +0 -0
  184. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/lb/mock_data.json +0 -0
  185. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/profile/__init__.py +0 -0
  186. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/profile/info.py +0 -0
  187. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/profile/mock_data.json +0 -0
  188. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/project/__init__.py +0 -0
  189. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/project/info.py +0 -0
  190. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/project/mock_data.json +0 -0
  191. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/run/__init__.py +0 -0
  192. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/run/info.py +0 -0
  193. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/run/mock_data.json +0 -0
  194. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/sql/__init__.py +0 -0
  195. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/sql/info.py +0 -0
  196. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/sql/mock_data.json +0 -0
  197. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/storage/__init__.py +0 -0
  198. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/storage/info.py +0 -0
  199. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/storage/mock_data.json +0 -0
  200. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/vpc/__init__.py +0 -0
  201. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/vpc/info.py +0 -0
  202. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/vpc/mock_data.json +0 -0
  203. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/__init__.py +0 -0
  204. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/common/__init__.py +0 -0
  205. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/common/utils.py +0 -0
  206. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/compartment/__init__.py +0 -0
  207. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/compartment/info.py +0 -0
  208. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/cost/__init__.py +0 -0
  209. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/cost/credit.py +0 -0
  210. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/cost/usage.py +0 -0
  211. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/info/__init__.py +0 -0
  212. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/info/oci_info.py +0 -0
  213. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/lb/__init__.py +0 -0
  214. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/lb/info.py +0 -0
  215. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/nsg/__init__.py +0 -0
  216. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/nsg/info.py +0 -0
  217. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/obj/__init__.py +0 -0
  218. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/obj/info.py +0 -0
  219. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/policy/__init__.py +0 -0
  220. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/policy/info.py +0 -0
  221. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/policy/search.py +0 -0
  222. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/vcn/__init__.py +0 -0
  223. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/vcn/info.py +0 -0
  224. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/vm/__init__.py +0 -0
  225. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/vm/info.py +0 -0
  226. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/volume/__init__.py +0 -0
  227. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/volume/info.py +0 -0
  228. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/ssh/__init__.py +0 -0
  229. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/ssh/auto/__init__.py +0 -0
  230. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/ssh/auto/scan.py +0 -0
  231. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/ssh/auto_ssh.py +0 -0
  232. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/ssh/policy.py +0 -0
  233. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/ssh/server/__init__.py +0 -0
  234. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/ssh/server/info.py +0 -0
  235. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/ssh/server_info.py +0 -0
  236. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/__init__.py +0 -0
  237. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/cam/__init__.py +0 -0
  238. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/cam/_helpers.py +0 -0
  239. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/cam/check.py +0 -0
  240. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/cam/policy.py +0 -0
  241. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/cam/role.py +0 -0
  242. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/cam/user.py +0 -0
  243. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/cbs/__init__.py +0 -0
  244. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/cbs/info.py +0 -0
  245. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/cbs/mock_data.json +0 -0
  246. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/clb/__init__.py +0 -0
  247. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/clb/desc.py +0 -0
  248. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/clb/info.py +0 -0
  249. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/clb/traffic.py +0 -0
  250. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/client.py +0 -0
  251. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/cvm/__init__.py +0 -0
  252. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/cvm/desc.py +0 -0
  253. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/cvm/info.py +0 -0
  254. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/disk/__init__.py +0 -0
  255. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/disk/info.py +0 -0
  256. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/lighthouse/__init__.py +0 -0
  257. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/lighthouse/firewall.py +0 -0
  258. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/lighthouse/info.py +0 -0
  259. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/nat/__init__.py +0 -0
  260. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/nat/info.py +0 -0
  261. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/profile/__init__.py +0 -0
  262. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/profile/info.py +0 -0
  263. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/profile/switch.py +0 -0
  264. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/sg/__init__.py +0 -0
  265. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/sg/info.py +0 -0
  266. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/tke/__init__.py +0 -0
  267. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/tke/info.py +0 -0
  268. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/vpc/__init__.py +0 -0
  269. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/vpc/info.py +0 -0
  270. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/security/__init__.py +0 -0
  271. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/security/config.py +0 -0
  272. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/security/detector.py +0 -0
  273. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/security/guidance.py +0 -0
  274. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/security/hooks.py +0 -0
  275. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/security/patterns.py +0 -0
  276. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/security/scanner.py +0 -0
  277. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic_code.egg-info/SOURCES.txt +0 -0
  278. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic_code.egg-info/dependency_links.txt +0 -0
  279. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic_code.egg-info/entry_points.txt +0 -0
  280. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic_code.egg-info/requires.txt +0 -0
  281. {ic_code-1.7.1 → ic_code-1.7.2}/src/ic_code.egg-info/top_level.txt +0 -0
ic_code-1.7.2/PKG-INFO ADDED
@@ -0,0 +1,688 @@
1
+ Metadata-Version: 2.4
2
+ Name: ic-code
3
+ Version: 1.7.2
4
+ Summary: Infrastructure CLI tool for managing AWS, Tencent Cloud, GCP, OCI, CloudFlare, SSH, and more
5
+ Author-email: sykim <cruiser594@gmail.com>
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/dgr009/ic
8
+ Project-URL: Bug Reports, https://github.com/dgr009/ic/issues
9
+ Project-URL: Source, https://github.com/dgr009/ic
10
+ Project-URL: Documentation, https://github.com/dgr009/ic#readme
11
+ Keywords: cli,infrastructure,aws,oci,gcp,cloudflare,ssh,devops,multi-cloud
12
+ Classifier: Development Status :: 5 - Production/Stable
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Intended Audience :: System Administrators
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.9
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Topic :: System :: Systems Administration
23
+ Classifier: Topic :: Utilities
24
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
25
+ Classifier: Environment :: Console
26
+ Requires-Python: <3.14,>=3.9
27
+ Description-Content-Type: text/markdown
28
+ License-File: LICENSE
29
+ Requires-Dist: requests<3.0.0,>=2.31.0
30
+ Requires-Dist: cryptography<50.0.0,>=42.0.0
31
+ Requires-Dist: rich<15.0.0,>=13.0.0
32
+ Requires-Dist: InquirerPy<1.0.0,>=0.3.4
33
+ Requires-Dist: tqdm<5.0.0,>=4.67.0
34
+ Requires-Dist: python-dotenv<2.0.0,>=1.0.0
35
+ Requires-Dist: python-dateutil<3.0.0,>=2.9.0
36
+ Requires-Dist: PyYAML<7.0.0,>=6.0.1
37
+ Requires-Dist: click<9.0.0,>=8.1.0
38
+ Requires-Dist: docutils<1.0.0,>=0.19
39
+ Requires-Dist: invoke<3.0.0,>=2.2.0
40
+ Requires-Dist: jsonschema<5.0.0,>=4.23.0
41
+ Requires-Dist: watchdog<6.0.0,>=4.0.0
42
+ Requires-Dist: cerberus<2.0.0,>=1.3.5
43
+ Requires-Dist: pydantic<3.0.0,>=2.7.0
44
+ Requires-Dist: packaging<25.0,>=24.0
45
+ Requires-Dist: setuptools<76.0.0,>=69.0.0
46
+ Provides-Extra: aws
47
+ Requires-Dist: boto3<2.0.0,>=1.34.0; extra == "aws"
48
+ Requires-Dist: botocore<2.0.0,>=1.34.0; extra == "aws"
49
+ Requires-Dist: awscli<2.0.0,>=1.32.0; extra == "aws"
50
+ Provides-Extra: tencent
51
+ Requires-Dist: tencentcloud-sdk-python<4.0.0,>=3.0.0; extra == "tencent"
52
+ Provides-Extra: oci
53
+ Requires-Dist: oci<3.0.0,>=2.149.0; extra == "oci"
54
+ Provides-Extra: gcp
55
+ Requires-Dist: google-cloud-compute<2.0.0,>=1.36.0; extra == "gcp"
56
+ Requires-Dist: google-cloud-container<3.0.0,>=2.44.0; extra == "gcp"
57
+ Requires-Dist: google-cloud-storage<3.0.0,>=2.18.0; extra == "gcp"
58
+ Requires-Dist: google-cloud-functions<2.0.0,>=1.16.0; extra == "gcp"
59
+ Requires-Dist: google-cloud-run<1.0.0,>=0.11.0; extra == "gcp"
60
+ Requires-Dist: google-cloud-billing<2.0.0,>=1.13.0; extra == "gcp"
61
+ Requires-Dist: google-cloud-dns<1.0.0,>=0.34.0; extra == "gcp"
62
+ Requires-Dist: google-cloud-resource-manager<2.0.0,>=1.12.0; extra == "gcp"
63
+ Requires-Dist: google-auth<3.0.0,>=2.29.0; extra == "gcp"
64
+ Requires-Dist: google-auth-oauthlib<2.0.0,>=1.2.0; extra == "gcp"
65
+ Requires-Dist: google-auth-httplib2<1.0.0,>=0.2.0; extra == "gcp"
66
+ Provides-Extra: ssh
67
+ Requires-Dist: paramiko<5.0.0,>=3.4.0; extra == "ssh"
68
+ Requires-Dist: netifaces<1.0.0,>=0.11.0; extra == "ssh"
69
+ Provides-Extra: k8s
70
+ Requires-Dist: kubernetes<32.0.0,>=29.0.0; extra == "k8s"
71
+ Provides-Extra: all
72
+ Requires-Dist: boto3<2.0.0,>=1.34.0; extra == "all"
73
+ Requires-Dist: botocore<2.0.0,>=1.34.0; extra == "all"
74
+ Requires-Dist: awscli<2.0.0,>=1.32.0; extra == "all"
75
+ Requires-Dist: tencentcloud-sdk-python<4.0.0,>=3.0.0; extra == "all"
76
+ Requires-Dist: oci<3.0.0,>=2.149.0; extra == "all"
77
+ Requires-Dist: google-cloud-compute<2.0.0,>=1.36.0; extra == "all"
78
+ Requires-Dist: google-cloud-container<3.0.0,>=2.44.0; extra == "all"
79
+ Requires-Dist: google-cloud-storage<3.0.0,>=2.18.0; extra == "all"
80
+ Requires-Dist: google-cloud-functions<2.0.0,>=1.16.0; extra == "all"
81
+ Requires-Dist: google-cloud-run<1.0.0,>=0.11.0; extra == "all"
82
+ Requires-Dist: google-cloud-billing<2.0.0,>=1.13.0; extra == "all"
83
+ Requires-Dist: google-cloud-dns<1.0.0,>=0.34.0; extra == "all"
84
+ Requires-Dist: google-cloud-resource-manager<2.0.0,>=1.12.0; extra == "all"
85
+ Requires-Dist: google-auth<3.0.0,>=2.29.0; extra == "all"
86
+ Requires-Dist: google-auth-oauthlib<2.0.0,>=1.2.0; extra == "all"
87
+ Requires-Dist: google-auth-httplib2<1.0.0,>=0.2.0; extra == "all"
88
+ Requires-Dist: paramiko<5.0.0,>=3.4.0; extra == "all"
89
+ Requires-Dist: netifaces<1.0.0,>=0.11.0; extra == "all"
90
+ Requires-Dist: kubernetes<32.0.0,>=29.0.0; extra == "all"
91
+ Provides-Extra: dev
92
+ Requires-Dist: pytest<10.0.0,>=8.0.0; extra == "dev"
93
+ Requires-Dist: pytest-cov<8.0.0,>=5.0.0; extra == "dev"
94
+ Requires-Dist: types-PyYAML>=6.0.0; extra == "dev"
95
+ Requires-Dist: black<25.0.0,>=24.0.0; extra == "dev"
96
+ Requires-Dist: flake8<8.0.0,>=7.0.0; extra == "dev"
97
+ Requires-Dist: mypy<2.0.0,>=1.10.0; extra == "dev"
98
+ Requires-Dist: pyrefly>=1.2.0; extra == "dev"
99
+ Requires-Dist: pre-commit<4.0.0,>=3.7.0; extra == "dev"
100
+ Dynamic: license-file
101
+
102
+ # IC CLI Tool (Infrastructure Commander)
103
+
104
+ [![PyPI version](https://badge.fury.io/py/ic-code.svg)](https://badge.fury.io/py/ic-code)
105
+ [![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)
106
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
107
+
108
+ A production-grade Multi-Cloud & Infrastructure Command Line Interface for inspecting, auditing, and managing cloud resources across **AWS**, **Tencent Cloud**, **Google Cloud Platform (GCP)**, **Oracle Cloud Infrastructure (OCI)**, **CloudFlare**, and **SSH** servers from a single unified terminal workflow.
109
+
110
+ ---
111
+
112
+ ## Table of Contents
113
+
114
+ 1. [Key Features](#key-features)
115
+ 2. [Terminal UI & Output Previews](#terminal-ui--output-previews)
116
+ 3. [Supported Platforms & Services](#supported-platforms--services)
117
+ 4. [Installation & Initial Setup](#installation--initial-setup)
118
+ 5. [Platform Credential & Configuration Guide](#platform-credential--configuration-guide)
119
+ 6. [Command Usage Examples](#command-usage-examples)
120
+ 7. [Testing & Verification](#testing--verification)
121
+ 8. [License](#license)
122
+
123
+ ---
124
+
125
+ ## Key Features
126
+
127
+ - **Unified Multi-Cloud CLI**: Consistent `<platform> <service> <command>` syntax across AWS, Tencent Cloud, GCP, OCI, CloudFlare (`cloudflare` / `cf`), and SSH servers.
128
+ - **Smart Auth & Profile Switcher**: One-command atomic switching between personal SSO/STS sessions (`aws login`, `tccli auth login`) and static service account credentials, with real-time STS token expiration tracking and automatic file permission enforcement (`chmod 600`).
129
+ - **Deep IAM & CAM Permission Governance**:
130
+ - **Credential Hygiene (`iam check` / `cam check`)**: Audit console login status, MFA enforcement, password age (60/90-day risk alerts), last console login, and last access key usage.
131
+ - **Entity Permission Mapping (`iam user` / `cam user`)**: Inspect user groups, direct/inline/group-inherited policies, scoped resources, IP/MFA/tag conditions (`aws:SourceIp`, `qcs:ip`), and linked roles.
132
+ - **Policy & Role Analysis (`iam policy|role` / `cam policy|role`)**: Inspect AWS/Tencent managed, custom, and inline policies, attached entities (Users/Groups/Roles), role trust principals, trust conditions (`sts:ExternalId`), and raw policy documents (`-d`).
133
+ - **Concurrent Multi-Account & Multi-Region Execution**: Parallel resource discovery across dozens of cloud accounts/projects and regions simultaneously using `ThreadPoolExecutor` and cross-account `AssumeRole`.
134
+ - **Multiple Output Representations**:
135
+ - **Rich Tables (`-o table`)**: Color-coded status indicators, aligned columns, and account/region grouping.
136
+ - **Hierarchical Trees (`-o tree`)**: Visual dependency and rule trees for Security Groups, Firewalls, IAM/CAM permissions, and GCP folder hierarchies.
137
+ - **Deep Schema Discovery (`desc -l`, `desc -k`)**: Inspect raw cloud resource schemas and extract nested attributes using dot-notation keys.
138
+ - **Spreadsheet Copy Mode (`-p`)**: Clean comma-separated output for instant copy-pasting into spreadsheets or incident reports.
139
+ - **Security First**: Split configuration architecture (`default.yaml` + `secrets.yaml`), automatic credential masking in logs/CLI output, built-in secret scanner (`ic security scan`), and pre-commit hook integration.
140
+
141
+ ---
142
+
143
+ ## Terminal UI & Output Previews
144
+
145
+ ### 1. Multi-Account Compute Inspection (`ic tencent cvm info` / `ic aws ec2 info`)
146
+
147
+ ![Tencent CVM Info Terminal UI](docs/tencent/use_sample.png)
148
+
149
+ ```text
150
+ $ ic aws ec2 info -a prod-account -r ap-northeast-2 -n api,worker
151
+ ┌──────────────┬────────────────┬────────────────────┬─────────────────────┬─────────┬───────────┬──────┬────────┬───────────────┬───────────────┬──────────────────────┬────────────┐
152
+ │ Account │ Region │ Instance Name │ Instance ID │ State │ Type │ vCPU │ Memory │ Private IP │ Public IP │ Security Groups │ Created │
153
+ ├──────────────┼────────────────┼────────────────────┼─────────────────────┼─────────┼───────────┼──────┼────────┼───────────────┼───────────────┼──────────────────────┼────────────┤
154
+ │ prod-account │ ap-northeast-2 │ prod-api-server-01 │ i-0a1b2c3d4e5f60001 │ running │ m6i.large │ 2 │ 8 GiB │ 10.20.1.15 │ 203.0.113.10 │ sg-0100 (prod-api) │ 2026-03-15 │
155
+ │ prod-account │ ap-northeast-2 │ prod-worker-node01 │ i-0a1b2c3d4e5f60002 │ running │ c6i.xlarge│ 4 │ 8 GiB │ 10.20.2.42 │ - │ sg-0200 (prod-batch) │ 2026-04-02 │
156
+ └──────────────┴────────────────┴────────────────────┴─────────────────────┴─────────┴───────────┴──────┴────────┴───────────────┴───────────────┴──────────────────────┴────────────┘
157
+ ```
158
+
159
+ ### 2. IAM / CAM User Permission, Resource & Condition Mapping (`ic aws iam user`)
160
+
161
+ ```text
162
+ $ ic aws iam user -a prod-account -n deploy,sre
163
+ ┌──────────────┬──────────────┬────────────┬──────────────┬───────────────────────────────────────────┬────────────────────────────────────────────────────────┬─────────────────────────────┐
164
+ │ Account │ User Name │ Login Type │ Groups │ Attached Policies │ Scoped Resources / Conditions │ Linked / Trusted Roles │
165
+ ├──────────────┼──────────────┼────────────┼──────────────┼───────────────────────────────────────────┼────────────────────────────────────────────────────────┼─────────────────────────────┤
166
+ │ prod-account │ sre-operator │ User (MFA) │ sre-admins │ [Group:sre-admins] AdministratorAccess │ [IpRestrictInline] │ ProdEksClusterAdminRole │
167
+ │ │ │ │ │ [Inline] IpRestrictInline │ Cond: IpAddress: aws:SourceIp=203.0.113.0/24 │ (Cond: aws:MultiFactor... │
168
+ │ prod-account │ ci-deployer │ Service │ - │ [Managed] AmazonEC2ContainerRegistryPower │ [S3ArtifactDeployPolicy] │ ProdAppDeployRole │
169
+ │ │ │ │ │ [Inline] S3ArtifactDeployPolicy │ Res: s3: prod-artifact-bucket, prod-artifact-buck... │ │
170
+ └──────────────┴──────────────┴────────────┴──────────────┴───────────────────────────────────────────┴────────────────────────────────────────────────────────┴─────────────────────────────┘
171
+ ```
172
+
173
+ ### 3. Credential Hygiene & Password Age Audit (`ic aws iam check -w`)
174
+
175
+ ```text
176
+ $ ic aws iam check -a prod-account -w
177
+ ┌──────────────┬──────────────┬───────────────┬─────────┬──────────────┬────────────┬──────────────────┬──────────────────┬────────────┐
178
+ │ Account │ User Name │ Console Login │ MFA │ Password Age │ Last Login │ Active Keys │ Last Key Used │ Created │
179
+ ├──────────────┼──────────────┼───────────────┼─────────┼──────────────┼────────────┼──────────────────┼──────────────────┼────────────┤
180
+ │ prod-account │ legacy-admin │ Enabled │ Enabled │ 114d (Warn) │ 2026-09-10 │ 1 (98d) │ 2026-10-28 (ecr) │ 2024-05-12 │
181
+ │ prod-account │ build-bot │ Disabled │ - │ - │ - │ 1 (142d) (Warn) │ 2026-11-01 (s3) │ 2024-08-01 │
182
+ └──────────────┴──────────────┴───────────────┴─────────┴──────────────┴────────────┴──────────────────┴──────────────────┴────────────┘
183
+ ```
184
+
185
+ ### 4. Hierarchical Tree View (`-o tree`)
186
+
187
+ ```text
188
+ $ ic aws sg info -a prod-account -n prod-api -o tree
189
+ AWS Security Groups (prod-account / ap-northeast-2)
190
+ └── prod-api-sg (sg-0100aabbccddeeff0) [vpc-0a1b2c3d]
191
+ ├── [Ingress] TCP 443 ← 0.0.0.0/0 (HTTPS public traffic)
192
+ ├── [Ingress] TCP 8080 ← sg-0050alb0000000001 (From ALB ingress)
193
+ └── [Egress] ALL ALL → 0.0.0.0/0 (Allow outbound)
194
+
195
+ $ ic tencent cam user -a prod-account -n devops -o tree
196
+ Tencent CAM Users
197
+ └── prod-account (100000000001)
198
+ └── devops-engineer [Type: User | Created: 2025-11-20]
199
+ ├── Groups: devops-team
200
+ ├── Attached Policies (3)
201
+ │ ├── [Direct] QcloudCVMFullAccess (QCS)
202
+ │ ├── [Group:devops-team] QcloudCLBFullAccess (QCS)
203
+ │ └── [Direct] CustomProdVpcReadOnly (Custom)
204
+ │ ├── Resources: vpc: ap-seoul/vpc-sample01
205
+ │ └── Conditions: ip_equal: qcs:ip=203.0.113.10/32
206
+ └── Trusted Roles (1)
207
+ └── ProdTkeClusterAdminRole
208
+ ```
209
+
210
+ ### 5. Spreadsheet Copy-Paste Mode (`-p`)
211
+
212
+ ```text
213
+ $ ic tencent cvm info -a prod-account -p
214
+ Account,Region,InstanceName,InstanceId,State,InstanceType,CPU,Memory(GB),PrivateIP,PublicIP,VPC,SecurityGroups,CreatedTime
215
+ prod-account,ap-seoul,prod-web-01,ins-a1b2c3d4,RUNNING,S5.LARGE8,4,8,10.10.1.11,198.51.100.25,vpc-sample01,sg-web01,2026-02-10 14:20:00
216
+ prod-account,ap-seoul,prod-db-01,ins-e5f6g7h8,RUNNING,S5.2XLARGE32,8,32,10.10.2.20,-,vpc-sample01,sg-db01,2026-02-10 14:25:00
217
+ ```
218
+
219
+ ---
220
+
221
+ ## Supported Platforms & Services
222
+
223
+ ### 1. AWS Services
224
+ | Category | Commands | Description |
225
+ |---|---|---|
226
+ | **Auth & Profile** | `ic aws profile switch`, `ic aws profile info` | Atomic switching between personal `aws login` STS session and static service credentials; session expiry tracking. |
227
+ | **IAM & Governance** | `ic aws iam check`, `ic aws iam user`, `ic aws iam policy`, `ic aws iam role` | Password/key hygiene audit (`check`), user group/policy/role/condition mapping (`user`), managed & inline policy inspection (`policy`), and role trust/policy analysis (`role`). |
228
+ | **EC2 Compute** | `ic aws ec2 info`, `ic aws ec2 desc` | Instance inventory across accounts/regions, spreadsheet copy mode (`-p`), and dot-notation schema inspection (`desc -l`, `desc -k`). |
229
+ | **Containers (EKS / ECS)** | `ic aws eks info\|nodes\|pods\|addons\|fargate`, `ic aws ecs info\|service\|task` | Kubernetes clusters, node groups, pods, addons, Fargate profiles, and ECS clusters/services/tasks. |
230
+ | **Storage & Databases** | `ic aws ebs info`, `ic aws s3 info\|tag_check`, `ic aws rds info` | EBS volume metrics, S3 bucket inventory & tag compliance auditing, RDS & Aurora cluster inspection. |
231
+ | **Networking & Security** | `ic aws vpc info`, `ic aws vpn info`, `ic aws lb info\|desc`, `ic aws sg info`, `ic aws cloudfront info` | VPCs/Subnets/NAT/VPN, ALB/NLB listener rules & target health, Security Group rules & tree view (`-o tree`), CloudFront distributions. |
232
+ | **Health & Integrations** | `ic aws healthdashboard reboot`, `ic aws msk info\|broker`, `ic aws codepipeline build\|deploy` | Multi-account EC2 scheduled reboot maintenance checks, MSK Kafka clusters, and CodePipeline status. |
233
+
234
+ ### 2. Tencent Cloud Services
235
+ | Category | Commands | Description |
236
+ |---|---|---|
237
+ | **Auth & Profile** | `ic tencent profile switch`, `ic tencent profile info` | Dual-mode switching between personal `tccli auth login` STS session and `~/.tencent/credentials` service keys with cross-account `AssumeRole`. |
238
+ | **CAM & Governance** | `ic tencent cam check`, `ic tencent cam user`, `ic tencent cam policy`, `ic tencent cam role` | Sub-account & collaborator password/key audit (`check`), user group/policy/resource/condition/role mapping (`user`), Custom & QCS policy analysis (`policy`), and CAM role trust inspection (`role`). |
239
+ | **CVM & Lighthouse** | `ic tencent cvm info\|desc`, `ic tencent lighthouse info\|firewall` | CVM instances, creation date filter (`-c`), spreadsheet copy mode (`-p`), deep attribute inspection (`desc`), Lighthouse instances & firewall trees (`-o tree`). |
240
+ | **Containers (TKE)** | `ic tencent tke info` | TKE Kubernetes clusters, versions, status, and node pool configurations. |
241
+ | **Storage (CBS)** | `ic tencent cbs info`, `ic tencent disk info` | Cloud Block Storage volume size, type, attachment status, and linked CVM instances. |
242
+ | **Networking & CLB** | `ic tencent clb info\|desc\|traffic`, `ic tencent sg info`, `ic tencent vpc info`, `ic tencent nat info` | CLB listener rules & target health, 7/30-day bandwidth & traffic stats (`clb traffic`), Security Group rules & tree view (`-o tree`), VPCs, Subnets, and NAT Gateways. |
243
+
244
+ ### 3. Google Cloud Platform (GCP) Services
245
+ | Category | Commands | Description |
246
+ |---|---|---|
247
+ | **Compute & LB** | `ic gcp compute info\|desc`, `ic gcp lb info\|desc` | Compute Engine VMs (summary & 15-column `-v` view), Forwarding Rules, Target Proxies, URL Maps, Backend Services, and dot-notation schema inspection (`desc`). |
248
+ | **Containers & Serverless** | `ic gcp gke info`, `ic gcp run info`, `ic gcp functions info` | GKE clusters & node pools, Cloud Run services/revisions, 1st & 2nd Gen Cloud Functions. |
249
+ | **Storage & Databases** | `ic gcp sql info`, `ic gcp storage info` | Cloud SQL (MySQL/PostgreSQL/SQL Server) HA/backup status and GCS bucket inventory. |
250
+ | **Networking & DNS** | `ic gcp vpc info`, `ic gcp firewall info`, `ic gcp dns info` | VPC networks/subnets, Ingress/Egress firewall rules, and Cloud DNS managed zones. |
251
+ | **Projects & Billing** | `ic gcp project info`, `ic gcp billing info`, `ic gcp profile info` | Multi-level folder/project hierarchy tree, monthly billing breakdown, and active `gcloud` configurations. |
252
+
253
+ ### 4. Oracle Cloud Infrastructure (OCI), CloudFlare & SSH
254
+ | Platform | Commands | Description |
255
+ |---|---|---|
256
+ | **OCI** | `ic oci vm info`, `ic oci aci info`, `ic oci vcn info`, `ic oci lb info`, `ic oci nsg info`, `ic oci volume info`, `ic oci obj info`, `ic oci compartment`, `ic oci policy info\|search`, `ic oci cost usage\|credit` | OCI Compute VMs, Autonomous Container Instances, VCNs, Load Balancers, NSGs, Block/Object Storage, Compartment trees, IAM Policies, and Cost/Billing credits. |
257
+ | **CloudFlare** | `ic cf zone info`, `ic cf dns info` (or `ic cloudflare ...`) | CloudFlare Zone inventory and DNS record inspection with account/zone filtering. |
258
+ | **SSH Server** | `ic ssh info` | Automatic server discovery from `~/.ssh/config`, parallel SSH connectivity & port checks, and configurable host key policies (`auto`, `warning`, `reject`). |
259
+
260
+ ---
261
+
262
+ ## Installation & Initial Setup
263
+
264
+ ### 1. Requirements
265
+
266
+ - **Python**: `>= 3.9, < 3.14` (Python 3.11 or 3.13 recommended)
267
+ - **OS**: macOS, Linux, or Windows (WSL2 / PowerShell)
268
+ - **Optional Cloud CLI Tools** (only required if using native CLI SSO login features):
269
+ - AWS CLI v2 (`aws login` / `aws sso login`)
270
+ - Tencent Cloud CLI (`tccli auth login`)
271
+ - Google Cloud SDK (`gcloud auth application-default login`)
272
+
273
+ ### 2. Install from PyPI (Recommended)
274
+
275
+ You can install the lightweight core package or include optional cloud SDK extras for the platforms you manage:
276
+
277
+ ```bash
278
+ # Install core package + default dependencies
279
+ pip install ic-code
280
+
281
+ # Or install with specific cloud platform SDK extras
282
+ pip install "ic-code[aws]" # AWS (boto3)
283
+ pip install "ic-code[tencent]" # Tencent Cloud SDK
284
+ pip install "ic-code[gcp]" # Google Cloud SDK libraries
285
+ pip install "ic-code[oci]" # Oracle Cloud Infrastructure SDK
286
+ pip install "ic-code[cloudflare]" # CloudFlare API support
287
+ pip install "ic-code[ssh]" # SSH management (paramiko)
288
+
289
+ # Install all cloud platform extras at once
290
+ pip install "ic-code[all]"
291
+
292
+ # Verify installation
293
+ ic --version
294
+ ic --help
295
+ ```
296
+
297
+ > **Tip (Isolated Global CLI Installation with `pipx`)**:
298
+ > ```bash
299
+ > pipx install "ic-code[all]"
300
+ > ```
301
+
302
+ ### 3. Install from Source (Development)
303
+
304
+ ```bash
305
+ # Clone the repository
306
+ git clone https://github.com/dgr009/ic.git
307
+ cd ic
308
+
309
+ # Create and activate a virtual environment
310
+ python3 -m venv .venv
311
+ source .venv/bin/activate # On Windows: .venv\Scripts\activate
312
+
313
+ # Install in editable mode with all cloud and test dependencies
314
+ pip install --upgrade pip
315
+ pip install -r requirements.txt
316
+ pip install -e .
317
+
318
+ # Verify CLI execution
319
+ ic --version
320
+ ic --help
321
+ ```
322
+
323
+ ---
324
+
325
+ ## Platform Credential & Configuration Guide
326
+
327
+ IC CLI separates non-sensitive preferences from sensitive credentials using a two-file structure under `~/.ic/config/`:
328
+
329
+ ```text
330
+ ~/.ic/config/
331
+ ├── default.yaml # Non-sensitive settings (default regions, worker counts, logging, SSH host policy)
332
+ └── secrets.yaml # Sensitive tokens, account mappings, and role names (chmod 600 recommended)
333
+ ```
334
+
335
+ ### Step 1: Initialize Configuration Files
336
+
337
+ ```bash
338
+ # Interactive setup wizard
339
+ ic config init
340
+
341
+ # Or generate a template for a specific workflow
342
+ ic config init --template aws
343
+ ic config init --template multi-cloud
344
+
345
+ # Validate configuration and inspect masked settings
346
+ ic config validate
347
+ ic config show
348
+ ```
349
+
350
+ ### Step 2: Configure Cloud Credentials
351
+
352
+ #### A. AWS Credential Setup (`~/.aws/config` & `~/.aws/credentials`)
353
+
354
+ IC CLI automatically reads standard AWS profiles from `~/.aws/config` and `~/.aws/credentials`, and supports one-touch switching between personal STS sessions (`aws login`) and service account keys (`~/.aws/backup/`):
355
+
356
+ ```ini
357
+ # ~/.aws/config
358
+ [profile prod-account]
359
+ region = ap-northeast-2
360
+ output = json
361
+
362
+ [profile stage-account]
363
+ role_arn = arn:aws:iam::234567890123:role/OrganizationAccountAccessRole
364
+ source_profile = prod-account
365
+ region = ap-northeast-2
366
+ ```
367
+
368
+ ```bash
369
+ # Check active AWS profiles and STS token status
370
+ ic aws profile info
371
+ ic aws profile switch
372
+ ```
373
+
374
+ #### B. Tencent Cloud Credential Setup (`~/.tencent/credentials` & `secrets.yaml`)
375
+
376
+ IC CLI supports both multi-account `~/.tencent/credentials` (with cross-account `AssumeRole`) and personal `tccli auth login` sessions:
377
+
378
+ ```ini
379
+ # ~/.tencent/credentials
380
+ [default]
381
+ region = ap-seoul
382
+
383
+ [main]
384
+ secret_id = AKIDEXAMPLE000000000000000000000
385
+ secret_key = EXAMPLESECRETKEY0000000000000000
386
+ region = ap-seoul
387
+
388
+ [prod-account]
389
+ role_arn = qcs::cam::uin/100000000002:roleName/OrganizationAccountAccessRole
390
+ source_account = main
391
+ region = ap-seoul
392
+ ```
393
+
394
+ ```bash
395
+ # Check active Tencent Cloud authentication mode and accounts
396
+ ic tencent profile info
397
+ ic tencent profile switch
398
+ ```
399
+
400
+ #### C. GCP, OCI, CloudFlare & SSH Setup
401
+
402
+ - **GCP**: Authenticate via Application Default Credentials:
403
+ ```bash
404
+ gcloud auth application-default login
405
+ ```
406
+ - **OCI**: Configure standard `~/.oci/config` with your tenancy OCID, user OCID, fingerprint, and private key path.
407
+ - **CloudFlare & Multi-Cloud Options (`~/.ic/config/secrets.yaml`)**:
408
+
409
+ ```yaml
410
+ # ~/.ic/config/secrets.yaml (Sample - use generic or local values only)
411
+ aws:
412
+ accounts:
413
+ - "prod-account"
414
+ - "stage-account"
415
+ regions:
416
+ - "ap-northeast-2"
417
+ - "us-east-1"
418
+
419
+ tencent:
420
+ root_account: "main"
421
+ root_account_id: "100000000001"
422
+ tccli_role: "OrganizationAccountAccessRole"
423
+ service_role: "ServiceAdminRole"
424
+ isolated_accounts:
425
+ - "isolated-sub-account"
426
+ regions:
427
+ - "ap-seoul"
428
+ - "ap-singapore"
429
+
430
+ gcp:
431
+ project_id: "sample-gcp-project-01"
432
+ regions:
433
+ - "asia-northeast3"
434
+ - "us-central1"
435
+
436
+ oci:
437
+ config_file: "~/.oci/config"
438
+ profile: "DEFAULT"
439
+
440
+ cloudflare:
441
+ email: "admin@example.com"
442
+ api_token: "your-cloudflare-api-token"
443
+ cloudflare_accounts:
444
+ - "Sample-Account"
445
+ cloudflare_zones:
446
+ - "example.com"
447
+
448
+ ssh:
449
+ config_file: "~/.ssh/config"
450
+ key_dir: "~/.ssh"
451
+ host_key_policy: "auto"
452
+ skip_prefixes:
453
+ - "git"
454
+ - "bastion-"
455
+ ```
456
+
457
+ ---
458
+
459
+ ## Command Usage Examples
460
+
461
+ ### Common Filtering & Output Options
462
+
463
+ Most resource inspection commands share consistent filtering flags:
464
+
465
+ | Flag | Description | Example |
466
+ |---|---|---|
467
+ | `-a, --account <NAME>` | Filter by account/profile/project name (comma-separated for multiple) | `-a prod-account,stage-account` |
468
+ | `-r, --region <REGION>` | Filter by cloud region (comma-separated) | `-r ap-northeast-2,us-east-1` |
469
+ | `-n, --name <PATTERN>` | Case-insensitive partial match filter (comma-separated for OR search) | `-n "api,worker"` |
470
+ | `-c, --created <EXPR>` | Filter by creation date (`YYYY-MM-DD`, range `~`, `>=`, `<=`, `>`, `<`) | `-c ">=2026-01-01"` |
471
+ | `-o, --output <FMT>` | Output format (`table`, `tree`, `json`, `yaml`) | `-o tree` |
472
+ | `-v, --verbose` | Show extended columns, full ARNs, or full resource lists without truncation | `-v` |
473
+ | `-p, --paste` | Output clean comma-separated values for spreadsheet copy-pasting | `-p` |
474
+
475
+ ---
476
+
477
+ ### 1. AWS Command Examples
478
+
479
+ ```bash
480
+ # --- Authentication & Profile Management ---
481
+ ic aws profile info # Inspect all profiles and session status
482
+ ic aws profile switch # Check current auth mode (login vs service)
483
+ ic aws profile switch login # Switch to personal 'aws login' STS session
484
+ ic aws profile switch service # Switch to static service credentials
485
+
486
+ # --- IAM Security Audit & Permission Governance ---
487
+ # 1) Credential & Password Hygiene Audit (check)
488
+ ic aws iam check # Audit console login, MFA, password age, key usage
489
+ ic aws iam check -w # Filter accounts with 90+ day warnings
490
+ ic aws iam check --mfa disabled -t user # Find console users without MFA enabled
491
+ ic aws iam check -c ">=2026-01-01" -v # Filter by creation date with verbose key IDs
492
+
493
+ # 2) User Permission, Resource & Condition Inspection (user)
494
+ ic aws iam user # Inspect users, groups, policies, resources/conditions, roles
495
+ ic aws iam user -a prod-account -n deploy,admin # Filter by account and user name patterns
496
+ ic aws iam user -g sre-admins --policy AdministratorAccess # Filter by group or attached policy name
497
+ ic aws iam user --resource s3 --condition 203.0.113.0/24 # Find users restricted by specific resource or IP condition
498
+ ic aws iam user -o tree # Render user permission hierarchy as a tree
499
+
500
+ # 3) IAM Policy Inspection (policy)
501
+ ic aws iam policy # List customer-managed and inline policies
502
+ ic aws iam policy -t custom --attached # Show only attached customer-managed policies
503
+ ic aws iam policy -t inline --entity sre-operator # Show inline policies attached to a specific entity
504
+ ic aws iam policy --unattached # Identify unused policies for cleanup
505
+ ic aws iam policy -n DeployPolicy --resource bucket -d # Print full JSON policy statement document (-d)
506
+
507
+ # 4) IAM Role & Trust Relationship Inspection (role)
508
+ ic aws iam role # List IAM roles, trusted principals, and attached policies
509
+ ic aws iam role -t user --no-slr # Show cross-account/user roles excluding Service-Linked Roles
510
+ ic aws iam role --trust ec2,eks --policy Admin # Filter by trusted service/principal and policy
511
+ ic aws iam role --condition ExternalId -o tree # Inspect roles requiring ExternalId in tree view
512
+
513
+ # --- EC2, Containers & Maintenance ---
514
+ ic aws healthdashboard reboot # Check scheduled EC2 reboot maintenance across all accounts
515
+ ic aws healthdashboard reboot -a prod-account --all-status # Include historical/completed maintenance events
516
+
517
+ ic aws ec2 info -a prod-account -n "web,api" # List EC2 instances matching 'web' or 'api'
518
+ ic aws ec2 info -p # Output EC2 inventory in spreadsheet copy format
519
+ ic aws ec2 desc -l # List queryable EC2 dot-notation schema keys
520
+ ic aws ec2 desc -k InstanceId,State.Name,PrivateIpAddress # Extract specific EC2 attributes
521
+
522
+ ic aws eks info # List EKS clusters
523
+ ic aws eks nodes -a prod-account # Inspect EKS node groups
524
+ ic aws eks pods -a prod-account # Inspect EKS pods across namespaces
525
+ ic aws ecs info # List ECS clusters, services, and tasks
526
+
527
+ # --- Storage, Databases & Networking ---
528
+ ic aws ebs info -a prod-account # Inspect EBS volumes, IOPS, throughput, and attachments
529
+ ic aws s3 info # List S3 buckets
530
+ ic aws s3 tag_check # Audit S3 buckets for required compliance tags
531
+ ic aws rds info # Inspect RDS instances and Aurora clusters
532
+
533
+ ic aws sg info -a prod-account # Inspect Security Group ingress/egress rules
534
+ ic aws sg info -a prod-account -o tree # Render Security Group rules as a visual hierarchy tree
535
+ ic aws lb info -a prod-account # Inspect ALB/NLB listeners, rules, and target health
536
+ ic aws vpc info -a prod-account # Inspect VPCs, Subnets, and NAT Gateways
537
+ ic aws cloudfront info # Inspect CloudFront CDN distributions
538
+ ```
539
+
540
+ ---
541
+
542
+ ### 2. Tencent Cloud Command Examples
543
+
544
+ ```bash
545
+ # --- Authentication & Profile Management ---
546
+ ic tencent profile info # View configured accounts and AssumeRole mapping
547
+ ic tencent profile switch # Check active auth mode (tccli vs service)
548
+ ic tencent profile switch tccli # Switch to personal 'tccli auth login' STS session
549
+ ic tencent profile switch service # Switch to service account credentials
550
+
551
+ # --- CAM Security Audit & Permission Governance ---
552
+ # 1) Credential & Password Hygiene Audit (check)
553
+ ic tencent cam check # Audit sub-accounts & collaborators password/key age
554
+ ic tencent cam check -w # Filter users with 90+ day password/key warnings
555
+ ic tencent cam check -t collaborator # Filter external collaborators only
556
+
557
+ # 2) User Permission, Resource & Condition Inspection (user)
558
+ ic tencent cam user # Inspect users, groups, Direct/Group policies, conditions, roles
559
+ ic tencent cam user -a prod-account -n devops,operator # Filter by account and user name
560
+ ic tencent cam user --policy CVMFullAccess --resource vpc # Filter by attached policy or scoped resource
561
+ ic tencent cam user --condition 203.0.113.10 -o tree # Filter by IP condition and render as a tree
562
+
563
+ # 3) CAM Policy Inspection (policy)
564
+ ic tencent cam policy # List custom CAM policies and attached entities
565
+ ic tencent cam policy -t all --attached # Include attached Tencent QCS preset policies
566
+ ic tencent cam policy --unattached # Find unattached custom policies
567
+ ic tencent cam policy -n CustomVpcPolicy -d # Display full CAM policy document statements (-d)
568
+
569
+ # 4) CAM Role Inspection (role)
570
+ ic tencent cam role # List CAM roles, trusted principals, and attached policies
571
+ ic tencent cam role -t user --no-slr # Filter user/cross-account roles excluding service-linked roles
572
+ ic tencent cam role --trust cvm,tke --policy FullAccess # Filter by trusted principal and attached policy
573
+ ic tencent cam role -o tree # Render role trust and policy hierarchy as a tree
574
+
575
+ # --- CVM, Lighthouse & Containers ---
576
+ ic tencent cvm info # List CVM instances across accounts and regions
577
+ ic tencent cvm info -a prod-account -n "api,batch" # Multi-pattern instance name search
578
+ ic tencent cvm info -c ">=2026-01-01" # Filter instances created on or after 2026-01-01
579
+ ic tencent cvm info -p # Spreadsheet copy-paste CSV output
580
+ ic tencent cvm desc -l # Discover CVM schema keys
581
+ ic tencent cvm desc -k InstanceId,InstanceState,PrivateIpAddresses.0
582
+
583
+ ic tencent lighthouse info # List Lighthouse lightweight servers
584
+ ic tencent lighthouse info -p # Spreadsheet copy-paste CSV output
585
+ ic tencent lighthouse firewall # Inspect Lighthouse instance firewall rules
586
+ ic tencent lighthouse firewall -o tree # Render Lighthouse firewall rules in tree view
587
+ ic tencent lighthouse firewall --port 22 --action ACCEPT # Filter firewall rules by port and action
588
+
589
+ ic tencent tke info # Inspect TKE Kubernetes clusters and nodes
590
+ ic tencent cbs info # Inspect Cloud Block Storage (CBS) volumes
591
+
592
+ # --- Networking & Cloud Load Balancer (CLB) ---
593
+ ic tencent clb info # Inspect CLBs, listeners, domain rules, and target health
594
+ ic tencent clb traffic # Query 7-day CLB bandwidth (Avg/Max Mbps) and total traffic
595
+ ic tencent clb traffic -d 30 # Query 30-day CLB bandwidth and traffic statistics
596
+ ic tencent sg info -o tree # Render Security Group ingress/egress rules in tree view
597
+ ic tencent vpc info # Inspect VPCs and Subnets
598
+ ic tencent nat info # Inspect NAT Gateways
599
+ ```
600
+
601
+ ---
602
+
603
+ ### 3. GCP Command Examples
604
+
605
+ ```bash
606
+ # Compute Engine VM instances
607
+ ic gcp compute info # Standard VM inventory across projects/zones
608
+ ic gcp compute info -a sample-project-01 -v # Verbose 15-column output
609
+ ic gcp compute desc -l # List queryable VM schema keys
610
+ ic gcp compute desc -k status,machine_type,internal_ip # Extract specific VM attributes
611
+
612
+ # Load Balancing (ALB / NLB)
613
+ ic gcp lb info # Inspect forwarding rules, proxies, and backend services
614
+ ic gcp lb desc -l # List queryable LB schema keys
615
+ ic gcp lb desc -k type,ip_address,backend_services.0.name # Extract specific LB attributes
616
+
617
+ # Containers, Serverless, Databases & Networking
618
+ ic gcp gke info # GKE clusters and node pools
619
+ ic gcp run info # Cloud Run services and revisions
620
+ ic gcp functions info # Cloud Functions inventory
621
+ ic gcp sql info # Cloud SQL instances
622
+ ic gcp storage info # Cloud Storage buckets
623
+ ic gcp vpc info # VPC networks and subnets
624
+ ic gcp firewall info # VPC firewall ingress/egress rules
625
+ ic gcp dns info # Cloud DNS managed zones
626
+ ic gcp project info # Folder and project hierarchy tree
627
+ ic gcp billing info # Monthly billing breakdown by service
628
+ ```
629
+
630
+ ---
631
+
632
+ ### 4. OCI, CloudFlare, SSH & Security Command Examples
633
+
634
+ ```bash
635
+ # Oracle Cloud Infrastructure (OCI)
636
+ ic oci vm info # Compute VM instances
637
+ ic oci aci info # Autonomous Container Instances
638
+ ic oci vcn info # Virtual Cloud Networks and Subnets
639
+ ic oci lb info # Load Balancers
640
+ ic oci nsg info # Network Security Groups
641
+ ic oci volume info # Block Volumes
642
+ ic oci obj info # Object Storage buckets
643
+ ic oci compartment # Compartment hierarchy tree
644
+ ic oci policy info # IAM Policies
645
+ ic oci cost usage # Cost and billing usage report
646
+
647
+ # CloudFlare (supports both 'ic cf' and 'ic cloudflare')
648
+ ic cf zone info # List CloudFlare zones
649
+ ic cf dns info # Inspect DNS records across zones
650
+
651
+ # SSH Server Management
652
+ ic ssh info # Auto-discover and verify SSH servers from ~/.ssh/config
653
+
654
+ # Built-in Security Scanner & Git Hooks
655
+ ic security scan # Scan workspace for hardcoded secrets or private keys
656
+ ic security install-hooks # Install pre-commit secret scanning hooks
657
+ ```
658
+
659
+ ---
660
+
661
+ ## Testing & Verification
662
+
663
+ The test suite is organized into Core Unit Tests (`tests/unit/`) and Platform Test Suites (`tests/platforms/<platform>/`) with automatic CI platform discovery:
664
+
665
+ ```bash
666
+ # Run the full test suite (Core + All Platforms)
667
+ PYTHONPATH=src:. pytest -q
668
+
669
+ # Run Core Unit Tests only
670
+ PYTHONPATH=src:. pytest tests/unit
671
+
672
+ # Run tests for a specific cloud platform
673
+ PYTHONPATH=src:. pytest tests/platforms/aws
674
+ PYTHONPATH=src:. pytest tests/platforms/tencent
675
+ PYTHONPATH=src:. pytest tests/platforms/gcp
676
+ PYTHONPATH=src:. pytest tests/platforms/oci
677
+ PYTHONPATH=src:. pytest tests/platforms/cloudflare
678
+ PYTHONPATH=src:. pytest tests/platforms/ssh
679
+
680
+ # Build wheel and run isolated clean-virtualenv smoke test
681
+ bash scripts/ci-smoke-test.sh
682
+ ```
683
+
684
+ ---
685
+
686
+ ## License
687
+
688
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.