mirror of
https://github.com/containers/podman.git
synced 2026-10-25 19:29:32 -04:00
V2 podman images/image list
* Updated entities to support flags/options * Updated bindings caused by entities changes * Removed handlers.ImageSummary in favor of entities.ImageSummary * Introduced StringSet() container object to simply error checking Signed-off-by: Jhon Honce <jhonce@redhat.com>
This commit is contained in:
1 parent
0c084d9719
commit
1d7cb7cc48
15 files changed
+442
-141
No files matched your search
@@ -15,6 +15,7 @@ import (
|
||||
image2 "github.com/containers/libpod/libpod/image"
|
||||
"github.com/containers/libpod/pkg/api/handlers"
|
||||
"github.com/containers/libpod/pkg/api/handlers/utils"
|
||||
"github.com/containers/libpod/pkg/domain/entities"
|
||||
"github.com/containers/libpod/pkg/util"
|
||||
"github.com/docker/docker/api/types"
|
||||
"github.com/gorilla/schema"
|
||||
@@ -305,7 +306,7 @@ func GetImages(w http.ResponseWriter, r *http.Request) {
|
||||
utils.Error(w, "Something went wrong.", http.StatusInternalServerError, errors.Wrap(err, "Failed get images"))
|
||||
return
|
||||
}
|
||||
var summaries = make([]*handlers.ImageSummary, len(images))
|
||||
var summaries = make([]*entities.ImageSummary, len(images))
|
||||
for j, img := range images {
|
||||
is, err := handlers.ImageToImageSummary(img)
|
||||
if err != nil {
|
||||
|
||||
@@ -21,6 +21,7 @@ import (
|
||||
image2 "github.com/containers/libpod/libpod/image"
|
||||
"github.com/containers/libpod/pkg/api/handlers"
|
||||
"github.com/containers/libpod/pkg/api/handlers/utils"
|
||||
"github.com/containers/libpod/pkg/domain/entities"
|
||||
"github.com/containers/libpod/pkg/util"
|
||||
"github.com/gorilla/schema"
|
||||
"github.com/pkg/errors"
|
||||
@@ -101,7 +102,7 @@ func GetImages(w http.ResponseWriter, r *http.Request) {
|
||||
utils.Error(w, "Something went wrong.", http.StatusInternalServerError, errors.Wrap(err, "Failed get images"))
|
||||
return
|
||||
}
|
||||
var summaries = make([]*handlers.ImageSummary, len(images))
|
||||
var summaries = make([]*entities.ImageSummary, len(images))
|
||||
for j, img := range images {
|
||||
is, err := handlers.ImageToImageSummary(img)
|
||||
if err != nil {
|
||||
@@ -109,7 +110,7 @@ func GetImages(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
// libpod has additional fields that we need to populate.
|
||||
is.CreatedTime = img.Created()
|
||||
is.Created = img.Created().Unix()
|
||||
is.ReadOnly = img.IsReadOnly()
|
||||
summaries[j] = is
|
||||
}
|
||||
|
||||
+38
-30
@@ -13,6 +13,7 @@ import (
|
||||
"github.com/containers/libpod/libpod/define"
|
||||
"github.com/containers/libpod/libpod/events"
|
||||
libpodImage "github.com/containers/libpod/libpod/image"
|
||||
"github.com/containers/libpod/pkg/domain/entities"
|
||||
docker "github.com/docker/docker/api/types"
|
||||
dockerContainer "github.com/docker/docker/api/types/container"
|
||||
dockerEvents "github.com/docker/docker/api/types/events"
|
||||
@@ -45,12 +46,6 @@ type LibpodImagesPullReport struct {
|
||||
ID string `json:"id"`
|
||||
}
|
||||
|
||||
type ImageSummary struct {
|
||||
docker.ImageSummary
|
||||
CreatedTime time.Time `json:"CreatedTime,omitempty"`
|
||||
ReadOnly bool `json:"ReadOnly,omitempty"`
|
||||
}
|
||||
|
||||
type ContainersPruneReport struct {
|
||||
docker.ContainersPruneReport
|
||||
}
|
||||
@@ -195,23 +190,13 @@ func EventToApiEvent(e *events.Event) *Event {
|
||||
}}
|
||||
}
|
||||
|
||||
func ImageToImageSummary(l *libpodImage.Image) (*ImageSummary, error) {
|
||||
func ImageToImageSummary(l *libpodImage.Image) (*entities.ImageSummary, error) {
|
||||
containers, err := l.Containers()
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "Failed to obtain Containers for image %s", l.ID())
|
||||
}
|
||||
containerCount := len(containers)
|
||||
|
||||
var digests []string
|
||||
for _, d := range l.Digests() {
|
||||
digests = append(digests, string(d))
|
||||
}
|
||||
|
||||
tags, err := l.RepoTags()
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "Failed to obtain RepoTags for image %s", l.ID())
|
||||
}
|
||||
|
||||
// FIXME: GetParent() panics
|
||||
// parent, err := l.GetParent(context.TODO())
|
||||
// if err != nil {
|
||||
@@ -227,20 +212,43 @@ func ImageToImageSummary(l *libpodImage.Image) (*ImageSummary, error) {
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "Failed to obtain Size for image %s", l.ID())
|
||||
}
|
||||
dockerSummary := docker.ImageSummary{
|
||||
Containers: int64(containerCount),
|
||||
Created: l.Created().Unix(),
|
||||
ID: l.ID(),
|
||||
Labels: labels,
|
||||
ParentID: l.Parent,
|
||||
RepoDigests: digests,
|
||||
RepoTags: tags,
|
||||
SharedSize: 0,
|
||||
Size: int64(*size),
|
||||
VirtualSize: int64(*size),
|
||||
|
||||
repoTags, err := l.RepoTags()
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "Failed to obtain RepoTags for image %s", l.ID())
|
||||
}
|
||||
is := ImageSummary{
|
||||
ImageSummary: dockerSummary,
|
||||
|
||||
history, err := l.History(context.TODO())
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "Failed to obtain History for image %s", l.ID())
|
||||
}
|
||||
historyIds := make([]string, len(history))
|
||||
for i, h := range history {
|
||||
historyIds[i] = h.ID
|
||||
}
|
||||
|
||||
digests := make([]string, len(l.Digests()))
|
||||
for i, d := range l.Digests() {
|
||||
digests[i] = string(d)
|
||||
}
|
||||
|
||||
is := entities.ImageSummary{
|
||||
ID: l.ID(),
|
||||
ParentId: l.Parent,
|
||||
RepoTags: repoTags,
|
||||
Created: l.Created().Unix(),
|
||||
Size: int64(*size),
|
||||
SharedSize: 0,
|
||||
VirtualSize: l.VirtualSize,
|
||||
Labels: labels,
|
||||
Containers: containerCount,
|
||||
ReadOnly: l.IsReadOnly(),
|
||||
Dangling: l.Dangling(),
|
||||
Names: l.Names(),
|
||||
Digest: string(l.Digest()),
|
||||
Digests: digests,
|
||||
ConfigDigest: string(l.ConfigDigest),
|
||||
History: historyIds,
|
||||
}
|
||||
return &is, nil
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ package server
|
||||
|
||||
import (
|
||||
"github.com/containers/libpod/libpod"
|
||||
"github.com/containers/libpod/pkg/api/handlers"
|
||||
"github.com/containers/libpod/pkg/api/handlers/utils"
|
||||
"github.com/containers/libpod/pkg/domain/entities"
|
||||
)
|
||||
@@ -128,7 +127,7 @@ type swagPodAlreadyStopped struct {
|
||||
// swagger:response DockerImageSummary
|
||||
type swagImageSummary struct {
|
||||
// in:body
|
||||
Body []handlers.ImageSummary
|
||||
Body []entities.ImageSummary
|
||||
}
|
||||
|
||||
// List Containers
|
||||
|
||||
Reference in new issue
Block a user