@@ -96,6 +96,13 @@ func (c *Client) ListImages(ctx context.Context, filter ...string) ([]types.Imag
9696 continue
9797 }
9898
99+ desc , err := image .Config (ctx , wrapperCli .client .ContentStore (), platforms .Default ())
100+ if err != nil {
101+ logrus .Errorf ("failed to get image id %s: %v" , image .Name , err )
102+ continue
103+ }
104+ id := desc .Digest .String ()
105+
99106 refNamed , err := reference .ParseNamedReference (image .Name )
100107 // occur error, skip it
101108 if err != nil {
@@ -118,13 +125,7 @@ func (c *Client) ListImages(ctx context.Context, filter ...string) ([]types.Imag
118125 continue
119126 }
120127 imageInfo .Size = size
121-
122- // generate image ID by imageInfo JSON.
123- imageID , err := generateID (& imageInfo )
124- if err != nil {
125- return nil , err
126- }
127- imageInfo .ID = imageID .String ()
128+ imageInfo .ID = id
128129
129130 if refDigest , ok := refNamed .(reference.Digested ); ok {
130131 imageInfo .RepoDigests = append (imageInfo .RepoDigests , refDigest .String ())
@@ -206,6 +207,12 @@ func (c *Client) PullImage(ctx context.Context, ref string, authConfig *types.Au
206207 return types.ImageInfo {}, err
207208 }
208209
210+ desc , err := img .Config (ctx )
211+ if err != nil {
212+ return types.ImageInfo {}, err
213+ }
214+ id := desc .Digest .String ()
215+
209216 logrus .Infof ("success to pull image: %s" , img .Name ())
210217
211218 ociImage , err := c .GetOciImage (ctx , ref )
@@ -217,24 +224,21 @@ func (c *Client) PullImage(ctx context.Context, ref string, authConfig *types.Au
217224 // fill struct ImageInfo
218225 {
219226 imageInfo .Size = size
220- // generate image ID by imageInfo JSON.
221- imageID , err := generateID (& imageInfo )
227+ imageInfo .ID = id
228+
229+ refNamed , err := reference .ParseNamedReference (ref )
222230 if err != nil {
223231 return types.ImageInfo {}, err
224232 }
225- imageInfo .ID = imageID .String ()
226233
227- refNamed , err := reference .ParseNamedReference (img .Name ())
228- if err != nil {
229- return types.ImageInfo {}, err
234+ if refTag , ok := refNamed .(reference.Tagged ); ok {
235+ imageInfo .RepoTags = append (imageInfo .RepoTags , refTag .String ())
230236 }
231237
232238 if refDigest , ok := refNamed .(reference.Digested ); ok {
233239 imageInfo .RepoDigests = append (imageInfo .RepoDigests , refDigest .String ())
234240 } else {
235- refTagged := reference .WithDefaultTagIfMissing (refNamed ).(reference.Tagged )
236- imageInfo .RepoTags = append (imageInfo .RepoTags , refTagged .String ())
237- imageInfo .RepoDigests = append (imageInfo .RepoDigests , refTagged .Name ()+ "@" + img .Target ().Digest .String ())
241+ imageInfo .RepoDigests = append (imageInfo .RepoDigests , refNamed .Name ()+ "@" + img .Target ().Digest .String ())
238242 }
239243 }
240244
0 commit comments