Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Step:15-SP4
podman.23518
0002-Add-JSON-version-of-the-machine-list.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0002-Add-JSON-version-of-the-machine-list.patch of Package podman.23518
From 8f7d17dc48471f40ecabe082b015c080f7bf07d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= <anders.f.bjorklund@gmail.com> Date: Wed, 22 Sep 2021 16:30:15 +0200 Subject: [PATCH 02/15] Add JSON version of the machine list MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [NO NEW TESTS NEEDED] Signed-off-by: Anders F Björklund <anders.f.bjorklund@gmail.com> --- cmd/podman/machine/list.go | 57 +++++++++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/cmd/podman/machine/list.go b/cmd/podman/machine/list.go index fe9d712e3..5c8c6800c 100644 --- a/cmd/podman/machine/list.go +++ b/cmd/podman/machine/list.go @@ -3,8 +3,10 @@ package machine import ( + "encoding/json" "os" "sort" + "strconv" "time" "github.com/containers/common/pkg/completion" @@ -41,7 +43,9 @@ type listFlagType struct { type machineReporter struct { Name string + Default bool Created string + Running bool LastUp string VMType string CPUs uint64 @@ -57,7 +61,7 @@ func init() { flags := lsCmd.Flags() formatFlagName := "format" - flags.StringVar(&listFlag.format, formatFlagName, "{{.Name}}\t{{.VMType}}\t{{.Created}}\t{{.LastUp}}\t{{.CPUs}}\t{{.Memory}}\t{{.DiskSize}}\n", "Format volume output using Go template") + flags.StringVar(&listFlag.format, formatFlagName, "{{.Name}}\t{{.VMType}}\t{{.Created}}\t{{.LastUp}}\t{{.CPUs}}\t{{.Memory}}\t{{.DiskSize}}\n", "Format volume output using JSON or a Go template") _ = lsCmd.RegisterFlagCompletionFunc(formatFlagName, completion.AutocompleteNone) flags.BoolVar(&listFlag.noHeading, "noheading", false, "Do not print headers") } @@ -78,6 +82,21 @@ func list(cmd *cobra.Command, args []string) error { sort.Slice(listResponse, func(i, j int) bool { return listResponse[i].Running }) + + if report.IsJSON(listFlag.format) { + machineReporter, err := toMachineFormat(listResponse) + if err != nil { + return err + } + + b, err := json.Marshal(machineReporter) + if err != nil { + return err + } + os.Stdout.Write(b) + return nil + } + machineReporter, err := toHumanFormat(listResponse) if err != nil { return err @@ -121,6 +140,42 @@ func outputTemplate(cmd *cobra.Command, responses []*machineReporter) error { return tmpl.Execute(w, responses) } +func strTime(t time.Time) string { + iso, err := t.MarshalText() + if err != nil { + return "" + } + return string(iso) +} + +func strUint(u uint64) string { + return strconv.FormatUint(u, 10) +} + +func toMachineFormat(vms []*machine.ListResponse) ([]*machineReporter, error) { + cfg, err := config.ReadCustomConfig() + if err != nil { + return nil, err + } + + machineResponses := make([]*machineReporter, 0, len(vms)) + for _, vm := range vms { + response := new(machineReporter) + response.Default = vm.Name == cfg.Engine.ActiveService + response.Name = vm.Name + response.Running = vm.Running + response.LastUp = strTime(vm.LastUp) + response.Created = strTime(vm.CreatedAt) + response.VMType = vm.VMType + response.CPUs = vm.CPUs + response.Memory = strUint(vm.Memory * units.MiB) + response.DiskSize = strUint(vm.DiskSize * units.GiB) + + machineResponses = append(machineResponses, response) + } + return machineResponses, nil +} + func toHumanFormat(vms []*machine.ListResponse) ([]*machineReporter, error) { cfg, err := config.ReadCustomConfig() if err != nil { -- 2.35.1
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor