@@ -18,15 +18,13 @@ import (
1818type DatumCloudFactory struct {
1919 util.Factory
2020 ConfigFlags * CustomConfigFlags
21- RestConfig * rest.Config
2221}
2322
2423type CustomConfigFlags struct {
2524 * genericclioptions.ConfigFlags
2625 Project * string
2726 Organization * string
28- restConfig * rest.Config
29- tokenSrc oauth2.TokenSource
27+ Context context.Context
3028}
3129
3230func (factory * DatumCloudFactory ) AddFlags (flags * pflag.FlagSet ) {
@@ -36,7 +34,10 @@ func (factory *DatumCloudFactory) AddFlags(flags *pflag.FlagSet) {
3634}
3735
3836func (c * CustomConfigFlags ) ToRESTConfig () (* rest.Config , error ) {
39- config := rest .CopyConfig (c .restConfig )
37+ config , err := c .ConfigFlags .ToRESTConfig ()
38+ if err != nil {
39+ return nil , err
40+ }
4041 if c .APIServer != nil && * c .APIServer != "" {
4142 config .Host = * c .APIServer
4243 }
@@ -47,8 +48,13 @@ func (c *CustomConfigFlags) ToRESTConfig() (*rest.Config, error) {
4748 config .ServerName = * c .TLSServerName
4849 }
4950
51+ tknSrc , err := authutil .GetTokenSource (c .Context )
52+ if err != nil {
53+ return nil , err
54+ }
55+
5056 config .WrapTransport = func (rt http.RoundTripper ) http.RoundTripper {
51- return & oauth2.Transport {Source : c . tokenSrc , Base : rt }
57+ return & oauth2.Transport {Source : tknSrc , Base : rt }
5258 }
5359
5460 apiHostname , err := authutil .GetAPIHostname ()
@@ -71,19 +77,23 @@ func (c *CustomConfigFlags) ToRESTConfig() (*rest.Config, error) {
7177}
7278
7379func (c * CustomConfigFlags ) ToRawKubeConfigLoader () clientcmd.ClientConfig {
80+ restConfig , err := c .ToRESTConfig ()
81+ if err != nil {
82+ panic (err )
83+ }
7484 kubeConfig := & api.Config {
7585 Clusters : map [string ]* api.Cluster {
7686 "inmemory" : {
77- Server : c . restConfig .Host ,
78- CertificateAuthorityData : c . restConfig .CAData ,
79- InsecureSkipTLSVerify : c . restConfig .Insecure ,
87+ Server : restConfig .Host ,
88+ CertificateAuthorityData : restConfig .CAData ,
89+ InsecureSkipTLSVerify : restConfig .Insecure ,
8090 },
8191 },
8292 AuthInfos : map [string ]* api.AuthInfo {
8393 "inmemory" : {
84- Token : c . restConfig .BearerToken ,
85- ClientCertificateData : c . restConfig .CertData ,
86- ClientKeyData : c . restConfig .KeyData ,
94+ Token : restConfig .BearerToken ,
95+ ClientCertificateData : restConfig .CertData ,
96+ ClientKeyData : restConfig .KeyData ,
8797 },
8898 },
8999 Contexts : map [string ]* api.Context {
@@ -127,25 +137,23 @@ func (c *CustomConfigFlags) ToRawKubeConfigLoader() clientcmd.ClientConfig {
127137 return clientcmd .NewDefaultClientConfig (* kubeConfig , overrides )
128138}
129139
130- func NewDatumFactory (ctx context.Context , restConfig * rest. Config ) (* DatumCloudFactory , error ) {
140+ func NewDatumFactory (ctx context.Context ) (* DatumCloudFactory , error ) {
131141 baseConfigFlags := genericclioptions .NewConfigFlags (true )
132142 baseConfigFlags = baseConfigFlags .WithWrapConfigFn (func (* rest.Config ) * rest.Config {
133- return restConfig
143+ config , err := NewRestConfig (ctx )
144+ if err != nil {
145+ panic (err )
146+ }
147+ return config
134148 })
135149 baseConfigFlags .KubeConfig = nil
136150 baseConfigFlags .CacheDir = nil
137151 baseConfigFlags .KeyFile = nil
138152 baseConfigFlags .CertFile = nil
139153 baseConfigFlags .ClusterName = nil
140154 baseConfigFlags .Context = nil
141- tknSrc , err := authutil .GetTokenSource (ctx )
142- if err != nil {
143- return nil , err
144- }
145155 configFlags := & CustomConfigFlags {
146156 ConfigFlags : baseConfigFlags ,
147- restConfig : restConfig ,
148- tokenSrc : tknSrc ,
149157 Project : func () * string {
150158 m := ""
151159 return & m
@@ -159,6 +167,5 @@ func NewDatumFactory(ctx context.Context, restConfig *rest.Config) (*DatumCloudF
159167 return & DatumCloudFactory {
160168 Factory : f ,
161169 ConfigFlags : configFlags ,
162- RestConfig : restConfig ,
163170 }, nil
164171}
0 commit comments