ic-code 1.3.4__tar.gz → 1.5.0__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 (255) hide show
  1. {ic_code-1.3.4/src/ic_code.egg-info → ic_code-1.5.0}/PKG-INFO +98 -40
  2. {ic_code-1.3.4 → ic_code-1.5.0}/README.md +51 -20
  3. ic_code-1.5.0/docs/gcp/README.md +80 -0
  4. {ic_code-1.3.4 → ic_code-1.5.0}/docs/tencent/README.md +11 -2
  5. {ic_code-1.3.4 → ic_code-1.5.0}/docs/user_guide.md +24 -5
  6. {ic_code-1.3.4 → ic_code-1.5.0}/pyproject.toml +59 -33
  7. {ic_code-1.3.4 → ic_code-1.5.0}/scripts/ci-detect-platforms.py +17 -11
  8. ic_code-1.5.0/scripts/ci-smoke-test.sh +83 -0
  9. {ic_code-1.3.4 → ic_code-1.5.0}/src/common/gather_env.py +1 -7
  10. {ic_code-1.3.4 → ic_code-1.5.0}/src/common/gcp_config_validator.py +3 -37
  11. {ic_code-1.3.4 → ic_code-1.5.0}/src/common/gcp_monitoring.py +34 -91
  12. {ic_code-1.3.4 → ic_code-1.5.0}/src/common/gcp_utils.py +87 -30
  13. {ic_code-1.3.4 → ic_code-1.5.0}/src/common/log.py +5 -8
  14. {ic_code-1.3.4 → ic_code-1.5.0}/src/common/progress_decorator.py +42 -19
  15. {ic_code-1.3.4 → ic_code-1.5.0}/src/common/slack.py +18 -8
  16. {ic_code-1.3.4 → ic_code-1.5.0}/src/common/utils.py +10 -4
  17. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/__init__.py +1 -1
  18. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/cli.py +2 -2
  19. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/config/docs_organizer.py +8 -6
  20. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/core/dependency_validator.py +7 -5
  21. ic_code-1.5.0/src/ic/core/desc_helper.py +229 -0
  22. ic_code-1.5.0/src/ic/core/interfaces/__init__.py +9 -0
  23. ic_code-1.5.0/src/ic/core/interfaces/command.py +85 -0
  24. ic_code-1.5.0/src/ic/core/interfaces/formatter.py +112 -0
  25. ic_code-1.5.0/src/ic/core/interfaces/result.py +136 -0
  26. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/core/platform_discovery.py +76 -11
  27. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/core/session.py +28 -10
  28. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/cloudfront/info.py +61 -1
  29. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/codepipeline/build.py +35 -21
  30. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/codepipeline/deploy.py +35 -21
  31. ic_code-1.5.0/src/ic/platforms/aws/ec2/desc.py +196 -0
  32. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/ec2/info.py +33 -10
  33. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/ec2/list_tags.py +12 -23
  34. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/ecs/info.py +33 -17
  35. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/eks/info.py +34 -16
  36. ic_code-1.5.0/src/ic/platforms/aws/lb/desc.py +281 -0
  37. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/lb/info.py +123 -41
  38. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/msk/info.py +32 -18
  39. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/rds/info.py +32 -9
  40. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/s3/info.py +31 -8
  41. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/vpc/info.py +31 -9
  42. ic_code-1.5.0/src/ic/platforms/cloudflare/account/info.py +180 -0
  43. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/cloudflare/dns/info.py +100 -121
  44. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/cloudflare/dns/list_info.py +1 -8
  45. ic_code-1.5.0/src/ic/platforms/cloudflare/zone/info.py +235 -0
  46. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/billing/info.py +165 -171
  47. ic_code-1.5.0/src/ic/platforms/gcp/compute/desc.py +370 -0
  48. ic_code-1.5.0/src/ic/platforms/gcp/compute/info.py +776 -0
  49. ic_code-1.5.0/src/ic/platforms/gcp/compute/mock_data.json +191 -0
  50. ic_code-1.5.0/src/ic/platforms/gcp/dns/__init__.py +1 -0
  51. ic_code-1.5.0/src/ic/platforms/gcp/dns/info.py +380 -0
  52. ic_code-1.5.0/src/ic/platforms/gcp/dns/mock_data.json +142 -0
  53. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/firewall/info.py +189 -175
  54. ic_code-1.5.0/src/ic/platforms/gcp/firewall/mock_data.json +53 -0
  55. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/functions/info.py +178 -164
  56. ic_code-1.5.0/src/ic/platforms/gcp/functions/mock_data.json +26 -0
  57. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/gke/info.py +167 -159
  58. ic_code-1.5.0/src/ic/platforms/gcp/lb/desc.py +279 -0
  59. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/lb/info.py +217 -186
  60. ic_code-1.5.0/src/ic/platforms/gcp/lb/mock_data.json +154 -0
  61. ic_code-1.5.0/src/ic/platforms/gcp/profile/__init__.py +3 -0
  62. ic_code-1.5.0/src/ic/platforms/gcp/profile/info.py +276 -0
  63. ic_code-1.5.0/src/ic/platforms/gcp/profile/mock_data.json +20 -0
  64. ic_code-1.5.0/src/ic/platforms/gcp/project/__init__.py +1 -0
  65. ic_code-1.5.0/src/ic/platforms/gcp/project/info.py +479 -0
  66. ic_code-1.5.0/src/ic/platforms/gcp/project/mock_data.json +138 -0
  67. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/run/info.py +271 -293
  68. ic_code-1.5.0/src/ic/platforms/gcp/run/mock_data.json +28 -0
  69. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/sql/info.py +190 -169
  70. ic_code-1.5.0/src/ic/platforms/gcp/sql/mock_data.json +28 -0
  71. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/storage/info.py +153 -152
  72. ic_code-1.5.0/src/ic/platforms/gcp/storage/mock_data.json +38 -0
  73. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/vpc/info.py +175 -163
  74. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/compartment/info.py +59 -42
  75. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/cost/credit.py +48 -39
  76. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/cost/usage.py +40 -27
  77. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/lb/info.py +58 -19
  78. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/nsg/info.py +58 -16
  79. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/obj/info.py +50 -21
  80. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/policy/info.py +45 -12
  81. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/vcn/info.py +43 -21
  82. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/vm/info.py +42 -18
  83. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/volume/info.py +55 -15
  84. ic_code-1.5.0/src/ic/platforms/ssh/auto/scan.py +175 -0
  85. ic_code-1.5.0/src/ic/platforms/ssh/server/info.py +145 -0
  86. ic_code-1.5.0/src/ic/platforms/tencent/clb/desc.py +281 -0
  87. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/clb/info.py +32 -11
  88. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/clb/traffic.py +57 -38
  89. ic_code-1.5.0/src/ic/platforms/tencent/cvm/desc.py +232 -0
  90. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/cvm/info.py +35 -16
  91. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/lighthouse/info.py +58 -40
  92. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/nat/info.py +52 -33
  93. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/profile/info.py +30 -7
  94. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/sg/info.py +69 -48
  95. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/tke/info.py +54 -35
  96. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/vpc/info.py +53 -34
  97. {ic_code-1.3.4 → ic_code-1.5.0/src/ic_code.egg-info}/PKG-INFO +98 -40
  98. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic_code.egg-info/SOURCES.txt +27 -0
  99. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic_code.egg-info/requires.txt +52 -18
  100. ic_code-1.3.4/docs/gcp/README.md +0 -35
  101. ic_code-1.3.4/src/ic/platforms/cloudflare/account/info.py +0 -222
  102. ic_code-1.3.4/src/ic/platforms/cloudflare/zone/info.py +0 -323
  103. ic_code-1.3.4/src/ic/platforms/gcp/compute/info.py +0 -605
  104. ic_code-1.3.4/src/ic/platforms/gcp/compute/mock_data.json +0 -32
  105. ic_code-1.3.4/src/ic/platforms/ssh/auto/scan.py +0 -171
  106. ic_code-1.3.4/src/ic/platforms/ssh/server/info.py +0 -149
  107. {ic_code-1.3.4 → ic_code-1.5.0}/LICENSE +0 -0
  108. {ic_code-1.3.4 → ic_code-1.5.0}/MANIFEST.in +0 -0
  109. {ic_code-1.3.4 → ic_code-1.5.0}/SECURITY.md +0 -0
  110. {ic_code-1.3.4 → ic_code-1.5.0}/config/default.yaml +0 -0
  111. {ic_code-1.3.4 → ic_code-1.5.0}/docs/README.md +0 -0
  112. {ic_code-1.3.4 → ic_code-1.5.0}/docs/aws/README.md +0 -0
  113. {ic_code-1.3.4 → ic_code-1.5.0}/docs/cloudflare/README.md +0 -0
  114. {ic_code-1.3.4 → ic_code-1.5.0}/docs/installation.md +0 -0
  115. {ic_code-1.3.4 → ic_code-1.5.0}/docs/oci/README.md +0 -0
  116. {ic_code-1.3.4 → ic_code-1.5.0}/docs/release-guide.md +0 -0
  117. {ic_code-1.3.4 → ic_code-1.5.0}/docs/security.md +0 -0
  118. {ic_code-1.3.4 → ic_code-1.5.0}/docs/ssh/README.md +0 -0
  119. {ic_code-1.3.4 → ic_code-1.5.0}/docs/troubleshooting.md +0 -0
  120. {ic_code-1.3.4 → ic_code-1.5.0}/requirements.txt +0 -0
  121. {ic_code-1.3.4 → ic_code-1.5.0}/scripts/bump-version.sh +0 -0
  122. {ic_code-1.3.4 → ic_code-1.5.0}/scripts/cf_edge_nsg_make/cf_edge_nsg_make.py +0 -0
  123. {ic_code-1.3.4 → ic_code-1.5.0}/scripts/ci-generate-matrix.py +0 -0
  124. {ic_code-1.3.4 → ic_code-1.5.0}/scripts/deploy.sh +0 -0
  125. {ic_code-1.3.4 → ic_code-1.5.0}/scripts/oracle-policy/user_policy.py +0 -0
  126. {ic_code-1.3.4 → ic_code-1.5.0}/setup.cfg +0 -0
  127. {ic_code-1.3.4 → ic_code-1.5.0}/setup.py +0 -0
  128. {ic_code-1.3.4 → ic_code-1.5.0}/src/common/__init__.py +0 -0
  129. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/commands/__init__.py +0 -0
  130. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/commands/config.py +0 -0
  131. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/commands/security.py +0 -0
  132. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/compat/__init__.py +0 -0
  133. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/compat/cli.py +0 -0
  134. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/compat/common.py +0 -0
  135. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/config/__init__.py +0 -0
  136. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/config/cleanup.py +0 -0
  137. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/config/external.py +0 -0
  138. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/config/installer.py +0 -0
  139. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/config/manager.py +0 -0
  140. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/config/migration.py +0 -0
  141. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/config/migration_utils.py +0 -0
  142. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/config/path_manager.py +0 -0
  143. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/config/schema.py +0 -0
  144. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/config/secrets.py +0 -0
  145. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/config/security.py +0 -0
  146. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/core/__init__.py +0 -0
  147. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/core/logging.py +0 -0
  148. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/core/silence_logging.py +0 -0
  149. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/__init__.py +0 -0
  150. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/__init__.py +0 -0
  151. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/cloudfront/__init__.py +0 -0
  152. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/codepipeline/__init__.py +0 -0
  153. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/ec2/__init__.py +0 -0
  154. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/ec2/tag_check.py +0 -0
  155. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/ecs/__init__.py +0 -0
  156. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/ecs/service.py +0 -0
  157. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/ecs/task.py +0 -0
  158. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/eks/__init__.py +0 -0
  159. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/eks/addons.py +0 -0
  160. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/eks/fargate.py +0 -0
  161. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/eks/nodes.py +0 -0
  162. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/eks/pods.py +0 -0
  163. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/eks/update_config.py +0 -0
  164. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/fargate/__init__.py +0 -0
  165. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/fargate/info.py +0 -0
  166. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/healthdashboard/__init__.py +0 -0
  167. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/healthdashboard/reboot.py +0 -0
  168. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/lb/__init__.py +0 -0
  169. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/lb/list_tags.py +0 -0
  170. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/lb/tag_check.py +0 -0
  171. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/msk/__init__.py +0 -0
  172. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/msk/broker.py +0 -0
  173. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/nat/__init__.py +0 -0
  174. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/nat/list_tags.py +0 -0
  175. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/nat/tag_check.py +0 -0
  176. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/profile/__init__.py +0 -0
  177. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/profile/info.py +0 -0
  178. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/rds/__init__.py +0 -0
  179. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/rds/list_tags.py +0 -0
  180. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/rds/tag_check.py +0 -0
  181. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/s3/__init__.py +0 -0
  182. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/s3/list_tags.py +0 -0
  183. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/s3/tag_check.py +0 -0
  184. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/sg/__init__.py +0 -0
  185. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/sg/info.py +0 -0
  186. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/vpc/__init__.py +0 -0
  187. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/vpc/list_tags.py +0 -0
  188. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/vpc/tag_check.py +0 -0
  189. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/vpn/__init__.py +0 -0
  190. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/vpn/info.py +0 -0
  191. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/cloudflare/__init__.py +0 -0
  192. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/cloudflare/account/__init__.py +0 -0
  193. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/cloudflare/client.py +0 -0
  194. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/cloudflare/dns/__init__.py +0 -0
  195. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/cloudflare/rules/__init__.py +0 -0
  196. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/cloudflare/rules/info.py +0 -0
  197. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/cloudflare/traffic/__init__.py +0 -0
  198. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/cloudflare/traffic/info.py +0 -0
  199. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/cloudflare/waf/__init__.py +0 -0
  200. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/cloudflare/waf/info.py +0 -0
  201. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/cloudflare/zone/__init__.py +0 -0
  202. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/__init__.py +0 -0
  203. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/billing/__init__.py +0 -0
  204. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/billing/mock_data.json +0 -0
  205. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/compute/__init__.py +0 -0
  206. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/firewall/__init__.py +0 -0
  207. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/functions/__init__.py +0 -0
  208. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/gke/__init__.py +0 -0
  209. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/gke/mock_data.json +0 -0
  210. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/lb/__init__.py +0 -0
  211. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/run/__init__.py +0 -0
  212. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/sql/__init__.py +0 -0
  213. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/storage/__init__.py +0 -0
  214. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/vpc/__init__.py +0 -0
  215. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/vpc/mock_data.json +0 -0
  216. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/__init__.py +0 -0
  217. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/common/__init__.py +0 -0
  218. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/common/utils.py +0 -0
  219. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/compartment/__init__.py +0 -0
  220. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/cost/__init__.py +0 -0
  221. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/info/__init__.py +0 -0
  222. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/info/oci_info.py +0 -0
  223. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/lb/__init__.py +0 -0
  224. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/nsg/__init__.py +0 -0
  225. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/obj/__init__.py +0 -0
  226. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/policy/__init__.py +0 -0
  227. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/policy/search.py +0 -0
  228. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/vcn/__init__.py +0 -0
  229. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/vm/__init__.py +0 -0
  230. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/volume/__init__.py +0 -0
  231. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/ssh/__init__.py +0 -0
  232. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/ssh/auto/__init__.py +0 -0
  233. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/ssh/auto_ssh.py +0 -0
  234. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/ssh/server/__init__.py +0 -0
  235. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/ssh/server_info.py +0 -0
  236. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/__init__.py +0 -0
  237. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/clb/__init__.py +0 -0
  238. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/client.py +0 -0
  239. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/cvm/__init__.py +0 -0
  240. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/lighthouse/__init__.py +0 -0
  241. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/nat/__init__.py +0 -0
  242. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/profile/__init__.py +0 -0
  243. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/sg/__init__.py +0 -0
  244. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/tke/__init__.py +0 -0
  245. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/vpc/__init__.py +0 -0
  246. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/security/__init__.py +0 -0
  247. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/security/config.py +0 -0
  248. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/security/detector.py +0 -0
  249. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/security/guidance.py +0 -0
  250. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/security/hooks.py +0 -0
  251. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/security/patterns.py +0 -0
  252. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/security/scanner.py +0 -0
  253. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic_code.egg-info/dependency_links.txt +0 -0
  254. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic_code.egg-info/entry_points.txt +0 -0
  255. {ic_code-1.3.4 → ic_code-1.5.0}/src/ic_code.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ic-code
