ic-code 1.2.8__tar.gz → 1.2.9__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.2.8/src/ic_code.egg-info → ic_code-1.2.9}/PKG-INFO +3 -2
- {ic_code-1.2.8 → ic_code-1.2.9}/README.md +1 -1
- {ic_code-1.2.8 → ic_code-1.2.9}/pyproject.toml +2 -1
- {ic_code-1.2.8 → ic_code-1.2.9}/requirements.txt +1 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/__init__.py +1 -1
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/lb/info.py +16 -10
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/tencent/clb/info.py +5 -3
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/tencent/client.py +9 -4
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/tencent/cvm/info.py +7 -9
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/tencent/lighthouse/info.py +5 -6
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/tencent/nat/info.py +7 -7
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/tencent/sg/info.py +9 -9
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/tencent/tke/info.py +7 -7
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/tencent/vpc/info.py +7 -7
- {ic_code-1.2.8 → ic_code-1.2.9/src/ic_code.egg-info}/PKG-INFO +3 -2
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic_code.egg-info/requires.txt +1 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/LICENSE +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/MANIFEST.in +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/SECURITY.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/config/default.yaml +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/README.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/_templates/configuration.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/_templates/installation.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/_templates/troubleshooting.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/_templates/usage.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/aws/README.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/aws/aws_cli_prd.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/aws/installation.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/ci-workflow-guide.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/cloudflare_configuration_example.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/config_migration.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/deployment.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/development/README.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/development/cleanup_summary.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/development/development_guide.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/development/import_patterns.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/development/migration_guide.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/gcp/GCP_CONFIGURATION_GUIDE.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/gcp/GCP_SECURITY_BEST_PRACTICES.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/gcp/README.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/general/configuration.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/installation.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/migration.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/migration_guide.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/oci/README.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/oci/installation.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/release-guide.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/security.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/ssh/configuration.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/troubleshooting.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/docs/user_guide.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/scripts/analysis_summary.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/scripts/bump-version.sh +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/scripts/cf_edge_nsg_make/cf_edge_nsg_make.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/scripts/ci-detect-platforms.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/scripts/ci-generate-matrix.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/scripts/cli_usage_analysis.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/scripts/dependency_mapper.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/scripts/deploy.sh +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/scripts/final_validation_and_documentation.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/scripts/fix_consolidated_imports.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/scripts/migration_execution_and_validation.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/scripts/oracle-policy/user_policy.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/scripts/performance_optimization.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/scripts/setup_venv.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/scripts/test-ci-detection.sh +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/scripts/unset_env.sh +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/scripts/validate_config.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/scripts/validate_dependencies.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/setup.cfg +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/setup.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/common/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/common/gather_env.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/common/gcp_config_validator.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/common/gcp_monitoring.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/common/gcp_utils.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/common/log.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/common/progress_decorator.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/common/slack.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/common/utils.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/cli.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/commands/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/commands/config.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/commands/security.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/compat/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/compat/cli.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/compat/common.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/config/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/config/cleanup.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/config/docs_organizer.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/config/external.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/config/installer.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/config/manager.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/config/migration.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/config/migration_utils.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/config/path_manager.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/config/schema.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/config/secrets.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/config/security.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/core/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/core/dependency_validator.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/core/logging.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/core/platform_discovery.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/core/session.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/core/silence_logging.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/cloudfront/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/cloudfront/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/codepipeline/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/codepipeline/build.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/codepipeline/deploy.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/ec2/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/ec2/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/ec2/list_tags.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/ec2/tag_check.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/ecs/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/ecs/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/ecs/service.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/ecs/task.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/eks/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/eks/addons.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/eks/fargate.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/eks/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/eks/nodes.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/eks/pods.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/eks/update_config.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/fargate/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/fargate/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/lb/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/lb/list_tags.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/lb/tag_check.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/msk/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/msk/broker.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/msk/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/nat/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/nat/list_tags.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/nat/tag_check.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/profile/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/profile/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/rds/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/rds/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/rds/list_tags.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/rds/tag_check.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/s3/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/s3/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/s3/list_tags.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/s3/tag_check.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/sg/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/sg/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/vpc/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/vpc/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/vpc/list_tags.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/vpc/tag_check.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/vpn/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/aws/vpn/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/cloudflare/README.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/cloudflare/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/cloudflare/account/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/cloudflare/account/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/cloudflare/client.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/cloudflare/dns/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/cloudflare/dns/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/cloudflare/dns/list_info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/cloudflare/rules/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/cloudflare/rules/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/cloudflare/traffic/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/cloudflare/traffic/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/cloudflare/waf/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/cloudflare/waf/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/cloudflare/zone/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/cloudflare/zone/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/gcp/README.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/gcp/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/gcp/billing/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/gcp/billing/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/gcp/billing/mock_data.json +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/gcp/compute/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/gcp/compute/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/gcp/compute/mock_data.json +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/gcp/firewall/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/gcp/firewall/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/gcp/functions/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/gcp/functions/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/gcp/gke/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/gcp/gke/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/gcp/gke/mock_data.json +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/gcp/lb/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/gcp/lb/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/gcp/run/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/gcp/run/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/gcp/sql/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/gcp/sql/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/gcp/storage/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/gcp/storage/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/gcp/vpc/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/gcp/vpc/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/gcp/vpc/mock_data.json +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/oci/README.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/oci/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/oci/common/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/oci/common/utils.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/oci/compartment/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/oci/compartment/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/oci/cost/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/oci/cost/credit.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/oci/cost/usage.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/oci/info/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/oci/info/oci_info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/oci/lb/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/oci/lb/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/oci/nsg/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/oci/nsg/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/oci/obj/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/oci/obj/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/oci/policy/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/oci/policy/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/oci/policy/search.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/oci/vcn/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/oci/vcn/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/oci/vm/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/oci/vm/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/oci/volume/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/oci/volume/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/ssh/README.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/ssh/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/ssh/auto/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/ssh/auto/scan.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/ssh/auto_ssh.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/ssh/server/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/ssh/server/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/ssh/server_info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/tencent/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/tencent/clb/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/tencent/cvm/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/tencent/lighthouse/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/tencent/nat/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/tencent/profile/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/tencent/profile/info.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/tencent/sg/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/tencent/tke/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/platforms/tencent/vpc/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/security/README.md +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/security/__init__.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/security/config.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/security/detector.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/security/guidance.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/security/hooks.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/security/patterns.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic/security/scanner.py +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic_code.egg-info/SOURCES.txt +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic_code.egg-info/dependency_links.txt +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/src/ic_code.egg-info/entry_points.txt +0 -0
- {ic_code-1.2.8 → ic_code-1.2.9}/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.2.
|
|
3
|
+
Version: 1.2.9
|
|
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
|
|
@@ -69,6 +69,7 @@ Requires-Dist: pytest-cov<7.0.0,>=5.0.0; extra == "dev"
|
|
|
69
69
|
Requires-Dist: black<25.0.0,>=24.0.0; extra == "dev"
|
|
70
70
|
Requires-Dist: flake8<8.0.0,>=7.0.0; extra == "dev"
|
|
71
71
|
Requires-Dist: mypy<2.0.0,>=1.10.0; extra == "dev"
|
|
72
|
+
Requires-Dist: pyrefly>=1.2.0; extra == "dev"
|
|
72
73
|
Requires-Dist: pre-commit<4.0.0,>=3.7.0; extra == "dev"
|
|
73
74
|
Dynamic: author
|
|
74
75
|
Dynamic: home-page
|
|
@@ -137,7 +138,7 @@ A comprehensive, production-grade Infrastructure Command Line Interface tool for
|
|
|
137
138
|
### From PyPI (Recommended)
|
|
138
139
|
|
|
139
140
|
```bash
|
|
140
|
-
# Install the latest stable version (v1.2.
|
|
141
|
+
# Install the latest stable version (v1.2.9+)
|
|
141
142
|
pip install ic-code
|
|
142
143
|
|
|
143
144
|
# Verify installation
|
|
@@ -60,7 +60,7 @@ A comprehensive, production-grade Infrastructure Command Line Interface tool for
|
|
|
60
60
|
### From PyPI (Recommended)
|
|
61
61
|
|
|
62
62
|
```bash
|
|
63
|
-
# Install the latest stable version (v1.2.
|
|
63
|
+
# Install the latest stable version (v1.2.9+)
|
|
64
64
|
pip install ic-code
|
|
65
65
|
|
|
66
66
|
# Verify installation
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ic-code"
|
|
7
|
-
version = "1.2.
|
|
7
|
+
version = "1.2.9"
|
|
8
8
|
authors = [
|
|
9
9
|
{name = "sykim", email = "cruiser594@gmail.com"},
|
|
10
10
|
]
|
|
@@ -91,6 +91,7 @@ dev = [
|
|
|
91
91
|
"black>=24.0.0,<25.0.0",
|
|
92
92
|
"flake8>=7.0.0,<8.0.0",
|
|
93
93
|
"mypy>=1.10.0,<2.0.0",
|
|
94
|
+
"pyrefly>=1.2.0",
|
|
94
95
|
"pre-commit>=3.7.0,<4.0.0",
|
|
95
96
|
]
|
|
96
97
|
|
|
@@ -4,7 +4,7 @@ IC (Infra Resource Management CLI) - A comprehensive tool for managing cloud inf
|
|
|
4
4
|
This package provides CLI tools and libraries for managing AWS, GCP, OCI, CloudFlare, and SSH resources.
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
|
-
__version__ = "1.2.
|
|
7
|
+
__version__ = "1.2.9"
|
|
8
8
|
__author__ = "SangYun"
|
|
9
9
|
__email__ = "cruiser594@gmail.com"
|
|
10
10
|
|
|
@@ -181,18 +181,22 @@ def print_lb_table(all_rows):
|
|
|
181
181
|
keys = ["account", "region", "lb_name", "type", "scheme", "listener", "target_group", "hc_path", "targets", "health"]
|
|
182
182
|
|
|
183
183
|
for h in headers:
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
elif h == "Region":
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
184
|
+
if h == "Account":
|
|
185
|
+
table.add_column(h, style="bold magenta")
|
|
186
|
+
elif h == "Region":
|
|
187
|
+
table.add_column(h, style="bold cyan")
|
|
188
|
+
elif h == "Health":
|
|
189
|
+
table.add_column(h, justify="center")
|
|
190
|
+
else:
|
|
191
|
+
table.add_column(h)
|
|
192
|
+
|
|
193
|
+
last_account, last_region, last_lb, last_listener, last_tg = None, None, None, None, None
|
|
191
194
|
for i, row in enumerate(all_rows):
|
|
192
195
|
account_changed = row["account"] != last_account
|
|
193
196
|
region_changed = row["region"] != last_region
|
|
194
197
|
lb_changed = row["lb_name"] != last_lb or account_changed or region_changed
|
|
195
|
-
|
|
198
|
+
listener_changed = row["listener"] != last_listener or lb_changed
|
|
199
|
+
tg_changed = row["target_group"] != last_tg or listener_changed
|
|
196
200
|
|
|
197
201
|
if i > 0:
|
|
198
202
|
if account_changed:
|
|
@@ -201,6 +205,8 @@ def print_lb_table(all_rows):
|
|
|
201
205
|
table.add_row("", *[Rule(style="dim") for _ in headers[1:]])
|
|
202
206
|
elif lb_changed:
|
|
203
207
|
table.add_row("", "", *[Rule(style="dim") for _ in headers[2:]])
|
|
208
|
+
elif listener_changed:
|
|
209
|
+
table.add_row("", "", "", "", "", *[Rule(style="dim") for _ in headers[5:]])
|
|
204
210
|
elif tg_changed:
|
|
205
211
|
table.add_row("", "", "", "", "", "", *[Rule(style="dim") for _ in headers[6:]])
|
|
206
212
|
|
|
@@ -210,7 +216,7 @@ def print_lb_table(all_rows):
|
|
|
210
216
|
display_values.append(row["lb_name"] if lb_changed else "")
|
|
211
217
|
display_values.append(row["type"] if lb_changed else "")
|
|
212
218
|
display_values.append(row["scheme"] if lb_changed else "")
|
|
213
|
-
display_values.append(row["listener"] if
|
|
219
|
+
display_values.append(row["listener"] if listener_changed else "")
|
|
214
220
|
display_values.append(row["target_group"] if tg_changed else "")
|
|
215
221
|
display_values.append(row["hc_path"] if tg_changed else "")
|
|
216
222
|
display_values.append(row["targets"])
|
|
@@ -218,7 +224,7 @@ def print_lb_table(all_rows):
|
|
|
218
224
|
|
|
219
225
|
table.add_row(*display_values)
|
|
220
226
|
|
|
221
|
-
last_account, last_region, last_lb, last_tg = row["account"], row["region"], row["lb_name"], row["target_group"]
|
|
227
|
+
last_account, last_region, last_lb, last_listener, last_tg = row["account"], row["region"], row["lb_name"], row["listener"], row["target_group"]
|
|
222
228
|
|
|
223
229
|
console.print(table)
|
|
224
230
|
|
|
@@ -90,15 +90,17 @@ def fetch_clb_one_account_region(
|
|
|
90
90
|
req = models.DescribeLoadBalancersRequest()
|
|
91
91
|
req.Offset = offset
|
|
92
92
|
req.Limit = limit
|
|
93
|
-
if name_filter:
|
|
94
|
-
req.LoadBalancerName = name_filter
|
|
95
|
-
|
|
96
93
|
resp = client.DescribeLoadBalancers(req)
|
|
97
94
|
lbs = resp.LoadBalancerSet or []
|
|
98
95
|
|
|
99
96
|
for lb in lbs:
|
|
100
97
|
lb_id = lb.LoadBalancerId or "-"
|
|
101
98
|
lb_name = lb.LoadBalancerName or "-"
|
|
99
|
+
|
|
100
|
+
if name_filter:
|
|
101
|
+
nf = name_filter.lower()
|
|
102
|
+
if nf not in lb_name.lower() and nf not in lb_id.lower():
|
|
103
|
+
continue
|
|
102
104
|
lb_type_raw = lb.LoadBalancerType or "-"
|
|
103
105
|
lb_type = _LB_TYPE_COLORS.get(lb_type_raw, lb_type_raw)
|
|
104
106
|
vips = ", ".join(lb.LoadBalancerVips or []) or "-"
|
|
@@ -51,6 +51,9 @@ try:
|
|
|
51
51
|
TENCENT_SDK_AVAILABLE = True
|
|
52
52
|
except ImportError:
|
|
53
53
|
TENCENT_SDK_AVAILABLE = False
|
|
54
|
+
class TencentCloudSDKException(Exception):
|
|
55
|
+
code: str = ""
|
|
56
|
+
message: str = ""
|
|
54
57
|
|
|
55
58
|
# 기본 리전 목록
|
|
56
59
|
TENCENT_DEFAULT_REGIONS = ["ap-seoul", "ap-tokyo"]
|
|
@@ -315,12 +318,14 @@ def get_accounts(account_filter: Optional[str] = None) -> List[Dict[str, str]]:
|
|
|
315
318
|
if not account_filter:
|
|
316
319
|
return all_accounts
|
|
317
320
|
|
|
318
|
-
# 이름 또는 ID 기반 필터
|
|
319
|
-
|
|
321
|
+
# 이름 또는 ID 기반 필터 (부분 일치 / substring matching)
|
|
322
|
+
filters = [f.strip().lower() for f in account_filter.split(",") if f.strip()]
|
|
320
323
|
filtered = [
|
|
321
324
|
a for a in all_accounts
|
|
322
|
-
if
|
|
323
|
-
|
|
325
|
+
if any(
|
|
326
|
+
f in a.get("name", "").lower() or f in str(a.get("id", "")).lower()
|
|
327
|
+
for f in filters
|
|
328
|
+
)
|
|
324
329
|
]
|
|
325
330
|
return filtered
|
|
326
331
|
|
|
@@ -98,12 +98,6 @@ def fetch_cvm_one_account_region(
|
|
|
98
98
|
req.Offset = offset
|
|
99
99
|
req.Limit = limit
|
|
100
100
|
|
|
101
|
-
if name_filter:
|
|
102
|
-
filter_obj = models.Filter()
|
|
103
|
-
filter_obj.Name = "instance-name"
|
|
104
|
-
filter_obj.Values = [f"*{name_filter}*"]
|
|
105
|
-
req.Filters = [filter_obj]
|
|
106
|
-
|
|
107
101
|
resp = client.DescribeInstances(req)
|
|
108
102
|
instances = resp.InstanceSet or []
|
|
109
103
|
|
|
@@ -113,6 +107,13 @@ def fetch_cvm_one_account_region(
|
|
|
113
107
|
if state.upper() == "TERMINATED":
|
|
114
108
|
continue
|
|
115
109
|
|
|
110
|
+
inst_name = inst.InstanceName or inst.InstanceId or "-"
|
|
111
|
+
|
|
112
|
+
if name_filter:
|
|
113
|
+
nf = name_filter.lower()
|
|
114
|
+
if nf not in inst_name.lower() and nf not in (inst.InstanceId or "").lower():
|
|
115
|
+
continue
|
|
116
|
+
|
|
116
117
|
# 스펙 정보
|
|
117
118
|
itype = inst.InstanceType or "-"
|
|
118
119
|
cpu = str(inst.CPU) if inst.CPU is not None else "?"
|
|
@@ -145,9 +146,6 @@ def fetch_cvm_one_account_region(
|
|
|
145
146
|
for sg in (inst.SecurityGroupIds or [])
|
|
146
147
|
) or "-"
|
|
147
148
|
|
|
148
|
-
# 태그에서 Name 추출
|
|
149
|
-
inst_name = inst.InstanceName or inst.InstanceId or "-"
|
|
150
|
-
|
|
151
149
|
rows.append({
|
|
152
150
|
"account": account_name,
|
|
153
151
|
"region": region,
|
|
@@ -89,18 +89,17 @@ def fetch_lighthouse_one_account_region(
|
|
|
89
89
|
req.Offset = offset
|
|
90
90
|
req.Limit = limit
|
|
91
91
|
|
|
92
|
-
if name_filter:
|
|
93
|
-
f = models.Filter()
|
|
94
|
-
f.Name = "instance-name"
|
|
95
|
-
f.Values = [f"*{name_filter}*"]
|
|
96
|
-
req.Filters = [f]
|
|
97
|
-
|
|
98
92
|
resp = client.DescribeInstances(req)
|
|
99
93
|
instances = resp.InstanceSet or []
|
|
100
94
|
|
|
101
95
|
for inst in instances:
|
|
102
96
|
inst_id = inst.InstanceId or "-"
|
|
103
97
|
inst_name = inst.InstanceName or inst_id
|
|
98
|
+
|
|
99
|
+
if name_filter:
|
|
100
|
+
nf = name_filter.lower()
|
|
101
|
+
if nf not in inst_name.lower() and nf not in inst_id.lower():
|
|
102
|
+
continue
|
|
104
103
|
state = color_state(inst.InstanceState or "UNKNOWN")
|
|
105
104
|
|
|
106
105
|
# CPU / Memory 스펙 정보
|
|
@@ -32,7 +32,8 @@ except ImportError:
|
|
|
32
32
|
|
|
33
33
|
from ic.platforms.tencent.client import (
|
|
34
34
|
get_accounts, get_credential_for_account, get_tencent_regions,
|
|
35
|
-
make_client_profile, check_sdk_available, TENCENT_SDK_AVAILABLE
|
|
35
|
+
make_client_profile, check_sdk_available, TENCENT_SDK_AVAILABLE,
|
|
36
|
+
TencentCloudSDKException
|
|
36
37
|
)
|
|
37
38
|
|
|
38
39
|
console = Console()
|
|
@@ -78,18 +79,17 @@ def fetch_nat_one_account_region(
|
|
|
78
79
|
req = models.DescribeNatGatewaysRequest()
|
|
79
80
|
req.Offset = offset
|
|
80
81
|
req.Limit = limit
|
|
81
|
-
if name_filter:
|
|
82
|
-
f = models.Filter()
|
|
83
|
-
f.Name = "nat-gateway-name"
|
|
84
|
-
f.Values = [f"*{name_filter}*"]
|
|
85
|
-
req.Filters = [f]
|
|
86
|
-
|
|
87
82
|
resp = client.DescribeNatGateways(req)
|
|
88
83
|
nats = resp.NatGatewaySet or []
|
|
89
84
|
|
|
90
85
|
for nat in nats:
|
|
91
86
|
nat_id = nat.NatGatewayId or "-"
|
|
92
87
|
nat_name = nat.NatGatewayName or nat_id
|
|
88
|
+
|
|
89
|
+
if name_filter:
|
|
90
|
+
nf = name_filter.lower()
|
|
91
|
+
if nf not in nat_name.lower() and nf not in nat_id.lower():
|
|
92
|
+
continue
|
|
93
93
|
state = color_state(nat.State or "UNKNOWN")
|
|
94
94
|
vpc_id = nat.VpcId or "-"
|
|
95
95
|
|
|
@@ -34,7 +34,8 @@ except ImportError:
|
|
|
34
34
|
|
|
35
35
|
from ic.platforms.tencent.client import (
|
|
36
36
|
get_accounts, get_credential_for_account, get_tencent_regions,
|
|
37
|
-
make_client_profile, check_sdk_available, TENCENT_SDK_AVAILABLE
|
|
37
|
+
make_client_profile, check_sdk_available, TENCENT_SDK_AVAILABLE,
|
|
38
|
+
TencentCloudSDKException
|
|
38
39
|
)
|
|
39
40
|
|
|
40
41
|
console = Console()
|
|
@@ -104,12 +105,6 @@ def fetch_sg_one_account_region(
|
|
|
104
105
|
req = models.DescribeSecurityGroupsRequest()
|
|
105
106
|
req.Offset = str(offset)
|
|
106
107
|
req.Limit = str(limit)
|
|
107
|
-
if name_filter:
|
|
108
|
-
f = models.Filter()
|
|
109
|
-
f.Name = "security-group-name"
|
|
110
|
-
f.Values = [f"*{name_filter}*"]
|
|
111
|
-
req.Filters = [f]
|
|
112
|
-
|
|
113
108
|
resp = client.DescribeSecurityGroups(req)
|
|
114
109
|
sgs = resp.SecurityGroupSet or []
|
|
115
110
|
|
|
@@ -117,6 +112,11 @@ def fetch_sg_one_account_region(
|
|
|
117
112
|
sg_id = sg.SecurityGroupId or "-"
|
|
118
113
|
sg_name = sg.SecurityGroupName or sg_id
|
|
119
114
|
|
|
115
|
+
if name_filter:
|
|
116
|
+
nf = name_filter.lower()
|
|
117
|
+
if nf not in sg_name.lower() and nf not in sg_id.lower():
|
|
118
|
+
continue
|
|
119
|
+
|
|
120
120
|
# 룰 조회
|
|
121
121
|
try:
|
|
122
122
|
req2 = models.DescribeSecurityGroupPoliciesRequest()
|
|
@@ -127,13 +127,13 @@ def fetch_sg_one_account_region(
|
|
|
127
127
|
if rule_type in ("all", "ingress") and policy_set and policy_set.Ingress:
|
|
128
128
|
for p in policy_set.Ingress:
|
|
129
129
|
r = _parse_policy(p, "Ingress")
|
|
130
|
-
r.update({"account_id": account_name, "region": region, "sg_name": sg_name, "sg_id": sg_id})
|
|
130
|
+
r.update({"account_id": str(account_name), "region": str(region), "sg_name": str(sg_name), "sg_id": str(sg_id)})
|
|
131
131
|
results.append(r)
|
|
132
132
|
|
|
133
133
|
if rule_type in ("all", "egress") and policy_set and policy_set.Egress:
|
|
134
134
|
for p in policy_set.Egress:
|
|
135
135
|
r = _parse_policy(p, "Egress")
|
|
136
|
-
r.update({"account_id": account_name, "region": region, "sg_name": sg_name, "sg_id": sg_id})
|
|
136
|
+
r.update({"account_id": str(account_name), "region": str(region), "sg_name": str(sg_name), "sg_id": str(sg_id)})
|
|
137
137
|
results.append(r)
|
|
138
138
|
|
|
139
139
|
if not results or (results and results[-1].get("sg_id") != sg_id):
|
|
@@ -33,7 +33,8 @@ except ImportError:
|
|
|
33
33
|
|
|
34
34
|
from ic.platforms.tencent.client import (
|
|
35
35
|
get_accounts, get_credential_for_account, get_tencent_regions,
|
|
36
|
-
make_client_profile, check_sdk_available, TENCENT_SDK_AVAILABLE
|
|
36
|
+
make_client_profile, check_sdk_available, TENCENT_SDK_AVAILABLE,
|
|
37
|
+
TencentCloudSDKException
|
|
37
38
|
)
|
|
38
39
|
|
|
39
40
|
console = Console()
|
|
@@ -82,18 +83,17 @@ def fetch_tke_one_account_region(
|
|
|
82
83
|
req = models.DescribeClustersRequest()
|
|
83
84
|
req.Offset = offset
|
|
84
85
|
req.Limit = limit
|
|
85
|
-
if name_filter:
|
|
86
|
-
f = models.Filter()
|
|
87
|
-
f.Name = "ClusterName"
|
|
88
|
-
f.Values = [name_filter]
|
|
89
|
-
req.Filters = [f]
|
|
90
|
-
|
|
91
86
|
resp = client.DescribeClusters(req)
|
|
92
87
|
clusters = resp.Clusters or []
|
|
93
88
|
|
|
94
89
|
for c in clusters:
|
|
95
90
|
cluster_id = c.ClusterId or "-"
|
|
96
91
|
cluster_name = c.ClusterName or cluster_id
|
|
92
|
+
|
|
93
|
+
if name_filter:
|
|
94
|
+
nf = name_filter.lower()
|
|
95
|
+
if nf not in cluster_name.lower() and nf not in cluster_id.lower():
|
|
96
|
+
continue
|
|
97
97
|
status = color_status(c.ClusterStatus or "Unknown")
|
|
98
98
|
version = c.ClusterVersion or "-"
|
|
99
99
|
node_count = str(c.ClusterNodeNum or 0)
|
|
@@ -32,7 +32,8 @@ except ImportError:
|
|
|
32
32
|
|
|
33
33
|
from ic.platforms.tencent.client import (
|
|
34
34
|
get_accounts, get_credential_for_account, get_tencent_regions,
|
|
35
|
-
make_client_profile, check_sdk_available, TENCENT_SDK_AVAILABLE
|
|
35
|
+
make_client_profile, check_sdk_available, TENCENT_SDK_AVAILABLE,
|
|
36
|
+
TencentCloudSDKException
|
|
36
37
|
)
|
|
37
38
|
|
|
38
39
|
console = Console()
|
|
@@ -68,18 +69,17 @@ def fetch_vpc_one_account_region(
|
|
|
68
69
|
req = models.DescribeVpcsRequest()
|
|
69
70
|
req.Offset = str(offset)
|
|
70
71
|
req.Limit = str(limit)
|
|
71
|
-
if name_filter:
|
|
72
|
-
f = models.Filter()
|
|
73
|
-
f.Name = "vpc-name"
|
|
74
|
-
f.Values = [f"*{name_filter}*"]
|
|
75
|
-
req.Filters = [f]
|
|
76
|
-
|
|
77
72
|
resp = client.DescribeVpcs(req)
|
|
78
73
|
vpcs = resp.VpcSet or []
|
|
79
74
|
|
|
80
75
|
for vpc in vpcs:
|
|
81
76
|
vpc_name = vpc.VpcName or "-"
|
|
82
77
|
vpc_id = vpc.VpcId or "-"
|
|
78
|
+
|
|
79
|
+
if name_filter:
|
|
80
|
+
nf = name_filter.lower()
|
|
81
|
+
if nf not in vpc_name.lower() and nf not in vpc_id.lower():
|
|
82
|
+
continue
|
|
83
83
|
cidr = vpc.CidrBlock or "-"
|
|
84
84
|
is_default = "[bold green]Yes[/bold green]" if vpc.IsDefault else "No"
|
|
85
85
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ic-code
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.9
|
|
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
|
|
@@ -69,6 +69,7 @@ Requires-Dist: pytest-cov<7.0.0,>=5.0.0; extra == "dev"
|
|
|
69
69
|
Requires-Dist: black<25.0.0,>=24.0.0; extra == "dev"
|
|
70
70
|
Requires-Dist: flake8<8.0.0,>=7.0.0; extra == "dev"
|
|
71
71
|
Requires-Dist: mypy<2.0.0,>=1.10.0; extra == "dev"
|
|
72
|
+
Requires-Dist: pyrefly>=1.2.0; extra == "dev"
|
|
72
73
|
Requires-Dist: pre-commit<4.0.0,>=3.7.0; extra == "dev"
|
|
73
74
|
Dynamic: author
|
|
74
75
|
Dynamic: home-page
|
|
@@ -137,7 +138,7 @@ A comprehensive, production-grade Infrastructure Command Line Interface tool for
|
|
|
137
138
|
### From PyPI (Recommended)
|
|
138
139
|
|
|
139
140
|
```bash
|
|
140
|
-
# Install the latest stable version (v1.2.
|
|
141
|
+
# Install the latest stable version (v1.2.9+)
|
|
141
142
|
pip install ic-code
|
|
142
143
|
|
|
143
144
|
# Verify installation
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|