From 7ac169941fd566a96f865202465c908e4db1fee5 Mon Sep 17 00:00:00 2001 From: saweber Date: Tue, 7 Nov 2023 09:36:50 -0600 Subject: [PATCH] add fix for GCP instance types that are Nvidia but not Nvidia Tesla Signed-off-by: saweber --- pkg/cloud/gcp/provider.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/pkg/cloud/gcp/provider.go b/pkg/cloud/gcp/provider.go index b27763ce9..7b80aab54 100644 --- a/pkg/cloud/gcp/provider.go +++ b/pkg/cloud/gcp/provider.go @@ -86,7 +86,8 @@ var gcpRegions = []string{ } var ( - nvidiaGPURegex = regexp.MustCompile("(Nvidia Tesla [^ ]+) ") + nvidiaTeslaGPURegex = regexp.MustCompile("(Nvidia Tesla [^ ]+) ") + nvidiaGPURegex = regexp.MustCompile("(Nvidia [^ ]+) ") // gce://guestbook-12345/... // => guestbook-12345 gceRegex = regexp.MustCompile("gce://([^/]*)/*") @@ -772,13 +773,23 @@ func (gcp *GCP) parsePage(r io.Reader, inputKeys map[string]models.Key, pvKeys m } var gpuType string - for matchnum, group := range nvidiaGPURegex.FindStringSubmatch(product.Description) { + for matchnum, group := range nvidiaTeslaGPURegex.FindStringSubmatch(product.Description) { if matchnum == 1 { gpuType = strings.ToLower(strings.Join(strings.Split(group, " "), "-")) log.Debugf("GCP Billing API: GPU type found: '%s'", gpuType) } } + // If a 'Nvidia Tesla' is not found, try 'Nvidia' + if gpuType == "" { + for matchnum, group := range nvidiaGPURegex.FindStringSubmatch(product.Description) { + if matchnum == 1 { + gpuType = strings.ToLower(strings.Join(strings.Split(group, " "), "-")) + log.Debugf("GCP Billing API: GPU type found: '%s'", gpuType) + } + } + } + candidateKeys := []string{} if gcp.ValidPricingKeys == nil { gcp.ValidPricingKeys = make(map[string]bool)