diff --git a/pkg/cloud/gcp/actuators/machine/reconciler.go b/pkg/cloud/gcp/actuators/machine/reconciler.go index 8583a80cc..4718a0db2 100644 --- a/pkg/cloud/gcp/actuators/machine/reconciler.go +++ b/pkg/cloud/gcp/actuators/machine/reconciler.go @@ -149,11 +149,15 @@ func (r *Reconciler) create() error { } var guestAccelerators = []*compute.AcceleratorConfig{} - // guestAccelerators slice can not be longer than 1 - guestAccelerators = append(guestAccelerators, &compute.AcceleratorConfig{ - AcceleratorType: fmt.Sprintf(acceleratorTypeFmt, zone, r.providerSpec.GuestAccelerators[0].AcceleratorType), - AcceleratorCount: r.providerSpec.GuestAccelerators[0].AcceleratorCount, - }) + + if l := len(r.providerSpec.GuestAccelerators); l == 1 { + guestAccelerators = append(guestAccelerators, &compute.AcceleratorConfig{ + AcceleratorType: fmt.Sprintf(acceleratorTypeFmt, zone, r.providerSpec.GuestAccelerators[0].AcceleratorType), + AcceleratorCount: r.providerSpec.GuestAccelerators[0].AcceleratorCount, + }) + } else if l > 1 { + return machinecontroller.InvalidMachineConfiguration(fmt.Sprint("More than one type of accelerator provided. Instances support only one accelerator type at a time.")) + } instance.GuestAccelerators = guestAccelerators