ic-code 1.7.1__tar.gz → 1.7.3__tar.gz

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