mirror of
https://github.com/OpenRouterTeam/spawn.git
synced 2026-05-06 16:31:08 +00:00
Eliminates duplicate SSH key registration logic across 5 cloud providers (Hetzner, DigitalOcean, Vultr, Linode, Lambda) by introducing a generic callback-based pattern in shared/common.sh. Before: Each provider had ~45 lines of nearly identical code for: - Generating SSH keys if missing - Getting fingerprints - Checking if key exists with provider - Registering key if not exists - Error handling After: Providers implement 2 simple callbacks: - check_callback: provider-specific API call to check if key exists - register_callback: provider-specific API call to register key The shared function handles: - Key generation (via generate_ssh_key_if_missing) - Fingerprint extraction (via get_ssh_fingerprint) - Flow control and logging - Callback orchestration Changes: - shared/common.sh: Added ensure_ssh_key_with_provider() function - hetzner/lib/common.sh: Refactored to use callbacks - digitalocean/lib/common.sh: Refactored to use callbacks - vultr/lib/common.sh: Refactored to use callbacks - linode/lib/common.sh: Refactored to use callbacks - lambda/lib/common.sh: Refactored to use callbacks Benefits: - DRY: Eliminates ~220 lines of duplicate code - Maintainability: Bug fixes in registration flow benefit all providers - Consistency: All providers use identical registration logic - Extensibility: New providers can reuse this pattern Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| common.sh | ||