Skip to content

Commit cb30c7e

Browse files
committed
Deprecate Hetzner Cloud server datacenter labels
[hcloud.Server.Datacenter] is deprecated and will be removed after 1 July 2026. Use [hcloud.Server.Location] instead. See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters
1 parent 57961fb commit cb30c7e

3 files changed

Lines changed: 44 additions & 25 deletions

File tree

discovery/hetzner/hcloud.go

Lines changed: 34 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -32,21 +32,25 @@ import (
3232
)
3333

3434
const (
35-
hetznerHcloudLabelPrefix = hetznerLabelPrefix + "hcloud_"
36-
hetznerLabelHcloudImageName = hetznerHcloudLabelPrefix + "image_name"
37-
hetznerLabelHcloudImageDescription = hetznerHcloudLabelPrefix + "image_description"
38-
hetznerLabelHcloudImageOSVersion = hetznerHcloudLabelPrefix + "image_os_version"
39-
hetznerLabelHcloudImageOSFlavor = hetznerHcloudLabelPrefix + "image_os_flavor"
40-
hetznerLabelHcloudPrivateIPv4 = hetznerHcloudLabelPrefix + "private_ipv4_"
35+
hetznerHcloudLabelPrefix = hetznerLabelPrefix + "hcloud_"
36+
hetznerLabelHcloudImageName = hetznerHcloudLabelPrefix + "image_name"
37+
hetznerLabelHcloudImageDescription = hetznerHcloudLabelPrefix + "image_description"
38+
hetznerLabelHcloudImageOSVersion = hetznerHcloudLabelPrefix + "image_os_version"
39+
hetznerLabelHcloudImageOSFlavor = hetznerHcloudLabelPrefix + "image_os_flavor"
40+
hetznerLabelHcloudPrivateIPv4 = hetznerHcloudLabelPrefix + "private_ipv4_"
41+
hetznerLabelHcloudLocation = hetznerHcloudLabelPrefix + "location"
42+
hetznerLabelHcloudNetworkZone = hetznerHcloudLabelPrefix + "network_zone"
43+
hetznerLabelHcloudCPUCores = hetznerHcloudLabelPrefix + "cpu_cores"
44+
hetznerLabelHcloudCPUType = hetznerHcloudLabelPrefix + "cpu_type"
45+
hetznerLabelHcloudMemoryGB = hetznerHcloudLabelPrefix + "memory_size_gb"
46+
hetznerLabelHcloudDiskGB = hetznerHcloudLabelPrefix + "disk_size_gb"
47+
hetznerLabelHcloudType = hetznerHcloudLabelPrefix + "server_type"
48+
hetznerLabelHcloudLabel = hetznerHcloudLabelPrefix + "label_"
49+
hetznerLabelHcloudLabelPresent = hetznerHcloudLabelPrefix + "labelpresent_"
50+
51+
// Label names kept for backward compatibility
4152
hetznerLabelHcloudDatacenterLocation = hetznerHcloudLabelPrefix + "datacenter_location"
4253
hetznerLabelHcloudDatacenterLocationNetworkZone = hetznerHcloudLabelPrefix + "datacenter_location_network_zone"
43-
hetznerLabelHcloudCPUCores = hetznerHcloudLabelPrefix + "cpu_cores"
44-
hetznerLabelHcloudCPUType = hetznerHcloudLabelPrefix + "cpu_type"
45-
hetznerLabelHcloudMemoryGB = hetznerHcloudLabelPrefix + "memory_size_gb"
46-
hetznerLabelHcloudDiskGB = hetznerHcloudLabelPrefix + "disk_size_gb"
47-
hetznerLabelHcloudType = hetznerHcloudLabelPrefix + "server_type"
48-
hetznerLabelHcloudLabel = hetznerHcloudLabelPrefix + "label_"
49-
hetznerLabelHcloudLabelPresent = hetznerHcloudLabelPrefix + "labelpresent_"
5054
)
5155

