Skip to content

Commit 4b44ba3

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 - `__meta_hetzner_datacenter` - is deprecated for the role `robot` but kept for backward compatibility. Using `__meta_hetzner_robot_datacenter` is preferred. - is deprecated for the role `hcloud` and will stop working after the 1 July 2026. - `__meta_hetzner_hcloud_datacenter_location` - is deprecated but kept for backward compatibility, the same data is available in the [`hcloud.Server.Location`](https://pkg.go.dev/github.com/hetznercloud/hcloud-go/v2/hcloud#Server) struct. - using `__meta_hetzner_hcloud_location` is preferred. - `__meta_hetzner_hcloud_datacenter_location_network_zone` - is deprecated but kept for backward compatibility, the same data is available in the [`hcloud.Server.Location`](https://pkg.go.dev/github.com/hetznercloud/hcloud-go/v2/hcloud#Server) struct. - using `__meta_hetzner_hcloud_location_network_zone` is preferred. - `__meta_hetzner_hcloud_location` - replacement label for `__meta_hetzner_hcloud_datacenter_location` - `__meta_hetzner_hcloud_location_network_zone` - replacement label for `__meta_hetzner_hcloud_datacenter_location_network_zone` - `__meta_hetzner_robot_datacenter` - replacement label for `__meta_hetzner_datacenter` with the role `robot`.
1 parent f331aa6 commit 4b44ba3

4 files changed

Lines changed: 37 additions & 20 deletions

File tree

discovery/hetzner/hcloud.go

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,10 @@ const (
3838
hetznerLabelHcloudImageOSVersion = hetznerHcloudLabelPrefix + "image_os_version"
3939
hetznerLabelHcloudImageOSFlavor = hetznerHcloudLabelPrefix + "image_os_flavor"
4040
hetznerLabelHcloudPrivateIPv4 = hetznerHcloudLabelPrefix + "private_ipv4_"
41-
hetznerLabelHcloudDatacenterLocation = hetznerHcloudLabelPrefix + "datacenter_location"
42-
hetznerLabelHcloudDatacenterLocationNetworkZone = hetznerHcloudLabelPrefix + "datacenter_location_network_zone"
41+
hetznerLabelHcloudLocation = hetznerHcloudLabelPrefix + "location"
42+
hetznerLabelHcloudLocationNetworkZone = hetznerHcloudLabelPrefix + "location_network_zone"
43+
hetznerLabelHcloudDatacenterLocation = hetznerHcloudLabelPrefix + "datacenter_location" // Label name kept for backward compatibility
44+
hetznerLabelHcloudDatacenterLocationNetworkZone = hetznerHcloudLabelPrefix + "datacenter_location_network_zone" // Label name kept for backward compatibility
4345
hetznerLabelHcloudCPUCores = hetznerHcloudLabelPrefix + "cpu_cores"
4446
hetznerLabelHcloudCPUType = hetznerHcloudLabelPrefix + "cpu_type"
4547
hetznerLabelHcloudMemoryGB = hetznerHcloudLabelPrefix + "memory_size_gb"
@@ -98,13 +100,14 @@ func (d *hcloudDiscovery) refresh(ctx context.Context) ([]*targetgroup.Group, er
98100
hetznerLabelRole: model.LabelValue(HetznerRoleHcloud),
99101
hetznerLabelServerID: model.LabelValue(strconv.FormatInt(server.ID, 10)),
100102
hetznerLabelServerName: model.LabelValue(server.Name),
101-
hetznerLabelDatacenter: model.LabelValue(server.Datacenter.Name), //nolint:staticcheck // server.Datacenter is deprecated but kept for backwards compatibility until the next minor release
102103
hetznerLabelPublicIPv4: model.LabelValue(server.PublicNet.IPv4.IP.String()),
103104
hetznerLabelPublicIPv6Network: model.LabelValue(server.PublicNet.IPv6.Network.String()),
104105
hetznerLabelServerStatus: model.LabelValue(server.Status),
105106

106-
hetznerLabelHcloudDatacenterLocation: model.LabelValue(server.Datacenter.Location.Name), //nolint:staticcheck // server.Datacenter is deprecated but kept for backwards compatibility until the next minor release
107-
hetznerLabelHcloudDatacenterLocationNetworkZone: model.LabelValue(server.Datacenter.Location.NetworkZone), //nolint:staticcheck // server.Datacenter is deprecated but kept for backwards compatibility until the next minor release
107+
hetznerLabelHcloudLocation: model.LabelValue(server.Location.Name),
108+
hetznerLabelHcloudLocationNetworkZone: model.LabelValue(server.Location.NetworkZone),
109+
hetznerLabelHcloudDatacenterLocation: model.LabelValue(server.Location.Name), // Label name kept for backward compatibility
110+
hetznerLabelHcloudDatacenterLocationNetworkZone: model.LabelValue(server.Location.NetworkZone), // Label name kept for backward compatibility
108111
hetznerLabelHcloudType: model.LabelValue(server.ServerType.Name),
109112
hetznerLabelHcloudCPUCores: model.LabelValue(strconv.Itoa(server.ServerType.Cores)),
110113
hetznerLabelHcloudCPUType: model.LabelValue(server.ServerType.CPUType),
@@ -114,6 +117,12 @@ func (d *hcloudDiscovery) refresh(ctx context.Context) ([]*targetgroup.Group, er
114117
model.AddressLabel: model.LabelValue(net.JoinHostPort(server.PublicNet.IPv4.IP.String(), strconv.FormatUint(uint64(d.port), 10))),
115118
}
116119

120+
// [hcloud.Server.Datacenter] is deprecated and will be removed after 1 July 2026.
121+
// See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters
122+
if server.Datacenter != nil { // nolint: staticcheck
123+
labels[hetznerLabelDatacenter] = model.LabelValue(server.Datacenter.Name) // nolint: staticcheck
124+
}
125+
117126
if server.Image != nil {
118127
labels[hetznerLabelHcloudImageName] = model.LabelValue(server.Image.Name)
119128
labels[hetznerLabelHcloudImageDescription] = model.LabelValue(server.Image.Description)

discovery/hetzner/hetzner.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ const (
3636
hetznerLabelServerID = hetznerLabelPrefix + "server_id"
3737
hetznerLabelServerName = hetznerLabelPrefix + "server_name"
3838
hetznerLabelServerStatus = hetznerLabelPrefix + "server_status"
39-
hetznerLabelDatacenter = hetznerLabelPrefix + "datacenter"
39+
hetznerLabelDatacenter = hetznerLabelPrefix + "datacenter" // Label name kept for backward compatibility
4040
hetznerLabelPublicIPv4 = hetznerLabelPrefix + "public_ipv4"
4141
hetznerLabelPublicIPv6Network = hetznerLabelPrefix + "public_ipv6_network"
4242
)

discovery/hetzner/robot.go

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,10 @@ import (
3434
)
3535

3636
const (
37-
hetznerRobotLabelPrefix = hetznerLabelPrefix + "robot_"
38-
hetznerLabelRobotProduct = hetznerRobotLabelPrefix + "product"
39-
hetznerLabelRobotCancelled = hetznerRobotLabelPrefix + "cancelled"
37+
hetznerRobotLabelPrefix = hetznerLabelPrefix + "robot_"
38+
hetznerLabelRobotDatacenter = hetznerRobotLabelPrefix + "datacenter"
39+
hetznerLabelRobotProduct = hetznerRobotLabelPrefix + "product"
40+
hetznerLabelRobotCancelled = hetznerRobotLabelPrefix + "cancelled"
4041
)
4142

4243
var userAgent = version.PrometheusUserAgent()
@@ -105,14 +106,15 @@ func (d *robotDiscovery) refresh(context.Context) ([]*targetgroup.Group, error)
105106
targets := make([]model.LabelSet, len(servers))
106107
for i, server := range servers {
107108
labels := model.LabelSet{
108-
hetznerLabelRole: model.LabelValue(HetznerRoleRobot),
109-
hetznerLabelServerID: model.LabelValue(strconv.Itoa(server.Server.ServerNumber)),
110-
hetznerLabelServerName: model.LabelValue(server.Server.ServerName),
111-
hetznerLabelDatacenter: model.LabelValue(strings.ToLower(server.Server.Dc)),
112-
hetznerLabelPublicIPv4: model.LabelValue(server.Server.ServerIP),
113-
hetznerLabelServerStatus: model.LabelValue(server.Server.Status),
114-
hetznerLabelRobotProduct: model.LabelValue(server.Server.Product),
115-
hetznerLabelRobotCancelled: model.LabelValue(strconv.FormatBool(server.Server.Canceled)),
109+
hetznerLabelRole: model.LabelValue(HetznerRoleRobot),
110+
hetznerLabelServerID: model.LabelValue(strconv.Itoa(server.Server.ServerNumber)),
111+
hetznerLabelServerName: model.LabelValue(server.Server.ServerName),
112+
hetznerLabelDatacenter: model.LabelValue(strings.ToLower(server.Server.Dc)), // Label name kept for backward compatibility
113+
hetznerLabelPublicIPv4: model.LabelValue(server.Server.ServerIP),
114+
hetznerLabelServerStatus: model.LabelValue(server.Server.Status),
115+
hetznerLabelRobotDatacenter: model.LabelValue(strings.ToLower(server.Server.Dc)),
116+
hetznerLabelRobotProduct: model.LabelValue(server.Server.Product),
117+
hetznerLabelRobotCancelled: model.LabelValue(strconv.FormatBool(server.Server.Canceled)),
116118

117119
model.AddressLabel: model.LabelValue(net.JoinHostPort(server.Server.ServerIP, strconv.FormatUint(uint64(d.port), 10))),
118120
}

docs/configuration/configuration.md

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1920,16 +1920,21 @@ The following meta labels are available on all targets during [relabeling](#rela
19201920
* `__meta_hetzner_server_status`: the status of the server
19211921
* `__meta_hetzner_public_ipv4`: the public ipv4 address of the server
19221922
* `__meta_hetzner_public_ipv6_network`: the public ipv6 network (/64) of the server
1923-
* `__meta_hetzner_datacenter`: the datacenter of the server
1923+
1924+
Note that the `__meta_hetzner_datacenter` label is deprecated for both roles `robot` and `hcloud`:
1925+
- For the `robot` role, the replacement label is `__meta_hetzner_robot_datacenter`.
1926+
- For the `hcloud` role, the label will be removed after 1 July 2026. For more details, see the [changelog](https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters).
19241927

19251928
The labels below are only available for targets with `role` set to `hcloud`:
19261929

19271930
* `__meta_hetzner_hcloud_image_name`: the image name of the server
19281931
* `__meta_hetzner_hcloud_image_description`: the description of the server image
19291932
* `__meta_hetzner_hcloud_image_os_flavor`: the OS flavor of the server image
19301933
* `__meta_hetzner_hcloud_image_os_version`: the OS version of the server image
1931-
* `__meta_hetzner_hcloud_datacenter_location`: the location of the server
1932-
* `__meta_hetzner_hcloud_datacenter_location_network_zone`: the network zone of the server
1934+
* `__meta_hetzner_hcloud_location`: the location of the server
1935+
* `__meta_hetzner_hcloud_location_network_zone`: the network zone of the server
1936+
* `__meta_hetzner_hcloud_datacenter_location`: the location of the server (deprecated in favor of `__meta_hetzner_hcloud_location`)
1937+
* `__meta_hetzner_hcloud_datacenter_location_network_zone`: the network zone of the server (deprecated in favor of `__meta_hetzner_hcloud_location_network_zone`)
19331938
* `__meta_hetzner_hcloud_server_type`: the type of the server
19341939
* `__meta_hetzner_hcloud_cpu_cores`: the CPU cores count of the server
19351940
* `__meta_hetzner_hcloud_cpu_type`: the CPU type of the server (shared or dedicated)
@@ -1941,6 +1946,7 @@ The labels below are only available for targets with `role` set to `hcloud`:
19411946

19421947
The labels below are only available for targets with `role` set to `robot`:
19431948

1949+
* `__meta_hetzner_robot_datacenter`: the datacenter of the server
19441950
* `__meta_hetzner_robot_product`: the product of the server
19451951
* `__meta_hetzner_robot_cancelled`: the server cancellation status
19461952

0 commit comments

Comments
 (0)