3
- Version: 1.3.4
3
+ Version: 1.5.0
4
4
  Summary: Infrastructure CLI tool for managing AWS, GCP, OCI, CloudFlare, SSH, and more
5
5
  Home-page: https://github.com/dgr009/ic
6
6
  Author: SangYun Kim
@@ -28,24 +28,8 @@ Classifier: Environment :: Console
28
28
  Requires-Python: >=3.9,<3.15
29
29
  Description-Content-Type: text/markdown
30
30
  License-File: LICENSE
31
- Requires-Dist: boto3<2.0.0,>=1.34.0
32
- Requires-Dist: botocore<2.0.0,>=1.34.0
33
- Requires-Dist: oci<3.0.0,>=2.149.0
34
31
  Requires-Dist: requests<3.0.0,>=2.31.0
35
- Requires-Dist: kubernetes<32.0.0,>=29.0.0
36
- Requires-Dist: awscli<2.0.0,>=1.32.0
37
- Requires-Dist: google-cloud-compute<2.0.0,>=1.36.0
38
- Requires-Dist: google-cloud-container<3.0.0,>=2.44.0
39
- Requires-Dist: google-cloud-storage<3.0.0,>=2.18.0
40
- Requires-Dist: google-cloud-functions<2.0.0,>=1.16.0
41
- Requires-Dist: google-cloud-run<1.0.0,>=0.11.0
42
- Requires-Dist: google-cloud-billing<2.0.0,>=1.13.0
43
- Requires-Dist: google-cloud-resource-manager<2.0.0,>=1.12.0
44
- Requires-Dist: google-auth<3.0.0,>=2.29.0
45
- Requires-Dist: google-auth-oauthlib<2.0.0,>=1.2.0
46
- Requires-Dist: google-auth-httplib2<1.0.0,>=0.2.0
47
- Requires-Dist: paramiko<5.0.0,>=3.4.0
48
- Requires-Dist: netifaces<1.0.0,>=0.11.0
32
+ Requires-Dist: cryptography<50.0.0,>=42.0.0
49
33
  Requires-Dist: rich<15.0.0,>=13.0.0
