blueprint-remote-providers 0.2.0-alpha.2

Remote service providers for Tangle Blueprints
Documentation
# cleanup

## Purpose
Platform-specific cleanup handlers for different deployment types. Each handler implements the `CleanupHandler` trait to terminate, deprovision, and release resources (VMs, containers, Kubernetes clusters, SSH sessions) across cloud providers and local runtimes.

## Contents (one hop)
### Subdirectories
- (none)

### Files
- `mod.rs` - Module coordinator re-exporting all cleanup handler types for use by the tracker core.
  - **Key items**: `AwsCleanup`, `AzureCleanup`, `DigitalOceanCleanup`, `GcpCleanup`, `VultrCleanup`, `AksCleanup`, `EksCleanup`, `GkeCleanup`, `LocalDockerCleanup`, `LocalHypervisorCleanup`, `LocalKubernetesCleanup`, `SshCleanup`
- `cloud_vms.rs` - Cloud provider VM termination handlers for AWS EC2, GCP, Azure, DigitalOcean, and Vultr.
  - **Key items**: `AwsCleanup`, `GcpCleanup`, `AzureCleanup`, `DigitalOceanCleanup`, `VultrCleanup`
  - **Interactions**: AWS uses `aws_sdk_ec2` with 30s wait before EBS cleanup; GCP delegates to `GcpProvisioner`; others use `CloudProvisioner`
- `kubernetes.rs` - Managed Kubernetes cluster termination handlers (EKS, GKE, AKS).
  - **Key items**: `EksCleanup`, `GkeCleanup`, `AksCleanup`
  - **Interactions**: EKS deletes nodegroups then cluster with 60s wait; GKE/AKS are unimplemented stubs
- `local.rs` - Local runtime cleanup for Docker containers, Kubernetes pods, and Cloud Hypervisor VMs.
  - **Key items**: `LocalDockerCleanup`, `LocalKubernetesCleanup`, `LocalHypervisorCleanup`, `safe_terminate_process()`
  - **Interactions**: Docker uses `docker rm -f`; K8s uses `kubectl delete`; Hypervisor sends SIGTERM then SIGKILL via `libc::kill`
- `ssh.rs` - Remote SSH deployment cleanup via `SshDeploymentClient`.
  - **Key items**: `SshCleanup`
  - **Interactions**: Reconstructs `SshConnection` from deployment metadata and calls `cleanup_deployment()`

## Key APIs (no snippets)
- **Types / Traits**: `CleanupHandler` (async trait with `cleanup` method), `DeploymentRecord`, `DeploymentType`
- **Functions**: `safe_terminate_process()` - async wrapper around `libc::kill` for Cloud Hypervisor process termination

## Relationships
- **Depends on**: `super::super::types` (CleanupHandler, DeploymentRecord), `crate::core::error`, platform SDKs (`aws_sdk_ec2`, `aws_sdk_eks`), `crate::deployment::ssh`
- **Used by**: tracker core (`core.rs`) registers default handlers and invokes `handler.cleanup()` with 3-attempt retry during termination
- **Data/control flow**:
  - Tracker registers handlers via `register_default_handlers()` mapping each `DeploymentType` to a handler
  - On termination, retrieves handler by type and calls `cleanup()` with up to 3 retries (5s backoff)
  - Success removes deployment from tracking; failure preserves record in Failed state

## Notes