summaryrefslogtreecommitdiff
path: root/cmd/podman
diff options
context:
space:
mode:
authorDaniel J Walsh <dwalsh@redhat.com>2020-10-07 15:27:54 -0400
committerDaniel J Walsh <dwalsh@redhat.com>2020-10-15 09:51:31 -0400
commitdb23e1261165bae3dda38bc1f3b6a11573e36417 (patch)
tree3e25ad7c2fbb63977d9ef95fb92e65678206f642 /cmd/podman
parent22c8270135620bbbeb988076378173e452ec04af (diff)
downloadpodman-db23e1261165bae3dda38bc1f3b6a11573e36417.tar.gz
podman-db23e1261165bae3dda38bc1f3b6a11573e36417.tar.bz2
podman-db23e1261165bae3dda38bc1f3b6a11573e36417.zip
Add support for external container
External containers are containers created outside of Podman. For example Buildah and CRI-O Containers. $ buildah from alpine alpine-working-container $ buildah run alpine-working-container touch /test $ podman container exists --external alpine-working-container $ podman container diff alpine-working-container C /etc A /test Added --external flag to refer to external containers, rather then --storage. Added --external for podman container exists and modified podman ps to use --external rather then --storage. It was felt that --storage would confuse the user into thinking about changing the storage driver or options. --storage is still supported through the use of aliases. Finally podman contianer diff, does not require the --external flag, since it there is little change of users making the mistake, and would just be a pain for the user to remember the flag. podman container exists --external is required because it could fool scripts that rely on the existance of a Podman container, and there is a potential for a partial deletion of a container, which could mess up existing users. Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
Diffstat (limited to 'cmd/podman')
-rw-r--r--cmd/podman/containers/exists.go15
-rw-r--r--cmd/podman/containers/ps.go2
-rw-r--r--cmd/podman/diff.go5
-rw-r--r--cmd/podman/utils/alias.go2
4 files changed, 19 insertions, 5 deletions
diff --git a/cmd/podman/containers/exists.go b/cmd/podman/containers/exists.go
index 283f6df18..1d79b684d 100644
--- a/cmd/podman/containers/exists.go
+++ b/cmd/podman/containers/exists.go
@@ -12,10 +12,10 @@ var (
containerExistsDescription = `If the named container exists in local storage, podman container exists exits with 0, otherwise the exit code will be 1.`
existsCommand = &cobra.Command{
- Use: "exists CONTAINER",
+ Use: "exists [flags] CONTAINER",
Short: "Check if a container exists in local storage",
Long: containerExistsDescription,
- Example: `podman container exists containerID
+ Example: `podman container exists --external containerID
podman container exists myctr || podman run --name myctr [etc...]`,
RunE: exists,
Args: cobra.ExactArgs(1),
@@ -29,10 +29,19 @@ func init() {
Command: existsCommand,
Parent: containerCmd,
})
+ flags := existsCommand.Flags()
+ flags.Bool("external", false, "Check external storage containers as well as Podman containers")
}
func exists(cmd *cobra.Command, args []string) error {
- response, err := registry.ContainerEngine().ContainerExists(context.Background(), args[0])
+ external, err := cmd.Flags().GetBool("external")
+ if err != nil {
+ return err
+ }
+ options := entities.ContainerExistsOptions{
+ External: external,
+ }
+ response, err := registry.ContainerEngine().ContainerExists(context.Background(), args[0], options)
if err != nil {
return err
}
diff --git a/cmd/podman/containers/ps.go b/cmd/podman/containers/ps.go
index 65bfc97da..41d309f51 100644
--- a/cmd/podman/containers/ps.go
+++ b/cmd/podman/containers/ps.go
@@ -58,7 +58,7 @@ func init() {
func listFlagSet(flags *pflag.FlagSet) {
flags.BoolVarP(&listOpts.All, "all", "a", false, "Show all the containers, default is only running containers")
flags.StringSliceVarP(&filters, "filter", "f", []string{}, "Filter output based on conditions given")
- flags.BoolVar(&listOpts.Storage, "storage", false, "Show containers in storage not controlled by Podman")
+ flags.BoolVar(&listOpts.Storage, "external", false, "Show containers in storage not controlled by Podman")
flags.StringVar(&listOpts.Format, "format", "", "Pretty-print containers to JSON or using a Go template")
flags.IntVarP(&listOpts.Last, "last", "n", -1, "Print the n last created containers (all states)")
flags.BoolVar(&listOpts.Namespace, "ns", false, "Display namespace information")
diff --git a/cmd/podman/diff.go b/cmd/podman/diff.go
index 51a04bf46..9d2236abe 100644
--- a/cmd/podman/diff.go
+++ b/cmd/podman/diff.go
@@ -48,7 +48,10 @@ func diff(cmd *cobra.Command, args []string) error {
return containers.Diff(cmd, args, diffOpts)
}
- if found, err := registry.ContainerEngine().ContainerExists(registry.GetContext(), args[0]); err != nil {
+ options := entities.ContainerExistsOptions{
+ External: true,
+ }
+ if found, err := registry.ContainerEngine().ContainerExists(registry.GetContext(), args[0], options); err != nil {
return err
} else if found.Value {
return containers.Diff(cmd, args, diffOpts)
diff --git a/cmd/podman/utils/alias.go b/cmd/podman/utils/alias.go
index ff31e82ea..10b96fa98 100644
--- a/cmd/podman/utils/alias.go
+++ b/cmd/podman/utils/alias.go
@@ -21,6 +21,8 @@ func AliasFlags(f *pflag.FlagSet, name string) pflag.NormalizedName {
name = "time"
case "namespace":
name = "ns"
+ case "storage":
+ name = "external"
}
return pflag.NormalizedName(name)
}