50
34
  Requires-Dist: InquirerPy<1.0.0,>=0.3.4
51
35
  Requires-Dist: tqdm<5.0.0,>=4.67.0
@@ -56,13 +40,56 @@ Requires-Dist: click<9.0.0,>=8.1.0
56
40
  Requires-Dist: docutils<1.0.0,>=0.19
57
41
  Requires-Dist: invoke<3.0.0,>=2.2.0
58
42
  Requires-Dist: jsonschema<5.0.0,>=4.23.0
59
- Requires-Dist: cryptography<50.0.0,>=42.0.0
60
43
  Requires-Dist: watchdog<6.0.0,>=4.0.0
61
44
  Requires-Dist: cerberus<2.0.0,>=1.3.5
62
45
  Requires-Dist: pydantic<3.0.0,>=2.7.0
63
46
  Requires-Dist: packaging<25.0,>=24.0
64
47
  Requires-Dist: setuptools<76.0.0,>=69.0.0
65
- Requires-Dist: tencentcloud-sdk-python<4.0.0,>=3.0.0
48
+ Provides-Extra: aws
49
+ Requires-Dist: boto3<2.0.0,>=1.34.0; extra == "aws"
50
+ Requires-Dist: botocore<2.0.0,>=1.34.0; extra == "aws"
51
+ Requires-Dist: awscli<2.0.0,>=1.32.0; extra == "aws"
52
+ Provides-Extra: tencent
53
+ Requires-Dist: tencentcloud-sdk-python<4.0.0,>=3.0.0; extra == "tencent"
54
+ Provides-Extra: oci
55
+ Requires-Dist: oci<3.0.0,>=2.149.0; extra == "oci"
56
+ Provides-Extra: gcp
57
+ Requires-Dist: google-cloud-compute<2.0.0,>=1.36.0; extra == "gcp"
58
+ Requires-Dist: google-cloud-container<3.0.0,>=2.44.0; extra == "gcp"
59
+ Requires-Dist: google-cloud-storage<3.0.0,>=2.18.0; extra == "gcp"
60
+ Requires-Dist: google-cloud-functions<2.0.0,>=1.16.0; extra == "gcp"
61
+ Requires-Dist: google-cloud-run<1.0.0,>=0.11.0; extra == "gcp"
62
+ Requires-Dist: google-cloud-billing<2.0.0,>=1.13.0; extra == "gcp"
63
+ Requires-Dist: google-cloud-dns<1.0.0,>=0.34.0; extra == "gcp"
64
+ Requires-Dist: google-cloud-resource-manager<2.0.0,>=1.12.0; extra == "gcp"
65
+ Requires-Dist: google-auth<3.0.0,>=2.29.0; extra == "gcp"
66
+ Requires-Dist: google-auth-oauthlib<2.0.0,>=1.2.0; extra == "gcp"
67
+ Requires-Dist: google-auth-httplib2<1.0.0,>=0.2.0; extra == "gcp"
68
+ Provides-Extra: ssh
69
+ Requires-Dist: paramiko<5.0.0,>=3.4.0; extra == "ssh"
70
+ Requires-Dist: netifaces<1.0.0,>=0.11.0; extra == "ssh"
71
+ Provides-Extra: k8s
72
+ Requires-Dist: kubernetes<32.0.0,>=29.0.0; extra == "k8s"
73
+ Provides-Extra: all
74
+ Requires-Dist: boto3<2.0.0,>=1.34.0; extra == "all"
75
+ Requires-Dist: botocore<2.0.0,>=1.34.0; extra == "all"
76
+ Requires-Dist: awscli<2.0.0,>=1.32.0; extra == "all"
77
+ Requires-Dist: tencentcloud-sdk-python<4.0.0,>=3.0.0; extra == "all"
78
+ Requires-Dist: oci<3.0.0,>=2.149.0; extra == "all"
79
+ Requires-Dist: google-cloud-compute<2.0.0,>=1.36.0; extra == "all"
80
+ Requires-Dist: google-cloud-container<3.0.0,>=2.44.0; extra == "all"
81
+ Requires-Dist: google-cloud-storage<3.0.0,>=2.18.0; extra == "all"
82
+ Requires-Dist: google-cloud-functions<2.0.0,>=1.16.0; extra == "all"
83
+ Requires-Dist: google-cloud-run<1.0.0,>=0.11.0; extra == "all"
84
+ Requires-Dist: google-cloud-billing<2.0.0,>=1.13.0; extra == "all"
85
+ Requires-Dist: google-cloud-dns<1.0.0,>=0.34.0; extra == "all"
86
+ Requires-Dist: google-cloud-resource-manager<2.0.0,>=1.12.0; extra == "all"
87
+ Requires-Dist: google-auth<3.0.0,>=2.29.0; extra == "all"
88
+ Requires-Dist: google-auth-oauthlib<2.0.0,>=1.2.0; extra == "all"
89
+ Requires-Dist: google-auth-httplib2<1.0.0,>=0.2.0; extra == "all"
90
+ Requires-Dist: paramiko<5.0.0,>=3.4.0; extra == "all"
91
+ Requires-Dist: netifaces<1.0.0,>=0.11.0; extra == "all"
92
+ Requires-Dist: kubernetes<32.0.0,>=29.0.0; extra == "all"
66
93
  Provides-Extra: dev
