@@ -176,65 +176,63 @@ func (f *factory) processDriverOpts(deploymentName string, namespace string, cfg
176176
177177 defaultLoad := false
178178 timeout := defaultTimeout
179-
180179 deploymentOpt .Qemu .Image = bkimage .QemuImage
181-
182180 loadbalance := LoadbalanceSticky
183181 var err error
184182
185183 for k , v := range cfg .DriverOpts {
186- switch k {
187- case "image" :
184+ switch {
185+ case k == "image" :
188186 if v != "" {
189187 deploymentOpt .Image = v
190188 }
191- case "namespace" :
189+ case k == "namespace" :
192190 namespace = v
193- case "replicas" :
191+ case k == "replicas" :
194192 deploymentOpt .Replicas , err = strconv .Atoi (v )
195193 if err != nil {
196194 return nil , "" , "" , false , 0 , err
197195 }
198- case "requests.cpu" :
196+ case k == "requests.cpu" :
199197 deploymentOpt .RequestsCPU = v
200- case "requests.memory" :
198+ case k == "requests.memory" :
201199 deploymentOpt .RequestsMemory = v
202- case "requests.ephemeral-storage" :
200+ case k == "requests.ephemeral-storage" :
203201 deploymentOpt .RequestsEphemeralStorage = v
204- case "limits.cpu" :
202+ case k == "limits.cpu" :
205203 deploymentOpt .LimitsCPU = v
206- case "limits.memory" :
204+ case k == "limits.memory" :
207205 deploymentOpt .LimitsMemory = v
208- case "limits.ephemeral-storage" :
206+ case k == "limits.ephemeral-storage" :
209207 deploymentOpt .LimitsEphemeralStorage = v
210- case "rootless" :
208+ case k == "rootless" :
211209 deploymentOpt .Rootless , err = strconv .ParseBool (v )
212210 if err != nil {
213211 return nil , "" , "" , false , 0 , err
214212 }
215213 if _ , isImage := cfg .DriverOpts ["image" ]; ! isImage {
216214 deploymentOpt .Image = bkimage .DefaultRootlessImage
217215 }
218- case "schedulername" :
216+ case k == "schedulername" :
219217 deploymentOpt .SchedulerName = v
220- case "serviceaccount" :
218+ case k == "serviceaccount" :
221219 deploymentOpt .ServiceAccountName = v
222- case "nodeselector" :
220+ case k == "nodeselector" :
223221 deploymentOpt .NodeSelector , err = splitMultiValues (v , "," , "=" )
224222 if err != nil {
225223 return nil , "" , "" , false , 0 , errors .Wrap (err , "cannot parse node selector" )
226224 }
227- case "annotations" :
225+ case k == "annotations" :
228226 deploymentOpt .CustomAnnotations , err = splitMultiValues (v , "," , "=" )
229227 if err != nil {
230228 return nil , "" , "" , false , 0 , errors .Wrap (err , "cannot parse annotations" )
231229 }
232- case "labels" :
230+ case k == "labels" :
233231 deploymentOpt .CustomLabels , err = splitMultiValues (v , "," , "=" )
234232 if err != nil {
235233 return nil , "" , "" , false , 0 , errors .Wrap (err , "cannot parse labels" )
236234 }
237- case "tolerations" :
235+ case k == "tolerations" :
238236 ts := strings .Split (v , ";" )
239237 deploymentOpt .Tolerations = []corev1.Toleration {}
240238 for i := range ts {
@@ -269,42 +267,46 @@ func (f *factory) processDriverOpts(deploymentName string, namespace string, cfg
269267
270268 deploymentOpt .Tolerations = append (deploymentOpt .Tolerations , t )
271269 }
272- case "loadbalance" :
270+ case k == "loadbalance" :
273271 switch v {
274- case LoadbalanceSticky :
275- case LoadbalanceRandom :
272+ case LoadbalanceSticky , LoadbalanceRandom :
273+ loadbalance = v
276274 default :
277275 return nil , "" , "" , false , 0 , errors .Errorf ("invalid loadbalance %q" , v )
278276 }
279- loadbalance = v
280- case "qemu.install" :
277+ case k == "qemu.install" :
281278 deploymentOpt .Qemu .Install , err = strconv .ParseBool (v )
282279 if err != nil {
283280 return nil , "" , "" , false , 0 , err
284281 }
285- case "qemu.image" :
282+ case k == "qemu.image" :
286283 if v != "" {
287284 deploymentOpt .Qemu .Image = v
288285 }
289- case "buildkit-root-volume-memory" :
286+ case k == "buildkit-root-volume-memory" :
290287 if v != "" {
291288 deploymentOpt .BuildKitRootVolumeMemory = v
292289 }
293- case "default-load" :
290+ case k == "default-load" :
294291 defaultLoad , err = strconv .ParseBool (v )
295292 if err != nil {
296293 return nil , "" , "" , false , 0 , err
297294 }
298- case "timeout" :
295+ case k == "timeout" :
299296 timeout , err = time .ParseDuration (v )
300297 if err != nil {
301298 return nil , "" , "" , false , 0 , errors .Wrap (err , "cannot parse timeout" )
302299 }
300+ case strings .HasPrefix (k , "env." ):
301+ envName := strings .TrimPrefix (k , "env." )
302+ if envName == "" {
303+ return nil , "" , "" , false , 0 , errors .Errorf ("invalid env option %q, expecting env.FOO=bar" , k )
304+ }
305+ deploymentOpt .Env = append (deploymentOpt .Env , corev1.EnvVar {Name : envName , Value : v })
303306 default :
304307 return nil , "" , "" , false , 0 , errors .Errorf ("invalid driver option %s for driver %s" , k , DriverName )
305308 }
306309 }
307-
308310 return deploymentOpt , loadbalance , namespace , defaultLoad , timeout , nil
309311}
310312
0 commit comments