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  }