Skip to content

fix: route child locations to their metro region endpoint - #706

Merged
mimihalescu merged 2 commits into
masterfrom
feat/de-fra-1-location
Aug 25, 2026
Merged

mimihalescu merged 2 commits into
masterfrom
feat/de-fra-1-location

Conversation

@mimihalescu

Copy link
Copy Markdown
Contributor

Regional commands built the endpoint host by replacing slashes with dashes, so --location de/fra/1 resolved to a de-fra-1 host that does not exist. A facility inside a metro region now uses the metro region's endpoint, which is the host that actually serves it.

The collapse only applies when the metro region is one of the command's allowed locations, so single-token regions that merely look like a path when spelled with slashes, such as Object Storage's eu/central/3, are left alone.

de/fra/1 is deliberately not added to the per-product location lists: those drive the list fan-out, and since it resolves to the same host as de/fra it would return every Frankfurt resource twice.

Most of the diff is regenerated docs/subcommands.

Regional commands built the endpoint host by replacing slashes with
dashes, so --location de/fra/1 resolved to a de-fra-1 host that does not
exist. A facility inside a metro region now uses the metro region's
endpoint, which is the host that actually serves it.

The collapse only applies when the metro region is one of the command's
allowed locations, so single-token regions that merely look like a path
when spelled with slashes, such as Object Storage's eu/central/3, are
left alone.
Comment thread internal/core/config_integration.go Resolved
Comment thread internal/core/config_integration.go Resolved
Co-authored-by: Alexandru-Claudius Virtopeanu <alexandru-claudius.virtopeanu@ionos.com>
@sonarqubecloud

Copy link
Copy Markdown

@mimihalescu
mimihalescu marked this pull request as ready for review August 25, 2026 11:26
Copilot AI lite review requested due to automatic review settings August 25, 2026 11:26
@mimihalescu
mimihalescu merged commit a0c85c7 into master Aug 25, 2026
11 of 14 checks passed
@mimihalescu
mimihalescu deleted the feat/de-fra-1-location branch August 25, 2026 11:27

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR routes slash-form child locations to their metro-region endpoints while preserving Object Storage region handling.

Changes:

  • Adds endpoint normalization and regression tests.
  • Updates shared location help text.
  • Regenerates command documentation and changelog entries.

Reviewed changes

