From 6adfc83e0bdefae3b6abb588da61e4d7617a7fbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20T=C3=B6lle?= Date: Thu, 7 Aug 2025 15:31:08 +0200 Subject: [PATCH 01/10] chore: empty commit to open the PR From c1f392cfa4617a969af2d7d3827c0e06d9d07fa2 Mon Sep 17 00:00:00 2001 From: phm07 <22707808+phm07@users.noreply.github.com> Date: Thu, 9 Oct 2025 15:07:11 +0200 Subject: [PATCH 02/10] deps: replace hcloud-go with storage-boxes branch --- go.mod | 2 ++ go.sum | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 11881690..ce251b11 100644 --- a/go.mod +++ b/go.mod @@ -65,3 +65,5 @@ require ( google.golang.org/protobuf v1.36.8 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) + +replace github.com/hetznercloud/hcloud-go/v2 => github.com/hetznercloud/hcloud-go/v2 v2.27.1-0.20251009065434-20e0a5fb69a3 diff --git a/go.sum b/go.sum index 8fada562..089abcbc 100644 --- a/go.sum +++ b/go.sum @@ -37,8 +37,8 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/guptarohit/asciigraph v0.7.3 h1:p05XDDn7cBTWiBqWb30mrwxd6oU0claAjqeytllnsPY= github.com/guptarohit/asciigraph v0.7.3/go.mod h1:dYl5wwK4gNsnFf9Zp+l06rFiDZ5YtXM6x7SRWZ3KGag= -github.com/hetznercloud/hcloud-go/v2 v2.27.0 h1:SOGpAP3kQ6+aevB4Hxr63ukNsdYJjHhuWNB1C3NsiJo= -github.com/hetznercloud/hcloud-go/v2 v2.27.0/go.mod h1:OVlbjfoEuvNPI8ji3Sm/jPkjOxO7MKEiPyfctZ0R8jw= +github.com/hetznercloud/hcloud-go/v2 v2.27.1-0.20251009065434-20e0a5fb69a3 h1:X+NjlsE/oHJTDINi0iGpqdNMR8KHRWp9Tp7hbh8/Etg= +github.com/hetznercloud/hcloud-go/v2 v2.27.1-0.20251009065434-20e0a5fb69a3/go.mod h1:weuyv9L3A9iFYAxQW0YkPZHAqjBbYoQYTEXAONYyqYo= github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJn+Ichc= github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= From a3ed5c17d5acf4b47bb5460bd79a3f58d6b731df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20T=C3=B6lle?= Date: Fri, 8 Aug 2025 09:28:16 +0200 Subject: [PATCH 03/10] feat: add support for Hetzner API (#1119) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds support for the Hetzner API (`https://api.hetzner.com`) with a new option to configure the API endpoint: - Config Key: `hetzner-endpoint` - Flag: `--hetzner-endpoint` - Environment Variable: `HETZNER_ENDPOINT` Co-authored-by: Julian Tölle --- docs/reference/manual/hcloud.md | 1 + docs/reference/manual/hcloud_all.md | 1 + docs/reference/manual/hcloud_all_list.md | 1 + docs/reference/manual/hcloud_certificate.md | 1 + docs/reference/manual/hcloud_certificate_add-label.md | 1 + docs/reference/manual/hcloud_certificate_create.md | 1 + docs/reference/manual/hcloud_certificate_delete.md | 1 + docs/reference/manual/hcloud_certificate_describe.md | 1 + docs/reference/manual/hcloud_certificate_list.md | 1 + docs/reference/manual/hcloud_certificate_remove-label.md | 1 + docs/reference/manual/hcloud_certificate_retry.md | 1 + docs/reference/manual/hcloud_certificate_update.md | 1 + docs/reference/manual/hcloud_completion.md | 1 + docs/reference/manual/hcloud_config.md | 3 +++ docs/reference/manual/hcloud_config_add.md | 1 + docs/reference/manual/hcloud_config_get.md | 1 + docs/reference/manual/hcloud_config_list.md | 1 + docs/reference/manual/hcloud_config_remove.md | 1 + docs/reference/manual/hcloud_config_set.md | 1 + docs/reference/manual/hcloud_config_unset.md | 1 + docs/reference/manual/hcloud_context.md | 1 + docs/reference/manual/hcloud_context_active.md | 1 + docs/reference/manual/hcloud_context_create.md | 1 + docs/reference/manual/hcloud_context_delete.md | 1 + docs/reference/manual/hcloud_context_list.md | 1 + docs/reference/manual/hcloud_context_rename.md | 1 + docs/reference/manual/hcloud_context_unset.md | 1 + docs/reference/manual/hcloud_context_use.md | 1 + docs/reference/manual/hcloud_datacenter.md | 1 + docs/reference/manual/hcloud_datacenter_describe.md | 1 + docs/reference/manual/hcloud_datacenter_list.md | 1 + docs/reference/manual/hcloud_firewall.md | 1 + docs/reference/manual/hcloud_firewall_add-label.md | 1 + docs/reference/manual/hcloud_firewall_add-rule.md | 1 + .../manual/hcloud_firewall_apply-to-resource.md | 1 + docs/reference/manual/hcloud_firewall_create.md | 1 + docs/reference/manual/hcloud_firewall_delete-rule.md | 1 + docs/reference/manual/hcloud_firewall_delete.md | 1 + docs/reference/manual/hcloud_firewall_describe.md | 1 + docs/reference/manual/hcloud_firewall_list.md | 1 + .../manual/hcloud_firewall_remove-from-resource.md | 1 + docs/reference/manual/hcloud_firewall_remove-label.md | 1 + docs/reference/manual/hcloud_firewall_replace-rules.md | 1 + docs/reference/manual/hcloud_firewall_update.md | 1 + docs/reference/manual/hcloud_floating-ip.md | 1 + docs/reference/manual/hcloud_floating-ip_add-label.md | 1 + docs/reference/manual/hcloud_floating-ip_assign.md | 1 + docs/reference/manual/hcloud_floating-ip_create.md | 1 + docs/reference/manual/hcloud_floating-ip_delete.md | 1 + docs/reference/manual/hcloud_floating-ip_describe.md | 1 + .../manual/hcloud_floating-ip_disable-protection.md | 1 + .../manual/hcloud_floating-ip_enable-protection.md | 1 + docs/reference/manual/hcloud_floating-ip_list.md | 1 + docs/reference/manual/hcloud_floating-ip_remove-label.md | 1 + docs/reference/manual/hcloud_floating-ip_set-rdns.md | 1 + docs/reference/manual/hcloud_floating-ip_unassign.md | 1 + docs/reference/manual/hcloud_floating-ip_update.md | 1 + docs/reference/manual/hcloud_image.md | 1 + docs/reference/manual/hcloud_image_add-label.md | 1 + docs/reference/manual/hcloud_image_delete.md | 1 + docs/reference/manual/hcloud_image_describe.md | 1 + docs/reference/manual/hcloud_image_disable-protection.md | 1 + docs/reference/manual/hcloud_image_enable-protection.md | 1 + docs/reference/manual/hcloud_image_list.md | 1 + docs/reference/manual/hcloud_image_remove-label.md | 1 + docs/reference/manual/hcloud_image_update.md | 1 + docs/reference/manual/hcloud_iso.md | 1 + docs/reference/manual/hcloud_iso_describe.md | 1 + docs/reference/manual/hcloud_iso_list.md | 1 + docs/reference/manual/hcloud_load-balancer-type.md | 1 + .../manual/hcloud_load-balancer-type_describe.md | 1 + docs/reference/manual/hcloud_load-balancer-type_list.md | 1 + docs/reference/manual/hcloud_load-balancer.md | 1 + docs/reference/manual/hcloud_load-balancer_add-label.md | 1 + .../reference/manual/hcloud_load-balancer_add-service.md | 1 + docs/reference/manual/hcloud_load-balancer_add-target.md | 1 + .../manual/hcloud_load-balancer_attach-to-network.md | 1 + .../manual/hcloud_load-balancer_change-algorithm.md | 1 + .../reference/manual/hcloud_load-balancer_change-type.md | 1 + docs/reference/manual/hcloud_load-balancer_create.md | 1 + .../manual/hcloud_load-balancer_delete-service.md | 1 + docs/reference/manual/hcloud_load-balancer_delete.md | 1 + docs/reference/manual/hcloud_load-balancer_describe.md | 1 + .../manual/hcloud_load-balancer_detach-from-network.md | 1 + .../manual/hcloud_load-balancer_disable-protection.md | 1 + .../hcloud_load-balancer_disable-public-interface.md | 1 + .../manual/hcloud_load-balancer_enable-protection.md | 1 + .../hcloud_load-balancer_enable-public-interface.md | 1 + docs/reference/manual/hcloud_load-balancer_list.md | 1 + docs/reference/manual/hcloud_load-balancer_metrics.md | 1 + .../manual/hcloud_load-balancer_remove-label.md | 1 + .../manual/hcloud_load-balancer_remove-target.md | 1 + docs/reference/manual/hcloud_load-balancer_set-rdns.md | 1 + .../manual/hcloud_load-balancer_update-service.md | 1 + docs/reference/manual/hcloud_load-balancer_update.md | 1 + docs/reference/manual/hcloud_location.md | 1 + docs/reference/manual/hcloud_location_describe.md | 1 + docs/reference/manual/hcloud_location_list.md | 1 + docs/reference/manual/hcloud_network.md | 1 + docs/reference/manual/hcloud_network_add-label.md | 1 + docs/reference/manual/hcloud_network_add-route.md | 1 + docs/reference/manual/hcloud_network_add-subnet.md | 1 + docs/reference/manual/hcloud_network_change-ip-range.md | 1 + docs/reference/manual/hcloud_network_create.md | 1 + docs/reference/manual/hcloud_network_delete.md | 1 + docs/reference/manual/hcloud_network_describe.md | 1 + .../manual/hcloud_network_disable-protection.md | 1 + .../reference/manual/hcloud_network_enable-protection.md | 1 + .../manual/hcloud_network_expose-routes-to-vswitch.md | 1 + docs/reference/manual/hcloud_network_list.md | 1 + docs/reference/manual/hcloud_network_remove-label.md | 1 + docs/reference/manual/hcloud_network_remove-route.md | 1 + docs/reference/manual/hcloud_network_remove-subnet.md | 1 + docs/reference/manual/hcloud_network_update.md | 1 + docs/reference/manual/hcloud_placement-group.md | 1 + .../reference/manual/hcloud_placement-group_add-label.md | 1 + docs/reference/manual/hcloud_placement-group_create.md | 1 + docs/reference/manual/hcloud_placement-group_delete.md | 1 + docs/reference/manual/hcloud_placement-group_describe.md | 1 + docs/reference/manual/hcloud_placement-group_list.md | 1 + .../manual/hcloud_placement-group_remove-label.md | 1 + docs/reference/manual/hcloud_placement-group_update.md | 1 + docs/reference/manual/hcloud_primary-ip.md | 1 + docs/reference/manual/hcloud_primary-ip_add-label.md | 1 + docs/reference/manual/hcloud_primary-ip_assign.md | 1 + docs/reference/manual/hcloud_primary-ip_create.md | 1 + docs/reference/manual/hcloud_primary-ip_delete.md | 1 + docs/reference/manual/hcloud_primary-ip_describe.md | 1 + .../manual/hcloud_primary-ip_disable-protection.md | 1 + .../manual/hcloud_primary-ip_enable-protection.md | 1 + docs/reference/manual/hcloud_primary-ip_list.md | 1 + docs/reference/manual/hcloud_primary-ip_remove-label.md | 1 + docs/reference/manual/hcloud_primary-ip_set-rdns.md | 1 + docs/reference/manual/hcloud_primary-ip_unassign.md | 1 + docs/reference/manual/hcloud_primary-ip_update.md | 1 + docs/reference/manual/hcloud_server-type.md | 1 + docs/reference/manual/hcloud_server-type_describe.md | 1 + docs/reference/manual/hcloud_server-type_list.md | 1 + docs/reference/manual/hcloud_server.md | 1 + docs/reference/manual/hcloud_server_add-label.md | 1 + .../manual/hcloud_server_add-to-placement-group.md | 1 + docs/reference/manual/hcloud_server_attach-iso.md | 1 + docs/reference/manual/hcloud_server_attach-to-network.md | 1 + docs/reference/manual/hcloud_server_change-alias-ips.md | 1 + docs/reference/manual/hcloud_server_change-type.md | 1 + docs/reference/manual/hcloud_server_create-image.md | 1 + docs/reference/manual/hcloud_server_create.md | 1 + docs/reference/manual/hcloud_server_delete.md | 1 + docs/reference/manual/hcloud_server_describe.md | 1 + .../manual/hcloud_server_detach-from-network.md | 1 + docs/reference/manual/hcloud_server_detach-iso.md | 1 + docs/reference/manual/hcloud_server_disable-backup.md | 1 + .../reference/manual/hcloud_server_disable-protection.md | 1 + docs/reference/manual/hcloud_server_disable-rescue.md | 1 + docs/reference/manual/hcloud_server_enable-backup.md | 1 + docs/reference/manual/hcloud_server_enable-protection.md | 1 + docs/reference/manual/hcloud_server_enable-rescue.md | 1 + docs/reference/manual/hcloud_server_ip.md | 1 + docs/reference/manual/hcloud_server_list.md | 1 + docs/reference/manual/hcloud_server_metrics.md | 1 + docs/reference/manual/hcloud_server_poweroff.md | 1 + docs/reference/manual/hcloud_server_poweron.md | 1 + docs/reference/manual/hcloud_server_reboot.md | 1 + docs/reference/manual/hcloud_server_rebuild.md | 1 + .../manual/hcloud_server_remove-from-placement-group.md | 1 + docs/reference/manual/hcloud_server_remove-label.md | 1 + docs/reference/manual/hcloud_server_request-console.md | 1 + docs/reference/manual/hcloud_server_reset-password.md | 1 + docs/reference/manual/hcloud_server_reset.md | 1 + docs/reference/manual/hcloud_server_set-rdns.md | 1 + docs/reference/manual/hcloud_server_shutdown.md | 1 + docs/reference/manual/hcloud_server_ssh.md | 1 + docs/reference/manual/hcloud_server_update.md | 1 + docs/reference/manual/hcloud_ssh-key.md | 1 + docs/reference/manual/hcloud_ssh-key_add-label.md | 1 + docs/reference/manual/hcloud_ssh-key_create.md | 1 + docs/reference/manual/hcloud_ssh-key_delete.md | 1 + docs/reference/manual/hcloud_ssh-key_describe.md | 1 + docs/reference/manual/hcloud_ssh-key_list.md | 1 + docs/reference/manual/hcloud_ssh-key_remove-label.md | 1 + docs/reference/manual/hcloud_ssh-key_update.md | 1 + docs/reference/manual/hcloud_version.md | 1 + docs/reference/manual/hcloud_volume.md | 1 + docs/reference/manual/hcloud_volume_add-label.md | 1 + docs/reference/manual/hcloud_volume_attach.md | 1 + docs/reference/manual/hcloud_volume_create.md | 1 + docs/reference/manual/hcloud_volume_delete.md | 1 + docs/reference/manual/hcloud_volume_describe.md | 1 + docs/reference/manual/hcloud_volume_detach.md | 1 + .../reference/manual/hcloud_volume_disable-protection.md | 1 + docs/reference/manual/hcloud_volume_enable-protection.md | 1 + docs/reference/manual/hcloud_volume_list.md | 1 + docs/reference/manual/hcloud_volume_remove-label.md | 1 + docs/reference/manual/hcloud_volume_resize.md | 1 + docs/reference/manual/hcloud_volume_update.md | 1 + internal/cmd/config/helptext/preferences.txt | 2 ++ internal/state/config/config.go | 4 +--- internal/state/config/options.go | 9 +++++++++ internal/state/state.go | 6 ++++++ 199 files changed, 215 insertions(+), 3 deletions(-) diff --git a/docs/reference/manual/hcloud.md b/docs/reference/manual/hcloud.md index 52bd91b4..de737db5 100644 --- a/docs/reference/manual/hcloud.md +++ b/docs/reference/manual/hcloud.md @@ -15,6 +15,7 @@ A command-line interface for Hetzner Cloud --debug-file string File to write debug output to --endpoint string Hetzner Cloud API endpoint (default "https://api.hetzner.cloud/v1") -h, --help help for hcloud + --hetzner-endpoint string Hetzner API endpoint (default "https://api.hetzner.com/v1") --no-experimental-warnings If true, experimental warnings are not shown --poll-interval duration Interval at which to poll information, for example action progress (default 500ms) --quiet If true, only print error messages diff --git a/docs/reference/manual/hcloud_all.md b/docs/reference/manual/hcloud_all.md index 91eeb0fe..787c1a31 100644 --- a/docs/reference/manual/hcloud_all.md +++ b/docs/reference/manual/hcloud_all.md @@ -16,6 +16,7 @@ Commands that apply to all resources --debug Enable debug output --debug-file string File to write debug output to --endpoint string Hetzner Cloud API endpoint (default "https://api.hetzner.cloud/v1") + --hetzner-endpoint string Hetzner API endpoint (default "https://api.hetzner.com/v1") --no-experimental-warnings If true, experimental warnings are not shown --poll-interval duration Interval at which to poll information, for example action progress (default 500ms) --quiet If true, only print error messages diff --git a/docs/reference/manual/hcloud_all_list.md b/docs/reference/manual/hcloud_all_list.md index 22e214bb..167ec93d 100644 --- a/docs/reference/manual/hcloud_all_list.md +++ b/docs/reference/manual/hcloud_all_list.md @@ -42,6 +42,7 @@ hcloud all list [options] --debug Enable debug output --debug-file string File to write debug output to --endpoint string Hetzner Cloud API endpoint (default "https://api.hetzner.cloud/v1") + --hetzner-endpoint string Hetzner API endpoint (default "https://api.hetzner.com/v1") --no-experimental-warnings If true, experimental warnings are not shown --poll-interval duration Interval at which to poll information, for example action progress (default 500ms) --quiet If true, only print error messages diff --git a/docs/reference/manual/hcloud_certificate.md b/docs/reference/manual/hcloud_certificate.md index f1ea7a88..15c6cda5 100644 --- a/docs/reference/manual/hcloud_certificate.md +++ b/docs/reference/manual/hcloud_certificate.md @@ -16,6 +16,7 @@ Manage Certificates --debug Enable debug output --debug-file string File to write debug output to --endpoint string Hetzner Cloud API endpoint (default "https://api.hetzner.cloud/v1") + --hetzner-endpoint string Hetzner API endpoint (default "https://api.hetzner.com/v1") --no-experimental-warnings If true, experimental warnings are not shown --poll-interval duration Interval at which to poll information, for example action progress (default 500ms) --quiet If true, only print error messages diff --git a/docs/reference/manual/hcloud_certificate_add-label.md b/docs/reference/manual/hcloud_certificate_add-label.md index 08399256..84038045 100644 --- a/docs/reference/manual/hcloud_certificate_add-label.md +++ b/docs/reference/manual/hcloud_certificate_add-label.md @@ -21,6 +21,7 @@ hcloud certificate add-label [--overwrite]