Skip to content

Add tests, SDK deps, and Terraform variables — branch ready for merge#1

Merged
HunterSpence merged 7 commits intomainfrom
feature/multi-cloud-support
Apr 16, 2026
Merged

Add tests, SDK deps, and Terraform variables — branch ready for merge#1
HunterSpence merged 7 commits intomainfrom
feature/multi-cloud-support

Conversation

@HunterSpence
Copy link
Copy Markdown
Owner

Summary

  • Fix 1: Appended azure-identity>=1.16.0, google-cloud-billing>=1.13.0, and oci>=2.120.0 to requirements.txt
  • Fix 2: Replaced terraform/variables.tf with the canonical 7-variable file covering enabled_clouds, aws_region, azure_location, gcp_project, gcp_region, oci_region, and environment
  • Fix 3: Created tests/test_cross_cloud.py with all 12 directional cross-cloud pair tests across TestCrossCloudAllPairs, TestOCIProvider, and TestCloudConfig classes

Test plan

  • Verify requirements.txt ends with the three new SDK lines
  • Verify terraform/variables.tf contains exactly the 7 canonical variables
  • Verify tests/test_cross_cloud.py exists and contains all three test classes

Implements AbstractCloudProvider for OCI covering:
- Instance Pool / Compute scanning
- Object Storage (Buckets)
- Autonomous Database
- Native rightsizing via OCI Optimizer
- Mock mode for demo/CI runs (no OCI credentials required)
- Authentication via ~/.oci/config or env vars

Updates providers/__init__.py and multi.py to register OCI so the
MultiCloudAggregator fans out to all four clouds automatically.
- cloud_config.py: CloudConfig dataclass + CloudProvider enum covering
  AWS/Azure/GCP/OCI. Validates credentials, detects provider from env,
  and serialises to/from dict/env. Single source of truth for provider
  selection across all modules.

- auth/: per-provider auth helper modules (aws_auth.py, azure_auth.py,
  gcp_auth.py, oci_auth.py) plus __init__.py with get_provider_credentials()
  factory. Each module validates, tests, and returns a normalised
  credentials dict without leaking secrets to logs.

- migration_scout/cross_cloud.py: CrossCloudMigrationPlanner — takes
  source_cloud + target_cloud, maps resource types between provider
  nomenclatures, generates a migration runbook, and estimates network
  egress costs for every supported source→destination pair:
    AWS→Azure, AWS→GCP, AWS→OCI
    Azure→AWS, Azure→GCP, Azure→OCI
    GCP→AWS, GCP→Azure, GCP→OCI
    OCI→AWS, OCI→Azure, OCI→GCP
  (16 directional pairs = full combinatorial coverage)

- .env.example: adds Azure, GCP, OCI credential blocks with inline docs
terraform/
  modules/aws/       \u2014 VPC, EC2, RDS, S3, IAM, outputs
  modules/azure/     \u2014 Resource Group, VNet, VM, Storage Account, outputs
  modules/gcp/       \u2014 VPC, Compute Instance, GCS, Cloud SQL, outputs
  modules/oci/       \u2014 VCN, Compute Instance, Object Storage, Autonomous DB
  main.tf            \u2014 Root module: select provider(s) via var.enabled_clouds
  variables.tf       \u2014 All provider variables with defaults
  outputs.tf         \u2014 Unified outputs across all clouds

Each module is self-contained: can be used independently or together
via the root main.tf. The root module passes source_cloud / target_cloud
through to enable single-flag cloud switching for migration scenarios.
- Comparison chart vs 10 enterprise competitors placed immediately after
  the headline (AWS Migration Hub, Azure Migrate, GCP Migration Center,
  Oracle Lift, CloudEndure, Carbonite, Zerto, VMware HCX, Turbonomic,
  Apptio Cloudability)
- Multi-cloud quick-start section: SOURCE_CLOUD / TARGET_CLOUD env vars,
  all 12 cross-cloud pair examples
- Updated module table, architecture diagram, and module detail sections
  to reflect OCI + cross-cloud migration support
- Updated repository structure tree
- Updated .env.example reference in Requirements section
@HunterSpence HunterSpence merged commit 65e60a8 into main Apr 16, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant