github.com/jenkins-x/jx/v2@v2.1.155/pkg/jxfactory/connector/config_factory.go (about) 1 package connector 2 3 import ( 4 "github.com/heptio/sonobuoy/pkg/dynamic" 5 "github.com/jenkins-x/jx-api/pkg/client/clientset/versioned" 6 "github.com/jenkins-x/jx-logging/pkg/log" 7 "github.com/pkg/errors" 8 tektonclient "github.com/tektoncd/pipeline/pkg/client/clientset/versioned" 9 apiextensionsclientset "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset" 10 "k8s.io/client-go/kubernetes" 11 "k8s.io/client-go/rest" 12 13 // this is so that we load the auth plugins so we can connect to, say, GCP 14 15 _ "k8s.io/client-go/plugin/pkg/client/auth" 16 ) 17 18 // ConfigClientFactory uses the given config to create clients 19 type ConfigClientFactory struct { 20 name string 21 config *rest.Config 22 } 23 24 // NewConfigClientFactory creates a client factory for a given name and config 25 func NewConfigClientFactory(name string, config *rest.Config) *ConfigClientFactory { 26 return &ConfigClientFactory{name, config} 27 } 28 29 // CreateApiExtensionsClient creates an API extensions client 30 func (f *ConfigClientFactory) CreateApiExtensionsClient() (apiextensionsclientset.Interface, error) { 31 client, err := apiextensionsclientset.NewForConfig(f.config) 32 if err != nil { 33 return nil, errors.Wrapf(err, "failed to create ApiExtensionsClient for remote cluster %s", f.name) 34 } 35 log.Logger().Infof("creating ApiExtensionsClient for cluster %s", f.name) 36 return client, nil 37 38 } 39 40 // CreateKubeClient creates a new Kubernetes client 41 func (f *ConfigClientFactory) CreateKubeClient() (kubernetes.Interface, error) { 42 client, err := kubernetes.NewForConfig(f.config) 43 if err != nil { 44 return nil, errors.Wrapf(err, "failed to create KubeClient for remote cluster %s", f.name) 45 } 46 log.Logger().Infof("creating KubeClient for cluster %s", f.name) 47 return client, nil 48 } 49 50 // CreateJXClient creates a new Kubernetes client for Jenkins X CRDs 51 func (f *ConfigClientFactory) CreateJXClient() (versioned.Interface, error) { 52 client, err := versioned.NewForConfig(f.config) 53 if err != nil { 54 return nil, errors.Wrapf(err, "failed to create JXClient for remote cluster %s", f.name) 55 } 56 log.Logger().Infof("creating JXClient for cluster %s", f.name) 57 return client, nil 58 } 59 60 // CreateTektonClient create a new Kubernetes client for Tekton resources 61 func (f *ConfigClientFactory) CreateTektonClient() (tektonclient.Interface, error) { 62 client, err := tektonclient.NewForConfig(f.config) 63 if err != nil { 64 return nil, errors.Wrapf(err, "failed to create TektonClient for remote cluster %s", f.name) 65 } 66 log.Logger().Infof("creating TektonClient for cluster %s", f.name) 67 return client, nil 68 } 69 70 // CreateDynamicClient create a new dynamic client 71 func (f *ConfigClientFactory) CreateDynamicClient() (*dynamic.APIHelper, error) { 72 client, err := dynamic.NewAPIHelperFromRESTConfig(f.config) 73 if err != nil { 74 return nil, err 75 } 76 log.Logger().Infof("creating DynamicClient for cluster %s", f.name) 77 return client, nil 78 }