67
94
  Requires-Dist: pytest<9.0.0,>=8.0.0; extra == "dev"
68
95
  Requires-Dist: pytest-cov<8.0.0,>=5.0.0; extra == "dev"
@@ -99,6 +126,12 @@ A comprehensive, production-grade Infrastructure Command Line Interface tool for
99
126
 
100
127
  ---
101
128
 
129
+ ## 🖥️ Terminal UI Preview
130
+
131
+ ![Tencent CVM Info Terminal UI](docs/tencent/use_sample.png)
132
+
133
+ ---
134
+
102
135
  ## 📦 Supported Platforms & Services
103
136
 
104
137
  ### 1. 🟧 AWS Services (Production Ready)
@@ -114,12 +147,21 @@ A comprehensive, production-grade Infrastructure Command Line Interface tool for
114
147
  - **Networking**: VPC, Subnets, NAT Gateways, CLB (Load Balancers - listener rules, health check, target health analysis & network traffic bandwidth statistics), Security Groups (with Ingress/Egress rules & tree view)
115
148
  - **Authentication**: Multi-account STS AssumeRole support, Profile management (`ic tencent profile info` via `~/.tencent/credentials`)
116
149
 
117
- ### 3. 🟩 GCP Services (Production Ready)
118
- - **Compute Engine**: VM instances with status, zone, and network interface details
119
- - **Cloud Storage**: Bucket lists, location, and storage class information
120
- - **VPC Network**: Subnets, routes, and firewall rule visibility
121
- - **GKE**: Kubernetes Engine clusters and node pool configurations
122
- - **Cloud SQL**: Database instances, engines, and status
150
+ ### 3. 🟩 GCP Services (Production Ready - v1.5.0)
151
+ - **Compute Engine**: VM instances with status, zone, machine type (custom parsing), vCPU, memory, disks, IPs, tags, and verbose 15-column output (`ic gcp compute info -v`)
152
+ - **Compute Detailed Inspection (`desc`)**: Full attribute discovery, dot-notation key filtering (`-k / --keys`), schema discovery (`-l / --list-keys`) for instances
153
+ - **Load Balancing (LB)**: Forwarding rules, Target proxies, URL maps, Backend services, Health checks, and SSL certificates (`ic gcp lb info`)
154
+ - **LB Detailed Inspection (`desc`)**: Deep hierarchical inspection of proxies, rules, backends, and health checks with dot-notation key filtering (`ic gcp lb desc`)
155
+ - **GKE**: Kubernetes Engine clusters and node pool configurations (`ic gcp gke info`)
156
+ - **Cloud Run**: Serverless container services, ready status, CPU/Mem, and revisions (`ic gcp run info`)
157
+ - **Cloud Functions**: Serverless functions, triggers, runtime, and memory (`ic gcp functions info`)
158
+ - **Cloud SQL**: Managed database instances, engine versions, HA, and status (`ic gcp sql info`)
159
+ - **Cloud Storage**: Buckets, locations, storage classes, and lifecycle (`ic gcp storage info`)
160
+ - **VPC & Firewall**: Virtual networks, subnets, and ingress/egress firewall rules (`ic gcp vpc info`, `ic gcp firewall info`)
161
+ - **Cloud DNS**: Managed public and private DNS zones and record sets (`ic gcp dns info`)
162
+ - **Resource Hierarchy & Projects**: Multi-level folder tree, project status, and active project indicators (`ic gcp project info`)
163
+ - **Billing**: Cost by service, budgets, and alerts (`ic gcp billing info`)
164
+ - **Profile**: gcloud CLI configurations and active account verification (`ic gcp profile info`)
123
165
 
124
166
  ### 4. 🟥 Oracle Cloud Infrastructure (OCI) (Production Ready)
125
167
  - **Compute & Containers**: VM instances, Container instances (ACI)
@@ -294,23 +336,39 @@ ic tencent tke info
294
336
  ic tencent profile info
295
337
  ```
296
338
 
297
- ### GCP Commands
339
+ ### GCP Commands (v1.5.0)
298
340
 
299
341
  ```bash
300
- # Compute Engine VM instances
342
+ # Compute Engine VM instances (summary & verbose 15-column output)
301
343
  ic gcp compute info
