Repository navigation
fix: route child locations to their metro region endpoint - #706
Merged
Merged
Conversation
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.
Co-authored-by: Alexandru-Claudius Virtopeanu <alexandru-claudius.virtopeanu@ionos.com>
|
avirtopeanu-ionos
approved these changes
Aug 25, 2026
Contributor
There was a problem hiding this comment.
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", |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Regional commands built the endpoint host by replacing slashes with dashes, so
--location de/fra/1resolved to ade-fra-1host 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/1is deliberately not added to the per-product location lists: those drive thelistfan-out, and since it resolves to the same host asde/frait would return every Frankfurt resource twice.Most of the diff is regenerated
docs/subcommands.