diff --git a/cluster-autoscaler/cloudprovider/gce/autoscaling_gce_client.go b/cluster-autoscaler/cloudprovider/gce/autoscaling_gce_client.go index c16475bcf14a..50bf738ca1e3 100644 --- a/cluster-autoscaler/cloudprovider/gce/autoscaling_gce_client.go +++ b/cluster-autoscaler/cloudprovider/gce/autoscaling_gce_client.go @@ -453,15 +453,21 @@ func isReservationNotReady(errorCode, errorMessage string) bool { } func isInvalidReservationError(errorCode, errorMessage string) bool { - reservationErrors := []string{ - "Incompatible AggregateReservation VMFamily", - "Could not find the given reservation with the following name", - "must use ReservationAffinity of", - "The reservation must exist in the same project as the instance", - "only compatible with Aggregate Reservations", + regexReservationErrors := []*regexp.Regexp{ + regexp.MustCompile("Incompatible AggregateReservation VMFamily"), + regexp.MustCompile("Could not find the given reservation with the following name"), + regexp.MustCompile("must use ReservationAffinity of"), + regexp.MustCompile("The reservation must exist in the same project as the instance"), + regexp.MustCompile("only compatible with Aggregate Reservations"), + regexp.MustCompile("Please target a reservation with workload_type ="), + regexp.MustCompile("AggregateReservation VMFamily: should be a (.*) VM Family for instance with (.*) machine type"), + regexp.MustCompile("VM Family: (.*) is not supported for aggregate reservations. It must be one of"), + regexp.MustCompile("Reservation (.*) is incorrect for the requested resources"), + regexp.MustCompile("Zone does not currently have sufficient capacity for the requested resources"), + regexp.MustCompile("Reservation (.*) does not have sufficient capacity for the requested resources."), } - for _, rErr := range reservationErrors { - if strings.Contains(errorMessage, rErr) { + for _, re := range regexReservationErrors { + if re.MatchString(errorMessage) { return true } }