ic-code 1.0.9__tar.gz → 1.1.1__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.0.9/src/ic_code.egg-info → ic_code-1.1.1}/PKG-INFO +1 -1
- {ic_code-1.0.9 → ic_code-1.1.1}/common/ncp_utils.py +2 -2
- {ic_code-1.0.9 → ic_code-1.1.1}/common/ncpgov_utils.py +2 -2
- ic_code-1.1.1/docs/ssh/configuration.md +109 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/pyproject.toml +1 -1
- {ic_code-1.0.9 → ic_code-1.1.1}/scripts/cli_usage_analysis.py +4 -4
- {ic_code-1.0.9 → ic_code-1.1.1}/scripts/fix_consolidated_imports.py +3 -3
- {ic_code-1.0.9 → ic_code-1.1.1}/setup.py +1 -1
- ic_code-1.1.1/src/ic/__init__.py +36 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/cli.py +137 -57
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/commands/config.py +4 -18
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/commands/migration.py +4 -1
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/migration/__init__.py +4 -1
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/migration/post_validation.py +52 -13
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncp/ec2/info.py +4 -1
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncp/rds/info.py +4 -1
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncp/s3/info.py +4 -1
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncp/sg/info.py +4 -1
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncp/vpc/info.py +4 -1
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncpgov/ec2/info.py +8 -2
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncpgov/rds/info.py +4 -1
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncpgov/s3/info.py +8 -2
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncpgov/sg/info.py +4 -1
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncpgov/vpc/info.py +4 -1
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/lb/info.py +4 -1
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/nsg/info.py +4 -1
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/obj/info.py +4 -1
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/policy/info.py +4 -1
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/vcn/info.py +4 -1
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/vm/info.py +4 -1
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/volume/info.py +4 -1
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ssh/auto_ssh.py +30 -4
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ssh/server_info.py +24 -2
- {ic_code-1.0.9 → ic_code-1.1.1/src/ic_code.egg-info}/PKG-INFO +1 -1
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic_code.egg-info/SOURCES.txt +1 -0
- ic_code-1.0.9/src/ic/__init__.py +0 -29
- {ic_code-1.0.9 → ic_code-1.1.1}/CHANGELOG.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/LICENSE +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/MANIFEST.in +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/README.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/SECURITY.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/common/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/common/azure_utils.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/common/gather_env.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/common/gcp_config_validator.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/common/gcp_monitoring.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/common/gcp_utils.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/common/log.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/common/ncp_security_utils.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/common/progress_decorator.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/common/slack.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/common/utils.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/README.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/_templates/configuration.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/_templates/installation.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/_templates/troubleshooting.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/_templates/usage.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/aws/AWS_IMPLEMENTATION_SUMMARY.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/aws/README.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/aws/aws_cli_prd.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/aws/installation.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/azure/README.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/config_migration.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/deployment.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/gcp/GCP_CONFIGURATION_GUIDE.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/gcp/GCP_SECURITY_BEST_PRACTICES.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/gcp/README.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/general/configuration.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/installation.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/mcp_integration.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/migration.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/migration_guide.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/ncp/README.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/ncp/configuration.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/ncp/installation.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/ncp/troubleshooting.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/ncp/usage.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/ncpgov/README.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/ncpgov/installation.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/oci/README.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/oci/installation.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/security.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/troubleshooting.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/docs/user_guide.md +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/mcp/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/mcp/gcp_connector.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/requirements.txt +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/scripts/analysis_summary.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/scripts/bump-version.sh +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/scripts/cf_edge_nsg_make/cf_edge_nsg_make.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/scripts/dependency_mapper.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/scripts/deploy.sh +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/scripts/final_validation_and_documentation.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/scripts/migration_execution_and_validation.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/scripts/ncp_security_scanner.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/scripts/oracle-policy/user_policy.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/scripts/performance_optimization.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/scripts/setup_venv.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/scripts/unset_env.sh +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/scripts/validate_config.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/scripts/validate_dependencies.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/scripts/validate_ncp_security.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/setup.cfg +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/commands/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/commands/security.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/compat/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/compat/cli.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/compat/common.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/config/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/config/cleanup.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/config/docs_organizer.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/config/external.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/config/installer.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/config/manager.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/config/migration.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/config/migration_utils.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/config/path_manager.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/config/schema.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/config/secrets.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/config/security.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/core/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/core/dependency_validator.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/core/logging.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/core/mcp_manager.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/core/session.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/core/silence_logging.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/migration/manager.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/migration/rollback.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/migration/validation.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/cloudfront/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/cloudfront/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/codepipeline/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/codepipeline/build.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/codepipeline/deploy.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/ec2/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/ec2/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/ec2/list_tags.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/ec2/tag_check.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/ecs/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/ecs/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/ecs/service.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/ecs/task.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/eks/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/eks/addons.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/eks/fargate.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/eks/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/eks/nodes.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/eks/pods.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/eks/update_config.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/fargate/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/fargate/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/lb/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/lb/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/lb/list_tags.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/lb/tag_check.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/msk/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/msk/broker.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/msk/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/nat/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/nat/list_tags.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/nat/tag_check.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/profile/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/profile/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/rds/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/rds/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/rds/list_tags.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/rds/tag_check.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/s3/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/s3/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/s3/list_tags.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/s3/tag_check.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/sg/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/sg/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/vpc/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/vpc/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/vpc/list_tags.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/vpc/tag_check.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/vpn/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/aws/vpn/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/azure/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/azure/aci/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/azure/aks/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/azure/lb/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/azure/nsg/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/azure/storage/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/azure/vm/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/azure/vnet/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/cloudflare/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/cloudflare/dns/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/cloudflare/dns/list_info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/billing/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/billing/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/compute/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/compute/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/firewall/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/firewall/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/functions/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/functions/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/gke/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/gke/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/lb/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/lb/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/run/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/run/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/sql/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/sql/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/storage/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/storage/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/vpc/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/gcp/vpc/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncp/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncp/client.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncp/ec2/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncp/rds/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncp/s3/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncp/sg/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncp/vpc/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncpgov/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncpgov/client.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncpgov/ec2/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncpgov/rds/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncpgov/s3/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncpgov/sg/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ncpgov/vpc/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/common/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/common/utils.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/compartment/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/compartment/info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/cost/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/cost/credit.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/cost/usage.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/info/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/info/oci_info.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/lb/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/nsg/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/obj/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/policy/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/policy/search.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/vcn/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/vm/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/oci/volume/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/platforms/ssh/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/security/__init__.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/security/config.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/security/detector.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/security/guidance.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/security/hooks.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/security/patterns.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic/security/scanner.py +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic_code.egg-info/dependency_links.txt +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic_code.egg-info/entry_points.txt +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic_code.egg-info/requires.txt +0 -0
- {ic_code-1.0.9 → ic_code-1.1.1}/src/ic_code.egg-info/top_level.txt +0 -0
|
@@ -32,7 +32,7 @@ def get_ncp_config_path() -> Path:
|
|
|
32
32
|
"""NCP 설정 파일 경로 반환 (hierarchical lookup)"""
|
|
33
33
|
# Import here to avoid circular imports
|
|
34
34
|
try:
|
|
35
|
-
from
|
|
35
|
+
from ic.config.path_manager import ConfigPathManager
|
|
36
36
|
path_manager = ConfigPathManager()
|
|
37
37
|
config_path = path_manager.get_ncp_config_path()
|
|
38
38
|
if config_path:
|
|
@@ -64,7 +64,7 @@ def load_ncp_config(profile: str = 'default') -> Dict[str, Any]:
|
|
|
64
64
|
"""
|
|
65
65
|
try:
|
|
66
66
|
# Try to use ConfigManager for hierarchical lookup
|
|
67
|
-
from
|
|
67
|
+
from ic.config.manager import ConfigManager
|
|
68
68
|
config_manager = ConfigManager()
|
|
69
69
|
|
|
70
70
|
# Monitor configuration access
|
|
@@ -29,7 +29,7 @@ def get_ncpgov_config_path() -> Path:
|
|
|
29
29
|
"""NCP Gov 설정 파일 경로 반환 (hierarchical lookup)"""
|
|
30
30
|
# Import here to avoid circular imports
|
|
31
31
|
try:
|
|
32
|
-
from
|
|
32
|
+
from ic.config.path_manager import ConfigPathManager
|
|
33
33
|
path_manager = ConfigPathManager()
|
|
34
34
|
config_path = path_manager.get_ncpgov_config_path()
|
|
35
35
|
if config_path:
|
|
@@ -61,7 +61,7 @@ def load_ncpgov_config(profile: str = 'default') -> Dict[str, Any]:
|
|
|
61
61
|
"""
|
|
62
62
|
try:
|
|
63
63
|
# Try to use ConfigManager for hierarchical lookup
|
|
64
|
-
from
|
|
64
|
+
from ic.config.manager import ConfigManager
|
|
65
65
|
config_manager = ConfigManager()
|
|
66
66
|
|
|
67
67
|
# Monitor configuration access for government cloud
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# SSH Configuration Guide
|
|
2
|
+
|
|
3
|
+
## SSH Host Key Policy 설정
|
|
4
|
+
|
|
5
|
+
IC CLI의 SSH 기능은 보안을 위해 다양한 호스트 키 정책을 지원합니다.
|
|
6
|
+
|
|
7
|
+
### 설정 방법
|
|
8
|
+
|
|
9
|
+
`~/.ic/config/default.yaml` 파일에서 SSH 설정을 수정할 수 있습니다:
|
|
10
|
+
|
|
11
|
+
```yaml
|
|
12
|
+
ssh:
|
|
13
|
+
config_file: ~/.ssh/config
|
|
14
|
+
key_dir: ~/.ssh
|
|
15
|
+
timeout: 5
|
|
16
|
+
workers: 20
|
|
17
|
+
host_key_policy: auto # 새로 추가된 설정
|
|
18
|
+
skip_prefixes:
|
|
19
|
+
- git
|
|
20
|
+
- test
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Host Key Policy 옵션
|
|
24
|
+
|
|
25
|
+
1. **auto** (기본값, 권장)
|
|
26
|
+
- 처음 연결하는 호스트의 키를 자동으로 `~/.ssh/known_hosts`에 추가
|
|
27
|
+
- 편의성과 보안의 균형을 제공
|
|
28
|
+
- 대부분의 사용 사례에 적합
|
|
29
|
+
|
|
30
|
+
2. **warning**
|
|
31
|
+
- 알려지지 않은 호스트에 대해 경고를 출력하지만 연결 허용
|
|
32
|
+
- 개발 환경이나 테스트 환경에 적합
|
|
33
|
+
- 보안 경고를 확인할 수 있음
|
|
34
|
+
|
|
35
|
+
3. **reject**
|
|
36
|
+
- 알려지지 않은 호스트에 대한 연결을 거부
|
|
37
|
+
- 최고 수준의 보안
|
|
38
|
+
- 프로덕션 환경에 적합하지만 초기 설정이 복잡할 수 있음
|
|
39
|
+
|
|
40
|
+
### 환경 변수 오버라이드
|
|
41
|
+
|
|
42
|
+
개발이나 테스트 목적으로 임시로 정책을 변경할 수 있습니다:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# 테스트 모드 (경고 정책 사용)
|
|
46
|
+
IC_TEST_MODE=1 ic ssh info
|
|
47
|
+
|
|
48
|
+
# 개발 모드 (경고 정책 사용)
|
|
49
|
+
IC_DEV_MODE=1 ic ssh info
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### 보안 고려사항
|
|
53
|
+
|
|
54
|
+
- **프로덕션 환경**: `reject` 정책 사용 권장
|
|
55
|
+
- **개발 환경**: `auto` 또는 `warning` 정책 사용 권장
|
|
56
|
+
- **CI/CD 환경**: `IC_TEST_MODE=1` 환경 변수 사용 권장
|
|
57
|
+
|
|
58
|
+
### 문제 해결
|
|
59
|
+
|
|
60
|
+
#### 모든 서버가 "Connection Fail"로 표시되는 경우
|
|
61
|
+
|
|
62
|
+
1. **임시 해결책**:
|
|
63
|
+
```bash
|
|
64
|
+
IC_DEV_MODE=1 ic ssh info
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
2. **영구 해결책**:
|
|
68
|
+
설정 파일에서 `host_key_policy`를 `auto`로 변경:
|
|
69
|
+
```yaml
|
|
70
|
+
ssh:
|
|
71
|
+
host_key_policy: auto
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
3. **known_hosts 파일 확인**:
|
|
75
|
+
```bash
|
|
76
|
+
ls -la ~/.ssh/known_hosts
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
#### 특정 서버만 연결 실패하는 경우
|
|
80
|
+
|
|
81
|
+
1. SSH 키 권한 확인:
|
|
82
|
+
```bash
|
|
83
|
+
chmod 600 ~/.ssh/id_rsa
|
|
84
|
+
chmod 644 ~/.ssh/id_rsa.pub
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
2. SSH 설정 파일 확인:
|
|
88
|
+
```bash
|
|
89
|
+
ssh -T [hostname]
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### 예제 설정
|
|
93
|
+
|
|
94
|
+
완전한 SSH 설정 예제:
|
|
95
|
+
|
|
96
|
+
```yaml
|
|
97
|
+
ssh:
|
|
98
|
+
config_file: ~/.ssh/config
|
|
99
|
+
key_dir: ~/.ssh
|
|
100
|
+
timeout: 10
|
|
101
|
+
workers: 30
|
|
102
|
+
host_key_policy: auto
|
|
103
|
+
skip_prefixes:
|
|
104
|
+
- git
|
|
105
|
+
- github
|
|
106
|
+
- gitlab
|
|
107
|
+
- test-
|
|
108
|
+
- temp-
|
|
109
|
+
```
|
|
@@ -400,10 +400,10 @@ class CLIUsageAnalyzer:
|
|
|
400
400
|
old_import = f"from {imp.module_path} import {imp.imported_name}"
|
|
401
401
|
if imp.module_path.startswith('ncp.'):
|
|
402
402
|
service = imp.module_path.split('.')[1]
|
|
403
|
-
new_import = f"from
|
|
403
|
+
new_import = f"from ic.platforms.ncp.{service} import {imp.imported_name}"
|
|
404
404
|
elif imp.module_path.startswith('ncp_module.'):
|
|
405
405
|
service = imp.module_path.split('.')[1]
|
|
406
|
-
new_import = f"from
|
|
406
|
+
new_import = f"from ic.platforms.ncp.{service} import {imp.imported_name}"
|
|
407
407
|
else:
|
|
408
408
|
new_import = old_import
|
|
409
409
|
|
|
@@ -413,10 +413,10 @@ class CLIUsageAnalyzer:
|
|
|
413
413
|
old_import = f"from {imp.module_path} import {imp.imported_name}"
|
|
414
414
|
if imp.module_path.startswith('ncpgov.'):
|
|
415
415
|
service = imp.module_path.split('.')[1]
|
|
416
|
-
new_import = f"from
|
|
416
|
+
new_import = f"from ic.platforms.ncpgov.{service} import {imp.imported_name}"
|
|
417
417
|
elif imp.module_path.startswith('ncpgov_module.'):
|
|
418
418
|
service = imp.module_path.split('.')[1]
|
|
419
|
-
new_import = f"from
|
|
419
|
+
new_import = f"from ic.platforms.ncpgov.{service} import {imp.imported_name}"
|
|
420
420
|
else:
|
|
421
421
|
new_import = old_import
|
|
422
422
|
|
|
@@ -40,7 +40,7 @@ def fix_consolidated_imports():
|
|
|
40
40
|
# Fix imports in the content
|
|
41
41
|
content = content.replace(
|
|
42
42
|
"from ncp_module.client import NCPClient, NCPAPIError",
|
|
43
|
-
"from
|
|
43
|
+
"from ic.platforms.ncp.client import NCPClient, NCPAPIError"
|
|
44
44
|
)
|
|
45
45
|
|
|
46
46
|
# Write to consolidated location
|
|
@@ -68,11 +68,11 @@ def fix_consolidated_imports():
|
|
|
68
68
|
# Fix imports in the content
|
|
69
69
|
content = content.replace(
|
|
70
70
|
"from ncpgov_module.client import NCPGovClient, NCPAPIError",
|
|
71
|
-
"from
|
|
71
|
+
"from ic.platforms.ncpgov.client import NCPGovClient, NCPAPIError"
|
|
72
72
|
)
|
|
73
73
|
content = content.replace(
|
|
74
74
|
"from ncp_module.client import NCPClient, NCPAPIError",
|
|
75
|
-
"from
|
|
75
|
+
"from ic.platforms.ncp.client import NCPClient, NCPAPIError"
|
|
76
76
|
)
|
|
77
77
|
|
|
78
78
|
# Write to consolidated location
|
|
@@ -61,7 +61,7 @@ class PostInstallCommand(install):
|
|
|
61
61
|
"""Run post-installation configuration setup."""
|
|
62
62
|
try:
|
|
63
63
|
# Import here to avoid import errors during setup
|
|
64
|
-
from
|
|
64
|
+
from ic.config.installer import ConfigInstaller
|
|
65
65
|
|
|
66
66
|
installer = ConfigInstaller()
|
|
67
67
|
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"""
|
|
2
|
+
IC (Infra Resource Management CLI) - A comprehensive tool for managing cloud infrastructure resources.
|
|
3
|
+
|
|
4
|
+
This package provides CLI tools and libraries for managing AWS, Azure, GCP, OCI, and CloudFlare resources.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
__version__ = "2.0.0"
|
|
8
|
+
__author__ = "SangYun"
|
|
9
|
+
__email__ = "cruiser594@gmail.com"
|
|
10
|
+
|
|
11
|
+
# Core components
|
|
12
|
+
try:
|
|
13
|
+
from .core.mcp_manager import MCPManager, MCPQueryResult, create_default_mcp_config
|
|
14
|
+
from .config.security import SecurityManager
|
|
15
|
+
from .config.manager import ConfigManager
|
|
16
|
+
from .core.logging import ICLogger
|
|
17
|
+
from .core.session import AWSSessionManager
|
|
18
|
+
except ImportError:
|
|
19
|
+
from ic.core.mcp_manager import MCPManager, MCPQueryResult, create_default_mcp_config
|
|
20
|
+
from ic.config.security import SecurityManager
|
|
21
|
+
from ic.config.manager import ConfigManager
|
|
22
|
+
from ic.core.logging import ICLogger
|
|
23
|
+
from ic.core.session import AWSSessionManager
|
|
24
|
+
|
|
25
|
+
__all__ = [
|
|
26
|
+
"__version__",
|
|
27
|
+
"__author__",
|
|
28
|
+
"__email__",
|
|
29
|
+
"MCPManager",
|
|
30
|
+
"MCPQueryResult",
|
|
31
|
+
"create_default_mcp_config",
|
|
32
|
+
"SecurityManager",
|
|
33
|
+
"ConfigManager",
|
|
34
|
+
"ICLogger",
|
|
35
|
+
"AWSSessionManager"
|
|
36
|
+
]
|
|
@@ -181,63 +181,128 @@ try:
|
|
|
181
181
|
except ImportError:
|
|
182
182
|
pass
|
|
183
183
|
# AWS imports - Unified module structure
|
|
184
|
-
|
|
185
|
-
from
|
|
186
|
-
from
|
|
187
|
-
from
|
|
188
|
-
from
|
|
189
|
-
from
|
|
190
|
-
from
|
|
191
|
-
from
|
|
192
|
-
from
|
|
193
|
-
from
|
|
194
|
-
from
|
|
195
|
-
from
|
|
196
|
-
from
|
|
197
|
-
from
|
|
198
|
-
from
|
|
199
|
-
from
|
|
200
|
-
from
|
|
201
|
-
from
|
|
202
|
-
from
|
|
203
|
-
from
|
|
204
|
-
from
|
|
205
|
-
from
|
|
206
|
-
from
|
|
207
|
-
from
|
|
208
|
-
from
|
|
209
|
-
from
|
|
210
|
-
from
|
|
211
|
-
from
|
|
184
|
+
try:
|
|
185
|
+
from .platforms.aws.ec2 import list_tags as ec2_list_tags
|
|
186
|
+
from .platforms.aws.ec2 import tag_check as ec2_tag_check
|
|
187
|
+
from .platforms.aws.ec2 import info as ec2_info
|
|
188
|
+
from .platforms.aws.lb import list_tags as lb_list_tags
|
|
189
|
+
from .platforms.aws.lb import tag_check as lb_tag_check
|
|
190
|
+
from .platforms.aws.vpc import tag_check as vpc_tag_check
|
|
191
|
+
from .platforms.aws.vpc import list_tags as vpc_list_tags
|
|
192
|
+
from .platforms.aws.rds import list_tags as rds_list_tags
|
|
193
|
+
from .platforms.aws.rds import tag_check as rds_tag_check
|
|
194
|
+
from .platforms.aws.s3 import list_tags as s3_list_tags
|
|
195
|
+
from .platforms.aws.s3 import tag_check as s3_tag_check
|
|
196
|
+
from .platforms.aws.sg import info as sg_info
|
|
197
|
+
from .platforms.aws.eks import info as eks_info
|
|
198
|
+
from .platforms.aws.eks import nodes as eks_nodes
|
|
199
|
+
from .platforms.aws.eks import pods as eks_pods
|
|
200
|
+
from .platforms.aws.eks import fargate as eks_fargate
|
|
201
|
+
from .platforms.aws.eks import addons as eks_addons
|
|
202
|
+
from .platforms.aws.eks import update_config as eks_update_config
|
|
203
|
+
from .platforms.aws.fargate import info as fargate_info
|
|
204
|
+
from .platforms.aws.codepipeline import build as codepipeline_build
|
|
205
|
+
from .platforms.aws.codepipeline import deploy as codepipeline_deploy
|
|
206
|
+
from .platforms.aws.ecs import info as ecs_info
|
|
207
|
+
from .platforms.aws.ecs import service as ecs_service
|
|
208
|
+
from .platforms.aws.ecs import task as ecs_task
|
|
209
|
+
from .platforms.aws.msk import info as msk_info
|
|
210
|
+
from .platforms.aws.msk import broker as msk_broker
|
|
211
|
+
from .platforms.aws.profile.info import ProfileInfoCollector, ProfileTableRenderer
|
|
212
|
+
from .platforms.aws.cloudfront.info import CloudFrontCollector, CloudFrontRenderer
|
|
213
|
+
except ImportError:
|
|
214
|
+
# Fallback for installed package
|
|
215
|
+
from ic.platforms.aws.ec2 import list_tags as ec2_list_tags
|
|
216
|
+
from ic.platforms.aws.ec2 import tag_check as ec2_tag_check
|
|
217
|
+
from ic.platforms.aws.ec2 import info as ec2_info
|
|
218
|
+
from ic.platforms.aws.lb import list_tags as lb_list_tags
|
|
219
|
+
from ic.platforms.aws.lb import tag_check as lb_tag_check
|
|
220
|
+
from ic.platforms.aws.vpc import tag_check as vpc_tag_check
|
|
221
|
+
from ic.platforms.aws.vpc import list_tags as vpc_list_tags
|
|
222
|
+
from ic.platforms.aws.rds import list_tags as rds_list_tags
|
|
223
|
+
from ic.platforms.aws.rds import tag_check as rds_tag_check
|
|
224
|
+
from ic.platforms.aws.s3 import list_tags as s3_list_tags
|
|
225
|
+
from ic.platforms.aws.s3 import tag_check as s3_tag_check
|
|
226
|
+
from ic.platforms.aws.sg import info as sg_info
|
|
227
|
+
from ic.platforms.aws.eks import info as eks_info
|
|
228
|
+
from ic.platforms.aws.eks import nodes as eks_nodes
|
|
229
|
+
from ic.platforms.aws.eks import pods as eks_pods
|
|
230
|
+
from ic.platforms.aws.eks import fargate as eks_fargate
|
|
231
|
+
from ic.platforms.aws.eks import addons as eks_addons
|
|
232
|
+
from ic.platforms.aws.eks import update_config as eks_update_config
|
|
233
|
+
from ic.platforms.aws.fargate import info as fargate_info
|
|
234
|
+
from ic.platforms.aws.codepipeline import build as codepipeline_build
|
|
235
|
+
from ic.platforms.aws.codepipeline import deploy as codepipeline_deploy
|
|
236
|
+
from ic.platforms.aws.ecs import info as ecs_info
|
|
237
|
+
from ic.platforms.aws.ecs import service as ecs_service
|
|
238
|
+
from ic.platforms.aws.ecs import task as ecs_task
|
|
239
|
+
from ic.platforms.aws.msk import info as msk_info
|
|
240
|
+
from ic.platforms.aws.msk import broker as msk_broker
|
|
241
|
+
from ic.platforms.aws.profile.info import ProfileInfoCollector, ProfileTableRenderer
|
|
242
|
+
from ic.platforms.aws.cloudfront.info import CloudFrontCollector, CloudFrontRenderer
|
|
212
243
|
# CloudFlare imports - Unified module structure
|
|
213
|
-
|
|
244
|
+
try:
|
|
245
|
+
from .platforms.cloudflare.dns import list_info as dns_info
|
|
246
|
+
except ImportError:
|
|
247
|
+
from ic.platforms.cloudflare.dns import list_info as dns_info
|
|
214
248
|
# OCI imports - Unified module structure
|
|
215
|
-
|
|
216
|
-
from
|
|
217
|
-
from
|
|
218
|
-
from
|
|
219
|
-
from
|
|
220
|
-
from
|
|
221
|
-
from
|
|
222
|
-
from
|
|
223
|
-
from
|
|
224
|
-
from
|
|
225
|
-
from
|
|
226
|
-
from
|
|
249
|
+
try:
|
|
250
|
+
from .platforms.oci.info import oci_info as oci_info # Deprecated. 통합 oci info
|
|
251
|
+
from .platforms.oci.vm import add_arguments as vm_add_args, main as vm_main
|
|
252
|
+
from .platforms.oci.lb import add_arguments as lb_add_args, main as lb_main
|
|
253
|
+
from .platforms.oci.nsg import add_arguments as nsg_add_args, main as nsg_main
|
|
254
|
+
from .platforms.oci.volume import add_arguments as volume_add_args, main as volume_main
|
|
255
|
+
from .platforms.oci.policy import add_arguments as policy_add_args, main as policy_main
|
|
256
|
+
from .platforms.oci.policy import search as oci_policy_search
|
|
257
|
+
from .platforms.oci.obj import add_arguments as obj_add_args, main as obj_main
|
|
258
|
+
from .platforms.oci.cost.usage import add_arguments as cost_usage_add_args, main as cost_usage_main
|
|
259
|
+
from .platforms.oci.cost.credit import add_arguments as cost_credit_add_args, main as cost_credit_main
|
|
260
|
+
from .platforms.oci.vcn import info as vcn_info
|
|
261
|
+
from .platforms.oci.compartment.info import CompartmentTreeBuilder, CompartmentTreeRenderer
|
|
262
|
+
except ImportError:
|
|
263
|
+
from ic.platforms.oci.info import oci_info as oci_info # Deprecated. 통합 oci info
|
|
264
|
+
from ic.platforms.oci.vm import add_arguments as vm_add_args, main as vm_main
|
|
265
|
+
from ic.platforms.oci.lb import add_arguments as lb_add_args, main as lb_main
|
|
266
|
+
from ic.platforms.oci.nsg import add_arguments as nsg_add_args, main as nsg_main
|
|
267
|
+
from ic.platforms.oci.volume import add_arguments as volume_add_args, main as volume_main
|
|
268
|
+
from ic.platforms.oci.policy import add_arguments as policy_add_args, main as policy_main
|
|
269
|
+
from ic.platforms.oci.policy import search as oci_policy_search
|
|
270
|
+
from ic.platforms.oci.obj import add_arguments as obj_add_args, main as obj_main
|
|
271
|
+
from ic.platforms.oci.cost.usage import add_arguments as cost_usage_add_args, main as cost_usage_main
|
|
272
|
+
from ic.platforms.oci.cost.credit import add_arguments as cost_credit_add_args, main as cost_credit_main
|
|
273
|
+
from ic.platforms.oci.vcn import info as vcn_info
|
|
274
|
+
from ic.platforms.oci.compartment.info import CompartmentTreeBuilder, CompartmentTreeRenderer
|
|
227
275
|
# SSH imports - Unified module structure
|
|
228
|
-
|
|
276
|
+
try:
|
|
277
|
+
from .platforms.ssh import auto_ssh, server_info
|
|
278
|
+
except ImportError:
|
|
279
|
+
from ic.platforms.ssh import auto_ssh, server_info
|
|
229
280
|
# NCP imports - Unified module structure
|
|
230
|
-
|
|
231
|
-
from
|
|
232
|
-
from
|
|
233
|
-
from
|
|
234
|
-
from
|
|
281
|
+
try:
|
|
282
|
+
from .platforms.ncp.ec2 import info as ncp_ec2_info
|
|
283
|
+
from .platforms.ncp.s3 import info as ncp_s3_info
|
|
284
|
+
from .platforms.ncp.vpc import info as ncp_vpc_info
|
|
285
|
+
from .platforms.ncp.sg import info as ncp_sg_info
|
|
286
|
+
from .platforms.ncp.rds import info as ncp_rds_info
|
|
287
|
+
except ImportError:
|
|
288
|
+
from ic.platforms.ncp.ec2 import info as ncp_ec2_info
|
|
289
|
+
from ic.platforms.ncp.s3 import info as ncp_s3_info
|
|
290
|
+
from ic.platforms.ncp.vpc import info as ncp_vpc_info
|
|
291
|
+
from ic.platforms.ncp.sg import info as ncp_sg_info
|
|
292
|
+
from ic.platforms.ncp.rds import info as ncp_rds_info
|
|
235
293
|
# NCP Gov imports - Unified module structure
|
|
236
|
-
|
|
237
|
-
from
|
|
238
|
-
from
|
|
239
|
-
from
|
|
240
|
-
from
|
|
294
|
+
try:
|
|
295
|
+
from .platforms.ncpgov.ec2 import info as ncpgov_ec2_info
|
|
296
|
+
from .platforms.ncpgov.s3 import info as ncpgov_s3_info
|
|
297
|
+
from .platforms.ncpgov.vpc import info as ncpgov_vpc_info
|
|
298
|
+
from .platforms.ncpgov.sg import info as ncpgov_sg_info
|
|
299
|
+
from .platforms.ncpgov.rds import info as ncpgov_rds_info
|
|
300
|
+
except ImportError:
|
|
301
|
+
from ic.platforms.ncpgov.ec2 import info as ncpgov_ec2_info
|
|
302
|
+
from ic.platforms.ncpgov.s3 import info as ncpgov_s3_info
|
|
303
|
+
from ic.platforms.ncpgov.vpc import info as ncpgov_vpc_info
|
|
304
|
+
from ic.platforms.ncpgov.sg import info as ncpgov_sg_info
|
|
305
|
+
from ic.platforms.ncpgov.rds import info as ncpgov_rds_info
|
|
241
306
|
import concurrent.futures
|
|
242
307
|
from threading import Lock
|
|
243
308
|
|
|
@@ -516,7 +581,10 @@ def main():
|
|
|
516
581
|
lb_check_parser.set_defaults(func=lb_tag_check.main)
|
|
517
582
|
|
|
518
583
|
lb_info_parser = lb_subparsers.add_parser("info", help="LB 상세 정보 조회")
|
|
519
|
-
|
|
584
|
+
try:
|
|
585
|
+
from .platforms.aws.lb import info as lb_info
|
|
586
|
+
except ImportError:
|
|
587
|
+
from ic.platforms.aws.lb import info as lb_info
|
|
520
588
|
lb_info.add_arguments(lb_info_parser)
|
|
521
589
|
lb_info_parser.set_defaults(func=lb_info.main)
|
|
522
590
|
|
|
@@ -530,14 +598,20 @@ def main():
|
|
|
530
598
|
vpc_list_parser.set_defaults(func=vpc_list_tags.main)
|
|
531
599
|
|
|
532
600
|
vpc_info_parser = vpc_subparsers.add_parser("info", help="VPC 상세 정보 조회")
|
|
533
|
-
|
|
601
|
+
try:
|
|
602
|
+
from .platforms.aws.vpc import info as vpc_info
|
|
603
|
+
except ImportError:
|
|
604
|
+
from ic.platforms.aws.vpc import info as vpc_info
|
|
534
605
|
vpc_info.add_arguments(vpc_info_parser)
|
|
535
606
|
vpc_info_parser.set_defaults(func=vpc_info.main)
|
|
536
607
|
|
|
537
608
|
vpn_parser = aws_subparsers.add_parser("vpn", help="TGW, VGW, VPN Connection, Endpoint 관련 명령어")
|
|
538
609
|
vpn_subparsers = vpn_parser.add_subparsers(dest="command", required=True)
|
|
539
610
|
vpn_info_parser = vpn_subparsers.add_parser("info", help="VPN 관련 상세 정보 조회")
|
|
540
|
-
|
|
611
|
+
try:
|
|
612
|
+
from .platforms.aws.vpn import info as vpn_info
|
|
613
|
+
except ImportError:
|
|
614
|
+
from ic.platforms.aws.vpn import info as vpn_info
|
|
541
615
|
vpn_info.add_arguments(vpn_info_parser)
|
|
542
616
|
vpn_info_parser.set_defaults(func=vpn_info.main)
|
|
543
617
|
|
|
@@ -552,7 +626,10 @@ def main():
|
|
|
552
626
|
rds_check_cmd.set_defaults(func=rds_tag_check.main)
|
|
553
627
|
|
|
554
628
|
rds_info_parser = rds_subparsers.add_parser("info", help="RDS 상세 정보 조회")
|
|
555
|
-
|
|
629
|
+
try:
|
|
630
|
+
from .platforms.aws.rds import info as rds_info
|
|
631
|
+
except ImportError:
|
|
632
|
+
from ic.platforms.aws.rds import info as rds_info
|
|
556
633
|
rds_info.add_arguments(rds_info_parser)
|
|
557
634
|
rds_info_parser.set_defaults(func=rds_info.main)
|
|
558
635
|
|
|
@@ -566,7 +643,10 @@ def main():
|
|
|
566
643
|
s3_check_cmd.set_defaults(func=s3_tag_check.main)
|
|
567
644
|
|
|
568
645
|
s3_info_parser = s3_subparsers.add_parser("info", help="S3 상세 정보 조회")
|
|
569
|
-
|
|
646
|
+
try:
|
|
647
|
+
from .platforms.aws.s3 import info as s3_info
|
|
648
|
+
except ImportError:
|
|
649
|
+
from ic.platforms.aws.s3 import info as s3_info
|
|
570
650
|
s3_info.add_arguments(s3_info_parser)
|
|
571
651
|
s3_info_parser.set_defaults(func=s3_info.main)
|
|
572
652
|
|
|
@@ -441,22 +441,8 @@ class ConfigCommands:
|
|
|
441
441
|
"""
|
|
442
442
|
|
|
443
443
|
try:
|
|
444
|
-
# Load
|
|
445
|
-
self.config_manager.
|
|
446
|
-
config = self.config_manager.get_config()
|
|
447
|
-
|
|
448
|
-
# Also load secrets if available
|
|
449
|
-
secrets_path = Path.home() / ".ic" / "config" / "secrets.yaml"
|
|
450
|
-
if secrets_path.exists():
|
|
451
|
-
try:
|
|
452
|
-
with open(secrets_path, 'r') as f:
|
|
453
|
-
secrets = yaml.safe_load(f) or {}
|
|
454
|
-
# Merge secrets into config for display
|
|
455
|
-
if 'secrets' not in config:
|
|
456
|
-
config['secrets'] = {}
|
|
457
|
-
config['secrets'].update(secrets)
|
|
458
|
-
except Exception as e:
|
|
459
|
-
self.console.print(f"⚠️ Warning: Could not load secrets: {e}")
|
|
444
|
+
# Load all configurations including secrets
|
|
445
|
+
config = self.config_manager.load_all_configs()
|
|
460
446
|
|
|
461
447
|
# Mask sensitive data if requested
|
|
462
448
|
if args.mask_sensitive:
|
|
@@ -556,8 +542,8 @@ class ConfigCommands:
|
|
|
556
542
|
args: Command line arguments
|
|
557
543
|
"""
|
|
558
544
|
try:
|
|
559
|
-
# Load
|
|
560
|
-
self.config_manager.
|
|
545
|
+
# Load all configurations including secrets
|
|
546
|
+
self.config_manager.load_all_configs()
|
|
561
547
|
|
|
562
548
|
# Get value
|
|
563
549
|
value = self.config_manager.get_config_value(args.key_path, args.default)
|
|
@@ -15,7 +15,10 @@ try:
|
|
|
15
15
|
except ImportError:
|
|
16
16
|
# Handle case when run directly
|
|
17
17
|
sys.path.insert(0, str(Path(__file__).parent.parent.parent))
|
|
18
|
-
|
|
18
|
+
try:
|
|
19
|
+
from .migration import MigrationManager
|
|
20
|
+
except ImportError:
|
|
21
|
+
from ic.migration import MigrationManager
|
|
19
22
|
|
|
20
23
|
|
|
21
24
|
class MigrationCommands:
|
|
@@ -11,7 +11,10 @@ Components:
|
|
|
11
11
|
- MigrationManager: Unified interface for managing the complete migration process
|
|
12
12
|
|
|
13
13
|
Usage:
|
|
14
|
-
|
|
14
|
+
try:
|
|
15
|
+
from .migration import MigrationManager
|
|
16
|
+
except ImportError:
|
|
17
|
+
from ic.migration import MigrationManager
|
|
15
18
|
|
|
16
19
|
manager = MigrationManager()
|
|
17
20
|
|