-
-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Remove Exoscale support due to CloudStack API deprecation #14841
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Exoscale deprecated their CloudStack API on May 1, 2024, migrating to a proprietary API v2 that is incompatible with CloudStack-based tools. Changes: - Remove Exoscale as default CloudStack endpoint - Add detection and clear error message for Exoscale endpoints - Update documentation to remove Exoscale references - Add recommendations for alternative providers - Maintain generic CloudStack support for other providers Users attempting to use Exoscale will now receive a helpful error message explaining the situation and suggesting alternative providers with European presence (Hetzner, DigitalOcean, Vultr, Scaleway). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Claude finished @dguido's task —— View job
Pull Request Review
I've conducted a thorough review of this PR to remove Exoscale support. Here's my comprehensive feedback:
Todo List
- Read and understand changed files
- Check code quality and best practices
- Identify potential bugs or issues
- Assess security implications
- Evaluate test coverage
- Provide constructive feedback
Code Quality & Best Practices ✅
Excellent implementation that follows Algo's established patterns and coding standards:
- Proper YAML formatting: All changes use correct YAML syntax with proper indentation and structure
- Clear task naming: The fail task is appropriately named and descriptive
- Follows Ansible conventions: Uses proper
fail
module with multiline message formatting - Documentation updates: Comprehensive updates across all relevant documentation files
- Consistent style: Maintains the existing documentation formatting and tone
Logic & Implementation ✅
The implementation is well-designed and comprehensive:
-
Smart detection logic in
roles/cloud-cloudstack/tasks/prompts.yml:54
:when: "'exoscale.com' in algo_cs_url or 'exoscale.ch' in algo_cs_url"
This correctly catches both Exoscale domains users might encounter.
-
Excellent user experience: The error message is informative, explains why Exoscale is no longer supported, and provides concrete alternatives with European presence.
-
Proper fallback for zone selection (
prompts.yml:71
):- Removes Exoscale-specific "ch-gva-2" default
- Uses generic "first zone" approach that works for any CloudStack provider
-
Complete documentation cleanup: All Exoscale references removed from relevant docs without breaking the flow.
Security Considerations ✅
No security concerns identified:
- Changes maintain existing security patterns
- No exposure of credentials or sensitive information
- Proper use of
no_log: true
for credential handling remains intact - The fail-fast approach prevents users from attempting impossible deployments
Potential Issues & Suggestions 🟡
Minor considerations:
-
Error message timing: The error occurs after API credentials are collected but before they're used. This is actually good UX design - users get clear feedback without wasted API calls.
-
Zone selection logic (
prompts.yml:71
): The hardcoded"1"
default is fine, but consider adding a comment explaining this represents the first zone index, not a zone ID. -
Documentation consistency: Consider adding the deprecation notice to the main README.md provider list for maximum visibility (currently line 20 only mentions CloudStack generically).
Test Coverage Assessment 🟡
Limited test coverage for this specific functionality:
- No unit tests exist for CloudStack provider prompts
- No integration tests for the Exoscale detection logic
- However, this aligns with the current codebase patterns where most cloud provider logic lacks comprehensive test coverage
Recommendation: The error condition could be tested with a simple unit test, but this isn't blocking given the project's current testing approach.
Documentation Quality ✅
Excellent documentation updates:
- Clear deprecation notices with specific dates
- Helpful alternative suggestions focusing on European providers
- Maintains existing documentation structure and tone
- Comprehensive coverage across all relevant files
Breaking Change Handling ✅
Well-managed breaking change:
- Clear communication about the nature of the change
- Helpful migration guidance to alternative providers
- Fail-fast approach prevents confusing error messages
- Maintains CloudStack support for other providers
Recommendations
-
Consider adding a brief Exoscale deprecation note to the main README.md provider list for maximum visibility
-
Optional enhancement: Add a comment above
default_zone: "1"
explaining it represents the first zone index -
Future consideration: Unit tests for cloud provider error conditions would improve robustness
Overall Assessment ✅
This is a high-quality PR that handles a breaking change professionally:
- ✅ Security: No concerns identified
- ✅ Code quality: Follows established patterns and best practices
- ✅ User experience: Clear error messages and helpful alternatives
- ✅ Documentation: Comprehensive and well-written updates
- ✅ Maintainability: Clean implementation that's easy to understand
- ✅ Testing: Aligns with current project testing standards
The implementation demonstrates good understanding of Algo's architecture and user needs. The fail-fast approach with informative error messages is exactly the right pattern for this type of deprecation.
Recommendation: Approve
- Removed 'Exoscale optimised' label from CloudStack in input.yml - Removed Exoscale mention from README.md provider list - Removed Exoscale URL example from CloudStack API endpoint prompt
Summary
Removes Exoscale support from Algo as they deprecated their CloudStack API on May 1, 2024.
Related Issue
Fixes #14839
Background
Exoscale has migrated from CloudStack to their proprietary API v2, which is fundamentally incompatible with CloudStack-based tools. This is not a simple version update but a complete platform change that would require a full rewrite to support.
Changes Made
1. Removed Exoscale as Default Endpoint
File:
roles/cloud-cloudstack/tasks/prompts.yml
https://api.exoscale.com/compute
as the default CloudStack endpoint2. Added Exoscale Detection and Error Handling
File:
roles/cloud-cloudstack/tasks/prompts.yml
3. Updated Documentation
Files:
docs/cloud-cloudstack.md
- Added deprecation notice and removed Exoscale examplesdocs/cloud-amazon-ec2.md
- Removed "Exoscale optimised" label from CloudStackdocs/deploy-from-ansible.md
- Removed Exoscale-specific examples4. Removed Exoscale-Specific Defaults
File:
roles/cloud-cloudstack/tasks/prompts.yml
Alternative Providers for Affected Users
Users previously using Exoscale can migrate to:
Test Plan
Impact
🤖 Generated with Claude Code