Allow use resource ID to specify public IP address in azure_loadbalancer

pull/6/head
chshou 2017-10-02 23:16:26 -07:00
parent 6b03a43b76
commit 540baa9796
2 changed files with 24 additions and 3 deletions

View File

@ -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<rgname>\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)
}

View File

@ -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 {