5256
// Discovery periodically performs Hetzner Cloud requests. It implements
@@ -98,22 +102,31 @@ func (d *hcloudDiscovery) refresh(ctx context.Context) ([]*targetgroup.Group, er
98102
hetznerLabelRole: model.LabelValue(HetznerRoleHcloud),
99103
hetznerLabelServerID: model.LabelValue(strconv.FormatInt(server.ID, 10)),
100104
hetznerLabelServerName: model.LabelValue(server.Name),
101-
hetznerLabelDatacenter: model.LabelValue(server.Datacenter.Name),
102105
hetznerLabelPublicIPv4: model.LabelValue(server.PublicNet.IPv4.IP.String()),
103106
hetznerLabelPublicIPv6Network: model.LabelValue(server.PublicNet.IPv6.Network.String()),
104107
hetznerLabelServerStatus: model.LabelValue(server.Status),
105108

106-
hetznerLabelHcloudDatacenterLocation: model.LabelValue(server.Datacenter.Location.Name),
107-
hetznerLabelHcloudDatacenterLocationNetworkZone: model.LabelValue(server.Datacenter.Location.NetworkZone),
108-
hetznerLabelHcloudType: model.LabelValue(server.ServerType.Name),
109-
hetznerLabelHcloudCPUCores: model.LabelValue(strconv.Itoa(server.ServerType.Cores)),
110-
hetznerLabelHcloudCPUType: model.LabelValue(server.ServerType.CPUType),
111-
hetznerLabelHcloudMemoryGB: model.LabelValue(strconv.Itoa(int(server.ServerType.Memory))),
112-
hetznerLabelHcloudDiskGB: model.LabelValue(strconv.Itoa(server.ServerType.Disk)),
109+
hetznerLabelHcloudLocation: model.LabelValue(server.Location.Name),
110+
hetznerLabelHcloudNetworkZone: model.LabelValue(server.Location.NetworkZone),
111+
hetznerLabelHcloudType: model.LabelValue(server.ServerType.Name),
112+
hetznerLabelHcloudCPUCores: model.LabelValue(strconv.Itoa(server.ServerType.Cores)),
113+
hetznerLabelHcloudCPUType: model.LabelValue(server.ServerType.CPUType),
114+
hetznerLabelHcloudMemoryGB: model.LabelValue(strconv.Itoa(int(server.ServerType.Memory))),
115+
hetznerLabelHcloudDiskGB: model.LabelValue(strconv.Itoa(server.ServerType.Disk)),
116+
117+
// Label names kept for backward compatibility
118+
hetznerLabelHcloudDatacenterLocation: model.LabelValue(server.Location.Name),
119+
hetznerLabelHcloudDatacenterLocationNetworkZone: model.LabelValue(server.Location.NetworkZone),
113120

114121
model.AddressLabel: model.LabelValue(net.JoinHostPort(server.PublicNet.IPv4.IP.String(), strconv.FormatUint(uint64(d.port), 10))),
115122
}
116123

124+
// [hcloud.Server.Datacenter] is deprecated and will be removed after 1 July 2026.
125+
// See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters
126+
if server.Datacenter != nil { // nolint: staticcheck
127+
labels[hetznerLabelDatacenter] = model.LabelValue(server.Datacenter.Name) // nolint: staticcheck
128+
}
129+
117130
if server.Image != nil {
118131
labels[hetznerLabelHcloudImageName] = model.LabelValue(server.Image.Name)
119132
labels[hetznerLabelHcloudImageDescription] = model.LabelValue(server.Image.Description)

docs/configuration/configuration.md

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1908,16 +1908,21 @@ The following meta labels are available on all targets during [relabeling](#rela
19081908
* `__meta_hetzner_server_status`: the status of the server
19091909
* `__meta_hetzner_public_ipv4`: the public ipv4 address of the server
19101910
* `__meta_hetzner_public_ipv6_network`: the public ipv6 network (/64) of the server
1911-
* `__meta_hetzner_datacenter`: the datacenter of the server
1911+
1912+
Note that the `__meta_hetzner_datacenter` label is deprecated for the `hcloud` `role`, and
1913+
will be removed after 1 July 2026. For more details, see the
1914+
[changelog](https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters).
19121915

19131916
The labels below are only available for targets with `role` set to `hcloud`:
19141917

19151918
* `__meta_hetzner_hcloud_image_name`: the image name of the server
19161919
* `__meta_hetzner_hcloud_image_description`: the description of the server image
19171920
* `__meta_hetzner_hcloud_image_os_flavor`: the OS flavor of the server image
19181921
* `__meta_hetzner_hcloud_image_os_version`: the OS version of the server image
1919-
* `__meta_hetzner_hcloud_datacenter_location`: the location of the server
1920-
* `__meta_hetzner_hcloud_datacenter_location_network_zone`: the network zone of the server
1922+
* `__meta_hetzner_hcloud_location`: the location of the server
1923+
* `__meta_hetzner_hcloud_network_zone`: the network zone of the server
1924+
* `__meta_hetzner_hcloud_datacenter_location`: the location of the server (deprecated in favor of `__meta_hetzner_hcloud_location`)
1925+
* `__meta_hetzner_hcloud_datacenter_location_network_zone`: the network zone of the server (deprecated in favor of `__meta_hetzner_hcloud_network_zone`)
19211926
* `__meta_hetzner_hcloud_server_type`: the type of the server
19221927
* `__meta_hetzner_hcloud_cpu_cores`: the CPU cores count of the server
19231928
* `__meta_hetzner_hcloud_cpu_type`: the CPU type of the server (shared or dedicated)
@@ -1929,6 +1934,7 @@ The labels below are only available for targets with `role` set to `hcloud`:
19291934

19301935
The labels below are only available for targets with `role` set to `robot`:
19311936

1937+
* `__meta_hetzner_datacenter`: the datacenter of the server
19321938
* `__meta_hetzner_robot_product`: the product of the server
19331939
* `__meta_hetzner_robot_cancelled`: the server cancellation status
19341940

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ require (
4040
github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853
4141
github.com/hashicorp/consul/api v1.32.1
4242
github.com/hashicorp/nomad/api v0.0.0-20251222083347-1355d4cb1671
43-
github.com/hetznercloud/hcloud-go/v2 v2.32.0
43+
github.com/hetznercloud/hcloud-go/v2 v2.33.0
4444
github.com/ionos-cloud/sdk-go/v6 v6.3.6
4545
github.com/json-iterator/go v1.1.12
4646
github.com/klauspost/compress v1.18.2

0 commit comments

Comments
 (0)