mirror of
https://github.com/containers/podman.git
synced 2025-06-19 16:33:24 +08:00
podmanv2 pod exists
add pod exists for podman v2 Signed-off-by: Brent Baude <bbaude@redhat.com>
This commit is contained in:
@ -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),
|
||||
}
|
||||
)
|
||||
|
||||
|
43
cmd/podmanV2/pods/exists.go
Normal file
43
cmd/podmanV2/pods/exists.go
Normal 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
|
||||
}
|
@ -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)
|
||||
|
19
pkg/domain/infra/abi/pods.go
Normal file
19
pkg/domain/infra/abi/pods.go
Normal 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
|
||||
}
|
13
pkg/domain/infra/tunnel/pods.go
Normal file
13
pkg/domain/infra/tunnel/pods.go
Normal 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
|
||||
}
|
Reference in New Issue
Block a user