Remove Exoscale support due to CloudStack API deprecation (#14841)

* Remove Exoscale support due to CloudStack API deprecation (fixes #14839)

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>

* Remove remaining Exoscale references from input.yml, README, and prompts

- 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

* Fix typo: 'API ssecret' -> 'API secret' in CloudStack prompt

---------

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
Dan Guido
2025-09-28 13:57:56 -04:00
committed by GitHub
co-authored by Claude
parent 1cd4203c34
commit f55c09243d
6 changed files with 34 additions and 16 deletions
+20 -8
View File
@@ -12,7 +12,7 @@
- pause:
prompt: |
Enter the API ssecret (https://trailofbits.github.io/algo/cloud-cloudstack.html):
Enter the API secret (https://trailofbits.github.io/algo/cloud-cloudstack.html):
echo: false
register: _cs_secret
when:
@@ -23,7 +23,6 @@
- pause:
prompt: |
Enter the API endpoint (https://trailofbits.github.io/algo/cloud-cloudstack.html)
[https://api.exoscale.com/compute]
register: _cs_url
when:
- cs_url is undefined
@@ -34,10 +33,26 @@
algo_cs_token: "{{ cs_secret | default(_cs_secret.user_input | default(None)) | default(lookup('env', 'CLOUDSTACK_SECRET'), true) }}"
algo_cs_url: >-
{{ cs_url | default(_cs_url.user_input|default(None)) |
default(lookup('env', 'CLOUDSTACK_ENDPOINT'), true) |
default('https://api.exoscale.com/compute', true) }}
default(lookup('env', 'CLOUDSTACK_ENDPOINT'), true) }}
no_log: true
- name: Check for Exoscale API endpoint
fail:
msg: |
ERROR: Exoscale CloudStack API has been deprecated as of May 1, 2024.
Exoscale has migrated from CloudStack to their proprietary API v2, which is not compatible
with CloudStack-based tools. Algo no longer supports Exoscale deployments.
Please consider these alternative providers:
- Hetzner (provider: hetzner) - German provider with European coverage
- DigitalOcean (provider: digitalocean) - Has Amsterdam and Frankfurt regions
- Vultr (provider: vultr) - Multiple European locations
- Scaleway (provider: scaleway) - French provider
If you're using a different CloudStack provider, please provide the correct API endpoint.
when: "'exoscale.com' in algo_cs_url or 'exoscale.ch' in algo_cs_url"
- name: Get zones on cloud
cs_zone_info:
register: _cs_zones
@@ -53,10 +68,7 @@
- name: Set the default zone
set_fact:
default_zone: >-
{%- for z in cs_zones -%}
{%- if z['name'] == "ch-gva-2" %}{{ loop.index }}{% endif -%}
{%- endfor %}
default_zone: "1" # Default to first zone in the list
- pause:
prompt: |