From 540baa9796eb06d4f6d56011ca8bc84b933654da Mon Sep 17 00:00:00 2001 From: chshou Date: Mon, 2 Oct 2017 23:16:26 -0700 Subject: [PATCH] Allow use resource ID to specify public IP address in azure_loadbalancer --- .../providers/azure/azure_util.go | 20 +++++++++++++++++++ .../providers/azure/azure_wrap.go | 7 ++++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/pkg/cloudprovider/providers/azure/azure_util.go b/pkg/cloudprovider/providers/azure/azure_util.go index 6181550571b..1804faba588 100644 --- a/pkg/cloudprovider/providers/azure/azure_util.go +++ b/pkg/cloudprovider/providers/azure/azure_util.go @@ -699,3 +699,23 @@ func (as *availabilitySet) EnsureBackendPoolDeleted(poolID, vmSetName string) er // Do nothing for availability set. return nil } + +// parseResourceGroupNameFromID parses the resource group name from a resource ID +func parseResourceGroupNameFromID(resourceID string) (resourceGroupName string, err error) { + reg, err := regexp.Compile(`(?i)(.*?)/resourceGroups/(?P\S+)/providers/(.*?)`) + + if err != nil { + return "", err + } + + matchNames := reg.SubexpNames() + matches := reg.FindStringSubmatch(resourceID) + + for i := range matchNames { + if matchNames[i] == "rgname" { + return matches[i], nil + } + } + + return "", fmt.Errorf("Invalid resource ID: %s", resourceID) +} diff --git a/pkg/cloudprovider/providers/azure/azure_wrap.go b/pkg/cloudprovider/providers/azure/azure_wrap.go index f1aa0def597..2990e12d18b 100644 --- a/pkg/cloudprovider/providers/azure/azure_wrap.go +++ b/pkg/cloudprovider/providers/azure/azure_wrap.go @@ -156,10 +156,11 @@ func (az *Cloud) listLoadBalancers() (lbListResult network.LoadBalancerListResul func (az *Cloud) getPublicIPAddress(name string) (pip network.PublicIPAddress, exists bool, err error) { var realErr error + var realErr error az.operationPollRateLimiter.Accept() - glog.V(10).Infof("PublicIPAddressesClient.Get(%s): start", name) - pip, err = az.PublicIPAddressesClient.Get(az.ResourceGroup, name, "") - glog.V(10).Infof("PublicIPAddressesClient.Get(%s): end", name) + glog.V(10).Infof("PublicIPAddressesClient.Get(%s, %s): start", resourceGroup, pipName) + pip, err = az.PublicIPAddressesClient.Get(resourceGroup, pipName, "") + glog.V(10).Infof("PublicIPAddressesClient.Get(%s, %s): end", resourceGroup, pipName) exists, realErr = checkResourceExistsFromError(err) if realErr != nil {