Пример #1
0
// aciInfoToV1AlphaAPIImage takes an aciInfo object and construct the v1alpha.Image
// object. It will also get and return the image manifest.
// Note that v1alpha.Image.Manifest field is not set by this function.
func aciInfoToV1AlphaAPIImage(store *store.Store, aciInfo *store.ACIInfo) (*v1alpha.Image, *schema.ImageManifest, error) {
	imgManifest, err := store.GetImageManifest(aciInfo.BlobKey)
	if err != nil {
		return nil, nil, err
	}

	data, err := json.Marshal(imgManifest)
	if err != nil {
		return nil, nil, err
	}

	version, ok := imgManifest.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:            imgManifest.Name.String(),
		Version:         version,
		ImportTimestamp: aciInfo.ImportTime.Unix(),
		Manifest:        data,
	}, imgManifest, nil
}