diff --git a/management/publishSettings.go b/management/publishSettings.go index fd2c868a6256..da2f73b041cd 100644 --- a/management/publishSettings.go +++ b/management/publishSettings.go @@ -26,33 +26,7 @@ func ClientFromPublishSettingsDataWithConfig(settingsData []byte, subscriptionID return client, err } - for _, profile := range publishData.PublishProfiles { - for _, sub := range profile.Subscriptions { - if sub.ID == subscriptionID || subscriptionID == "" { - base64Cert := sub.ManagementCertificate - if base64Cert == "" { - base64Cert = profile.ManagementCertificate - } - - pfxData, err := base64.StdEncoding.DecodeString(base64Cert) - if err != nil { - return client, err - } - - pems, err := pkcs12.ConvertToPEM(pfxData, nil) - - cert := []byte{} - for _, b := range pems { - cert = append(cert, pem.EncodeToMemory(b)...) - } - - config.ManagementURL = sub.ServiceManagementURL - return makeClient(sub.ID, cert, config) - } - } - } - - return client, fmt.Errorf("could not find subscription '%s' in settings provided", subscriptionID) + return clientFromPublishData(publishData, subscriptionID, config) } // ClientFromPublishSettingsFile reads a publish settings file downloaded from https://manage.windowsazure.com/publishsettings. @@ -78,6 +52,10 @@ func ClientFromPublishSettingsFileWithConfig(filePath, subscriptionID string, co return client, err } + return clientFromPublishData(publishData, subscriptionID, config) +} + +func clientFromPublishData(publishData publishData, subscriptionID string, config ClientConfig) (client Client, err error) { for _, profile := range publishData.PublishProfiles { for _, sub := range profile.Subscriptions { if sub.ID == subscriptionID || subscriptionID == "" { @@ -104,7 +82,7 @@ func ClientFromPublishSettingsFileWithConfig(filePath, subscriptionID string, co } } - return client, fmt.Errorf("could not find subscription '%s' in '%s'", subscriptionID, filePath) + return client, fmt.Errorf("could not find subscription '%s' in settings provided", subscriptionID) } type publishSettings struct {