github.com/operator-framework/operator-lifecycle-manager@v0.30.0/pkg/lib/scopedclient/clientfactory.go (about)

     1  package scopedclient
     2  
     3  import (
     4  	"k8s.io/client-go/dynamic"
     5  	"k8s.io/client-go/rest"
     6  
     7  	"github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/clientset/versioned"
     8  	"github.com/operator-framework/operator-lifecycle-manager/pkg/lib/operatorclient"
     9  )
    10  
    11  // NewFactory returns a new instance of Factory.
    12  func NewFactory(config *rest.Config) *Factory {
    13  	return &Factory{
    14  		config: config,
    15  	}
    16  }
    17  
    18  // Factory holds on to a default config and can create a new client instance(s)
    19  // bound to any bearer token specified.
    20  type Factory struct {
    21  	// default config object from which new client instance(s) will be created.
    22  	config *rest.Config
    23  }
    24  
    25  // NewOperatorClient return a new instance of operator client from the bearer
    26  // token specified.
    27  func (f *Factory) NewOperatorClient(token string) (client operatorclient.ClientInterface, err error) {
    28  	scoped := copy(f.config, token)
    29  	client, err = operatorclient.NewClientFromRestConfig(scoped)
    30  
    31  	return
    32  }
    33  
    34  // NewKubernetesClient return a new instance of CR client from the bearer
    35  // token specified.
    36  func (f *Factory) NewKubernetesClient(token string) (client versioned.Interface, err error) {
    37  	scoped := copy(f.config, token)
    38  	client, err = versioned.NewForConfig(scoped)
    39  
    40  	return
    41  }
    42  
    43  // NewDynamicClient return a new instance of the Dynamic Client from the bearer
    44  // token specified.
    45  func (f *Factory) NewDynamicClient(token string) (dynamicClient dynamic.Interface, err error) {
    46  	scoped := copy(f.config, token)
    47  	dynamicClient, err = dynamic.NewForConfig(scoped)
    48  	return
    49  }
    50  
    51  func copy(config *rest.Config, token string) *rest.Config {
    52  	copied := rest.AnonymousClientConfig(config)
    53  	copied.BearerToken = token
    54  
    55  	return copied
    56  }