@@ -467,6 +467,23 @@ func TestExpose(t *testing.T) {
467467 daemonSet ,
468468 scObj ,
469469 },
470+ expectedAffinity : & corev1api.Affinity {
471+ NodeAffinity : & corev1api.NodeAffinity {
472+ RequiredDuringSchedulingIgnoredDuringExecution : & corev1api.NodeSelector {
473+ NodeSelectorTerms : []corev1api.NodeSelectorTerm {
474+ {
475+ MatchExpressions : []corev1api.NodeSelectorRequirement {
476+ {
477+ Key : "kubernetes.io/os" ,
478+ Operator : corev1api .NodeSelectorOpNotIn ,
479+ Values : []string {"windows" },
480+ },
481+ },
482+ },
483+ },
484+ },
485+ },
486+ },
470487 },
471488 {
472489 name : "success-with-labels" ,
@@ -488,6 +505,23 @@ func TestExpose(t *testing.T) {
488505 daemonSet ,
489506 scObj ,
490507 },
508+ expectedAffinity : & corev1api.Affinity {
509+ NodeAffinity : & corev1api.NodeAffinity {
510+ RequiredDuringSchedulingIgnoredDuringExecution : & corev1api.NodeSelector {
511+ NodeSelectorTerms : []corev1api.NodeSelectorTerm {
512+ {
513+ MatchExpressions : []corev1api.NodeSelectorRequirement {
514+ {
515+ Key : "kubernetes.io/os" ,
516+ Operator : corev1api .NodeSelectorOpNotIn ,
517+ Values : []string {"windows" },
518+ },
519+ },
520+ },
521+ },
522+ },
523+ },
524+ },
491525 },
492526 {
493527 name : "restore size from exposeParam" ,
@@ -511,6 +545,23 @@ func TestExpose(t *testing.T) {
511545 scObj ,
512546 },
513547 expectedVolumeSize : resource .NewQuantity (567890 , "" ),
548+ expectedAffinity : & corev1api.Affinity {
549+ NodeAffinity : & corev1api.NodeAffinity {
550+ RequiredDuringSchedulingIgnoredDuringExecution : & corev1api.NodeSelector {
551+ NodeSelectorTerms : []corev1api.NodeSelectorTerm {
552+ {
553+ MatchExpressions : []corev1api.NodeSelectorRequirement {
554+ {
555+ Key : "kubernetes.io/os" ,
556+ Operator : corev1api .NodeSelectorOpNotIn ,
557+ Values : []string {"windows" },
558+ },
559+ },
560+ },
561+ },
562+ },
563+ },
564+ },
514565 },
515566 {
516567 name : "backupPod mounts read only backupPVC" ,
@@ -539,6 +590,23 @@ func TestExpose(t *testing.T) {
539590 scObj ,
540591 },
541592 expectedReadOnlyPVC : true ,
593+ expectedAffinity : & corev1api.Affinity {
594+ NodeAffinity : & corev1api.NodeAffinity {
595+ RequiredDuringSchedulingIgnoredDuringExecution : & corev1api.NodeSelector {
596+ NodeSelectorTerms : []corev1api.NodeSelectorTerm {
597+ {
598+ MatchExpressions : []corev1api.NodeSelectorRequirement {
599+ {
600+ Key : "kubernetes.io/os" ,
601+ Operator : corev1api .NodeSelectorOpNotIn ,
602+ Values : []string {"windows" },
603+ },
604+ },
605+ },
606+ },
607+ },
608+ },
609+ },
542610 },
543611 {
544612 name : "backupPod mounts read only backupPVC and storageClass specified in backupPVC config" ,
@@ -568,6 +636,23 @@ func TestExpose(t *testing.T) {
568636 },
569637 expectedReadOnlyPVC : true ,
570638 expectedBackupPVCStorageClass : "fake-sc-read-only" ,
639+ expectedAffinity : & corev1api.Affinity {
640+ NodeAffinity : & corev1api.NodeAffinity {
641+ RequiredDuringSchedulingIgnoredDuringExecution : & corev1api.NodeSelector {
642+ NodeSelectorTerms : []corev1api.NodeSelectorTerm {
643+ {
644+ MatchExpressions : []corev1api.NodeSelectorRequirement {
645+ {
646+ Key : "kubernetes.io/os" ,
647+ Operator : corev1api .NodeSelectorOpNotIn ,
648+ Values : []string {"windows" },
649+ },
650+ },
651+ },
652+ },
653+ },
654+ },
655+ },
571656 },
572657 {
573658 name : "backupPod mounts backupPVC with storageClass specified in backupPVC config" ,
@@ -595,6 +680,23 @@ func TestExpose(t *testing.T) {
595680 scObj ,
596681 },
597682 expectedBackupPVCStorageClass : "fake-sc-read-only" ,
683+ expectedAffinity : & corev1api.Affinity {
684+ NodeAffinity : & corev1api.NodeAffinity {
685+ RequiredDuringSchedulingIgnoredDuringExecution : & corev1api.NodeSelector {
686+ NodeSelectorTerms : []corev1api.NodeSelectorTerm {
687+ {
688+ MatchExpressions : []corev1api.NodeSelectorRequirement {
689+ {
690+ Key : "kubernetes.io/os" ,
691+ Operator : corev1api .NodeSelectorOpNotIn ,
692+ Values : []string {"windows" },
693+ },
694+ },
695+ },
696+ },
697+ },
698+ },
699+ },
598700 },
599701 {
600702 name : "Affinity per StorageClass" ,
@@ -641,6 +743,11 @@ func TestExpose(t *testing.T) {
641743 Operator : corev1api .NodeSelectorOpIn ,
642744 Values : []string {"Linux" },
643745 },
746+ {
747+ Key : "kubernetes.io/os" ,
748+ Operator : corev1api .NodeSelectorOpNotIn ,
749+ Values : []string {"windows" },
750+ },
644751 },
645752 },
646753 },
@@ -699,6 +806,11 @@ func TestExpose(t *testing.T) {
699806 Operator : corev1api .NodeSelectorOpIn ,
700807 Values : []string {"amd64" },
701808 },
809+ {
810+ Key : "kubernetes.io/os" ,
811+ Operator : corev1api .NodeSelectorOpNotIn ,
812+ Values : []string {"windows" },
813+ },
702814 },
703815 },
704816 },
@@ -733,7 +845,23 @@ func TestExpose(t *testing.T) {
733845 scObj ,
734846 },
735847 expectedBackupPVCStorageClass : "fake-sc-read-only" ,
736- expectedAffinity : nil ,
848+ expectedAffinity : & corev1api.Affinity {
849+ NodeAffinity : & corev1api.NodeAffinity {
850+ RequiredDuringSchedulingIgnoredDuringExecution : & corev1api.NodeSelector {
851+ NodeSelectorTerms : []corev1api.NodeSelectorTerm {
852+ {
853+ MatchExpressions : []corev1api.NodeSelectorRequirement {
854+ {
855+ Key : "kubernetes.io/os" ,
856+ Operator : corev1api .NodeSelectorOpNotIn ,
857+ Values : []string {"windows" },
858+ },
859+ },
860+ },
861+ },
862+ },
863+ },
864+ },
737865 },
738866 {
739867 name : "IntolerateSourceNode, get source node fail" ,
@@ -770,7 +898,23 @@ func TestExpose(t *testing.T) {
770898 },
771899 },
772900 },
773- expectedAffinity : nil ,
901+ expectedAffinity : & corev1api.Affinity {
902+ NodeAffinity : & corev1api.NodeAffinity {
903+ RequiredDuringSchedulingIgnoredDuringExecution : & corev1api.NodeSelector {
904+ NodeSelectorTerms : []corev1api.NodeSelectorTerm {
905+ {
906+ MatchExpressions : []corev1api.NodeSelectorRequirement {
907+ {
908+ Key : "kubernetes.io/os" ,
909+ Operator : corev1api .NodeSelectorOpNotIn ,
910+ Values : []string {"windows" },
911+ },
912+ },
913+ },
914+ },
915+ },
916+ },
917+ },
774918 expectedPVCAnnotation : nil ,
775919 },
776920 {
@@ -799,7 +943,23 @@ func TestExpose(t *testing.T) {
799943 daemonSet ,
800944 scObj ,
801945 },
802- expectedAffinity : nil ,
946+ expectedAffinity : & corev1api.Affinity {
947+ NodeAffinity : & corev1api.NodeAffinity {
948+ RequiredDuringSchedulingIgnoredDuringExecution : & corev1api.NodeSelector {
949+ NodeSelectorTerms : []corev1api.NodeSelectorTerm {
950+ {
951+ MatchExpressions : []corev1api.NodeSelectorRequirement {
952+ {
953+ Key : "kubernetes.io/os" ,
954+ Operator : corev1api .NodeSelectorOpNotIn ,
955+ Values : []string {"windows" },
956+ },
957+ },
958+ },
959+ },
960+ },
961+ },
962+ },
803963 expectedPVCAnnotation : map [string ]string {util .VSphereCNSFastCloneAnno : "true" },
804964 },
805965 {
@@ -836,6 +996,11 @@ func TestExpose(t *testing.T) {
836996 NodeSelectorTerms : []corev1api.NodeSelectorTerm {
837997 {
838998 MatchExpressions : []corev1api.NodeSelectorRequirement {
999+ {
1000+ Key : "kubernetes.io/os" ,
1001+ Operator : corev1api .NodeSelectorOpNotIn ,
1002+ Values : []string {"windows" },
1003+ },
8391004 {
8401005 Key : "kubernetes.io/hostname" ,
8411006 Operator : corev1api .NodeSelectorOpNotIn ,
@@ -929,6 +1094,8 @@ func TestExpose(t *testing.T) {
9291094
9301095 if test .expectedAffinity != nil {
9311096 assert .Equal (t , test .expectedAffinity , backupPod .Spec .Affinity )
1097+ } else {
1098+ assert .Nil (t , backupPod .Spec .Affinity )
9321099 }
9331100
9341101 if test .expectedPVCAnnotation != nil {
0 commit comments