Copilot reviewed 184 out of 184 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
internal/core/config_integration.go Updated as part of this pull request.
internal/core/config_integration_test.go Updated as part of this pull request.
docs/subcommands/VPN Gateway/wireguard/peer/update.md Updated as part of this pull request.
docs/subcommands/VPN Gateway/wireguard/peer/list.md Updated as part of this pull request.
docs/subcommands/VPN Gateway/wireguard/peer/get.md Updated as part of this pull request.
docs/subcommands/VPN Gateway/wireguard/peer/delete.md Updated as part of this pull request.
docs/subcommands/VPN Gateway/wireguard/peer/create.md Updated as part of this pull request.
docs/subcommands/VPN Gateway/wireguard/gateway/update.md Updated as part of this pull request.
docs/subcommands/VPN Gateway/wireguard/gateway/list.md Updated as part of this pull request.
docs/subcommands/VPN Gateway/wireguard/gateway/get.md Updated as part of this pull request.
docs/subcommands/VPN Gateway/wireguard/gateway/delete.md Updated as part of this pull request.
docs/subcommands/VPN Gateway/wireguard/gateway/create.md Updated as part of this pull request.
docs/subcommands/VPN Gateway/ipsec/tunnel/update.md Updated as part of this pull request.
docs/subcommands/VPN Gateway/ipsec/tunnel/list.md Updated as part of this pull request.
docs/subcommands/VPN Gateway/ipsec/tunnel/get.md Updated as part of this pull request.
docs/subcommands/VPN Gateway/ipsec/tunnel/delete.md Updated as part of this pull request.
docs/subcommands/VPN Gateway/ipsec/tunnel/create.md Updated as part of this pull request.
docs/subcommands/VPN Gateway/ipsec/gateway/update.md Updated as part of this pull request.
docs/subcommands/VPN Gateway/ipsec/gateway/list.md Updated as part of this pull request.
docs/subcommands/VPN Gateway/ipsec/gateway/get.md Updated as part of this pull request.
docs/subcommands/VPN Gateway/ipsec/gateway/delete.md Updated as part of this pull request.
docs/subcommands/VPN Gateway/ipsec/gateway/create.md Updated as part of this pull request.
docs/subcommands/Object-Storage/object/tagging/put.md Updated as part of this pull request.
docs/subcommands/Object-Storage/object/tagging/get.md Updated as part of this pull request.
docs/subcommands/Object-Storage/object/tagging/delete.md Updated as part of this pull request.
docs/subcommands/Object-Storage/object/retention/put.md Updated as part of this pull request.
docs/subcommands/Object-Storage/object/retention/get.md Updated as part of this pull request.
docs/subcommands/Object-Storage/object/put.md Updated as part of this pull request.
docs/subcommands/Object-Storage/object/list.md Updated as part of this pull request.
docs/subcommands/Object-Storage/object/legal/hold/put.md Updated as part of this pull request.
docs/subcommands/Object-Storage/object/legal/hold/get.md Updated as part of this pull request.
docs/subcommands/Object-Storage/object/head.md Updated as part of this pull request.
docs/subcommands/Object-Storage/object/get.md Updated as part of this pull request.
docs/subcommands/Object-Storage/object/delete.md Updated as part of this pull request.
docs/subcommands/Object-Storage/object/copy.md Updated as part of this pull request.
docs/subcommands/Object-Storage/bucket/versioning/set.md Updated as part of this pull request.
docs/subcommands/Object-Storage/bucket/versioning/get.md Updated as part of this pull request.
docs/subcommands/Object-Storage/bucket/tagging/put.md Updated as part of this pull request.
docs/subcommands/Object-Storage/bucket/tagging/get.md Updated as part of this pull request.
docs/subcommands/Object-Storage/bucket/tagging/delete.md Updated as part of this pull request.
docs/subcommands/Object-Storage/bucket/public/access/block/put.md Updated as part of this pull request.
docs/subcommands/Object-Storage/bucket/public/access/block/get.md Updated as part of this pull request.
docs/subcommands/Object-Storage/bucket/public/access/block/delete.md Updated as part of this pull request.
docs/subcommands/Object-Storage/bucket/policy/status.md Updated as part of this pull request.
docs/subcommands/Object-Storage/bucket/policy/put.md Updated as part of this pull request.
docs/subcommands/Object-Storage/bucket/policy/get.md Updated as part of this pull request.
docs/subcommands/Object-Storage/bucket/policy/delete.md Updated as part of this pull request.
docs/subcommands/Object-Storage/bucket/object/lock/put.md Updated as part of this pull request.
docs/subcommands/Object-Storage/bucket/object/lock/get.md Updated as part of this pull request.
docs/subcommands/Object-Storage/bucket/list.md Updated as part of this pull request.
docs/subcommands/Object-Storage/bucket/lifecycle/put.md Updated as part of this pull request.
docs/subcommands/Object-Storage/bucket/lifecycle/get.md Updated as part of this pull request.
docs/subcommands/Object-Storage/bucket/lifecycle/delete.md Updated as part of this pull request.
docs/subcommands/Object-Storage/bucket/head.md Updated as part of this pull request.
docs/subcommands/Object-Storage/bucket/get.md Updated as part of this pull request.
docs/subcommands/Object-Storage/bucket/encryption/put.md Updated as part of this pull request.
docs/subcommands/Object-Storage/bucket/encryption/get.md Updated as part of this pull request.
docs/subcommands/Object-Storage/bucket/encryption/delete.md Updated as part of this pull request.
docs/subcommands/Object-Storage/bucket/delete.md Updated as part of this pull request.
docs/subcommands/Object-Storage/bucket/create.md Updated as part of this pull request.
docs/subcommands/Object-Storage/bucket/cors/put.md Updated as part of this pull request.
docs/subcommands/Object-Storage/bucket/cors/get.md Updated as part of this pull request.
docs/subcommands/Object-Storage/bucket/cors/delete.md Updated as part of this pull request.
docs/subcommands/Logging-Service/pipeline/update.md Updated as part of this pull request.
docs/subcommands/Logging-Service/pipeline/list.md Updated as part of this pull request.
docs/subcommands/Logging-Service/pipeline/key.md Updated as part of this pull request.
docs/subcommands/Logging-Service/pipeline/get.md Updated as part of this pull request.
docs/subcommands/Logging-Service/pipeline/delete.md Updated as part of this pull request.
docs/subcommands/Logging-Service/pipeline/create.md Updated as part of this pull request.
docs/subcommands/Logging-Service/logs/update.md Updated as part of this pull request.
docs/subcommands/Logging-Service/logs/remove.md Updated as part of this pull request.
docs/subcommands/Logging-Service/logs/list.md Updated as part of this pull request.
docs/subcommands/Logging-Service/logs/get.md Updated as part of this pull request.
docs/subcommands/Logging-Service/logs/add.md Updated as part of this pull request.
docs/subcommands/Logging-Service/central/get.md Updated as part of this pull request.
docs/subcommands/Logging-Service/central/enable.md Updated as part of this pull request.
docs/subcommands/Logging-Service/central/disable.md Updated as part of this pull request.
docs/subcommands/Kafka/user/list.md Updated as part of this pull request.
docs/subcommands/Kafka/user/get/access.md Updated as part of this pull request.
docs/subcommands/Kafka/topic/list.md Updated as part of this pull request.
docs/subcommands/Kafka/topic/get.md Updated as part of this pull request.
docs/subcommands/Kafka/topic/delete.md Updated as part of this pull request.
docs/subcommands/Kafka/topic/create.md Updated as part of this pull request.
docs/subcommands/Kafka/cluster/list.md Updated as part of this pull request.
docs/subcommands/Kafka/cluster/get.md Updated as part of this pull request.
docs/subcommands/Kafka/cluster/delete.md Updated as part of this pull request.
docs/subcommands/Kafka/cluster/create.md Updated as part of this pull request.
docs/subcommands/DNS/zone/update.md Updated as part of this pull request.
docs/subcommands/DNS/zone/list.md Updated as part of this pull request.
docs/subcommands/DNS/zone/get.md Updated as part of this pull request.
docs/subcommands/DNS/zone/file/update.md Updated as part of this pull request.
docs/subcommands/DNS/zone/file/get.md Updated as part of this pull request.
docs/subcommands/DNS/zone/delete.md Updated as part of this pull request.
docs/subcommands/DNS/zone/create.md Updated as part of this pull request.
docs/subcommands/DNS/secondary/zone/update.md Updated as part of this pull request.
docs/subcommands/DNS/secondary/zone/transfer/start.md Updated as part of this pull request.
docs/subcommands/DNS/secondary/zone/transfer/get.md Updated as part of this pull request.
docs/subcommands/DNS/secondary/zone/list.md Updated as part of this pull request.
docs/subcommands/DNS/secondary/zone/get.md Updated as part of this pull request.
docs/subcommands/DNS/secondary/zone/delete.md Updated as part of this pull request.
docs/subcommands/DNS/secondary/zone/create.md Updated as part of this pull request.
docs/subcommands/DNS/reverse/record/update.md Updated as part of this pull request.
docs/subcommands/DNS/reverse/record/list.md Updated as part of this pull request.
docs/subcommands/DNS/reverse/record/get.md Updated as part of this pull request.
docs/subcommands/DNS/reverse/record/delete.md Updated as part of this pull request.
docs/subcommands/DNS/reverse/record/create.md Updated as part of this pull request.
docs/subcommands/DNS/record/update.md Updated as part of this pull request.
docs/subcommands/DNS/record/list.md Updated as part of this pull request.
docs/subcommands/DNS/record/get.md Updated as part of this pull request.
docs/subcommands/DNS/record/delete.md Updated as part of this pull request.
docs/subcommands/DNS/record/create.md Updated as part of this pull request.
docs/subcommands/DNS/quota/get.md Updated as part of this pull request.
docs/subcommands/DNS/dnssec/list.md Updated as part of this pull request.
docs/subcommands/DNS/dnssec/delete.md Updated as part of this pull request.
docs/subcommands/DNS/dnssec/create.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/postgres/v2/version/list.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/postgres/v2/version/get.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/postgres/v2/cluster/update.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/postgres/v2/cluster/restore.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/postgres/v2/cluster/list.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/postgres/v2/cluster/get.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/postgres/v2/cluster/delete.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/postgres/v2/cluster/create.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/postgres/v2/backup/location/list.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/postgres/v2/backup/location/get.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/postgres/v2/backup/list.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/postgres/v2/backup/get.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/mariadb/cluster/update.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/mariadb/cluster/list.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/mariadb/cluster/get.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/mariadb/cluster/delete.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/mariadb/cluster/create.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/mariadb/backup/list.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/mariadb/backup/get.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/In-Memory-DB/v2/version/list.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/In-Memory-DB/v2/version/get.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/In-Memory-DB/v2/snapshot/location/list.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/In-Memory-DB/v2/snapshot/location/get.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/In-Memory-DB/v2/snapshot/list.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/In-Memory-DB/v2/snapshot/get.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/In-Memory-DB/v2/cluster/update.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/In-Memory-DB/v2/cluster/restore.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/In-Memory-DB/v2/cluster/list.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/In-Memory-DB/v2/cluster/get.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/In-Memory-DB/v2/cluster/delete.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/In-Memory-DB/v2/cluster/create.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/In-Memory-DB/snapshot/restore/list.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/In-Memory-DB/snapshot/restore/create.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/In-Memory-DB/snapshot/list.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/In-Memory-DB/replicaset/list.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/In-Memory-DB/replicaset/get.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/In-Memory-DB/replicaset/delete.md Updated as part of this pull request.
docs/subcommands/Database-as-a-Service/In-Memory-DB/replicaset/create.md Updated as part of this pull request.
docs/subcommands/Compute Engine/monitoring/pipeline/update.md Updated as part of this pull request.
docs/subcommands/Compute Engine/monitoring/pipeline/list.md Updated as part of this pull request.
docs/subcommands/Compute Engine/monitoring/pipeline/get.md Updated as part of this pull request.
docs/subcommands/Compute Engine/monitoring/pipeline/delete.md Updated as part of this pull request.
docs/subcommands/Compute Engine/monitoring/pipeline/create.md Updated as part of this pull request.
docs/subcommands/Compute Engine/monitoring/key/create.md Updated as part of this pull request.
docs/subcommands/Compute Engine/monitoring/central/get.md Updated as part of this pull request.
docs/subcommands/Compute Engine/monitoring/central/enable.md Updated as part of this pull request.
docs/subcommands/Compute Engine/monitoring/central/disable.md Updated as part of this pull request.
docs/subcommands/Certificate-Manager/provider/update.md Updated as part of this pull request.
docs/subcommands/Certificate-Manager/provider/list.md Updated as part of this pull request.
docs/subcommands/Certificate-Manager/provider/get.md Updated as part of this pull request.
docs/subcommands/Certificate-Manager/provider/delete.md Updated as part of this pull request.
docs/subcommands/Certificate-Manager/provider/create.md Updated as part of this pull request.
docs/subcommands/Certificate-Manager/certificate/update.md Updated as part of this pull request.
docs/subcommands/Certificate-Manager/certificate/list.md Updated as part of this pull request.
docs/subcommands/Certificate-Manager/certificate/get.md Updated as part of this pull request.
docs/subcommands/Certificate-Manager/certificate/delete.md Updated as part of this pull request.
docs/subcommands/Certificate-Manager/certificate/create.md Updated as part of this pull request.
docs/subcommands/Certificate-Manager/autocertificate/update.md Updated as part of this pull request.
docs/subcommands/Certificate-Manager/autocertificate/list.md Updated as part of this pull request.
docs/subcommands/Certificate-Manager/autocertificate/get.md Updated as part of this pull request.
docs/subcommands/Certificate-Manager/autocertificate/delete.md Updated as part of this pull request.
docs/subcommands/Certificate-Manager/autocertificate/create.md Updated as part of this pull request.
docs/subcommands/CDN/distribution/update.md Updated as part of this pull request.
docs/subcommands/CDN/distribution/routingrules/get.md Updated as part of this pull request.
docs/subcommands/CDN/distribution/list.md Updated as part of this pull request.
docs/subcommands/CDN/distribution/get.md Updated as part of this pull request.
docs/subcommands/CDN/distribution/delete.md Updated as part of this pull request.
docs/subcommands/CDN/distribution/create.md Updated as part of this pull request.
CHANGELOG.md Updated as part of this pull request.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +214 to +216
// Child locations (de/fra/1) share their metro region's endpoint, so resolve
// to the metro region before looking up overrides and building the URL.
location = endpointLocation(cmd, location)
Comment on lines +84 to +85
". A facility inside one of these metro regions (e.g. de/fra/1) is also accepted "+
"and served by its metro region's endpoint",
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants