@@ -41,7 +41,7 @@ type imageService struct {
4141// implementation.
4242type ImageServer interface {
4343 // ListImages returns list of all images which match the filter.
44- ListImages (filter string ) ([]ImageResult , error )
44+ ListImages (systemContext * types. SystemContext , filter string ) ([]ImageResult , error )
4545 // ImageStatus returns status of an image which matches the filter.
4646 ImageStatus (systemContext * types.SystemContext , filter string ) (* ImageResult , error )
4747 // PullImage imports an image from the specified location.
@@ -59,25 +59,38 @@ type ImageServer interface {
5959 ResolveNames (imageName string ) ([]string , error )
6060}
6161
62- func (svc * imageService ) ListImages (filter string ) ([]ImageResult , error ) {
62+ func (svc * imageService ) getRef (name string ) (types.ImageReference , error ) {
63+ ref , err := alltransports .ParseImageName (name )
64+ if err != nil {
65+ ref2 , err2 := istorage .Transport .ParseStoreReference (svc .store , "@" + name )
66+ if err2 != nil {
67+ ref3 , err3 := istorage .Transport .ParseStoreReference (svc .store , name )
68+ if err3 != nil {
69+ return nil , err
70+ }
71+ ref2 = ref3
72+ }
73+ ref = ref2
74+ }
75+ return ref , nil
76+ }
77+
78+ func (svc * imageService ) ListImages (systemContext * types.SystemContext , filter string ) ([]ImageResult , error ) {
6379 results := []ImageResult {}
6480 if filter != "" {
65- ref , err := alltransports . ParseImageName (filter )
81+ ref , err := svc . getRef (filter )
6682 if err != nil {
67- ref2 , err2 := istorage .Transport .ParseStoreReference (svc .store , "@" + filter )
68- if err2 != nil {
69- ref3 , err3 := istorage .Transport .ParseStoreReference (svc .store , filter )
70- if err3 != nil {
71- return nil , err
72- }
73- ref2 = ref3
74- }
75- ref = ref2
83+ return nil , err
7684 }
7785 if image , err := istorage .Transport .GetStoreImage (svc .store , ref ); err == nil {
86+ img , err := ref .NewImage (systemContext )
87+ if err != nil {
88+ return nil , err
89+ }
7890 results = append (results , ImageResult {
7991 ID : image .ID ,
8092 Names : image .Names ,
93+ Size : imageSize (img ),
8194 })
8295 }
8396 } else {
@@ -86,9 +99,18 @@ func (svc *imageService) ListImages(filter string) ([]ImageResult, error) {
8699 return nil , err
87100 }
88101 for _ , image := range images {
102+ ref , err := svc .getRef (image .Names [0 ])
103+ if err != nil {
104+ return nil , err
105+ }
106+ img , err := ref .NewImage (systemContext )
107+ if err != nil {
108+ return nil , err
109+ }
89110 results = append (results , ImageResult {
90111 ID : image .ID ,
91112 Names : image .Names ,
113+ Size : imageSize (img ),
92114 })
93115 }
94116 }
0 commit comments