podmanv2 pod exists

add pod exists for podman v2

Signed-off-by: Brent Baude <bbaude@redhat.com>
This commit is contained in:
Brent Baude
2020-03-20 17:06:27 -05:00
parent 7a095af92a
commit 0feec5de98
5 changed files with 77 additions and 0 deletions

View File

@ -19,6 +19,7 @@ var (
Example: `podman container exists containerID
podman container exists myctr || podman run --name myctr [etc...]`,
RunE: exists,
Args: cobra.ExactArgs(1),
}
)

View File

@ -0,0 +1,43 @@
package pods
import (
"context"
"os"
"github.com/containers/libpod/cmd/podmanV2/registry"
"github.com/containers/libpod/pkg/domain/entities"
"github.com/spf13/cobra"
)
var (
podExistsDescription = `If the named pod exists in local storage, podman pod exists exits with 0, otherwise the exit code will be 1.`
existsCommand = &cobra.Command{
Use: "exists POD",
Short: "Check if a pod exists in local storage",
Long: podExistsDescription,
RunE: exists,
Args: cobra.ExactArgs(1),
Example: `podman pod exists podID
podman pod exists mypod || podman pod create --name mypod`,
}
)
func init() {
registry.Commands = append(registry.Commands, registry.CliCommand{
Mode: []entities.EngineMode{entities.ABIMode, entities.TunnelMode},
Command: existsCommand,
Parent: podCmd,
})
}
func exists(cmd *cobra.Command, args []string) error {
response, err := registry.ContainerEngine().PodExists(context.Background(), args[0])
if err != nil {
return err
}
if !response.Value {
os.Exit(1)
}
return nil
}

View File

@ -10,6 +10,7 @@ type ContainerEngine interface {
ContainerExists(ctx context.Context, nameOrId string) (*BoolReport, error)
ContainerWait(ctx context.Context, namesOrIds []string, options WaitOptions) ([]WaitReport, error)
PodDelete(ctx context.Context, opts PodPruneOptions) (*PodDeleteReport, error)
PodExists(ctx context.Context, nameOrId string) (*BoolReport, error)
PodPrune(ctx context.Context) (*PodPruneReport, error)
VolumeDelete(ctx context.Context, opts VolumeDeleteOptions) (*VolumeDeleteReport, error)
VolumePrune(ctx context.Context) (*VolumePruneReport, error)

View File

@ -0,0 +1,19 @@
// +build ABISupport
package abi
import (
"context"
"github.com/pkg/errors"
"github.com/containers/libpod/libpod/define"
"github.com/containers/libpod/pkg/domain/entities"
)
func (ic *ContainerEngine) PodExists(ctx context.Context, nameOrId string) (*entities.BoolReport, error) {
_, err := ic.Libpod.LookupPod(nameOrId)
if err != nil && errors.Cause(err) != define.ErrNoSuchPod {
return nil, err
}
return &entities.BoolReport{Value: err == nil}, nil
}

View File

@ -0,0 +1,13 @@
package tunnel
import (
"context"
"github.com/containers/libpod/pkg/bindings/pods"
"github.com/containers/libpod/pkg/domain/entities"
)
func (ic *ContainerEngine) PodExists(ctx context.Context, nameOrId string) (*entities.BoolReport, error) {
exists, err := pods.Exists(ic.ClientCxt, nameOrId)
return &entities.BoolReport{Value: exists}, err
}