Merge pull request #12213 from flouthoc/system-connection-rm-all

system: Adds support for removing all named destination via `--all`
This commit is contained in:
OpenShift Merge Robot
2021-11-08 16:50:59 +01:00
committed by GitHub
4 changed files with 57 additions and 8 deletions

View File

@ -5,14 +5,14 @@ import (
"github.com/containers/podman/v3/cmd/podman/common" "github.com/containers/podman/v3/cmd/podman/common"
"github.com/containers/podman/v3/cmd/podman/registry" "github.com/containers/podman/v3/cmd/podman/registry"
"github.com/containers/podman/v3/cmd/podman/system" "github.com/containers/podman/v3/cmd/podman/system"
"github.com/pkg/errors"
"github.com/spf13/cobra" "github.com/spf13/cobra"
) )
var ( var (
// Skip creating engines since this command will obtain connection information to said engines // Skip creating engines since this command will obtain connection information to said engines
rmCmd = &cobra.Command{ rmCmd = &cobra.Command{
Use: "remove NAME", Use: "remove [options] NAME",
Args: cobra.ExactArgs(1),
Aliases: []string{"rm"}, Aliases: []string{"rm"},
Long: `Delete named destination from podman configuration`, Long: `Delete named destination from podman configuration`,
Short: "Delete named destination", Short: "Delete named destination",
@ -21,6 +21,10 @@ var (
Example: `podman system connection remove devl Example: `podman system connection remove devl
podman system connection rm devl`, podman system connection rm devl`,
} }
rmOpts = struct {
All bool
}{}
) )
func init() { func init() {
@ -28,14 +32,31 @@ func init() {
Command: rmCmd, Command: rmCmd,
Parent: system.ConnectionCmd, Parent: system.ConnectionCmd,
}) })
flags := rmCmd.Flags()
flags.BoolVarP(&rmOpts.All, "all", "a", false, "Remove all connections")
} }
func rm(_ *cobra.Command, args []string) error { func rm(cmd *cobra.Command, args []string) error {
cfg, err := config.ReadCustomConfig() cfg, err := config.ReadCustomConfig()
if err != nil { if err != nil {
return err return err
} }
if rmOpts.All {
if cfg.Engine.ServiceDestinations != nil {
for k := range cfg.Engine.ServiceDestinations {
delete(cfg.Engine.ServiceDestinations, k)
}
}
cfg.Engine.ActiveService = ""
return cfg.Write()
}
if len(args) != 1 {
return errors.New("accepts 1 arg(s), received 0")
}
if cfg.Engine.ServiceDestinations != nil { if cfg.Engine.ServiceDestinations != nil {
delete(cfg.Engine.ServiceDestinations, args[0]) delete(cfg.Engine.ServiceDestinations, args[0])
} }

View File

@ -4,11 +4,17 @@
podman\-system\-connection\-remove - Delete named destination podman\-system\-connection\-remove - Delete named destination
## SYNOPSIS ## SYNOPSIS
**podman system connection remove** *name* **podman system connection remove** [*options*] *name*
## DESCRIPTION ## DESCRIPTION
Delete named ssh destination. Delete named ssh destination.
## OPTIONS
#### **--all**=*false*, **-a**
Remove all connections.
## EXAMPLE ## EXAMPLE
``` ```
$ podman system connection remove production $ podman system connection remove production

View File

@ -181,6 +181,31 @@ var _ = Describe("podman system connection", func() {
} }
}) })
It("remove --all", func() {
cmd := []string{"system", "connection", "add",
"--default",
"--identity", "~/.ssh/id_rsa",
"QA",
"ssh://root@server.fubar.com:2222/run/podman/podman.sock",
}
session := podmanTest.Podman(cmd)
session.WaitWithDefaultTimeout()
Expect(session).Should(Exit(0))
cmd = []string{"system", "connection", "remove", "--all"}
session = podmanTest.Podman(cmd)
session.WaitWithDefaultTimeout()
Expect(session).Should(Exit(0))
Expect(session.Out).Should(Say(""))
cmd = []string{"system", "connection", "list"}
session = podmanTest.Podman(cmd)
session.WaitWithDefaultTimeout()
Expect(session).Should(Exit(0))
Expect(session.Out).Should(Say(""))
Expect(session.Err).Should(Say(""))
})
It("default", func() { It("default", func() {
for _, name := range []string{"devl", "qe"} { for _, name := range []string{"devl", "qe"} {
cmd := []string{"system", "connection", "add", cmd := []string{"system", "connection", "add",

View File

@ -34,10 +34,7 @@ function teardown() {
| xargs -l1 --no-run-if-empty umount | xargs -l1 --no-run-if-empty umount
# Remove all system connections # Remove all system connections
run_podman system connection ls --format json run_podman system connection rm --all
while read name; do
run_podman system connection rm "$name"
done < <(jq -r '.[].Name' <<<"$output")
basic_teardown basic_teardown
} }