mirror of
https://github.com/project-zot/zot.git
synced 2026-06-15 20:07:55 +08:00
search: graphql api to give detailed repo info
DetailedRepoInfo graphql api returns detailed repo info given repo name repo contains its manifests info Each manifest entry contains digest,signed, tag and layers info Each layer info containes digest, size Signed-off-by: Shivam Mishra <shimish2@cisco.com>
This commit is contained in:
committed by
Ramkumar Chinchani
parent
4ddfd059b6
commit
37d150e32f
@@ -62,6 +62,52 @@ func GetResolverConfig(log log.Logger, storeController storage.StoreController,
|
||||
}
|
||||
}
|
||||
|
||||
func (r *queryResolver) ExpandedRepoInfo(ctx context.Context, name string) (*RepoInfo, error) {
|
||||
olu := common.NewOciLayoutUtils(r.storeController, r.log)
|
||||
|
||||
repo, err := olu.GetExpandedRepoInfo(name)
|
||||
if err != nil {
|
||||
r.log.Error().Err(err).Msg("error getting repos")
|
||||
|
||||
return &RepoInfo{}, err
|
||||
}
|
||||
|
||||
// repos type is of common deep copy this to search
|
||||
repoInfo := &RepoInfo{}
|
||||
|
||||
manifests := make([]*ManifestInfo, 0)
|
||||
|
||||
for _, manifest := range repo.Manifests {
|
||||
tag := manifest.Tag
|
||||
|
||||
digest := manifest.Digest
|
||||
|
||||
isSigned := manifest.IsSigned
|
||||
|
||||
manifestInfo := &ManifestInfo{Tag: &tag, Digest: &digest, IsSigned: &isSigned}
|
||||
|
||||
layers := make([]*LayerInfo, 0)
|
||||
|
||||
for _, l := range manifest.Layers {
|
||||
size := l.Size
|
||||
|
||||
digest := l.Digest
|
||||
|
||||
layerInfo := &LayerInfo{Digest: &digest, Size: &size}
|
||||
|
||||
layers = append(layers, layerInfo)
|
||||
}
|
||||
|
||||
manifestInfo.Layers = layers
|
||||
|
||||
manifests = append(manifests, manifestInfo)
|
||||
}
|
||||
|
||||
repoInfo.Manifests = manifests
|
||||
|
||||
return repoInfo, nil
|
||||
}
|
||||
|
||||
func (r *queryResolver) CVEListForImage(ctx context.Context, image string) (*CVEResultForImage, error) {
|
||||
trivyCtx := r.cveInfo.GetTrivyContext(image)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user