mirror of https://github.com/docker/docs.git
51 lines
972 B
Go
51 lines
972 B
Go
package imageClient
|
|
|
|
import (
|
|
"encoding/xml"
|
|
"errors"
|
|
"fmt"
|
|
azure "github.com/MSOpenTech/azure-sdk-for-go"
|
|
)
|
|
|
|
const (
|
|
azureImageListURL = "services/images"
|
|
invalidImageError = "Can not find image %s in specified subscription, please specify another image name."
|
|
)
|
|
|
|
func GetImageList() (ImageList, error) {
|
|
imageList := ImageList{}
|
|
|
|
response, err := azure.SendAzureGetRequest(azureImageListURL)
|
|
if err != nil {
|
|
return imageList, err
|
|
}
|
|
|
|
err = xml.Unmarshal(response, &imageList)
|
|
if err != nil {
|
|
return imageList, err
|
|
}
|
|
|
|
return imageList, err
|
|
}
|
|
|
|
func ResolveImageName(imageName string) error {
|
|
if len(imageName) == 0 {
|
|
return fmt.Errorf(azure.ParamNotSpecifiedError, "imageName")
|
|
}
|
|
|
|
imageList, err := GetImageList()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
for _, image := range imageList.OSImages {
|
|
if image.Name != imageName && image.Label != imageName {
|
|
continue
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
return errors.New(fmt.Sprintf(invalidImageError, imageName))
|
|
}
|