Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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

Merged
dguido merged 3 commits into master from fix/remove-exoscale-support
Sep 28, 2025

Conversation

Copy link
Member

@dguido dguido commented Sep 28, 2025

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

  • Removed https://api.exoscale.com/compute as the default CloudStack endpoint
  • Users must now provide their CloudStack provider's endpoint explicitly

2. Added Exoscale Detection and Error Handling

File: roles/cloud-cloudstack/tasks/prompts.yml

  • Added check for Exoscale endpoints (exoscale.com/exoscale.ch)
  • Provides clear error message explaining the deprecation
  • Suggests alternative providers with European presence

3. Updated Documentation

Files:

  • docs/cloud-cloudstack.md - Added deprecation notice and removed Exoscale examples
  • docs/cloud-amazon-ec2.md - Removed "Exoscale optimised" label from CloudStack
  • docs/deploy-from-ansible.md - Removed Exoscale-specific examples

4. Removed Exoscale-Specific Defaults

File: roles/cloud-cloudstack/tasks/prompts.yml

  • Removed hardcoded "ch-gva-2" zone default (Exoscale-specific)
  • Now defaults to first zone in the list

Alternative Providers for Affected Users

Users previously using Exoscale can migrate to:

  • Hetzner (provider: hetzner) - German provider with European coverage
  • DigitalOcean (provider: digitalocean) - Amsterdam and Frankfurt regions
  • Vultr (provider: vultr) - Multiple European locations
  • Scaleway (provider: scaleway) - French provider

Test Plan

  • Syntax validation passes
  • YAML linting passes
  • Ansible linting passes
  • All pre-commit hooks pass
  • Generic CloudStack support remains functional
  • Error message triggers when Exoscale endpoints are detected

Impact

  • Breaking change for Exoscale users (already broken due to API deprecation)
  • No impact on other CloudStack providers
  • Improved UX with clear error messages instead of cryptic API failures

🤖 Generated with Claude Code

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>
Copy link
Contributor

claude bot commented Sep 28, 2025
edited
Loading

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:

  1. 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.

  2. Excellent user experience: The error message is informative, explains why Exoscale is no longer supported, and provides concrete alternatives with European presence.

  3. 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
  4. 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:

  1. 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.

  2. 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.

  3. 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

  1. Consider adding a brief Exoscale deprecation note to the main README.md provider list for maximum visibility

  2. Optional enhancement: Add a comment above default_zone: "1" explaining it represents the first zone index

  3. 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
@dguido dguido merged commit f55c092 into master Sep 28, 2025
24 checks passed
@dguido dguido deleted the fix/remove-exoscale-support branch September 28, 2025 17:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@jackivanov jackivanov Awaiting requested review from jackivanov jackivanov is a code owner

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

fails to deploy for CloudStack (Exoscale)

1 participant

AltStyle によって変換されたページ (->オリジナル) /