diff options
Diffstat (limited to 'cmd/podman/containers/ps.go')
| -rw-r--r-- | cmd/podman/containers/ps.go | 40 | 
1 files changed, 27 insertions, 13 deletions
| diff --git a/cmd/podman/containers/ps.go b/cmd/podman/containers/ps.go index 31f44d92f..6b125fede 100644 --- a/cmd/podman/containers/ps.go +++ b/cmd/podman/containers/ps.go @@ -13,15 +13,16 @@ import (  	tm "github.com/buger/goterm"  	"github.com/containers/common/pkg/completion"  	"github.com/containers/common/pkg/report" -	"github.com/containers/podman/v2/cmd/podman/common" -	"github.com/containers/podman/v2/cmd/podman/parse" -	"github.com/containers/podman/v2/cmd/podman/registry" -	"github.com/containers/podman/v2/cmd/podman/utils" -	"github.com/containers/podman/v2/cmd/podman/validate" -	"github.com/containers/podman/v2/pkg/domain/entities" +	"github.com/containers/podman/v3/cmd/podman/common" +	"github.com/containers/podman/v3/cmd/podman/parse" +	"github.com/containers/podman/v3/cmd/podman/registry" +	"github.com/containers/podman/v3/cmd/podman/utils" +	"github.com/containers/podman/v3/cmd/podman/validate" +	"github.com/containers/podman/v3/pkg/domain/entities"  	"github.com/cri-o/ocicni/pkg/ocicni"  	"github.com/docker/go-units"  	"github.com/pkg/errors" +	"github.com/sirupsen/logrus"  	"github.com/spf13/cobra"  ) @@ -142,11 +143,19 @@ func checkFlags(c *cobra.Command) error {  }  func jsonOut(responses []entities.ListContainer) error { -	r := make([]entities.ListContainer, 0) +	type jsonFormat struct { +		entities.ListContainer +		Created int64 +	} +	r := make([]jsonFormat, 0)  	for _, con := range responses {  		con.CreatedAt = units.HumanDuration(time.Since(con.Created)) + " ago"  		con.Status = psReporter{con}.Status() -		r = append(r, con) +		jf := jsonFormat{ +			ListContainer: con, +			Created:       con.Created.Unix(), +		} +		r = append(r, jf)  	}  	b, err := json.MarshalIndent(r, "", "  ")  	if err != nil { @@ -243,12 +252,12 @@ func ps(cmd *cobra.Command, _ []string) error {  		// responses will grow to the largest number of processes reported on, but will not thrash the gc  		var responses []psReporter  		for ; ; responses = responses[:0] { -			if ctnrs, err := getResponses(); err != nil { +			ctnrs, err := getResponses() +			if err != nil {  				return err -			} else { -				for _, r := range ctnrs { -					responses = append(responses, psReporter{r}) -				} +			} +			for _, r := range ctnrs { +				responses = append(responses, psReporter{r})  			}  			tm.Clear() @@ -382,6 +391,11 @@ func (l psReporter) Command() string {  // Size returns the rootfs and virtual sizes in human duration in  // and output form (string) suitable for ps  func (l psReporter) Size() string { +	if l.ListContainer.Size == nil { +		logrus.Errorf("Size format requires --size option") +		return "" +	} +  	virt := units.HumanSizeWithPrecision(float64(l.ListContainer.Size.RootFsSize), 3)  	s := units.HumanSizeWithPrecision(float64(l.ListContainer.Size.RwSize), 3)  	return fmt.Sprintf("%s (virtual %s)", s, virt) | 
