@@ -71,7 +71,8 @@ func New(configVarResolver *providerconfig.ConfigVarResolver) cloudprovidertypes
7171}
7272
7373type Config struct {
74- Kubeconfig rest.Config
74+ Kubeconfig string
75+ RestConfig * rest.Config
7576 DNSConfig * corev1.PodDNSConfig
7677 DNSPolicy corev1.DNSPolicy
7778 CPUs string
@@ -132,9 +133,9 @@ func (p *provider) getConfig(s v1alpha1.ProviderSpec) (*Config, *providerconfigt
132133 return nil , nil , err
133134 }
134135 config := Config {}
135- configString , err : = p .configVarResolver .GetConfigVarStringValueOrEnv (rawConfig .Kubeconfig , "KUBEVIRT_KUBECONFIG" )
136+ config . Kubeconfig , err = p .configVarResolver .GetConfigVarStringValueOrEnv (rawConfig .Kubeconfig , "KUBEVIRT_KUBECONFIG" )
136137 if err != nil {
137- return nil , nil , fmt .Errorf (`failed to get value of "config " field: %v` , err )
138+ return nil , nil , fmt .Errorf (`failed to get value of "kubeconfig " field: %v` , err )
138139 }
139140 config .CPUs , err = p .configVarResolver .GetConfigVarStringValue (rawConfig .CPUs )
140141 if err != nil {
@@ -163,11 +164,10 @@ func (p *provider) getConfig(s v1alpha1.ProviderSpec) (*Config, *providerconfigt
163164 if err != nil {
164165 return nil , nil , fmt .Errorf (`failed to get value of "storageClassName" field: %v` , err )
165166 }
166- restConfig , err : = clientcmd .RESTConfigFromKubeConfig ([]byte (configString ))
167+ config . RestConfig , err = clientcmd .RESTConfigFromKubeConfig ([]byte (config . Kubeconfig ))
167168 if err != nil {
168169 return nil , nil , fmt .Errorf ("failed to decode kubeconfig: %v" , err )
169170 }
170- config .Kubeconfig = * restConfig
171171
172172 dnsPolicyString , err := p .configVarResolver .GetConfigVarStringValue (rawConfig .DNSPolicy )
173173 if err != nil {
@@ -194,7 +194,7 @@ func (p *provider) Get(machine *v1alpha1.Machine, _ *cloudprovidertypes.Provider
194194 Message : fmt .Sprintf ("Failed to parse MachineSpec, due to %v" , err ),
195195 }
196196 }
197- sigClient , err := client .New (& c . Kubeconfig , client.Options {})
197+ sigClient , err := client .New (c . RestConfig , client.Options {})
198198 if err != nil {
199199 return nil , fmt .Errorf ("failed to get kubevirt client: %v" , err )
200200 }
@@ -255,7 +255,7 @@ func (p *provider) Validate(spec v1alpha1.MachineSpec) error {
255255 if _ , err := parseResources (c .CPUs , c .Memory ); err != nil {
256256 return err
257257 }
258- sigClient , err := client .New (& c . Kubeconfig , client.Options {})
258+ sigClient , err := client .New (c . RestConfig , client.Options {})
259259 if err != nil {
260260 return fmt .Errorf ("failed to get kubevirt client: %v" , err )
261261 }
@@ -281,7 +281,16 @@ func (p *provider) AddDefaults(spec v1alpha1.MachineSpec) (v1alpha1.MachineSpec,
281281}
282282
283283func (p * provider ) GetCloudConfig (spec v1alpha1.MachineSpec ) (config string , name string , err error ) {
284- return "" , "" , nil
284+ c , _ , err := p .getConfig (spec .ProviderSpec )
285+ if err != nil {
286+ return "" , "" , fmt .Errorf ("failed to parse config: %v" , err )
287+ }
288+ cc := kubevirttypes.CloudConfig {
289+ Kubeconfig : c .Kubeconfig ,
290+ }
291+ ccs , err := cc .String ()
292+
293+ return ccs , string (providerconfigtypes .CloudProviderExternal ), err
285294}
286295
287296func (p * provider ) MachineMetricsLabels (machine * v1alpha1.Machine ) (map [string ]string , error ) {
@@ -425,7 +434,7 @@ func (p *provider) Create(machine *v1alpha1.Machine, _ *cloudprovidertypes.Provi
425434 },
426435 }
427436
428- sigClient , err := client .New (& c . Kubeconfig , client.Options {})
437+ sigClient , err := client .New (c . RestConfig , client.Options {})
429438 if err != nil {
430439 return nil , fmt .Errorf ("failed to get kubevirt client: %v" , err )
431440 }
@@ -458,7 +467,7 @@ func (p *provider) Cleanup(machine *v1alpha1.Machine, _ *cloudprovidertypes.Prov
458467 Message : fmt .Sprintf ("Failed to parse MachineSpec, due to %v" , err ),
459468 }
460469 }
461- sigClient , err := client .New (& c . Kubeconfig , client.Options {})
470+ sigClient , err := client .New (c . RestConfig , client.Options {})
462471 if err != nil {
463472 return false , fmt .Errorf ("failed to get kubevirt client: %v" , err )
464473 }
0 commit comments