// ListImages returns images matching the specified filter. func (api *ImageManagerAPI) ListImages(arg params.ImageFilterParams) (params.ListImageResult, error) { var result params.ListImageResult if len(arg.Images) > 1 { return result, errors.New("image filter with multiple terms not supported") } filter := imagestorage.ImageFilter{} if len(arg.Images) == 1 { filter = imagestorage.ImageFilter{ Kind: arg.Images[0].Kind, Series: arg.Images[0].Series, Arch: arg.Images[0].Arch, } } stor := api.state.ImageStorage() metadata, err := stor.ListImages(filter) if err != nil { return result, nil } result.Result = make([]params.ImageMetadata, len(metadata)) for i, m := range metadata { result.Result[i] = params.ImageMetadata{ Kind: m.Kind, Series: m.Series, Arch: m.Arch, URL: m.SourceURL, Created: m.Created, } } return result, nil }
// ListImages returns images matching the specified filter. func (api *ImageManagerAPI) ListImages(arg params.ImageFilterParams) (params.ListImageResult, error) { var result params.ListImageResult admin, err := api.authorizer.HasPermission(permission.SuperuserAccess, api.state.ControllerTag()) if err != nil { return result, errors.Trace(err) } if !admin { return result, common.ServerError(common.ErrPerm) } if len(arg.Images) > 1 { return result, errors.New("image filter with multiple terms not supported") } filter := imagestorage.ImageFilter{} if len(arg.Images) == 1 { filter = imagestorage.ImageFilter{ Kind: arg.Images[0].Kind, Series: arg.Images[0].Series, Arch: arg.Images[0].Arch, } } stor := api.state.ImageStorage() metadata, err := stor.ListImages(filter) if err != nil { return result, nil } result.Result = make([]params.ImageMetadata, len(metadata)) for i, m := range metadata { result.Result[i] = params.ImageMetadata{ Kind: m.Kind, Series: m.Series, Arch: m.Arch, URL: m.SourceURL, Created: m.Created, } } return result, nil }