302
-
303
- # Cloud Storage buckets
304
- ic gcp storage info
305
-
306
- # VPC networks and subnets
307
- ic gcp vpc info
308
-
309
- # GKE Clusters
310
- ic gcp gke info
311
-
312
- # Cloud SQL databases
313
- ic gcp sql info
344
+ ic gcp compute info -v
345
+
346
+ # Compute Engine detailed resource inspection (desc)
347
+ ic gcp compute desc # Full YAML dump
348
+ ic gcp compute desc -l # Discover queryable dot-notation keys
349
+ ic gcp compute desc -k status,machine_type,internal_ip # Filter attributes into table
350
+
351
+ # Load Balancers (ALB / NLB)
352
+ ic gcp lb info
353
+ ic gcp lb desc -l # Discover LB schema keys
354
+ ic gcp lb desc -k type,ip_address,backend_services.0.name # Inspect LB backend services
355
+
356
+ # Container & Serverless
357
+ ic gcp gke info # GKE clusters & node pools
358
+ ic gcp run info # Cloud Run services & revisions
359
+ ic gcp functions info # Cloud Functions & triggers
360
+
361
+ # Databases, Storage & Networking
362
+ ic gcp sql info # Cloud SQL instances
363
+ ic gcp storage info # Cloud Storage buckets
364
+ ic gcp vpc info # VPC networks & subnets
365
+ ic gcp firewall info # Firewall ingress/egress rules
366
+ ic gcp dns info # Cloud DNS managed zones
367
+
368
+ # Resource Hierarchy & Project Management
369
+ ic gcp project info # Active project & folder tree view
370
+ ic gcp billing info # Monthly billing costs by service
371
+ ic gcp profile info # gcloud active configurations
314
372
  ```
315
373
 
316
374
  ### OCI Commands
@@ -20,6 +20,12 @@ A comprehensive, production-grade Infrastructure Command Line Interface tool for
20
20
 
21
21
  ---
22
22
 
23
+ ## 🖥️ Terminal UI Preview
24
+
25
+ ![Tencent CVM Info Terminal UI](docs/tencent/use_sample.png)
26
+
27
+ ---
28
+
23
29
  ## 📦 Supported Platforms & Services
24
30
 
25
31
  ### 1. 🟧 AWS Services (Production Ready)
@@ -35,12 +41,21 @@ A comprehensive, production-grade Infrastructure Command Line Interface tool for
35
41
  - **Networking**: VPC, Subnets, NAT Gateways, CLB (Load Balancers - listener rules, health check, target health analysis & network traffic bandwidth statistics), Security Groups (with Ingress/Egress rules & tree view)
36
42
  - **Authentication**: Multi-account STS AssumeRole support, Profile management (`ic tencent profile info` via `~/.tencent/credentials`)
37
43
 
38
- ### 3. 🟩 GCP Services (Production Ready)
39
- - **Compute Engine**: VM instances with status, zone, and network interface details
40
- - **Cloud Storage**: Bucket lists, location, and storage class information
41
- - **VPC Network**: Subnets, routes, and firewall rule visibility
42
- - **GKE**: Kubernetes Engine clusters and node pool configurations
43
- - **Cloud SQL**: Database instances, engines, and status
44
+ ### 3. 🟩 GCP Services (Production Ready - v1.5.0)
45
+ - **Compute Engine**: VM instances with status, zone, machine type (custom parsing), vCPU, memory, disks, IPs, tags, and verbose 15-column output (`ic gcp compute info -v`)
46
+ - **Compute Detailed Inspection (`desc`)**: Full attribute discovery, dot-notation key filtering (`-k / --keys`), schema discovery (`-l / --list-keys`) for instances
47
+ - **Load Balancing (LB)**: Forwarding rules, Target proxies, URL maps, Backend services, Health checks, and SSL certificates (`ic gcp lb info`)
48
+ - **LB Detailed Inspection (`desc`)**: Deep hierarchical inspection of proxies, rules, backends, and health checks with dot-notation key filtering (`ic gcp lb desc`)
49
+ - **GKE**: Kubernetes Engine clusters and node pool configurations (`ic gcp gke info`)
50
+ - **Cloud Run**: Serverless container services, ready status, CPU/Mem, and revisions (`ic gcp run info`)
51
+ - **Cloud Functions**: Serverless functions, triggers, runtime, and memory (`ic gcp functions info`)
52
+ - **Cloud SQL**: Managed database instances, engine versions, HA, and status (`ic gcp sql info`)
53
+ - **Cloud Storage**: Buckets, locations, storage classes, and lifecycle (`ic gcp storage info`)
54
+ - **VPC & Firewall**: Virtual networks, subnets, and ingress/egress firewall rules (`ic gcp vpc info`, `ic gcp firewall info`)
55
+ - **Cloud DNS**: Managed public and private DNS zones and record sets (`ic gcp dns info`)
56
+ - **Resource Hierarchy & Projects**: Multi-level folder tree, project status, and active project indicators (`ic gcp project info`)
57
+ - **Billing**: Cost by service, budgets, and alerts (`ic gcp billing info`)
58
+ - **Profile**: gcloud CLI configurations and active account verification (`ic gcp profile info`)
44
59
 
45
60
  ### 4. 🟥 Oracle Cloud Infrastructure (OCI) (Production Ready)
46
61
  - **Compute & Containers**: VM instances, Container instances (ACI)
@@ -215,23 +230,39 @@ ic tencent tke info
215
230
  ic tencent profile info
216
231
  ```
217
232
 
218
- ### GCP Commands
233
+ ### GCP Commands (v1.5.0)
219
234
 
220
235
  ```bash
221
- # Compute Engine VM instances
236
+ # Compute Engine VM instances (summary & verbose 15-column output)
222
237
  ic gcp compute info
223
-
224
- # Cloud Storage buckets
225
- ic gcp storage info
226
-
227
- # VPC networks and subnets
228
- ic gcp vpc info
229
-
230
- # GKE Clusters
231
- ic gcp gke info
232
-
233
- # Cloud SQL databases
234
- ic gcp sql info
238
+ ic gcp compute info -v
239
+
240
+ # Compute Engine detailed resource inspection (desc)
241
+ ic gcp compute desc # Full YAML dump
242
+ ic gcp compute desc -l # Discover queryable dot-notation keys
243
+ ic gcp compute desc -k status,machine_type,internal_ip # Filter attributes into table
244
+
245
+ # Load Balancers (ALB / NLB)
246
+ ic gcp lb info
247
+ ic gcp lb desc -l # Discover LB schema keys
248
+ ic gcp lb desc -k type,ip_address,backend_services.0.name # Inspect LB backend services
249
+
250
+ # Container & Serverless
251
+ ic gcp gke info # GKE clusters & node pools
252
+ ic gcp run info # Cloud Run services & revisions
253
+ ic gcp functions info # Cloud Functions & triggers
254
+
255
+ # Databases, Storage & Networking
256
+ ic gcp sql info # Cloud SQL instances
257
+ ic gcp storage info # Cloud Storage buckets
258
+ ic gcp vpc info # VPC networks & subnets
259
+ ic gcp firewall info # Firewall ingress/egress rules
260
+ ic gcp dns info # Cloud DNS managed zones
261
+
262
+ # Resource Hierarchy & Project Management
263
+ ic gcp project info # Active project & folder tree view
264
+ ic gcp billing info # Monthly billing costs by service
265
+ ic gcp profile info # gcloud active configurations
235
266
  ```
