From 419fdf92c8b10aa3c75a55639ad7c1591beeed13 Mon Sep 17 00:00:00 2001 From: Tibor Dancs Date: Fri, 12 Sep 2025 12:33:16 +0200 Subject: [PATCH 1/2] chore(go): update regexes, excluding machine families with no nested-virt support Signed-off-by: Tibor Dancs --- pkg/provider/azure/data/compute-request.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/provider/azure/data/compute-request.go b/pkg/provider/azure/data/compute-request.go index d9b0fc719..31dd529ee 100644 --- a/pkg/provider/azure/data/compute-request.go +++ b/pkg/provider/azure/data/compute-request.go @@ -17,11 +17,11 @@ import ( const ( // standard D,E and F series are the VM families // supporting nested virtualization - dSeriesPattern = `standardD.*v[3-6]Family$` - eSeriesPattern = `standardE.*v[3-6]Family$` - fSeriesPattern = `standardF.*v\dFamily$` + dSeriesPattern = `^[Ss]tandardD(?!CSv3Family)(?!Av4Family)(?!ASv4Family).*v[3-6]Family$` + eSeriesPattern = `^[Ss]tandardE(?!Av4Family)(?!ASv4Family).*v[3-6]Family$` + fSeriesPattern = `^[Ss]tandardF.*v\dFamily$` // - lowerCpuPattern = `Standard.*-.*_v\d$` + lowerCpuPattern = `^[Ss]tandard.*-.*_v\d$` ) type ComputeSelector struct{} From a1db07d27bfaed8d6854eda6fef1e3b39e95c438 Mon Sep 17 00:00:00 2001 From: Tibor Dancs Date: Fri, 12 Sep 2025 13:03:06 +0200 Subject: [PATCH 2/2] chore(go): fixing perl-style regex into re2 compatible exclude Signed-off-by: Tibor Dancs --- pkg/provider/azure/data/compute-request.go | 29 +++++++++++++++------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/pkg/provider/azure/data/compute-request.go b/pkg/provider/azure/data/compute-request.go index 31dd529ee..e2655f067 100644 --- a/pkg/provider/azure/data/compute-request.go +++ b/pkg/provider/azure/data/compute-request.go @@ -17,9 +17,10 @@ import ( const ( // standard D,E and F series are the VM families // supporting nested virtualization - dSeriesPattern = `^[Ss]tandardD(?!CSv3Family)(?!Av4Family)(?!ASv4Family).*v[3-6]Family$` - eSeriesPattern = `^[Ss]tandardE(?!Av4Family)(?!ASv4Family).*v[3-6]Family$` - fSeriesPattern = `^[Ss]tandardF.*v\dFamily$` + excludedFamilies = "Av4Family,ASv4Family,CSv3Family" + dSeriesPattern = `^[Ss]tandardD.*v[3-6]Family$` + eSeriesPattern = `^[Ss]tandardE.*v[3-6]Family$` + fSeriesPattern = `^[Ss]tandardF.*v\dFamily$` // lowerCpuPattern = `^[Ss]tandard.*-.*_v\d$` ) @@ -120,15 +121,25 @@ type virtualMachine struct { func (vm *virtualMachine) nestedVirtSupported() bool { dSeries := regexp.MustCompile(dSeriesPattern) - if dSeries.Match([]byte(vm.Family)) { - return true - } eSeries := regexp.MustCompile(eSeriesPattern) - if eSeries.Match([]byte(vm.Family)) { + fSeries := regexp.MustCompile(fSeriesPattern) + + if (dSeries.Match([]byte(vm.Family)) || + eSeries.Match([]byte(vm.Family)) || + fSeries.Match([]byte(vm.Family))) && !isExcludedFamily(vm.Family) { return true } - fSeries := regexp.MustCompile(fSeriesPattern) - return fSeries.Match([]byte(vm.Family)) + return false +} + +func isExcludedFamily(family string) bool { + excluded := strings.Split(excludedFamilies, ",") + for _, ex := range excluded { + if strings.HasSuffix(family, strings.TrimSpace(ex)) { + return true + } + } + return false } func (vm *virtualMachine) hypervGen2Supported() bool {