@@ -15,8 +15,10 @@ import (
15
15
batchv1 "k8s.io/api/batch/v1"
16
16
corev1 "k8s.io/api/core/v1"
17
17
rbacv1 "k8s.io/api/rbac/v1"
18
+ "k8s.io/apimachinery/pkg/api/errors"
18
19
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
19
20
"k8s.io/apimachinery/pkg/watch"
21
+ "k8s.io/client-go/kubernetes"
20
22
21
23
"github.com/operator-framework/operator-registry/pkg/client"
22
24
"github.com/operator-framework/operator-registry/pkg/configmap"
@@ -754,6 +756,9 @@ var _ = Describe("Launch bundle", func() {
754
756
buildContainer (initImage , imageDirectory + "serve.Dockerfile" , "../../bin" , GinkgoWriter )
755
757
buildContainer (bundleImage , imageDirectory + "bundle.Dockerfile" , imageDirectory , GinkgoWriter )
756
758
759
+ err = maybeLoadKind (kubeclient , GinkgoWriter , initImage , bundleImage )
760
+ Expect (err ).ToNot (HaveOccurred (), "error loading required images into cluster" )
761
+
757
762
By ("creating a batch job" )
758
763
bundleDataConfigMap , job , err := configmap .LaunchBundleImage (kubeclient , bundleImage , initImage , namespace )
759
764
Expect (err ).NotTo (HaveOccurred ())
@@ -816,3 +821,44 @@ var _ = Describe("Launch bundle", func() {
816
821
})
817
822
})
818
823
})
824
+
825
+ const kindControlPlaneNodeName = "kind-control-plane"
826
+
827
+ func isKindCluster (client * kubernetes.Clientset ) (bool , error ) {
828
+ kindNode , err := client .CoreV1 ().Nodes ().Get (context .TODO (), kindControlPlaneNodeName , metav1.GetOptions {})
829
+ if err != nil {
830
+ if errors .IsNotFound (err ) {
831
+ // not a kind cluster
832
+ return false , nil
833
+ }
834
+ // transient error accessing nodes in cluster
835
+ // return an error, failing the test
836
+ return false , fmt .Errorf ("accessing nodes in cluster" )
837
+ }
838
+ if kindNode == nil {
839
+ return true , fmt .Errorf ("finding kind node %s in cluster" , kindControlPlaneNodeName )
840
+ }
841
+ return true , nil
842
+ }
843
+
844
+ // maybeLoadKind loads the built images via kind load docker-image if the test is running in a kind cluster
845
+ func maybeLoadKind (client * kubernetes.Clientset , w io.Writer , images ... string ) error {
846
+ kind , err := isKindCluster (client )
847
+ if err != nil {
848
+ return err
849
+ }
850
+ if ! kind {
851
+ return nil
852
+ }
853
+
854
+ for _ , image := range images {
855
+ cmd := exec .Command ("kind" , "load" , "docker-image" , image )
856
+ cmd .Stderr = w
857
+ cmd .Stdout = w
858
+ err := cmd .Run ()
859
+ if err != nil {
860
+ return err
861
+ }
862
+ }
863
+ return nil
864
+ }
0 commit comments