summaryrefslogtreecommitdiff
path: root/cmd/podman/utils.go
diff options
context:
space:
mode:
authorJhon Honce <jhonce@redhat.com>2019-03-05 16:11:28 -0700
committerJhon Honce <jhonce@redhat.com>2019-04-09 11:55:26 -0700
commit09ff62429a324e01ad2c584afe9a5f66f580ae78 (patch)
tree6c896a4071b4c0df0d6ae4f95f171b6596d4367a /cmd/podman/utils.go
parentfe79bdd07e140176dc64ebef8da3eea2ae28b96b (diff)
downloadpodman-09ff62429a324e01ad2c584afe9a5f66f580ae78.tar.gz
podman-09ff62429a324e01ad2c584afe9a5f66f580ae78.tar.bz2
podman-09ff62429a324e01ad2c584afe9a5f66f580ae78.zip
Implement podman-remote rm
* refactor command output to use one function * Add new worker pool parallel operations * Implement podman-remote umount * Refactored podman wait to use printCmdOutput() Signed-off-by: Jhon Honce <jhonce@redhat.com>
Diffstat (limited to 'cmd/podman/utils.go')
-rw-r--r--cmd/podman/utils.go49
1 files changed, 48 insertions, 1 deletions
diff --git a/cmd/podman/utils.go b/cmd/podman/utils.go
index c763940db..81bd02faa 100644
--- a/cmd/podman/utils.go
+++ b/cmd/podman/utils.go
@@ -2,11 +2,12 @@ package main
import (
"fmt"
+ "reflect"
"github.com/spf13/pflag"
)
-//printParallelOutput takes the map of parallel worker results and outputs them
+// printParallelOutput takes the map of parallel worker results and outputs them
// to stdout
func printParallelOutput(m map[string]error, errCount int) error {
var lastError error
@@ -23,6 +24,26 @@ func printParallelOutput(m map[string]error, errCount int) error {
return lastError
}
+// print results from CLI command
+func printCmdResults(ok []string, failures map[string]error) error {
+ for _, id := range ok {
+ fmt.Println(id)
+ }
+
+ if len(failures) > 0 {
+ keys := reflect.ValueOf(failures).MapKeys()
+ lastKey := keys[len(keys)-1].String()
+ lastErr := failures[lastKey]
+ delete(failures, lastKey)
+
+ for _, err := range failures {
+ outputError(err)
+ }
+ return lastErr
+ }
+ return nil
+}
+
// markFlagHiddenForRemoteClient makes the flag not appear as part of the CLI
// on the remote-client
func markFlagHiddenForRemoteClient(flagName string, flags *pflag.FlagSet) {
@@ -30,3 +51,29 @@ func markFlagHiddenForRemoteClient(flagName string, flags *pflag.FlagSet) {
flags.MarkHidden(flagName)
}
}
+
+// TODO: remove when adapter package takes over this functionality
+// func joinContainerOrCreateRootlessUserNS(runtime *libpod.Runtime, ctr *libpod.Container) (bool, int, error) {
+// if os.Geteuid() == 0 {
+// return false, 0, nil
+// }
+// s, err := ctr.State()
+// if err != nil {
+// return false, -1, err
+// }
+// opts := rootless.Opts{
+// Argument: ctr.ID(),
+// }
+// if s == libpod.ContainerStateRunning || s == libpod.ContainerStatePaused {
+// data, err := ioutil.ReadFile(ctr.Config().ConmonPidFile)
+// if err != nil {
+// return false, -1, errors.Wrapf(err, "cannot read conmon PID file %q", ctr.Config().ConmonPidFile)
+// }
+// conmonPid, err := strconv.Atoi(string(data))
+// if err != nil {
+// return false, -1, errors.Wrapf(err, "cannot parse PID %q", data)
+// }
+// return rootless.JoinDirectUserAndMountNSWithOpts(uint(conmonPid), &opts)
+// }
+// return rootless.BecomeRootInUserNSWithOpts(&opts)
+// }