// aciInfoToV1AlphaAPIImage takes an aciInfo object and construct the v1alpha.Image object. // It also returns the image manifest of the image. func aciInfoToV1AlphaAPIImage(store *store.Store, aciInfo *store.ACIInfo) (*v1alpha.Image, *schema.ImageManifest, error) { manifest, err := store.GetImageManifestJSON(aciInfo.BlobKey) if err != nil { log.Printf("Failed to read the image manifest: %v", err) return nil, nil, err } var im schema.ImageManifest if err = json.Unmarshal(manifest, &im); err != nil { log.Printf("Failed to unmarshal image manifest: %v", err) return nil, nil, err } version, ok := im.Labels.Get("version") if !ok { version = "latest" } return &v1alpha.Image{ BaseFormat: &v1alpha.ImageFormat{ // Only support appc image now. If it's a docker image, then it // will be transformed to appc before storing in the disk store. Type: v1alpha.ImageType_IMAGE_TYPE_APPC, Version: schema.AppContainerVersion.String(), }, Id: aciInfo.BlobKey, Name: im.Name.String(), Version: version, ImportTimestamp: aciInfo.ImportTime.Unix(), Manifest: manifest, }, &im, nil }