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.
- {ic_code-1.3.4/src/ic_code.egg-info → ic_code-1.5.0}/PKG-INFO +98 -40
- {ic_code-1.3.4 → ic_code-1.5.0}/README.md +51 -20
- ic_code-1.5.0/docs/gcp/README.md +80 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/docs/tencent/README.md +11 -2
- {ic_code-1.3.4 → ic_code-1.5.0}/docs/user_guide.md +24 -5
- {ic_code-1.3.4 → ic_code-1.5.0}/pyproject.toml +59 -33
- {ic_code-1.3.4 → ic_code-1.5.0}/scripts/ci-detect-platforms.py +17 -11
- ic_code-1.5.0/scripts/ci-smoke-test.sh +83 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/common/gather_env.py +1 -7
- {ic_code-1.3.4 → ic_code-1.5.0}/src/common/gcp_config_validator.py +3 -37
- {ic_code-1.3.4 → ic_code-1.5.0}/src/common/gcp_monitoring.py +34 -91
- {ic_code-1.3.4 → ic_code-1.5.0}/src/common/gcp_utils.py +87 -30
- {ic_code-1.3.4 → ic_code-1.5.0}/src/common/log.py +5 -8
- {ic_code-1.3.4 → ic_code-1.5.0}/src/common/progress_decorator.py +42 -19
- {ic_code-1.3.4 → ic_code-1.5.0}/src/common/slack.py +18 -8
- {ic_code-1.3.4 → ic_code-1.5.0}/src/common/utils.py +10 -4
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/__init__.py +1 -1
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/cli.py +2 -2
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/config/docs_organizer.py +8 -6
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/core/dependency_validator.py +7 -5
- ic_code-1.5.0/src/ic/core/desc_helper.py +229 -0
- ic_code-1.5.0/src/ic/core/interfaces/__init__.py +9 -0
- ic_code-1.5.0/src/ic/core/interfaces/command.py +85 -0
- ic_code-1.5.0/src/ic/core/interfaces/formatter.py +112 -0
- ic_code-1.5.0/src/ic/core/interfaces/result.py +136 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/core/platform_discovery.py +76 -11
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/core/session.py +28 -10
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/cloudfront/info.py +61 -1
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/codepipeline/build.py +35 -21
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/codepipeline/deploy.py +35 -21
- ic_code-1.5.0/src/ic/platforms/aws/ec2/desc.py +196 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/ec2/info.py +33 -10
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/ec2/list_tags.py +12 -23
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/ecs/info.py +33 -17
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/eks/info.py +34 -16
- ic_code-1.5.0/src/ic/platforms/aws/lb/desc.py +281 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/lb/info.py +123 -41
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/msk/info.py +32 -18
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/rds/info.py +32 -9
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/s3/info.py +31 -8
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/vpc/info.py +31 -9
- ic_code-1.5.0/src/ic/platforms/cloudflare/account/info.py +180 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/cloudflare/dns/info.py +100 -121
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/cloudflare/dns/list_info.py +1 -8
- ic_code-1.5.0/src/ic/platforms/cloudflare/zone/info.py +235 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/billing/info.py +165 -171
- ic_code-1.5.0/src/ic/platforms/gcp/compute/desc.py +370 -0
- ic_code-1.5.0/src/ic/platforms/gcp/compute/info.py +776 -0
- ic_code-1.5.0/src/ic/platforms/gcp/compute/mock_data.json +191 -0
- ic_code-1.5.0/src/ic/platforms/gcp/dns/__init__.py +1 -0
- ic_code-1.5.0/src/ic/platforms/gcp/dns/info.py +380 -0
- ic_code-1.5.0/src/ic/platforms/gcp/dns/mock_data.json +142 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/firewall/info.py +189 -175
- ic_code-1.5.0/src/ic/platforms/gcp/firewall/mock_data.json +53 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/functions/info.py +178 -164
- ic_code-1.5.0/src/ic/platforms/gcp/functions/mock_data.json +26 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/gke/info.py +167 -159
- ic_code-1.5.0/src/ic/platforms/gcp/lb/desc.py +279 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/lb/info.py +217 -186
- ic_code-1.5.0/src/ic/platforms/gcp/lb/mock_data.json +154 -0
- ic_code-1.5.0/src/ic/platforms/gcp/profile/__init__.py +3 -0
- ic_code-1.5.0/src/ic/platforms/gcp/profile/info.py +276 -0
- ic_code-1.5.0/src/ic/platforms/gcp/profile/mock_data.json +20 -0
- ic_code-1.5.0/src/ic/platforms/gcp/project/__init__.py +1 -0
- ic_code-1.5.0/src/ic/platforms/gcp/project/info.py +479 -0
- ic_code-1.5.0/src/ic/platforms/gcp/project/mock_data.json +138 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/run/info.py +271 -293
- ic_code-1.5.0/src/ic/platforms/gcp/run/mock_data.json +28 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/sql/info.py +190 -169
- ic_code-1.5.0/src/ic/platforms/gcp/sql/mock_data.json +28 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/storage/info.py +153 -152
- ic_code-1.5.0/src/ic/platforms/gcp/storage/mock_data.json +38 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/vpc/info.py +175 -163
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/compartment/info.py +59 -42
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/cost/credit.py +48 -39
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/cost/usage.py +40 -27
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/lb/info.py +58 -19
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/nsg/info.py +58 -16
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/obj/info.py +50 -21
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/policy/info.py +45 -12
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/vcn/info.py +43 -21
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/vm/info.py +42 -18
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/volume/info.py +55 -15
- ic_code-1.5.0/src/ic/platforms/ssh/auto/scan.py +175 -0
- ic_code-1.5.0/src/ic/platforms/ssh/server/info.py +145 -0
- ic_code-1.5.0/src/ic/platforms/tencent/clb/desc.py +281 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/clb/info.py +32 -11
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/clb/traffic.py +57 -38
- ic_code-1.5.0/src/ic/platforms/tencent/cvm/desc.py +232 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/cvm/info.py +35 -16
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/lighthouse/info.py +58 -40
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/nat/info.py +52 -33
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/profile/info.py +30 -7
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/sg/info.py +69 -48
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/tke/info.py +54 -35
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/vpc/info.py +53 -34
- {ic_code-1.3.4 → ic_code-1.5.0/src/ic_code.egg-info}/PKG-INFO +98 -40
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic_code.egg-info/SOURCES.txt +27 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic_code.egg-info/requires.txt +52 -18
- ic_code-1.3.4/docs/gcp/README.md +0 -35
- ic_code-1.3.4/src/ic/platforms/cloudflare/account/info.py +0 -222
- ic_code-1.3.4/src/ic/platforms/cloudflare/zone/info.py +0 -323
- ic_code-1.3.4/src/ic/platforms/gcp/compute/info.py +0 -605
- ic_code-1.3.4/src/ic/platforms/gcp/compute/mock_data.json +0 -32
- ic_code-1.3.4/src/ic/platforms/ssh/auto/scan.py +0 -171
- ic_code-1.3.4/src/ic/platforms/ssh/server/info.py +0 -149
- {ic_code-1.3.4 → ic_code-1.5.0}/LICENSE +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/MANIFEST.in +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/SECURITY.md +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/config/default.yaml +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/docs/README.md +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/docs/aws/README.md +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/docs/cloudflare/README.md +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/docs/installation.md +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/docs/oci/README.md +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/docs/release-guide.md +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/docs/security.md +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/docs/ssh/README.md +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/docs/troubleshooting.md +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/requirements.txt +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/scripts/bump-version.sh +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/scripts/cf_edge_nsg_make/cf_edge_nsg_make.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/scripts/ci-generate-matrix.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/scripts/deploy.sh +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/scripts/oracle-policy/user_policy.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/setup.cfg +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/setup.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/common/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/commands/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/commands/config.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/commands/security.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/compat/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/compat/cli.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/compat/common.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/config/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/config/cleanup.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/config/external.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/config/installer.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/config/manager.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/config/migration.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/config/migration_utils.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/config/path_manager.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/config/schema.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/config/secrets.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/config/security.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/core/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/core/logging.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/core/silence_logging.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/cloudfront/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/codepipeline/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/ec2/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/ec2/tag_check.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/ecs/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/ecs/service.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/ecs/task.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/eks/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/eks/addons.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/eks/fargate.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/eks/nodes.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/eks/pods.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/eks/update_config.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/fargate/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/fargate/info.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/healthdashboard/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/healthdashboard/reboot.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/lb/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/lb/list_tags.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/lb/tag_check.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/msk/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/msk/broker.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/nat/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/nat/list_tags.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/nat/tag_check.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/profile/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/profile/info.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/rds/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/rds/list_tags.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/rds/tag_check.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/s3/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/s3/list_tags.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/s3/tag_check.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/sg/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/sg/info.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/vpc/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/vpc/list_tags.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/vpc/tag_check.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/vpn/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/aws/vpn/info.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/cloudflare/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/cloudflare/account/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/cloudflare/client.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/cloudflare/dns/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/cloudflare/rules/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/cloudflare/rules/info.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/cloudflare/traffic/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/cloudflare/traffic/info.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/cloudflare/waf/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/cloudflare/waf/info.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/cloudflare/zone/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/billing/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/billing/mock_data.json +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/compute/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/firewall/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/functions/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/gke/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/gke/mock_data.json +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/lb/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/run/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/sql/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/storage/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/vpc/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/gcp/vpc/mock_data.json +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/common/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/common/utils.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/compartment/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/cost/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/info/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/info/oci_info.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/lb/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/nsg/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/obj/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/policy/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/policy/search.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/vcn/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/vm/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/oci/volume/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/ssh/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/ssh/auto/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/ssh/auto_ssh.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/ssh/server/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/ssh/server_info.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/clb/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/client.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/cvm/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/lighthouse/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/nat/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/profile/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/sg/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/tke/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/platforms/tencent/vpc/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/security/__init__.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/security/config.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/security/detector.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/security/guidance.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/security/hooks.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/security/patterns.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic/security/scanner.py +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic_code.egg-info/dependency_links.txt +0 -0
- {ic_code-1.3.4 → ic_code-1.5.0}/src/ic_code.egg-info/entry_points.txt +0 -0
- {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
|
+
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:
|
|
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
|
-
|
|
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
|
+

|
|
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
|
|
119
|
-
- **
|
|
120
|
-
- **
|
|
121
|
-
- **
|
|
122
|
-
- **
|
|
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
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
#
|
|
307
|
-
ic gcp
|
|
308
|
-
|
|
309
|
-
#
|
|
310
|
-
ic gcp
|
|
311
|
-
|
|
312
|
-
#
|
|
313
|
-
|
|
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
|
+

|
|
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
|
|
40
|
-
- **
|
|
41
|
-
- **
|
|
42
|
-
- **
|
|
43
|
-
- **
|
|
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
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
#
|
|
228
|
-
ic gcp
|
|
229
|
-
|
|
230
|
-
#
|
|
231
|
-
ic gcp
|
|
232
|
-
|
|
233
|
-
#
|
|
234
|
-
|
|
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
|
+

|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
5
12
|
## 📦 Supported Tencent Cloud Services
|
|
6
13
|
|
|
7
14
|
### 1. CVM (Cloud Virtual Machine)
|
|
8
|
-
- **
|
|
9
|
-
-
|
|
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
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
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.
|
|
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
|
|
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
|
-
"
|
|
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
|
-
#
|
|
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
|
|
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
|
|
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
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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
|
|
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
|
|
153
|
+
return 0
|
|
148
154
|
|
|
149
155
|
|
|
150
156
|
if __name__ == "__main__":
|