From 7c3cdbce507e01066ea8eb884bb5946a31d5b95d Mon Sep 17 00:00:00 2001 From: Travis Nielsen Date: Fri, 30 Oct 2020 10:40:50 -0600 Subject: [PATCH] ceph: use constants for k8s topology labels Instead of directly defining our own constants, we should be using the k8s constants for the well-known topology labels. Signed-off-by: Travis Nielsen --- pkg/operator/ceph/cluster/mon/spec.go | 3 ++- .../ceph/cluster/osd/topology_test.go | 13 ++++++------ pkg/operator/k8sutil/node.go | 4 ++-- pkg/operator/k8sutil/node_test.go | 20 +++++++++---------- 4 files changed, 21 insertions(+), 19 deletions(-) diff --git a/pkg/operator/ceph/cluster/mon/spec.go b/pkg/operator/ceph/cluster/mon/spec.go index 71de94c6b..fa1f34aa7 100644 --- a/pkg/operator/ceph/cluster/mon/spec.go +++ b/pkg/operator/ceph/cluster/mon/spec.go @@ -30,6 +30,7 @@ import ( "github.com/rook/rook/pkg/operator/ceph/controller" "github.com/rook/rook/pkg/operator/k8sutil" apps "k8s.io/api/apps/v1" + corev1 "k8s.io/api/core/v1" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -75,7 +76,7 @@ func (c *Cluster) stretchFailureDomainLabel() string { return c.spec.Mon.StretchCluster.FailureDomainLabel } // The default topology label is for a zone - return "topology.kubernetes.io/zone" + return corev1.LabelZoneFailureDomainStable } func (c *Cluster) makeDeployment(monConfig *monConfig, canary bool) (*apps.Deployment, error) { diff --git a/pkg/operator/ceph/cluster/osd/topology_test.go b/pkg/operator/ceph/cluster/osd/topology_test.go index b0f0e7d23..0751937e4 100644 --- a/pkg/operator/ceph/cluster/osd/topology_test.go +++ b/pkg/operator/ceph/cluster/osd/topology_test.go @@ -23,6 +23,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + corev1 "k8s.io/api/core/v1" ) func TestOrderedCRUSHLabels(t *testing.T) { @@ -41,12 +42,12 @@ func TestOrderedCRUSHLabels(t *testing.T) { func TestTopologyLabels(t *testing.T) { // load all the expected labels nodeLabels := map[string]string{ - "topology.kubernetes.io/region": "r.region", - "topology.kubernetes.io/zone": "z.zone", - "kubernetes.io/hostname": "host.name", - "topology.rook.io/rack": "r.rack", - "topology.rook.io/row": "r.row", - "topology.rook.io/datacenter": "d.datacenter", + corev1.LabelZoneRegionStable: "r.region", + corev1.LabelZoneFailureDomainStable: "z.zone", + "kubernetes.io/hostname": "host.name", + "topology.rook.io/rack": "r.rack", + "topology.rook.io/row": "r.row", + "topology.rook.io/datacenter": "d.datacenter", } topology := ExtractOSDTopologyFromLabels(nodeLabels) assert.Equal(t, 6, len(topology)) diff --git a/pkg/operator/k8sutil/node.go b/pkg/operator/k8sutil/node.go index 62c7b7c68..5f44bd29f 100644 --- a/pkg/operator/k8sutil/node.go +++ b/pkg/operator/k8sutil/node.go @@ -285,7 +285,7 @@ func ExtractTopologyFromLabels(labels map[string]string, additionalTopologyIDs [ // check for the region k8s topology label that is GA in 1.17. // TODO: Replace with a const when we update to the K8s 1.17 go-client. - region, ok = labels["topology.kubernetes.io/region"] + region, ok = labels[corev1.LabelZoneRegionStable] if ok { topology[regionLabel] = region } @@ -299,7 +299,7 @@ func ExtractTopologyFromLabels(labels map[string]string, additionalTopologyIDs [ // check for the zone k8s topology label that is GA in 1.17. // TODO: Replace with a const when we update to the K8s 1.17 go-client. - zone, ok = labels["topology.kubernetes.io/zone"] + zone, ok = labels[corev1.LabelZoneFailureDomainStable] if ok { topology[zoneLabel] = zone } diff --git a/pkg/operator/k8sutil/node_test.go b/pkg/operator/k8sutil/node_test.go index 5542bfec4..c6ec0211a 100644 --- a/pkg/operator/k8sutil/node_test.go +++ b/pkg/operator/k8sutil/node_test.go @@ -397,12 +397,12 @@ func TestTopologyLabels(t *testing.T) { // load all the expected labels nodeLabels = map[string]string{ - "topology.kubernetes.io/region": "r1", - "topology.kubernetes.io/zone": "z1", - "kubernetes.io/hostname": "myhost", - "topology.rook.io/rack": "rack1", - "topology.rook.io/row": "row1", - "topology.rook.io/datacenter": "d1", + corev1.LabelZoneRegionStable: "r1", + corev1.LabelZoneFailureDomainStable: "z1", + "kubernetes.io/hostname": "myhost", + "topology.rook.io/rack": "rack1", + "topology.rook.io/row": "row1", + "topology.rook.io/datacenter": "d1", } topology = ExtractTopologyFromLabels(nodeLabels, additionalTopologyLabels) assert.Equal(t, 6, len(topology)) @@ -425,10 +425,10 @@ func TestTopologyLabels(t *testing.T) { // ensure deprecated k8s labels are overridden nodeLabels = map[string]string{ - "topology.kubernetes.io/region": "r1", - "topology.kubernetes.io/zone": "z1", - corev1.LabelZoneRegion: "oldregion", - corev1.LabelZoneFailureDomain: "oldzone", + corev1.LabelZoneRegionStable: "r1", + corev1.LabelZoneFailureDomainStable: "z1", + corev1.LabelZoneRegion: "oldregion", + corev1.LabelZoneFailureDomain: "oldzone", } topology = ExtractTopologyFromLabels(nodeLabels, additionalTopologyLabels) assert.Equal(t, 2, len(topology))