236
267
 
237
268
  ### OCI Commands
@@ -0,0 +1,80 @@
1
+ # GCP Platform Documentation
2
+
3
+ This directory contains documentation for the GCP (Google Cloud Platform) integration in IC CLI (v1.5.0).
4
+
5
+ ---
6
+
7
+ ## Available Guides
8
+
9
+ - [Installation Guide](../installation.md) - How to install and set up GCP integration
10
+ - [User & Usage Guide](../user_guide.md) - Complete command reference for GCP commands
11
+ - [Troubleshooting Guide](../troubleshooting.md) - Common issues and solutions
12
+
13
+ ---
14
+
15
+ ## Services Supported (v1.5.0)
16
+
17
+ | Service | Commands | Key Features |
18
+ |---|---|---|
19
+ | **Compute Engine** | `ic gcp compute info`, `ic gcp compute desc` | VM list with zone, machine type, vCPU, memory, disks, IPs, tags. Verbose 15-column view (`-v`). Full schema & dot-notation key filtering (`desc -k`, `desc -l`). |
20
+ | **Load Balancing** | `ic gcp lb info`, `ic gcp lb desc` | Global & Regional Forwarding Rules, Target Proxies, URL Maps, Backend Services, Health Checks, SSL Certs. Detailed hierarchical inspection (`desc`). |
21
+ | **Google Kubernetes Engine (GKE)** | `ic gcp gke info` | GKE clusters, versions, node pools, machine types, autoscaling, and private cluster status. |
22
+ | **Cloud Run** | `ic gcp run info` | Serverless container services, ready status, CPU/Mem allocations, min/max instances, and URLs. |
23
+ | **Cloud Functions** | `ic gcp functions info` | 1st & 2nd Gen Cloud Functions, triggers, runtimes, memory, and status. |
24
+ | **Cloud SQL** | `ic gcp sql info` | MySQL, PostgreSQL, SQL Server instances, versions, tiers, HA, and backup status. |
25
+ | **Cloud Storage (GCS)** | `ic gcp storage info` | Storage buckets, locations, storage classes, object counts, sizes, and versioning. |
26
+ | **VPC & Networking** | `ic gcp vpc info` | VPC networks, auto/custom subnets, CIDR ranges, and gateway configurations. |
27
+ | **Firewall** | `ic gcp firewall info` | Ingress and Egress firewall rules, priorities, allowed/denied protocols/ports, and target tags. |
28
+ | **Cloud DNS** | `ic gcp dns info` | Managed public and private DNS zones, nameservers, and record sets. |
29
+ | **Resource Manager (Projects)** | `ic gcp project info` | Multi-level folder resource hierarchy tree, active project indicators, and project states. |
30
+ | **Cloud Billing** | `ic gcp billing info` | Current month spend by service, budgets, and alert thresholds. |
31
+ | **Profile** | `ic gcp profile info` | Active gcloud configurations, authenticated accounts, and default project settings. |
32
+
33
+ ---
34
+
35
+ ## Quick Start Commands
36
+
37
+ ```bash
38
+ # 1. Compute Engine VM instances
39
+ ic gcp compute info
40
+ ic gcp compute info -v # 15-column verbose output
41
+ ic gcp compute desc -l # Schema discovery (47+ keys)
42
+ ic gcp compute desc -k status,machine_type,internal_ip,labels.env # Dot-notation attribute extraction
43
+
44
+ # 2. Load Balancing (ALB / NLB)
45
+ ic gcp lb info
46
+ ic gcp lb desc -l # Discover queryable LB keys (56+ keys)
47
+ ic gcp lb desc -k type,ip_address,backend_services.0.name # Deep attribute inspection
48
+
49
+ # 3. Containers & Serverless
50
+ ic gcp gke info # GKE clusters & node pools
51
+ ic gcp run info # Cloud Run services
52
+ ic gcp functions info # Cloud Functions
53
+
54
+ # 4. Storage & Databases
55
+ ic gcp storage info # Cloud Storage buckets
56
+ ic gcp sql info # Cloud SQL instances
57
+
58
+ # 5. Networking & Security
59
+ ic gcp vpc info # VPC networks & subnets
60
+ ic gcp firewall info # Firewall rules
61
+ ic gcp dns info # Cloud DNS managed zones
62
+
63
+ # 6. Projects & Billing
64
+ ic gcp project info # Folder hierarchy tree & project states
65
+ ic gcp billing info # Cost breakdown by service
66
+ ic gcp profile info # gcloud CLI active configurations
67
+ ```
68
+
69
+ ---
70
+
71
+ ## Common Options
72
+
73
+ All GCP commands support standard IC CLI options:
74
+ - `-a, --account, --project <PROJECT_ID>`: Filter by one or more GCP project IDs (comma-separated).
75
+ - `--all-projects`: Concurrently inspect all accessible GCP projects.
76
+ - `-r, --region, --regions <REGION>`: Filter by region (e.g. `asia-northeast3`).
77
+ - `-z, --zone, --zones <ZONE>`: Filter by zone (e.g. `asia-northeast3-a`).
78
+ - `-n, --name <NAME>`: Filter by resource name (partial match).
79
+ - `-o, --output {table,tree,json,yaml}`: Choose output format (Default: `table`).
80
+ - `--mock`: Run offline using built-in mock datasets for testing and verification.
@@ -2,11 +2,19 @@
2
2
 
3
3
  IC CLI provides comprehensive, production-grade management for **Tencent Cloud** resources.
4
4
 
5
+ ## 🖥️ Terminal UI Preview
6
+
7
+ ### CVM Instance Inspection (`ic tencent cvm info`)
8
+ ![Tencent CVM Info Terminal UI](use_sample.png)
9
+
10
+ ---
11
+
5
12
  ## 📦 Supported Tencent Cloud Services
6
13
 
7
14
  ### 1. CVM (Cloud Virtual Machine)
8
- - **Command**: `ic tencent cvm info`
9
- - **Features**: List CVM instances across regions/accounts, displaying Instance ID, Name, State, CPU/Memory, Zone, Private/Public IPs, and attached Security Groups.
15
+ - **Commands**:
16
+ - `ic tencent cvm info`: List CVM instances across regions/accounts, displaying Instance ID, Name, State, CPU/Memory, Zone, Private/Public IPs, and attached Security Groups.
17
+ - `ic tencent cvm desc`: Deep inspection of CVM instance attributes in tree, JSON, or YAML format with key filtering (`-k / --keys`, `-l / --list-keys`).
10
18
 
11
19
  ### 2. Lighthouse (Lightweight Application Server)
12
20
  - **Command**: `ic tencent lighthouse info`
@@ -16,6 +24,7 @@ IC CLI provides comprehensive, production-grade management for **Tencent Cloud**
16
24
  - **Commands**:
17
25
  - `ic tencent clb info`: Inspect Load Balancers, listeners, rules, health check paths, and target instance health status.
