From a8de002952dfe59bfc1f4e01f707208d9e900f76 Mon Sep 17 00:00:00 2001 From: "sylvain.boily" Date: Mon, 7 May 2018 20:14:32 -0400 Subject: [PATCH] adding support for VM name with extra Separator String --- .../providers/azure/azure_vmss_cache.go | 12 +++++++++--- .../providers/azure/azure_vmss_cache_test.go | 6 ++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/pkg/cloudprovider/providers/azure/azure_vmss_cache.go b/pkg/cloudprovider/providers/azure/azure_vmss_cache.go index b7f1552d7b7..e224845f30c 100644 --- a/pkg/cloudprovider/providers/azure/azure_vmss_cache.go +++ b/pkg/cloudprovider/providers/azure/azure_vmss_cache.go @@ -47,13 +47,19 @@ func (ss *scaleSet) makeVmssVMName(scaleSetName, instanceID string) string { } func extractVmssVMName(name string) (string, string, error) { - ret := strings.Split(name, vmssNameSeparator) - if len(ret) != 2 { + split := strings.SplitAfter(name, vmssNameSeparator) + if len(split) < 2 { glog.Errorf("Failed to extract vmssVMName %q", name) return "", "", ErrorNotVmssInstance } - return ret[0], ret[1], nil + ssName := strings.Join(split[0:len(split)-1], "") + // removing the trailing `vmssNameSeparator` since we used SplitAfter + ssName = ssName[:len(ssName)-1] + + instanceID := split[len(split)-1] + + return ssName, instanceID, nil } func (ss *scaleSet) newVmssCache() (*timedCache, error) { diff --git a/pkg/cloudprovider/providers/azure/azure_vmss_cache_test.go b/pkg/cloudprovider/providers/azure/azure_vmss_cache_test.go index ad8bc4798a2..b6609a6a2ad 100644 --- a/pkg/cloudprovider/providers/azure/azure_vmss_cache_test.go +++ b/pkg/cloudprovider/providers/azure/azure_vmss_cache_test.go @@ -46,6 +46,12 @@ func TestExtractVmssVMName(t *testing.T) { expectedScaleSet: "vm", expectedInstanceID: "1234", }, + { + description: "correct vmss VM name with Extra Separator should return correct scaleSet and instanceID", + vmName: "vm_test_1234", + expectedScaleSet: "vm_test", + expectedInstanceID: "1234", + }, } for _, c := range cases {