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 }