mirror of https://github.com/containers/podman.git
commit
ba289dcd79
|
@ -136,6 +136,7 @@ func run(cmd *cobra.Command, args []string) error {
|
|||
}
|
||||
if cliVals.Detach {
|
||||
fmt.Println(report.Id)
|
||||
return nil
|
||||
}
|
||||
if runRmi {
|
||||
_, err := registry.ImageEngine().Delete(registry.GetContext(), []string{args[0]}, entities.ImageDeleteOptions{})
|
||||
|
|
|
@ -113,13 +113,15 @@ func writeJSON(imageS []*entities.ImageSummary) error {
|
|||
type image struct {
|
||||
entities.ImageSummary
|
||||
Created string
|
||||
CreatedAt string
|
||||
}
|
||||
|
||||
imgs := make([]image, 0, len(imageS))
|
||||
for _, e := range imageS {
|
||||
var h image
|
||||
h.ImageSummary = *e
|
||||
h.Created = time.Unix(e.Created, 0).Format(time.RFC3339)
|
||||
h.Created = units.HumanDuration(time.Since(e.Created)) + " ago"
|
||||
h.CreatedAt = e.Created.Format(time.RFC3339Nano)
|
||||
h.RepoTags = nil
|
||||
|
||||
imgs = append(imgs, h)
|
||||
|
@ -196,7 +198,7 @@ func sortFunc(key string, data []*entities.ImageSummary) func(i, j int) bool {
|
|||
default:
|
||||
// case "created":
|
||||
return func(i, j int) bool {
|
||||
return data[i].Created >= data[j].Created
|
||||
return data[i].Created.After(data[j].Created)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -255,11 +257,11 @@ func (i imageReporter) ID() string {
|
|||
if !listFlag.noTrunc && len(i.ImageSummary.ID) >= 12 {
|
||||
return i.ImageSummary.ID[0:12]
|
||||
}
|
||||
return i.ImageSummary.ID
|
||||
return "sha256:" + i.ImageSummary.ID
|
||||
}
|
||||
|
||||
func (i imageReporter) Created() string {
|
||||
return units.HumanDuration(time.Since(time.Unix(i.ImageSummary.Created, 0))) + " ago"
|
||||
return units.HumanDuration(time.Since(i.ImageSummary.Created)) + " ago"
|
||||
}
|
||||
|
||||
func (i imageReporter) Size() string {
|
||||
|
|
|
@ -4,6 +4,7 @@ import (
|
|||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/containers/image/v5/docker/reference"
|
||||
"github.com/containers/libpod/cmd/podman/common"
|
||||
"github.com/containers/libpod/cmd/podman/containers"
|
||||
"github.com/containers/libpod/cmd/podman/images"
|
||||
|
@ -37,12 +38,14 @@ func init() {
|
|||
}
|
||||
|
||||
func inspect(cmd *cobra.Command, args []string) error {
|
||||
// First check if the input is even valid for an image
|
||||
if _, err := reference.Parse(args[0]); err == nil {
|
||||
if found, err := registry.ImageEngine().Exists(context.Background(), args[0]); err != nil {
|
||||
return err
|
||||
} else if found.Value {
|
||||
return images.Inspect(cmd, args, inspectOpts)
|
||||
}
|
||||
|
||||
}
|
||||
if found, err := registry.ContainerEngine().ContainerExists(context.Background(), args[0]); err != nil {
|
||||
return err
|
||||
} else if found.Value {
|
||||
|
|
|
@ -111,7 +111,7 @@ func GetImages(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
// libpod has additional fields that we need to populate.
|
||||
is.Created = img.Created().Unix()
|
||||
is.Created = img.Created()
|
||||
is.ReadOnly = img.IsReadOnly()
|
||||
summaries[j] = is
|
||||
}
|
||||
|
|
|
@ -262,7 +262,7 @@ func ImageToImageSummary(l *libpodImage.Image) (*entities.ImageSummary, error) {
|
|||
ID: l.ID(),
|
||||
ParentId: l.Parent,
|
||||
RepoTags: repoTags,
|
||||
Created: l.Created().Unix(),
|
||||
Created: l.Created(),
|
||||
Size: int64(*size),
|
||||
SharedSize: 0,
|
||||
VirtualSize: l.VirtualSize,
|
||||
|
|
|
@ -50,10 +50,10 @@ func (i *Image) Id() string {
|
|||
}
|
||||
|
||||
type ImageSummary struct {
|
||||
ID string `json:"Id"`
|
||||
ID string
|
||||
ParentId string `json:",omitempty"`
|
||||
RepoTags []string `json:",omitempty"`
|
||||
Created int64 `json:",omitempty"`
|
||||
Created time.Time `json:",omitempty"`
|
||||
Size int64 `json:",omitempty"`
|
||||
SharedSize int `json:",omitempty"`
|
||||
VirtualSize int64 `json:",omitempty"`
|
||||
|
|
|
@ -736,6 +736,16 @@ func (ic *ContainerEngine) ContainerRun(ctx context.Context, opts entities.Conta
|
|||
} else {
|
||||
report.ExitCode = int(ecode)
|
||||
}
|
||||
if opts.Rm {
|
||||
if err := ic.Libpod.RemoveContainer(ctx, ctr, false, true); err != nil {
|
||||
if errors.Cause(err) == define.ErrNoSuchCtr ||
|
||||
errors.Cause(err) == define.ErrCtrRemoved {
|
||||
logrus.Warnf("Container %s does not exist: %v", ctr.ID(), err)
|
||||
} else {
|
||||
logrus.Errorf("Error removing container %s: %v", ctr.ID(), err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return &report, nil
|
||||
}
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ func (ir *ImageEngine) List(ctx context.Context, opts entities.ImageListOptions)
|
|||
ID: img.ID(),
|
||||
|
||||
ConfigDigest: string(img.ConfigDigest),
|
||||
Created: img.Created().Unix(),
|
||||
Created: img.Created(),
|
||||
Dangling: img.Dangling(),
|
||||
Digest: string(img.Digest()),
|
||||
Digests: digests,
|
||||
|
|
|
@ -8,19 +8,19 @@ load helpers
|
|||
run_podman info
|
||||
|
||||
expected_keys="
|
||||
buildahVersion: *[0-9.]\\\+
|
||||
buildahversion: *[0-9.]\\\+
|
||||
conmon:\\\s\\\+package:
|
||||
distribution:
|
||||
ociRuntime:\\\s\\\+name:
|
||||
ociruntime:\\\s\\\+name:
|
||||
os:
|
||||
rootless:
|
||||
registries:
|
||||
store:
|
||||
graphDriverName:
|
||||
graphRoot:
|
||||
graphStatus:
|
||||
imageStore:\\\s\\\+number: 1
|
||||
runRoot:
|
||||
graphdrivername:
|
||||
graphroot:
|
||||
graphstatus:
|
||||
imagestore:\\\s\\\+number: 1
|
||||
runroot:
|
||||
"
|
||||
while read expect; do
|
||||
is "$output" ".*$expect" "output includes '$expect'"
|
||||
|
|
Loading…
Reference in New Issue