mirror of
https://github.com/containers/podman.git
synced 2025-06-02 10:46:09 +08:00
podmanv2 info
add ability to run info for v2 Signed-off-by: Brent Baude <bbaude@redhat.com>
This commit is contained in:
74
cmd/podmanV2/system/info.go
Normal file
74
cmd/podmanV2/system/info.go
Normal file
@ -0,0 +1,74 @@
|
||||
package system
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"os"
|
||||
"text/template"
|
||||
|
||||
"github.com/containers/libpod/cmd/podmanV2/registry"
|
||||
"github.com/containers/libpod/pkg/domain/entities"
|
||||
"github.com/spf13/cobra"
|
||||
"gopkg.in/yaml.v2"
|
||||
)
|
||||
|
||||
var (
|
||||
infoDescription = `Display information pertaining to the host, current storage stats, and build of podman.
|
||||
|
||||
Useful for the user and when reporting issues.
|
||||
`
|
||||
infoCommand = &cobra.Command{
|
||||
Use: "info",
|
||||
Args: cobra.NoArgs,
|
||||
Long: infoDescription,
|
||||
Short: "Display podman system information",
|
||||
PreRunE: preRunE,
|
||||
RunE: info,
|
||||
Example: `podman info`,
|
||||
}
|
||||
)
|
||||
|
||||
var (
|
||||
inFormat string
|
||||
debug bool
|
||||
)
|
||||
|
||||
func init() {
|
||||
registry.Commands = append(registry.Commands, registry.CliCommand{
|
||||
Mode: []entities.EngineMode{entities.ABIMode, entities.TunnelMode},
|
||||
Command: infoCommand,
|
||||
})
|
||||
flags := infoCommand.Flags()
|
||||
flags.BoolVarP(&debug, "debug", "D", false, "Display additional debug information")
|
||||
flags.StringVarP(&inFormat, "format", "f", "", "Change the output format to JSON or a Go template")
|
||||
}
|
||||
|
||||
func info(cmd *cobra.Command, args []string) error {
|
||||
info, err := registry.ContainerEngine().Info(registry.GetContext())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if inFormat == "json" {
|
||||
b, err := json.MarshalIndent(info, "", " ")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Println(string(b))
|
||||
return nil
|
||||
}
|
||||
if !cmd.Flag("format").Changed {
|
||||
b, err := yaml.Marshal(info)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Println(string(b))
|
||||
return nil
|
||||
}
|
||||
tmpl, err := template.New("info").Parse(inFormat)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = tmpl.Execute(os.Stdout, info)
|
||||
return err
|
||||
}
|
@ -9,15 +9,15 @@ import (
|
||||
)
|
||||
|
||||
// Info returns information about the libpod environment and its stores
|
||||
func Info(ctx context.Context) (define.Info, error) {
|
||||
func Info(ctx context.Context) (*define.Info, error) {
|
||||
info := define.Info{}
|
||||
conn, err := bindings.GetClient(ctx)
|
||||
if err != nil {
|
||||
return info, err
|
||||
return nil, err
|
||||
}
|
||||
response, err := conn.DoRequest(nil, http.MethodGet, "/info", nil)
|
||||
if err != nil {
|
||||
return info, err
|
||||
return nil, err
|
||||
}
|
||||
return info, response.Process(&info)
|
||||
return &info, response.Process(&info)
|
||||
}
|
||||
|
@ -48,4 +48,6 @@ type ContainerEngine interface {
|
||||
VolumeList(ctx context.Context, opts VolumeListOptions) ([]*VolumeListReport, error)
|
||||
VolumePrune(ctx context.Context, opts VolumePruneOptions) ([]*VolumePruneReport, error)
|
||||
VolumeRm(ctx context.Context, namesOrIds []string, opts VolumeRmOptions) ([]*VolumeRmReport, error)
|
||||
|
||||
Info(ctx context.Context) (*define.Info, error)
|
||||
}
|
||||
|
13
pkg/domain/infra/abi/system.go
Normal file
13
pkg/domain/infra/abi/system.go
Normal file
@ -0,0 +1,13 @@
|
||||
// +build ABISupport
|
||||
|
||||
package abi
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/containers/libpod/libpod/define"
|
||||
)
|
||||
|
||||
func (ic *ContainerEngine) Info(ctx context.Context) (*define.Info, error) {
|
||||
return ic.Libpod.Info()
|
||||
}
|
@ -1 +1,12 @@
|
||||
package tunnel
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/containers/libpod/libpod/define"
|
||||
"github.com/containers/libpod/pkg/bindings/system"
|
||||
)
|
||||
|
||||
func (ic *ContainerEngine) Info(ctx context.Context) (*define.Info, error) {
|
||||
return system.Info(ic.ClientCxt)
|
||||
}
|
||||
|
Reference in New Issue
Block a user