pkg/util/node: update GetZoneKey to check both beta and GA labels

Signed-off-by: Andrew Sy Kim <kiman@vmware.com>
This commit is contained in:
Andrew Sy Kim 2019-08-28 12:59:09 -04:00
parent 4c194d52da
commit 07229d6c51
4 changed files with 294 additions and 88 deletions

View File

@ -197,6 +197,8 @@ func TestMonitorNodeHealthEvictPods(t *testing.T) {
fakeNow := metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC)
evictionTimeout := 10 * time.Minute
labels := map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
}
@ -234,6 +236,8 @@ func TestMonitorNodeHealthEvictPods(t *testing.T) {
Name: "node0",
CreationTimestamp: fakeNow,
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -244,6 +248,8 @@ func TestMonitorNodeHealthEvictPods(t *testing.T) {
Name: "node1",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -314,6 +320,8 @@ func TestMonitorNodeHealthEvictPods(t *testing.T) {
Name: "node0",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -334,6 +342,8 @@ func TestMonitorNodeHealthEvictPods(t *testing.T) {
Name: "node1",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -378,6 +388,8 @@ func TestMonitorNodeHealthEvictPods(t *testing.T) {
Name: "node0",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -398,6 +410,8 @@ func TestMonitorNodeHealthEvictPods(t *testing.T) {
Name: "node1",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -469,6 +483,8 @@ func TestMonitorNodeHealthEvictPods(t *testing.T) {
Name: "node0",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -489,6 +505,8 @@ func TestMonitorNodeHealthEvictPods(t *testing.T) {
Name: "node1",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -533,6 +551,8 @@ func TestMonitorNodeHealthEvictPods(t *testing.T) {
Name: "node0",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -553,6 +573,8 @@ func TestMonitorNodeHealthEvictPods(t *testing.T) {
Name: "node1",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -597,6 +619,8 @@ func TestMonitorNodeHealthEvictPods(t *testing.T) {
Name: "node0",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -617,6 +641,8 @@ func TestMonitorNodeHealthEvictPods(t *testing.T) {
Name: "node1",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -762,6 +788,8 @@ func TestPodStatusChange(t *testing.T) {
Name: "node0",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -930,6 +958,8 @@ func TestMonitorNodeHealthEvictPodsWithDisruption(t *testing.T) {
Name: "node0",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -950,6 +980,8 @@ func TestMonitorNodeHealthEvictPodsWithDisruption(t *testing.T) {
Name: "node1",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -985,6 +1017,8 @@ func TestMonitorNodeHealthEvictPodsWithDisruption(t *testing.T) {
Name: "node0",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -1005,6 +1039,8 @@ func TestMonitorNodeHealthEvictPodsWithDisruption(t *testing.T) {
Name: "node1",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region2",
v1.LabelZoneFailureDomainStable: "zone2",
v1.LabelZoneRegion: "region2",
v1.LabelZoneFailureDomain: "zone2",
},
@ -1047,6 +1083,8 @@ func TestMonitorNodeHealthEvictPodsWithDisruption(t *testing.T) {
Name: "node0",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -1067,6 +1105,8 @@ func TestMonitorNodeHealthEvictPodsWithDisruption(t *testing.T) {
Name: "node1",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone2",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone2",
},
@ -1108,6 +1148,8 @@ func TestMonitorNodeHealthEvictPodsWithDisruption(t *testing.T) {
Name: "node0",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -1128,6 +1170,8 @@ func TestMonitorNodeHealthEvictPodsWithDisruption(t *testing.T) {
Name: "node-master",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -1167,6 +1211,8 @@ func TestMonitorNodeHealthEvictPodsWithDisruption(t *testing.T) {
Name: "node0",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -1187,6 +1233,8 @@ func TestMonitorNodeHealthEvictPodsWithDisruption(t *testing.T) {
Name: "node1",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone2",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone2",
},
@ -1229,6 +1277,8 @@ func TestMonitorNodeHealthEvictPodsWithDisruption(t *testing.T) {
Name: "node0",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -1249,6 +1299,8 @@ func TestMonitorNodeHealthEvictPodsWithDisruption(t *testing.T) {
Name: "node1",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -1269,6 +1321,8 @@ func TestMonitorNodeHealthEvictPodsWithDisruption(t *testing.T) {
Name: "node2",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -1289,6 +1343,8 @@ func TestMonitorNodeHealthEvictPodsWithDisruption(t *testing.T) {
Name: "node3",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -1309,6 +1365,8 @@ func TestMonitorNodeHealthEvictPodsWithDisruption(t *testing.T) {
Name: "node4",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -2584,6 +2642,8 @@ func TestApplyNoExecuteTaints(t *testing.T) {
Name: "node0",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -2606,6 +2666,8 @@ func TestApplyNoExecuteTaints(t *testing.T) {
Name: "node1",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -2627,6 +2689,8 @@ func TestApplyNoExecuteTaints(t *testing.T) {
Name: "node2",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -2731,6 +2795,8 @@ func TestSwapUnreachableNotReadyTaints(t *testing.T) {
Name: "node0",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -2754,6 +2820,8 @@ func TestSwapUnreachableNotReadyTaints(t *testing.T) {
Name: "node1",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -2880,6 +2948,8 @@ func TestTaintsNodeByCondition(t *testing.T) {
Name: "node0",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -2939,6 +3009,8 @@ func TestTaintsNodeByCondition(t *testing.T) {
Name: "node0",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -2969,6 +3041,8 @@ func TestTaintsNodeByCondition(t *testing.T) {
Name: "node0",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -2999,6 +3073,8 @@ func TestTaintsNodeByCondition(t *testing.T) {
Name: "node0",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -3023,6 +3099,8 @@ func TestTaintsNodeByCondition(t *testing.T) {
Name: "node0",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -3145,6 +3223,8 @@ func TestReconcileNodeLabels(t *testing.T) {
Name: "node0",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegion: "region1",
v1.LabelZoneFailureDomain: "zone1",
},
@ -3201,12 +3281,12 @@ func TestReconcileNodeLabels(t *testing.T) {
Name: "node0",
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
Labels: map[string]string{
v1.LabelZoneRegion: "region1",
v1.LabelZoneRegionStable: "region1",
},
},
},
ExpectedLabels: map[string]string{
v1.LabelZoneRegion: "region1",
v1.LabelZoneRegionStable: "region1",
},
},
{

View File

@ -108,7 +108,30 @@ var allNodes = []*v1.Node{
v1.LabelZoneFailureDomain: "zone-2",
},
},
}}
},
// Node 9: a node with zone + region label and the deprecated zone + region label
{
ObjectMeta: metav1.ObjectMeta{
Name: "node-9",
Labels: map[string]string{
v1.LabelZoneRegionStable: "region-2",
v1.LabelZoneFailureDomainStable: "zone-2",
v1.LabelZoneRegion: "region-2",
v1.LabelZoneFailureDomain: "zone-2",
},
},
},
// Node 10: a node with only the deprecated zone + region labels
{
ObjectMeta: metav1.ObjectMeta{
Name: "node-10",
Labels: map[string]string{
v1.LabelZoneRegion: "region-2",
v1.LabelZoneFailureDomain: "zone-3",
},
},
},
}
func verifyNodeTree(t *testing.T, nt *nodeTree, expectedTree map[string]*nodeArray) {
expectedNumNodes := int(0)
@ -164,6 +187,14 @@ func TestNodeTree_AddNode(t *testing.T) {
"region-2:\x00:zone-2": {[]string{"node-6"}, 0},
},
},
{
name: "nodes also using deprecated zone/region label",
nodesToAdd: allNodes[9:],
expectedTree: map[string]*nodeArray{
"region-2:\x00:zone-2": {[]string{"node-9"}, 0},
"region-2:\x00:zone-3": {[]string{"node-10"}, 0},
},
},
}
for _, test := range tests {
@ -400,7 +431,7 @@ func TestNodeTreeMultiOperations(t *testing.T) {
nodesToAdd: append(allNodes[4:9], allNodes[3]),
nodesToRemove: nil,
operations: []string{"add", "add", "add", "add", "add", "next", "next", "next", "next", "add", "next", "next", "next"},
expectedOutput: []string{"node-4", "node-5", "node-6", "node-7", "node-3", "node-8", "node-4"},
expectedOutput: []string{"node-4", "node-6", "node-7", "node-8", "node-3", "node-4", "node-6"},
},
{
name: "remove zone and add new to ensure exhausted is reset correctly",

View File

@ -139,23 +139,37 @@ func GetNodeIP(client clientset.Interface, hostname string) net.IP {
// GetZoneKey is a helper function that builds a string identifier that is unique per failure-zone;
// it returns empty-string for no zone.
// Since there are currently two separate zone keys:
// * "failure-domain.beta.kubernetes.io/zone"
// * "topology.kubernetes.io/zone"
// GetZoneKey will first check failure-domain.beta.kubernetes.io/zone and if not exists, will then check
// topology.kubernetes.io/zone
func GetZoneKey(node *v1.Node) string {
labels := node.Labels
if labels == nil {
return ""
}
region, _ := labels[v1.LabelZoneRegion]
failureDomain, _ := labels[v1.LabelZoneFailureDomain]
// TODO: prefer stable labels for zone in v1.18
zone, ok := labels[v1.LabelZoneFailureDomain]
if !ok {
zone, _ = labels[v1.LabelZoneFailureDomainStable]
}
if region == "" && failureDomain == "" {
// TODO: prefer stable labels for region in v1.18
region, ok := labels[v1.LabelZoneRegion]
if !ok {
region, _ = labels[v1.LabelZoneRegionStable]
}
if region == "" && zone == "" {
return ""
}
// We include the null character just in case region or failureDomain has a colon
// (We do assume there's no null characters in a region or failureDomain)
// As a nice side-benefit, the null character is not printed by fmt.Print or glog
return region + ":\x00:" + failureDomain
return region + ":\x00:" + zone
}
type nodeForConditionPatch struct {

View File

@ -120,3 +120,84 @@ func TestGetHostname(t *testing.T) {
}
}
func Test_GetZoneKey(t *testing.T) {
tests := []struct {
name string
node *v1.Node
zone string
}{
{
name: "has no zone or region keys",
node: &v1.Node{
ObjectMeta: metav1.ObjectMeta{
Labels: map[string]string{},
},
},
zone: "",
},
{
name: "has beta zone and region keys",
node: &v1.Node{
ObjectMeta: metav1.ObjectMeta{
Labels: map[string]string{
v1.LabelZoneFailureDomain: "zone1",
v1.LabelZoneRegion: "region1",
},
},
},
zone: "region1:\x00:zone1",
},
{
name: "has GA zone and region keys",
node: &v1.Node{
ObjectMeta: metav1.ObjectMeta{
Labels: map[string]string{
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegionStable: "region1",
},
},
},
zone: "region1:\x00:zone1",
},
{
name: "has both beta and GA zone and region keys",
node: &v1.Node{
ObjectMeta: metav1.ObjectMeta{
Labels: map[string]string{
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomain: "zone1",
v1.LabelZoneRegion: "region1",
},
},
},
zone: "region1:\x00:zone1",
},
{
name: "has both beta and GA zone and region keys, beta labels take precedent",
node: &v1.Node{
ObjectMeta: metav1.ObjectMeta{
Labels: map[string]string{
v1.LabelZoneFailureDomainStable: "zone1",
v1.LabelZoneRegionStable: "region1",
v1.LabelZoneFailureDomain: "zone2",
v1.LabelZoneRegion: "region2",
},
},
},
zone: "region2:\x00:zone2",
},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
zone := GetZoneKey(test.node)
if zone != test.zone {
t.Logf("actual zone key: %q", zone)
t.Logf("expected zone key: %q", test.zone)
t.Errorf("unexpected zone key")
}
})
}
}