From 518844fd25f593326340d936bab3cedda0f7dda9 Mon Sep 17 00:00:00 2001 From: Divyen Patel Date: Fri, 28 May 2021 12:31:48 -0700 Subject: [PATCH] use GA topology labels for vsphere --- pkg/volume/vsphere_volume/vsphere_volume.go | 2 +- .../plugins/vsphere_volume_test.go | 15 +++++++++++++++ .../legacy-cloud-providers/vsphere/nodemanager.go | 4 ++-- .../legacy-cloud-providers/vsphere/vsphere.go | 4 ++-- test/e2e/storage/vsphere/vsphere_utils.go | 2 +- test/e2e/storage/vsphere/vsphere_zone_support.go | 4 ++-- 6 files changed, 23 insertions(+), 8 deletions(-) diff --git a/pkg/volume/vsphere_volume/vsphere_volume.go b/pkg/volume/vsphere_volume/vsphere_volume.go index e0fba03aad8..e06473549ca 100644 --- a/pkg/volume/vsphere_volume/vsphere_volume.go +++ b/pkg/volume/vsphere_volume/vsphere_volume.go @@ -433,7 +433,7 @@ func (v *vsphereVolumeProvisioner) Provision(selectedNode *v1.Node, allowedTopol for k, v := range labels { pv.Labels[k] = v var values []string - if k == v1.LabelFailureDomainBetaZone { + if k == v1.LabelTopologyZone || k == v1.LabelFailureDomainBetaZone { values, err = volumehelpers.LabelZonesToList(v) if err != nil { return nil, fmt.Errorf("failed to convert label string for Zone: %s to a List: %v", v, err) diff --git a/staging/src/k8s.io/csi-translation-lib/plugins/vsphere_volume_test.go b/staging/src/k8s.io/csi-translation-lib/plugins/vsphere_volume_test.go index e24cd32948d..78c877b761c 100644 --- a/staging/src/k8s.io/csi-translation-lib/plugins/vsphere_volume_test.go +++ b/staging/src/k8s.io/csi-translation-lib/plugins/vsphere_volume_test.go @@ -29,6 +29,16 @@ import ( func TestTranslatevSphereInTreeStorageClassToCSI(t *testing.T) { translator := NewvSphereCSITranslator() topologySelectorTerm := v1.TopologySelectorTerm{[]v1.TopologySelectorLabelRequirement{ + { + Key: v1.LabelTopologyZone, + Values: []string{"zone-a"}, + }, + { + Key: v1.LabelTopologyRegion, + Values: []string{"region-a"}, + }, + }} + topologySelectorTermWithBetaLabels := v1.TopologySelectorTerm{[]v1.TopologySelectorLabelRequirement{ { Key: v1.LabelFailureDomainBetaZone, Values: []string{"zone-a"}, @@ -85,6 +95,11 @@ func TestTranslatevSphereInTreeStorageClassToCSI(t *testing.T) { sc: NewStorageClass(map[string]string{"storagepolicyname": "test-policy-name"}, []v1.TopologySelectorTerm{topologySelectorTerm}), expSc: NewStorageClass(map[string]string{"storagepolicyname": "test-policy-name", paramcsiMigration: "true"}, []v1.TopologySelectorTerm{topologySelectorTerm}), }, + { + name: "translate with storagepolicyname and allowedTopology beta labels", + sc: NewStorageClass(map[string]string{"storagepolicyname": "test-policy-name"}, []v1.TopologySelectorTerm{topologySelectorTermWithBetaLabels}), + expSc: NewStorageClass(map[string]string{"storagepolicyname": "test-policy-name", paramcsiMigration: "true"}, []v1.TopologySelectorTerm{topologySelectorTermWithBetaLabels}), + }, { name: "translate with raw vSAN policy parameters, datastore and diskformat", sc: NewStorageClass(map[string]string{"hostfailurestotolerate": "2", "datastore": "vsanDatastore", "diskformat": "thin"}, []v1.TopologySelectorTerm{topologySelectorTerm}), diff --git a/staging/src/k8s.io/legacy-cloud-providers/vsphere/nodemanager.go b/staging/src/k8s.io/legacy-cloud-providers/vsphere/nodemanager.go index 791c9e204f7..9ce1231a4ba 100644 --- a/staging/src/k8s.io/legacy-cloud-providers/vsphere/nodemanager.go +++ b/staging/src/k8s.io/legacy-cloud-providers/vsphere/nodemanager.go @@ -219,8 +219,8 @@ func (nm *NodeManager) DiscoverNode(node *v1.Node) error { } } // Get the node zone information - nodeFd := node.ObjectMeta.Labels[v1.LabelFailureDomainBetaZone] - nodeRegion := node.ObjectMeta.Labels[v1.LabelFailureDomainBetaRegion] + nodeFd := node.ObjectMeta.Labels[v1.LabelTopologyZone] + nodeRegion := node.ObjectMeta.Labels[v1.LabelTopologyRegion] nodeZone := &cloudprovider.Zone{FailureDomain: nodeFd, Region: nodeRegion} nodeInfo := &NodeInfo{dataCenter: res.datacenter, vm: vm, vcServer: res.vc, vmUUID: nodeUUID, zone: nodeZone} nm.addNodeInfo(node.ObjectMeta.Name, nodeInfo) diff --git a/staging/src/k8s.io/legacy-cloud-providers/vsphere/vsphere.go b/staging/src/k8s.io/legacy-cloud-providers/vsphere/vsphere.go index 350029a04c5..561b4aa015f 100644 --- a/staging/src/k8s.io/legacy-cloud-providers/vsphere/vsphere.go +++ b/staging/src/k8s.io/legacy-cloud-providers/vsphere/vsphere.go @@ -1776,8 +1776,8 @@ func (vs *VSphere) GetVolumeLabels(volumePath string) (map[string]string, error) // FIXME: For now, pick the first zone of datastore as the zone of volume labels := make(map[string]string) if len(dsZones) > 0 { - labels[v1.LabelFailureDomainBetaRegion] = dsZones[0].Region - labels[v1.LabelFailureDomainBetaZone] = dsZones[0].FailureDomain + labels[v1.LabelTopologyRegion] = dsZones[0].Region + labels[v1.LabelTopologyZone] = dsZones[0].FailureDomain } return labels, nil } diff --git a/test/e2e/storage/vsphere/vsphere_utils.go b/test/e2e/storage/vsphere/vsphere_utils.go index a6a4d5f5d6f..276c59bc554 100644 --- a/test/e2e/storage/vsphere/vsphere_utils.go +++ b/test/e2e/storage/vsphere/vsphere_utils.go @@ -226,7 +226,7 @@ func getVSphereStorageClassSpec(name string, scParameters map[string]string, zon term := v1.TopologySelectorTerm{ MatchLabelExpressions: []v1.TopologySelectorLabelRequirement{ { - Key: v1.LabelFailureDomainBetaZone, + Key: v1.LabelTopologyZone, Values: zones, }, }, diff --git a/test/e2e/storage/vsphere/vsphere_zone_support.go b/test/e2e/storage/vsphere/vsphere_zone_support.go index a23d73cbebd..badf227f0ad 100644 --- a/test/e2e/storage/vsphere/vsphere_zone_support.go +++ b/test/e2e/storage/vsphere/vsphere_zone_support.go @@ -369,7 +369,7 @@ var _ = utils.SIGDescribe("Zone Support [Feature:vsphere]", func() { zones = append(zones, zoneA) nodeSelectorMap := map[string]string{ // nodeSelector set as zoneB - v1.LabelFailureDomainBetaZone: zoneB, + v1.LabelTopologyZone: zoneB, } verifyPodSchedulingFails(client, namespace, nodeSelectorMap, scParameters, zones, storagev1.VolumeBindingWaitForFirstConsumer) }) @@ -518,7 +518,7 @@ func verifyPVZoneLabels(client clientset.Interface, timeouts *framework.TimeoutC ginkgo.By("Verify zone information is present in the volume labels") for _, pv := range persistentvolumes { // Multiple zones are separated with "__" - pvZoneLabels := strings.Split(pv.ObjectMeta.Labels["failure-domain.beta.kubernetes.io/zone"], "__") + pvZoneLabels := strings.Split(pv.ObjectMeta.Labels[v1.LabelTopologyZone], "__") for _, zone := range zones { gomega.Expect(pvZoneLabels).Should(gomega.ContainElement(zone), "Incorrect or missing zone labels in pv.") }