@@ -35,6 +35,14 @@ import (
35
35
36
36
const serverSideTimeoutSeconds = 10
37
37
38
+ func deleteDeployment (dep * appsv1.Deployment , ns string ) {
39
+ _ , err := clientset .AppsV1 ().Deployments (ns ).Get (dep .Name , metav1.GetOptions {})
40
+ if err == nil {
41
+ err = clientset .AppsV1 ().Deployments (ns ).Delete (dep .Name , & metav1.DeleteOptions {})
42
+ Expect (err ).NotTo (HaveOccurred ())
43
+ }
44
+ }
45
+
38
46
var _ = Describe ("Client" , func () {
39
47
40
48
var scheme * runtime.Scheme
@@ -81,12 +89,8 @@ var _ = Describe("Client", func() {
81
89
GracePeriodSeconds : & zero ,
82
90
PropagationPolicy : & policy ,
83
91
}
84
- _ , err := clientset .AppsV1 ().Deployments (ns ).Get (dep .Name , metav1.GetOptions {})
85
- if err == nil {
86
- err = clientset .AppsV1 ().Deployments (ns ).Delete (dep .Name , & metav1.DeleteOptions {})
87
- Expect (err ).NotTo (HaveOccurred ())
88
- }
89
- _ , err = clientset .CoreV1 ().Nodes ().Get (node .Name , metav1.GetOptions {})
92
+ deleteDeployment (dep , ns )
93
+ _ , err := clientset .CoreV1 ().Nodes ().Get (node .Name , metav1.GetOptions {})
90
94
if err == nil {
91
95
err = clientset .CoreV1 ().Nodes ().Delete (node .Name , delOptions )
92
96
Expect (err ).NotTo (HaveOccurred ())
@@ -626,8 +630,7 @@ var _ = Describe("Client", func() {
626
630
})
627
631
628
632
Describe ("List" , func () {
629
- It ("should fetch collection of objects" , func () {
630
-
633
+ It ("should fetch collection of objects" , func (done Done ) {
631
634
By ("creating an initial object" )
632
635
dep , err := clientset .AppsV1 ().Deployments (ns ).Create (dep )
633
636
Expect (err ).NotTo (HaveOccurred ())
@@ -648,23 +651,184 @@ var _ = Describe("Client", func() {
648
651
}
649
652
}
650
653
Expect (hasDep ).To (BeTrue ())
651
- })
652
654
653
- It ("should return an empty list if there are no matching objects" , func () {
655
+ close (done )
656
+ }, serverSideTimeoutSeconds )
654
657
655
- })
658
+ It ("should return an empty list if there are no matching objects" , func (done Done ) {
659
+ cl , err := client .New (cfg , client.Options {})
660
+ Expect (err ).NotTo (HaveOccurred ())
656
661
657
- It ("should filter results by label selector" , func () {
662
+ By ("listing all Deployments in the cluster" )
663
+ deps := & appsv1.DeploymentList {}
664
+ Expect (cl .List (context .Background (), nil , deps )).NotTo (HaveOccurred ())
658
665
659
- })
666
+ By ("validating no Deployments are returned" )
667
+ Expect (deps .Items ).To (BeEmpty ())
660
668
661
- It ("should filter results by namespace selector" , func () {
669
+ close (done )
670
+ }, serverSideTimeoutSeconds )
662
671
663
- })
672
+ It ("should filter results by label selector" , func (done Done ) {
673
+ By ("creating a Deployment with the app=frontend label" )
674
+ depFrontend := & appsv1.Deployment {
675
+ ObjectMeta : metav1.ObjectMeta {Name : "deployment-frontend" , Namespace : ns },
676
+ Spec : appsv1.DeploymentSpec {
677
+ Selector : & metav1.LabelSelector {
678
+ MatchLabels : map [string ]string {"app" : "frontend" },
679
+ },
680
+ Template : corev1.PodTemplateSpec {
681
+ ObjectMeta : metav1.ObjectMeta {Labels : map [string ]string {"app" : "frontend" }},
682
+ Spec : corev1.PodSpec {Containers : []corev1.Container {{Name : "nginx" , Image : "nginx" }}},
683
+ },
684
+ },
685
+ }
686
+ depFrontend , err := clientset .AppsV1 ().Deployments (ns ).Create (depFrontend )
687
+ Expect (err ).NotTo (HaveOccurred ())
688
+
689
+ By ("creating a Deployment with the app=backend label" )
690
+ depBackend := & appsv1.Deployment {
691
+ ObjectMeta : metav1.ObjectMeta {Name : "deployment-backend" , Namespace : ns },
692
+ Spec : appsv1.DeploymentSpec {
693
+ Selector : & metav1.LabelSelector {
694
+ MatchLabels : map [string ]string {"app" : "backend" },
695
+ },
696
+ Template : corev1.PodTemplateSpec {
697
+ ObjectMeta : metav1.ObjectMeta {Labels : map [string ]string {"app" : "backend" }},
698
+ Spec : corev1.PodSpec {Containers : []corev1.Container {{Name : "nginx" , Image : "nginx" }}},
699
+ },
700
+ },
701
+ }
702
+ depBackend , err = clientset .AppsV1 ().Deployments (ns ).Create (depBackend )
703
+ Expect (err ).NotTo (HaveOccurred ())
664
704
665
- It ("should filter results by field selector" , func () {
705
+ cl , err := client .New (cfg , client.Options {})
706
+ Expect (err ).NotTo (HaveOccurred ())
666
707
667
- })
708
+ By ("listing all Deployments with label app=backend" )
709
+ deps := & appsv1.DeploymentList {}
710
+ labels := map [string ]string {"app" : "backend" }
711
+ lo := client .MatchingLabels (labels )
712
+ Expect (cl .List (context .Background (), lo , deps )).NotTo (HaveOccurred ())
713
+
714
+ By ("only the Deployment with the backend label is returned" )
715
+ Expect (deps .Items ).NotTo (BeEmpty ())
716
+ Expect (1 ).To (Equal (len (deps .Items )))
717
+ actual := deps .Items [0 ]
718
+ Expect (actual .Name ).To (Equal ("deployment-backend" ))
719
+
720
+ deleteDeployment (depFrontend , ns )
721
+ deleteDeployment (depBackend , ns )
722
+
723
+ close (done )
724
+ }, serverSideTimeoutSeconds )
725
+
726
+ It ("should filter results by namespace selector" , func (done Done ) {
727
+ By ("creating a Deployment in test-namespace-1" )
728
+ depFrontend := & appsv1.Deployment {
729
+ ObjectMeta : metav1.ObjectMeta {Name : "deployment-frontend" , Namespace : "test-namespace-1" },
730
+ Spec : appsv1.DeploymentSpec {
731
+ Selector : & metav1.LabelSelector {
732
+ MatchLabels : map [string ]string {"app" : "frontend" },
733
+ },
734
+ Template : corev1.PodTemplateSpec {
735
+ ObjectMeta : metav1.ObjectMeta {Labels : map [string ]string {"app" : "frontend" }},
736
+ Spec : corev1.PodSpec {Containers : []corev1.Container {{Name : "nginx" , Image : "nginx" }}},
737
+ },
738
+ },
739
+ }
740
+ depFrontend , err := clientset .AppsV1 ().Deployments ("test-namespace-1" ).Create (depFrontend )
741
+ Expect (err ).NotTo (HaveOccurred ())
742
+
743
+ By ("creating a Deployment in test-namespace-2" )
744
+ depBackend := & appsv1.Deployment {
745
+ ObjectMeta : metav1.ObjectMeta {Name : "deployment-backend" , Namespace : "test-namespace-2" },
746
+ Spec : appsv1.DeploymentSpec {
747
+ Selector : & metav1.LabelSelector {
748
+ MatchLabels : map [string ]string {"app" : "backend" },
749
+ },
750
+ Template : corev1.PodTemplateSpec {
751
+ ObjectMeta : metav1.ObjectMeta {Labels : map [string ]string {"app" : "backend" }},
752
+ Spec : corev1.PodSpec {Containers : []corev1.Container {{Name : "nginx" , Image : "nginx" }}},
753
+ },
754
+ },
755
+ }
756
+ depBackend , err = clientset .AppsV1 ().Deployments ("test-namespace-2" ).Create (depBackend )
757
+ Expect (err ).NotTo (HaveOccurred ())
758
+
759
+ cl , err := client .New (cfg , client.Options {})
760
+ Expect (err ).NotTo (HaveOccurred ())
761
+
762
+ By ("listing all Deployments in test-namespace-1" )
763
+ deps := & appsv1.DeploymentList {}
764
+ lo := client .InNamespace ("test-namespace-1" )
765
+ Expect (cl .List (context .Background (), lo , deps )).NotTo (HaveOccurred ())
766
+
767
+ By ("only the Deployment in test-namespace-1 is returned" )
768
+ Expect (deps .Items ).NotTo (BeEmpty ())
769
+ Expect (1 ).To (Equal (len (deps .Items )))
770
+ actual := deps .Items [0 ]
771
+ Expect (actual .Name ).To (Equal ("deployment-frontend" ))
772
+
773
+ deleteDeployment (depFrontend , "test-namespace-1" )
774
+ deleteDeployment (depBackend , "test-namespace-2" )
775
+
776
+ close (done )
777
+ }, serverSideTimeoutSeconds )
778
+
779
+ // TODO(seans): get field selector test working
780
+ // It("should filter results by field selector", func(done Done) {
781
+ // By("creating a Deployment with the app=frontend label")
782
+ // depFrontend := &appsv1.Deployment{
783
+ // ObjectMeta: metav1.ObjectMeta{Name: "deployment-frontend", Namespace: ns},
784
+ // Spec: appsv1.DeploymentSpec{
785
+ // Selector: &metav1.LabelSelector{
786
+ // MatchLabels: map[string]string{"app": "frontend"},
787
+ // },
788
+ // Template: corev1.PodTemplateSpec{
789
+ // ObjectMeta: metav1.ObjectMeta{Labels: map[string]string{"app": "frontend"}},
790
+ // Spec: corev1.PodSpec{Containers: []corev1.Container{{Name: "nginx", Image: "nginx"}}},
791
+ // },
792
+ // },
793
+ // }
794
+ // depFrontend, err := clientset.AppsV1().Deployments(ns).Create(depFrontend)
795
+ // Expect(err).NotTo(HaveOccurred())
796
+
797
+ // By("creating a Deployment with the app=backend label")
798
+ // depBackend := &appsv1.Deployment{
799
+ // ObjectMeta: metav1.ObjectMeta{Name: "deployment-backend", Namespace: ns},
800
+ // Spec: appsv1.DeploymentSpec{
801
+ // Selector: &metav1.LabelSelector{
802
+ // MatchLabels: map[string]string{"app": "backend"},
803
+ // },
804
+ // Template: corev1.PodTemplateSpec{
805
+ // ObjectMeta: metav1.ObjectMeta{Labels: map[string]string{"app": "backend"}},
806
+ // Spec: corev1.PodSpec{Containers: []corev1.Container{{Name: "nginx", Image: "nginx"}}},
807
+ // },
808
+ // },
809
+ // }
810
+ // depBackend, err = clientset.AppsV1().Deployments(ns).Create(depBackend)
811
+ // Expect(err).NotTo(HaveOccurred())
812
+
813
+ // cl, err := client.New(cfg, client.Options{})
814
+ // Expect(err).NotTo(HaveOccurred())
815
+
816
+ // By("listing all Deployments with field metadata.name=deployment-backend")
817
+ // deps := &appsv1.DeploymentList{}
818
+ // lo := client.MatchingField("metadata.name", "deployment-backend")
819
+ // Expect(cl.List(context.Background(), lo, deps)).NotTo(HaveOccurred())
820
+
821
+ // By("only the Deployment with the backend field is returned")
822
+ // Expect(deps.Items).NotTo(BeEmpty())
823
+ // Expect(1).To(Equal(len(deps.Items)))
824
+ // actual := deps.Items[0]
825
+ // Expect(actual.Name).To(Equal("deployment-backend"))
826
+
827
+ // deleteDeployment(depFrontend, ns)
828
+ // deleteDeployment(depBackend, ns)
829
+
830
+ // close(done)
831
+ // }, serverSideTimeoutSeconds)
668
832
669
833
It ("should fail if it cannot get a client" , func () {
670
834
@@ -686,25 +850,43 @@ var _ = Describe("Client", func() {
686
850
Describe ("ListOptions" , func () {
687
851
It ("should be able to set a LabelSelector" , func () {
688
852
lo := & client.ListOptions {}
689
- err := lo .SetLabelSelector ("x in ( foo, bar) " )
853
+ err := lo .SetLabelSelector ("foo= bar" )
690
854
Expect (err ).NotTo (HaveOccurred ())
855
+ Expect (lo .LabelSelector .String ()).To (Equal ("foo=bar" ))
691
856
})
692
857
693
858
It ("should be able to set a FieldSelector" , func () {
694
859
lo := & client.ListOptions {}
695
- err := lo .SetFieldSelector ("field1=foo " )
860
+ err := lo .SetFieldSelector ("field1=bar " )
696
861
Expect (err ).NotTo (HaveOccurred ())
862
+ Expect (lo .FieldSelector .String ()).To (Equal ("field1=bar" ))
697
863
})
698
864
699
865
It ("should be converted to metav1.ListOptions" , func () {
866
+ lo := & client.ListOptions {}
867
+ labels := map [string ]string {"foo" : "bar" }
868
+ mlo := lo .MatchingLabels (labels ).
869
+ MatchingField ("field1" , "bar" ).
870
+ InNamespace ("test-namespace" ).
871
+ AsListOptions ()
872
+ Expect (mlo ).NotTo (BeNil ())
873
+ Expect (mlo .LabelSelector ).To (Equal ("foo=bar" ))
874
+ Expect (mlo .FieldSelector ).To (Equal ("field1=bar" ))
700
875
})
701
876
702
877
It ("should be able to set MatchingLabels" , func () {
703
-
878
+ lo := & client.ListOptions {}
879
+ Expect (lo .LabelSelector ).To (BeNil ())
880
+ labels := map [string ]string {"foo" : "bar" }
881
+ lo = lo .MatchingLabels (labels )
882
+ Expect (lo .LabelSelector .String ()).To (Equal ("foo=bar" ))
704
883
})
705
884
706
885
It ("should be able to set MatchingField" , func () {
707
-
886
+ lo := & client.ListOptions {}
887
+ Expect (lo .FieldSelector ).To (BeNil ())
888
+ lo = lo .MatchingField ("field1" , "bar" )
889
+ Expect (lo .FieldSelector .String ()).To (Equal ("field1=bar" ))
708
890
})
709
891
710
892
It ("should be able to set InNamespace" , func () {
@@ -714,15 +896,22 @@ var _ = Describe("Client", func() {
714
896
})
715
897
716
898
It ("should be created from MatchingLabels" , func () {
717
-
899
+ labels := map [string ]string {"foo" : "bar" }
900
+ lo := client .MatchingLabels (labels )
901
+ Expect (lo ).NotTo (BeNil ())
902
+ Expect (lo .LabelSelector .String ()).To (Equal ("foo=bar" ))
718
903
})
719
904
720
905
It ("should be created from MatchingField" , func () {
721
-
906
+ lo := client .MatchingField ("field1" , "bar" )
907
+ Expect (lo ).NotTo (BeNil ())
908
+ Expect (lo .FieldSelector .String ()).To (Equal ("field1=bar" ))
722
909
})
723
910
724
911
It ("should be created from InNamespace" , func () {
725
-
912
+ lo := client .InNamespace ("test" )
913
+ Expect (lo ).NotTo (BeNil ())
914
+ Expect (lo .Namespace ).To (Equal ("test" ))
726
915
})
727
916
})
728
917
})
0 commit comments