github.com/k8snetworkplumbingwg/sriov-network-operator@v1.2.1-0.20240408194816-2d2e5a45d453/test/util/client/clients.go (about) 1 package client 2 3 import ( 4 "os" 5 6 netattdefv1 "github.com/k8snetworkplumbingwg/network-attachment-definition-client/pkg/apis/k8s.cni.cncf.io/v1" 7 clientconfigv1 "github.com/openshift/client-go/config/clientset/versioned/typed/config/v1" 8 clientmachineconfigv1 "github.com/openshift/machine-config-operator/pkg/generated/clientset/versioned/typed/machineconfiguration.openshift.io/v1" 9 apiext "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" 10 "k8s.io/apimachinery/pkg/runtime" 11 discovery "k8s.io/client-go/discovery" 12 clientgoscheme "k8s.io/client-go/kubernetes/scheme" 13 appsv1client "k8s.io/client-go/kubernetes/typed/apps/v1" 14 corev1client "k8s.io/client-go/kubernetes/typed/core/v1" 15 "k8s.io/client-go/rest" 16 "k8s.io/client-go/tools/clientcmd" 17 runtimeclient "sigs.k8s.io/controller-runtime/pkg/client" 18 "sigs.k8s.io/controller-runtime/pkg/log" 19 20 sriovv1 "github.com/k8snetworkplumbingwg/sriov-network-operator/api/v1" 21 clientsriovv1 "github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/client/clientset/versioned/typed/sriovnetwork/v1" 22 snolog "github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/log" 23 ) 24 25 func init() { 26 snolog.InitLog() 27 } 28 29 // ClientSet provides the struct to talk with relevant API 30 type ClientSet struct { 31 corev1client.CoreV1Interface 32 clientconfigv1.ConfigV1Interface 33 clientmachineconfigv1.MachineconfigurationV1Interface 34 35 appsv1client.AppsV1Interface 36 discovery.DiscoveryInterface 37 clientsriovv1.SriovnetworkV1Interface 38 Config *rest.Config 39 runtimeclient.Client 40 } 41 42 // New returns a *ClientBuilder with the given kubeconfig. 43 func New(kubeconfig string) *ClientSet { 44 var config *rest.Config 45 var err error 46 47 if kubeconfig == "" { 48 kubeconfig = os.Getenv("KUBECONFIG") 49 } 50 51 if kubeconfig != "" { 52 log.Log.V(4).Info("Loading kube client config", "path", kubeconfig) 53 config, err = clientcmd.BuildConfigFromFlags("", kubeconfig) 54 } else { 55 log.Log.V(4).Info("Using in-cluster kube client config") 56 config, err = rest.InClusterConfig() 57 } 58 if err != nil { 59 log.Log.Error(err, "Error while building client config") 60 return nil 61 } 62 63 clientSet := &ClientSet{} 64 clientSet.CoreV1Interface = corev1client.NewForConfigOrDie(config) 65 clientSet.ConfigV1Interface = clientconfigv1.NewForConfigOrDie(config) 66 clientSet.MachineconfigurationV1Interface = clientmachineconfigv1.NewForConfigOrDie(config) 67 clientSet.AppsV1Interface = appsv1client.NewForConfigOrDie(config) 68 clientSet.DiscoveryInterface = discovery.NewDiscoveryClientForConfigOrDie(config) 69 clientSet.SriovnetworkV1Interface = clientsriovv1.NewForConfigOrDie(config) 70 clientSet.Config = config 71 72 crScheme := runtime.NewScheme() 73 clientgoscheme.AddToScheme(crScheme) 74 netattdefv1.SchemeBuilder.AddToScheme(crScheme) 75 sriovv1.AddToScheme(crScheme) 76 apiext.AddToScheme(crScheme) 77 78 clientSet.Client, err = runtimeclient.New(config, runtimeclient.Options{ 79 Scheme: crScheme, 80 }) 81 if err != nil { 82 log.Log.Error(err, "Error while creating ClientSet") 83 return nil 84 } 85 return clientSet 86 }