From 87169e9337b58325858ca40f39429f6861573031 Mon Sep 17 00:00:00 2001 From: lukasmetzner Date: Tue, 21 Jul 2026 15:57:01 +0200 Subject: [PATCH 1/3] feat: remove datacenter property from server and primary_ip Remove the `datacenter` property from Server and Primary IP resource where possible. The property was deprecated ~6 months ago, and because the property is removed from the API, removing it from our code is not considered a breaking change. Changelog entry: https://docs.hetzner.cloud/changelog#2026-07-01-removing-datacenters --- .../manual/hcloud_primary-ip_create.md | 6 +-- docs/reference/manual/hcloud_server_create.md | 8 ---- docs/reference/manual/hcloud_server_list.md | 1 - go.mod | 12 ++--- go.sum | 12 +++++ internal/cmd/all/list_test.go | 16 +++---- internal/cmd/primaryip/create.go | 28 ++--------- internal/cmd/primaryip/create_test.go | 22 ++++----- internal/cmd/primaryip/describe.go | 9 +--- .../primaryip/testdata/create_response.json | 15 ------ internal/cmd/server/create.go | 46 ------------------- internal/cmd/server/create_test.go | 8 ---- internal/cmd/server/describe.go | 7 --- internal/cmd/server/list.go | 9 +--- .../cmd/server/testdata/create_response.json | 15 ------ 15 files changed, 41 insertions(+), 173 deletions(-) diff --git a/docs/reference/manual/hcloud_primary-ip_create.md b/docs/reference/manual/hcloud_primary-ip_create.md index b28a7fba4..bd4b06293 100644 --- a/docs/reference/manual/hcloud_primary-ip_create.md +++ b/docs/reference/manual/hcloud_primary-ip_create.md @@ -6,10 +6,7 @@ Create a Primary IP Create a Primary IP. -The --datacenter flag is deprecated. Use --location or --assignee-id instead. -See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters. - -The --assignee-type flag will be required together with the --assignee-id flag. Using +The --assignee-type flag will be required together with the --assignee-id flag. Using the default value (server) for the --assignee-type flag is deprecated. Consider explicitly setting the --assignee-type flag. @@ -27,7 +24,6 @@ hcloud primary-ip create [options] --type --name --assignee-id int Assignee (usually a Server) to assign Primary IP to --assignee-type string Assignee Type to assign Primary IP to (default: server) (default "server") --auto-delete Delete Primary IP if assigned resource is deleted (true, false) - --datacenter string Datacenter (name) (deprecated) --enable-protection strings Enable protection (delete) (default: none) -h, --help help for create --label stringToString User-defined labels ('key=value') (can be specified multiple times) (default []) diff --git a/docs/reference/manual/hcloud_server_create.md b/docs/reference/manual/hcloud_server_create.md index a3ac55bb0..ca8103d16 100644 --- a/docs/reference/manual/hcloud_server_create.md +++ b/docs/reference/manual/hcloud_server_create.md @@ -2,13 +2,6 @@ Create a Server -### Synopsis - -Create a Server. - -The --datacenter flag is deprecated. Use --location instead. -See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters. - ``` hcloud server create [options] --name --type --image ``` @@ -18,7 +11,6 @@ hcloud server create [options] --name --type --image location hel1 - parts := strings.Split(datacenter, "-") - - if len(parts) != 2 { - return nil, nil, fmt.Errorf("Datacenter name is not valid, expected format $LOCATION-$DATACENTER, but got: %s", datacenter) - } - - locationName := parts[0] - createOpts.Location = locationName - } result, _, err := s.Client().PrimaryIP().Create(s, createOpts) if err != nil { diff --git a/internal/cmd/primaryip/create_test.go b/internal/cmd/primaryip/create_test.go index 99b93141f..a6f10eb09 100644 --- a/internal/cmd/primaryip/create_test.go +++ b/internal/cmd/primaryip/create_test.go @@ -53,22 +53,23 @@ func TestCreate(t *testing.T) { nil, ) + fx.Client.LocationClient.EXPECT(). + Get(gomock.Any(), "fsn1"). + Return(&hcloud.Location{Name: "fsn1"}, &hcloud.Response{}, nil) fx.ActionWaiter.EXPECT(). WaitForActions(gomock.Any(), gomock.Any(), &hcloud.Action{ID: 321}) fx.Client.PrimaryIPClient.EXPECT(). GetByID(gomock.Any(), primaryIP.ID). Return(primaryIP, &hcloud.Response{}, nil) - out, errOut, err := fx.Run(cmd, []string{"--name=my-ip", "--type=ipv4", "--datacenter=fsn1-dc14", "--auto-delete", "--label", "foo=bar"}) - - expErr := "Warning: The --datacenter flag is deprecated. Use --location or --assignee-id instead.\n" + out, errOut, err := fx.Run(cmd, []string{"--name=my-ip", "--type=ipv4", "--location=fsn1", "--auto-delete", "--label", "foo=bar"}) expOut := `Primary IP 1 created IPv4: 192.168.2.1 ` require.NoError(t, err) - assert.Equal(t, expErr, errOut) + assert.Empty(t, errOut) assert.Equal(t, expOut, out) } @@ -89,11 +90,6 @@ func TestCreateJSON(t *testing.T) { Location: &hcloud.Location{ Name: "fsn1", }, - Datacenter: &hcloud.Datacenter{ - ID: 1, - Name: "fsn1-dc14", - Location: &hcloud.Location{ID: 1, Name: "fsn1"}, - }, Created: time.Date(2016, 1, 30, 23, 50, 0, 0, time.UTC), Labels: map[string]string{"foo": "bar"}, AutoDelete: true, @@ -119,16 +115,18 @@ func TestCreateJSON(t *testing.T) { Action: &hcloud.Action{ID: 321}, }, nil, nil) + fx.Client.LocationClient.EXPECT(). + Get(gomock.Any(), "fsn1"). + Return(&hcloud.Location{Name: "fsn1"}, nil, nil) fx.ActionWaiter.EXPECT(). WaitForActions(gomock.Any(), gomock.Any(), &hcloud.Action{ID: 321}) fx.Client.PrimaryIPClient.EXPECT(). GetByID(gomock.Any(), primaryIP.ID). Return(primaryIP, nil, nil) - jsonOut, out, err := fx.Run(cmd, []string{"-o=json", "--name=my-ip", "--type=ipv4", "--datacenter=fsn1-dc14", "--auto-delete", "--label", "foo=bar"}) + jsonOut, out, err := fx.Run(cmd, []string{"-o=json", "--name=my-ip", "--type=ipv4", "--location=fsn1", "--auto-delete", "--label", "foo=bar"}) - expOut := `Warning: The --datacenter flag is deprecated. Use --location or --assignee-id instead. -Primary IP 1 created + expOut := `Primary IP 1 created ` require.NoError(t, err) diff --git a/internal/cmd/primaryip/describe.go b/internal/cmd/primaryip/describe.go index fbe96a625..9207a31b5 100644 --- a/internal/cmd/primaryip/describe.go +++ b/internal/cmd/primaryip/describe.go @@ -8,7 +8,6 @@ import ( "github.com/spf13/cobra" "github.com/hetznercloud/cli/internal/cmd/base" - "github.com/hetznercloud/cli/internal/cmd/datacenter" "github.com/hetznercloud/cli/internal/cmd/location" "github.com/hetznercloud/cli/internal/cmd/util" "github.com/hetznercloud/cli/internal/hcapi2" @@ -27,7 +26,7 @@ var DescribeCmd = base.DescribeCmd[*hcloud.PrimaryIP]{ } return ip, hcloud.SchemaFromPrimaryIP(ip), nil }, - PrintText: func(s state.State, _ *cobra.Command, out io.Writer, primaryIP *hcloud.PrimaryIP) error { + PrintText: func(_ state.State, _ *cobra.Command, out io.Writer, primaryIP *hcloud.PrimaryIP) error { fmt.Fprintf(out, "ID:\t%d\n", primaryIP.ID) fmt.Fprintf(out, "Name:\t%s\n", primaryIP.Name) fmt.Fprintf(out, "Created:\t%s (%s)\n", util.Datetime(primaryIP.Created), humanize.Time(primaryIP.Created)) @@ -72,12 +71,6 @@ var DescribeCmd = base.DescribeCmd[*hcloud.PrimaryIP]{ fmt.Fprintf(out, "Location:\n") fmt.Fprintf(out, "%s", util.PrefixLines(location.DescribeLocation(primaryIP.Location), " ")) - if primaryIP.Datacenter != nil { - fmt.Fprintln(out) - fmt.Fprintf(out, "Datacenter:\n") - fmt.Fprintf(out, "%s", util.PrefixLines(datacenter.DescribeDatacenter(s.Client(), primaryIP.Datacenter, true), " ")) - } - return nil }, } diff --git a/internal/cmd/primaryip/testdata/create_response.json b/internal/cmd/primaryip/testdata/create_response.json index 383bf1e23..fd2b4a8f0 100644 --- a/internal/cmd/primaryip/testdata/create_response.json +++ b/internal/cmd/primaryip/testdata/create_response.json @@ -15,21 +15,6 @@ "name": "fsn1", "network_zone": "" }, - "datacenter": { - "description": "", - "id": 1, - "location": { - "city": "", - "country": "", - "description": "", - "id": 1, - "latitude": 0, - "longitude": 0, - "name": "fsn1", - "network_zone": "" - }, - "name": "fsn1-dc14" - }, "dns_ptr": [], "id": 1, "ip": "192.168.2.1", diff --git a/internal/cmd/server/create.go b/internal/cmd/server/create.go index c8b16cd5c..fcdff633a 100644 --- a/internal/cmd/server/create.go +++ b/internal/cmd/server/create.go @@ -9,7 +9,6 @@ import ( "mime/multipart" "net/textproto" "os" - "strconv" "strings" "time" @@ -42,10 +41,6 @@ var CreateCmd = base.CreateCmd[*createResult]{ cmd := &cobra.Command{ Use: "create [options] --name --type --image ", Short: "Create a Server", - Long: `Create a Server. - -The --datacenter flag is deprecated. Use --location instead. -See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters.`, } cmd.Flags().String("name", "", "Server name (required)") @@ -62,9 +57,6 @@ See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters.`, cmd.Flags().String("location", "", "Location (ID or name)") _ = cmd.RegisterFlagCompletionFunc("location", cmpl.SuggestCandidatesF(client.Location().Names)) - cmd.Flags().String("datacenter", "", "Datacenter (ID or name) (deprecated)") - _ = cmd.RegisterFlagCompletionFunc("datacenter", cmpl.SuggestCandidatesF(client.Datacenter().Names)) - cmd.Flags().StringSlice("ssh-key", nil, "ID or name of SSH Key to inject (can be specified multiple times)") _ = cmd.RegisterFlagCompletionFunc("ssh-key", cmpl.SuggestCandidatesF(client.SSHKey().Names)) @@ -114,8 +106,6 @@ See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters.`, var locName string if createOpts.Location != nil { locName = createOpts.Location.Name - } else if createOpts.Datacenter != nil { - locName = createOpts.Datacenter.Location.Name } cmd.Print(deprecatedServerTypeWarning(createOpts.ServerType, locName)) @@ -275,7 +265,6 @@ func createOptsFromFlags( serverTypeName, _ := flags.GetString("type") imageIDorName, _ := flags.GetString("image") locationIDOrName, _ := flags.GetString("location") - datacenterIDOrName, _ := flags.GetString("datacenter") userDataFiles, _ := flags.GetStringArray("user-data-from-file") startAfterCreate, _ := flags.GetBool("start-after-create") sshKeys, _ := flags.GetStringSlice("ssh-key") @@ -438,41 +427,6 @@ func createOptsFromFlags( createOpts.Firewalls = append(createOpts.Firewalls, &hcloud.ServerCreateFirewall{Firewall: *firewall}) } - if datacenterIDOrName != "" { - cmd.PrintErrln("Warning: The --datacenter flag is deprecated. Use --location instead.") - - // If parseable as ID -> GetByID and use Location Name - // Else -> Backwards-compatible split - var datacenterID int64 - datacenterID, err = strconv.ParseInt(datacenterIDOrName, 10, 64) - if err == nil { - // Input was a valid number/ID - var datacenter *hcloud.Datacenter - datacenter, _, err = s.Client().Datacenter().GetByID(s, datacenterID) - if err != nil { - return - } - if datacenter == nil { - err = fmt.Errorf("Datacenter not found: %s", datacenterIDOrName) - return - } - createOpts.Location = datacenter.Location - } else { - // Input was not a valid number/ID, probably DC name - - // Backward compatible datacenter argument. - // datacenter hel1-dc2 => location hel1 - parts := strings.Split(datacenterIDOrName, "-") - - if len(parts) != 2 { - err = fmt.Errorf("Datacenter name is not valid, expected format $LOCATION-$DATACENTER, but got: %s", datacenterIDOrName) - return - } - - createOpts.Location = &hcloud.Location{Name: parts[0]} - } - } - if locationIDOrName != "" { var location *hcloud.Location location, _, err = s.Client().Location().Get(s, locationIDOrName) diff --git a/internal/cmd/server/create_test.go b/internal/cmd/server/create_test.go index c12d473e4..a778a3475 100644 --- a/internal/cmd/server/create_test.go +++ b/internal/cmd/server/create_test.go @@ -134,14 +134,6 @@ func TestCreateJSON(t *testing.T) { }, Created: time.Date(2016, 1, 30, 23, 50, 0, 0, time.UTC), Labels: make(map[string]string), - Datacenter: &hcloud.Datacenter{ - ID: 1, - Name: "fsn1-dc14", - Location: &hcloud.Location{ - ID: 1, - Name: "fsn1", - }, - }, ServerType: &hcloud.ServerType{ ID: 1, Name: "cpx22", diff --git a/internal/cmd/server/describe.go b/internal/cmd/server/describe.go index cf308eaa2..501dc942e 100644 --- a/internal/cmd/server/describe.go +++ b/internal/cmd/server/describe.go @@ -9,7 +9,6 @@ import ( "github.com/spf13/cobra" "github.com/hetznercloud/cli/internal/cmd/base" - "github.com/hetznercloud/cli/internal/cmd/datacenter" "github.com/hetznercloud/cli/internal/cmd/image" "github.com/hetznercloud/cli/internal/cmd/iso" "github.com/hetznercloud/cli/internal/cmd/location" @@ -149,12 +148,6 @@ var DescribeCmd = base.DescribeCmd[*hcloud.Server]{ fmt.Fprintf(out, "Location:\n") fmt.Fprint(out, util.PrefixLines(location.DescribeLocation(server.Location), " ")) - if server.Datacenter != nil { - fmt.Fprintln(out) - fmt.Fprintf(out, "Datacenter:\n") - fmt.Fprintf(out, "%s", util.PrefixLines(datacenter.DescribeDatacenter(s.Client(), server.Datacenter, true), " ")) - } - fmt.Fprintln(out) if server.BackupWindow != "" { fmt.Fprintf(out, "Backup Window:\t%s\n", server.BackupWindow) diff --git a/internal/cmd/server/list.go b/internal/cmd/server/list.go index 1acc324ed..97f847d1c 100644 --- a/internal/cmd/server/list.go +++ b/internal/cmd/server/list.go @@ -88,12 +88,6 @@ var ListCmd = &base.ListCmd[*hcloud.Server, schema.Server]{ AddFieldFn("outgoing_traffic", func(server *hcloud.Server) string { return humanize.IBytes(server.OutgoingTraffic) }). - AddFieldFn("datacenter", func(server *hcloud.Server) string { - if server.Datacenter != nil { - return server.Datacenter.Name - } - return "-" - }). AddFieldFn("location", func(server *hcloud.Server) string { return server.Location.Name }). @@ -139,8 +133,7 @@ var ListCmd = &base.ListCmd[*hcloud.Server, schema.Server]{ return "-" } return server.PlacementGroup.Name - }). - MarkFieldAsDeprecated("datacenter", "The datacenter column is deprecated. Use location column instead.") + }) }, Schema: hcloud.SchemaFromServer, diff --git a/internal/cmd/server/testdata/create_response.json b/internal/cmd/server/testdata/create_response.json index 7124fe38d..919ffcc46 100644 --- a/internal/cmd/server/testdata/create_response.json +++ b/internal/cmd/server/testdata/create_response.json @@ -13,21 +13,6 @@ "name": "", "network_zone": "" }, - "datacenter": { - "description": "", - "id": 1, - "location": { - "city": "", - "country": "", - "description": "", - "id": 1, - "latitude": 0, - "longitude": 0, - "name": "fsn1", - "network_zone": "" - }, - "name": "fsn1-dc14" - }, "id": 1234, "image": { "architecture": "", From 8193ccaeb3bc71e55bf39057c027cbefc4f1772c Mon Sep 17 00:00:00 2001 From: lukasmetzner Date: Tue, 21 Jul 2026 16:15:08 +0200 Subject: [PATCH 2/3] chore: go mod tidy --- go.sum | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/go.sum b/go.sum index d92f3ab77..e8b48a229 100644 --- a/go.sum +++ b/go.sum @@ -37,8 +37,6 @@ 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.10.0 h1:LmbFXSHZOhaQxjJYexdRk7TzoC5sJ7vDTEjP1YUbKgY= github.com/guptarohit/asciigraph v0.10.0/go.mod h1:dYl5wwK4gNsnFf9Zp+l06rFiDZ5YtXM6x7SRWZ3KGag= -github.com/hetznercloud/hcloud-go/v2 v2.44.0 h1:1p9qwaZ/H55nLP9c7WfuwUA0LfsexS2YHOhD8+iBga8= -github.com/hetznercloud/hcloud-go/v2 v2.44.0/go.mod h1:d0s2WLe7jSoStamv3eHoWgBSOxc/K17tYSXsqUkbse0= github.com/hetznercloud/hcloud-go/v2 v2.45.0 h1:0TnAwVUK/DJzEacOcY6IcbISJOIqldUjvaFpuVz8Mbk= github.com/hetznercloud/hcloud-go/v2 v2.45.0/go.mod h1:pdG7fFGlYsCAaJ9r0QOIF0O6wQcpbJxT2VT8aP6XlIc= github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJn+Ichc= @@ -121,27 +119,17 @@ go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/crypto v0.53.0 h1:QZ4Muo8THX6CizN2vPPd5fBGHyogrdK9fG4wLPFUsto= -golang.org/x/crypto v0.53.0/go.mod h1:DNLU434OwVakk9PzuwV8w62mAJpRJL3vsgcfp4Qnsio= golang.org/x/crypto v0.54.0 h1:YLIA59K4fiNzHzjnZt2tUJQjQtUWfWbeHBqKtk3eScw= golang.org/x/crypto v0.54.0/go.mod h1:KWL8ny2AZdGR2cWmzeHrp2azQPGogOv+HeQaVEXC2dk= golang.org/x/exp v0.0.0-20260611194520-c48552f49976 h1:X8Hz2ImujgbmetVuW+w2YkyZChE3cBpZi2P158rTG9M= golang.org/x/exp v0.0.0-20260611194520-c48552f49976/go.mod h1:vnf4pv9iKZXY58sQE1L86zmNWJ4159e1RkcWiLCkeEY= -golang.org/x/net v0.56.0 h1:Rw8j/hFzGvJUZwNBXnAtf5sVDVt+65SK2C7IxCxZt5o= -golang.org/x/net v0.56.0/go.mod h1:D3Ku6r+V6JROoZK144D2XfMHFcMq/0zSfLelVTCFKec= golang.org/x/net v0.57.0 h1:K5+3DljvIuDG9/Jv9rvyMywYNFCQ9RSUY6OOTTkT+tE= golang.org/x/net v0.57.0/go.mod h1:KpXc8iv+r3XplLAG/f7Jsf9RPszJzdR0f58q9vGOuEU= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw= -golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/term v0.44.0 h1:0rLvDRCtNj0gZkyIXhCyOb2OAzEhLVqc4B+hrsBhrmc= -golang.org/x/term v0.44.0/go.mod h1:7ze4MdzUzLXpSAoFP1H0bOI9aXDqveSvatT5vKcFh2Y= golang.org/x/term v0.45.0 h1:NwWyBmoJCbfTHpxrWoZ9C6/VxOf7ic219I8xZZFdrf0= golang.org/x/term v0.45.0/go.mod h1:9aqxs0blBcrm/n0L9QW0aRVD+ktan8ssZromtqJC43w= -golang.org/x/text v0.39.0 h1:UbZz4pLOvn600D6Oh6GGEI6VAmndrEBLv8/6BEXzyus= -golang.org/x/text v0.39.0/go.mod h1:3UwRclnC2g0TU9x8PZiyfOajCd1zaUNHF9cvqcQZ+ZM= golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs= golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY= google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= From 9d35d87b0d684a2f6e76a4b8de866031e1e11a12 Mon Sep 17 00:00:00 2001 From: lukasmetzner Date: Wed, 22 Jul 2026 10:35:30 +0200 Subject: [PATCH 3/3] docs: document missing flag --- docs/reference/manual/hcloud_primary-ip_create.md | 5 ++++- docs/reference/manual/hcloud_server_create.md | 7 +++++++ internal/cmd/primaryip/create.go | 5 ++++- internal/cmd/server/create.go | 4 ++++ 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/docs/reference/manual/hcloud_primary-ip_create.md b/docs/reference/manual/hcloud_primary-ip_create.md index bd4b06293..2152fd106 100644 --- a/docs/reference/manual/hcloud_primary-ip_create.md +++ b/docs/reference/manual/hcloud_primary-ip_create.md @@ -6,8 +6,11 @@ Create a Primary IP Create a Primary IP. +The --datacenter flag has been removed. Use --location or --assignee-id instead. +See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters. + The --assignee-type flag will be required together with the --assignee-id flag. Using -the default value (server) for the --assignee-type flag is deprecated. Consider +the default value (server) for the --assignee-type flag is deprecated. Consider explicitly setting the --assignee-type flag. See https://docs.hetzner.cloud/changelog#2026-04-27-primary-ips-will-return-unassigned diff --git a/docs/reference/manual/hcloud_server_create.md b/docs/reference/manual/hcloud_server_create.md index ca8103d16..cad0e4be8 100644 --- a/docs/reference/manual/hcloud_server_create.md +++ b/docs/reference/manual/hcloud_server_create.md @@ -2,6 +2,13 @@ Create a Server +### Synopsis + +Create a Server. + +The --datacenter flag has been removed. Use --location instead. +See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters. + ``` hcloud server create [options] --name --type --image ``` diff --git a/internal/cmd/primaryip/create.go b/internal/cmd/primaryip/create.go index c2d543120..293b74c4b 100644 --- a/internal/cmd/primaryip/create.go +++ b/internal/cmd/primaryip/create.go @@ -20,8 +20,11 @@ var CreateCmd = base.CreateCmd[*hcloud.PrimaryIP]{ Short: "Create a Primary IP", Long: `Create a Primary IP. +The --datacenter flag has been removed. Use --location or --assignee-id instead. +See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters. + The --assignee-type flag will be required together with the --assignee-id flag. Using -the default value (server) for the --assignee-type flag is deprecated. Consider +the default value (server) for the --assignee-type flag is deprecated. Consider explicitly setting the --assignee-type flag. See https://docs.hetzner.cloud/changelog#2026-04-27-primary-ips-will-return-unassigned diff --git a/internal/cmd/server/create.go b/internal/cmd/server/create.go index fcdff633a..0f72ccbe8 100644 --- a/internal/cmd/server/create.go +++ b/internal/cmd/server/create.go @@ -41,6 +41,10 @@ var CreateCmd = base.CreateCmd[*createResult]{ cmd := &cobra.Command{ Use: "create [options] --name --type --image ", Short: "Create a Server", + Long: `Create a Server. + +The --datacenter flag has been removed. Use --location instead. +See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters.`, } cmd.Flags().String("name", "", "Server name (required)")