18
26
  - `ic tencent clb traffic`: Query network bandwidth statistics (Client Input/Output Bandwidth Avg/Max in Mbps) and total data transfer over a given period (default: 7 days, `-d 30` for 30 days).
27
+ - `ic tencent clb desc`: Detailed CLB configuration and listener/rule hierarchy inspection with dot-notation key filtering.
19
28
 
20
29
  ### 4. VPC & Networking
21
30
  - **Commands**: `ic tencent vpc info`, `ic tencent nat info`
@@ -47,11 +47,30 @@ ic config show
47
47
  - **VPC / NAT / TKE**: `ic tencent vpc info` / `ic tencent nat info` / `ic tencent tke info`
48
48
  - **자격 증명 확인**: `ic tencent profile info`
49
49
 
50
- ### 3. 🟩 GCP Services
51
- - **Compute Engine**: `ic gcp compute info`
52
- - **Cloud Storage**: `ic gcp storage info`
53
- - **VPC & Firewall**: `ic gcp vpc info`
54
- - **GKE & Cloud SQL**: `ic gcp gke info` / `ic gcp sql info`
50
+ ### 3. 🟩 GCP Services (v1.5.0)
51
+ - **Compute Engine (요약 & 15개 컬럼 상세 & desc)**:
52
+ - `ic gcp compute info`: 기본 요약 목록
53
+ - `ic gcp compute info -v`: 상세 15열 뷰 (vCPU, Mem, Disks, Net/Subnet, Tags 등)
54
+ - `ic gcp compute desc -l`: 조회 가능한 전체 점 표기법 키 목록 탐색
55
+ - `ic gcp compute desc -k status,machine_type,internal_ip`: 원하는 속성만 테이블로 추출
56
+ - **Load Balancing (ALB/NLB 요약 & desc 상세 계층 탐색)**:
57
+ - `ic gcp lb info`: 로드 밸런서, 프로토콜, 포트, 백엔드 및 헬스체크 요약
58
+ - `ic gcp lb desc -l`: 전체 계층 속성 키 목록 검색
59
+ - `ic gcp lb desc -k type,ip_address,backend_services.0.name,health_checks.0.type`: 세부 속성 추출
60
+ - **컨테이너 & 서버리스**:
61
+ - `ic gcp gke info`: GKE 클러스터 및 노드 풀
62
+ - `ic gcp run info`: Cloud Run 서비스 및 컨테이너 리소스
63
+ - `ic gcp functions info`: Cloud Functions 및 이벤트 트리거
64
+ - **데이터베이스, 스토리지 & 네트워크**:
65
+ - `ic gcp sql info`: Cloud SQL 인스턴스
66
+ - `ic gcp storage info`: Cloud Storage 버킷
67
+ - `ic gcp vpc info`: VPC 네트워크 및 서브넷
68
+ - `ic gcp firewall info`: 인그레스/이그레스 방화벽 규칙
69
+ - `ic gcp dns info`: Cloud DNS 관리형 영역
70
+ - **조직 계층 및 프로젝트 관리**:
71
+ - `ic gcp project info`: 멀티레벨 폴더 계층 트리 뷰 및 활성 프로젝트 확인
72
+ - `ic gcp billing info`: 서비스별 월별 청구 비용
73
+ - `ic gcp profile info`: gcloud 활성 계정 및 프로필 확인
55
74
 
56
75
  ### 4. 🟥 OCI (Oracle Cloud) Services
57
76
  - **VM 인스턴스 & VCN**: `ic oci vm info` / `ic oci vcn info`
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "ic-code"
7
- version = "1.3.4"
7
+ version = "1.5.0"
8
8
  authors = [
9
9
  {name = "sykim", email = "cruiser594@gmail.com"},
10
10
  ]
@@ -30,36 +30,16 @@ classifiers = [
30
30
  ]
31
31
  keywords = ["cli", "infrastructure", "aws", "oci", "gcp", "cloudflare", "ssh", "devops", "multi-cloud"]
32
32
  dependencies = [
33
- # Core Cloud SDKs - Compatible with Python 3.9-3.13
34
- "boto3>=1.34.0,<2.0.0", # AWS SDK for Python
35
- "botocore>=1.34.0,<2.0.0", # AWS SDK core library
36
- "oci>=2.149.0,<3.0.0", # Oracle Cloud Infrastructure SDK
33
+ # Core HTTP & Cryptography (NCP native REST & general communication)
37
34
  "requests>=2.31.0,<3.0.0", # HTTP library for API calls
38
- "kubernetes>=29.0.0,<32.0.0", # Kubernetes Python client
39
- "awscli>=1.32.0,<2.0.0", # AWS CLI for additional functionality
35
+ "cryptography>=42.0.0,<50.0.0", # Cryptographic primitives (NCP HMAC signing, security)
40
36
 
41
- # Google Cloud SDKs - Compatible with Python 3.9-3.13
42
- "google-cloud-compute>=1.36.0,<2.0.0", # Google Compute Engine API
43
- "google-cloud-container>=2.44.0,<3.0.0", # Google Kubernetes Engine API
44
- "google-cloud-storage>=2.18.0,<3.0.0", # Google Cloud Storage API
45
- "google-cloud-functions>=1.16.0,<2.0.0", # Google Cloud Functions API
46
- "google-cloud-run>=0.11.0,<1.0.0", # Google Cloud Run API
47
- "google-cloud-billing>=1.13.0,<2.0.0", # Google Cloud Billing API
48
- "google-cloud-resource-manager>=1.12.0,<2.0.0", # Google Cloud Resource Manager API
49
- "google-auth>=2.29.0,<3.0.0", # Google authentication library
50
- "google-auth-oauthlib>=1.2.0,<2.0.0", # Google OAuth2 authentication
51
- "google-auth-httplib2>=0.2.0,<1.0.0", # Google HTTP transport for authentication
52
-
53
- # SSH and Network - Compatible with Python 3.9-3.13
54
- "paramiko>=3.4.0,<5.0.0", # SSH client library
55
- "netifaces>=0.11.0,<1.0.0", # Network interface information
56
-
57
- # CLI User Interface and Output - Compatible with Python 3.9-3.13
37
+ # CLI User Interface and Output
58
38
  "rich>=13.0.0,<15.0.0", # Rich text and beautiful formatting
59
39
  "InquirerPy>=0.3.4,<1.0.0", # Interactive command line prompts
60
40
  "tqdm>=4.67.0,<5.0.0", # Progress bars
61
41
 
62
- # Configuration and Utilities - Compatible with Python 3.9-3.13
42
+ # Configuration and Utilities
63
43
  "python-dotenv>=1.0.0,<2.0.0", # Environment variable loading
64
44
  "python-dateutil>=2.9.0,<3.0.0", # Date/time utilities
65
45
  "PyYAML>=6.0.1,<7.0.0", # YAML parser
@@ -67,11 +47,8 @@ dependencies = [
67
47
  "docutils>=0.19,<1.0.0", # Documentation utilities
68
48
  "invoke>=2.2.0,<3.0.0", # Task execution library
69
49
 
70
- # Security and Validation - Compatible with Python 3.9-3.13
50
+ # Security and Validation
71
51
  "jsonschema>=4.23.0,<5.0.0", # JSON schema validation
72
- "cryptography>=42.0.0,<50.0.0", # Cryptographic recipes and primitives
73
-
74
- # Additional dependencies for config system (v2.0) - Compatible with Python 3.9-3.13
75
52
  "watchdog>=4.0.0,<6.0.0", # File change monitoring
76
53
  "cerberus>=1.3.5,<2.0.0", # Schema validation
77
54
  "pydantic>=2.7.0,<3.0.0", # Data validation and settings management
@@ -79,12 +56,61 @@ dependencies = [
79
56
  # Package management and compatibility
80
57
  "packaging>=24.0,<25.0", # Version parsing and comparison
81
58
  "setuptools>=69.0.0,<76.0.0", # Package building tools
82
-
83
- # Tencent Cloud SDK
84
- "tencentcloud-sdk-python>=3.0.0,<4.0.0", # Tencent Cloud SDK (CVM, CLB, VPC, TKE, Lighthouse, STS)
85
59
  ]
86
60
 
87
61
  [project.optional-dependencies]
62
+ aws = [
63
+ "boto3>=1.34.0,<2.0.0",
64
+ "botocore>=1.34.0,<2.0.0",
65
+ "awscli>=1.32.0,<2.0.0",
66
+ ]
67
+ tencent = [
68
+ "tencentcloud-sdk-python>=3.0.0,<4.0.0",
69
+ ]
70
+ oci = [
71
+ "oci>=2.149.0,<3.0.0",
72
+ ]
73
+ gcp = [
74
+ "google-cloud-compute>=1.36.0,<2.0.0",
75
+ "google-cloud-container>=2.44.0,<3.0.0",
76
+ "google-cloud-storage>=2.18.0,<3.0.0",
77
+ "google-cloud-functions>=1.16.0,<2.0.0",
78
+ "google-cloud-run>=0.11.0,<1.0.0",
79
+ "google-cloud-billing>=1.13.0,<2.0.0",
80
+ "google-cloud-dns>=0.34.0,<1.0.0",
81
+ "google-cloud-resource-manager>=1.12.0,<2.0.0",
82
+ "google-auth>=2.29.0,<3.0.0",
83
+ "google-auth-oauthlib>=1.2.0,<2.0.0",
84
+ "google-auth-httplib2>=0.2.0,<1.0.0",
85
+ ]
86
+ ssh = [
87
+ "paramiko>=3.4.0,<5.0.0",
88
+ "netifaces>=0.11.0,<1.0.0",
89
+ ]
90
+ k8s = [
91
+ "kubernetes>=29.0.0,<32.0.0",
92
+ ]
93
+ all = [
94
+ "boto3>=1.34.0,<2.0.0",
95
+ "botocore>=1.34.0,<2.0.0",
96
+ "awscli>=1.32.0,<2.0.0",
97
+ "tencentcloud-sdk-python>=3.0.0,<4.0.0",
98
+ "oci>=2.149.0,<3.0.0",
99
+ "google-cloud-compute>=1.36.0,<2.0.0",
100
+ "google-cloud-container>=2.44.0,<3.0.0",
101
+ "google-cloud-storage>=2.18.0,<3.0.0",
102
+ "google-cloud-functions>=1.16.0,<2.0.0",
103
+ "google-cloud-run>=0.11.0,<1.0.0",
104
+ "google-cloud-billing>=1.13.0,<2.0.0",
105
+ "google-cloud-dns>=0.34.0,<1.0.0",
106
+ "google-cloud-resource-manager>=1.12.0,<2.0.0",
107
+ "google-auth>=2.29.0,<3.0.0",
108
+ "google-auth-oauthlib>=1.2.0,<2.0.0",
109
+ "google-auth-httplib2>=0.2.0,<1.0.0",
110
+ "paramiko>=3.4.0,<5.0.0",
111
+ "netifaces>=0.11.0,<1.0.0",
112
+ "kubernetes>=29.0.0,<32.0.0",
113
+ ]
88
114
  dev = [
89
115
  "pytest>=8.0.0,<9.0.0",
90
116
  "pytest-cov>=5.0.0,<8.0.0",
@@ -158,4 +184,4 @@ markers = [
158
184
  pythonVersion = "3.13"
159
185
  venvPath = "."
160
186
  venv = ".venv"
161
- extraPaths = ["."]
187
+ extraPaths = ["src", "."]
@@ -64,7 +64,9 @@ def detect_platforms_from_files(changed_files, all_platforms):
64
64
  for file_path in changed_files:
65
65
  for platform in all_platforms:
66
66
  if f"src/ic/platforms/{platform}/" in file_path or \
67
- f"tests/platforms/{platform}/" in file_path:
67
+ f"tests/platforms/{platform}/" in file_path or \
68
+ f"test_{platform}" in file_path or \
69
+ f"_{platform}_" in file_path:
68
70
  detected.add(platform)
69
71
 
70
72
  return list(detected)
@@ -76,16 +78,15 @@ def filter_platforms_with_tests(platforms):
76
78
 
77
79
  for platform in platforms:
78
80
  test_dir = Path(f"tests/platforms/{platform}")
79
- if test_dir.exists():
80
- # Check if there are any test files
81
- test_files = list(test_dir.rglob("test_*.py"))
82
- if test_files:
83
- platforms_with_tests.append(platform)
84
- print(f"✓ Platform {platform} has {len(test_files)} test files")
85
- else:
86
- print(f"⚠ Platform {platform} directory exists but has no test files")
81
+ platform_tests = list(test_dir.rglob("test_*.py")) if test_dir.exists() else []
82
+ unit_tests = list(Path("tests").rglob(f"test_*{platform}*.py"))
83
+
84
+ all_tests = set(platform_tests + unit_tests)
85
+ if all_tests:
86
+ platforms_with_tests.append(platform)
87
+ print(f"✓ Platform {platform} has {len(all_tests)} test files")
87
88
  else:
88
- print(f"⚠ Platform {platform} has no test directory")
89
+ print(f"⚠ Platform {platform} has no test files")
89
90
 
90
91
  return platforms_with_tests
91
92
 
@@ -129,6 +130,11 @@ def main():
129
130
  # Remove duplicates and sort
130
131
  platforms_with_tests = sorted(set(platforms_with_tests))
131
132
 
133
+ # If no platforms with tests detected, fallback to aws
134
+ if not platforms_with_tests:
135
+ print("⚠ No platforms with tests detected, falling back to: aws")
136
+ platforms_with_tests = ["aws"]
137
+
132
138
  # Output as JSON (compact, single line)
133
139
  platforms_json = json.dumps(platforms_with_tests, separators=(',', ':'))
134
140
  print(f"\nFinal platforms to test: {platforms_json}")
@@ -144,7 +150,7 @@ def main():
144
150
  print(f"platforms={platforms_json}")
145
151
  print(f"should-run-tests={'true' if platforms_with_tests else 'false'}")
146
152
 
147
- return 0 if platforms_with_tests else 1
153
+ return 0
148
154
 
149
155
 
150
156
  if __name__ == "__main__":