mirror of
https://github.com/containers/podman.git
synced 2025-06-05 22:31:06 +08:00
podmanv2 enable healthcheck run
run healthcheck with podmanv2 Signed-off-by: Brent Baude <bbaude@redhat.com>
This commit is contained in:
33
cmd/podmanV2/healthcheck/healthcheck.go
Normal file
33
cmd/podmanV2/healthcheck/healthcheck.go
Normal file
@ -0,0 +1,33 @@
|
||||
package healthcheck
|
||||
|
||||
import (
|
||||
"github.com/containers/libpod/cmd/podmanV2/registry"
|
||||
"github.com/containers/libpod/pkg/domain/entities"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
var (
|
||||
// Command: healthcheck
|
||||
healthCmd = &cobra.Command{
|
||||
Use: "healthcheck",
|
||||
Short: "Manage Healthcheck",
|
||||
Long: "Manage Healthcheck",
|
||||
TraverseChildren: true,
|
||||
PersistentPreRunE: preRunE,
|
||||
RunE: registry.SubCommandExists,
|
||||
}
|
||||
)
|
||||
|
||||
func init() {
|
||||
registry.Commands = append(registry.Commands, registry.CliCommand{
|
||||
Mode: []entities.EngineMode{entities.ABIMode, entities.TunnelMode},
|
||||
Command: healthCmd,
|
||||
})
|
||||
healthCmd.SetHelpTemplate(registry.HelpTemplate())
|
||||
healthCmd.SetUsageTemplate(registry.UsageTemplate())
|
||||
}
|
||||
|
||||
func preRunE(cmd *cobra.Command, args []string) error {
|
||||
_, err := registry.NewContainerEngine(cmd, args)
|
||||
return err
|
||||
}
|
42
cmd/podmanV2/healthcheck/run.go
Normal file
42
cmd/podmanV2/healthcheck/run.go
Normal file
@ -0,0 +1,42 @@
|
||||
package healthcheck
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/containers/libpod/cmd/podmanV2/registry"
|
||||
"github.com/containers/libpod/pkg/domain/entities"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
var (
|
||||
healthcheckRunDescription = "run the health check of a container"
|
||||
healthcheckrunCommand = &cobra.Command{
|
||||
Use: "run [flags] CONTAINER",
|
||||
Short: "run the health check of a container",
|
||||
Long: healthcheckRunDescription,
|
||||
Example: `podman healthcheck run mywebapp`,
|
||||
RunE: run,
|
||||
Args: cobra.ExactArgs(1),
|
||||
}
|
||||
)
|
||||
|
||||
func init() {
|
||||
registry.Commands = append(registry.Commands, registry.CliCommand{
|
||||
Mode: []entities.EngineMode{entities.ABIMode, entities.TunnelMode},
|
||||
Command: healthcheckrunCommand,
|
||||
Parent: healthCmd,
|
||||
})
|
||||
}
|
||||
|
||||
func run(cmd *cobra.Command, args []string) error {
|
||||
response, err := registry.ContainerEngine().HealthCheckRun(context.Background(), args[0], entities.HealthCheckOptions{})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if response.Status == "unhealthy" {
|
||||
registry.SetExitCode(1)
|
||||
}
|
||||
fmt.Println(response.Status)
|
||||
return err
|
||||
}
|
@ -7,6 +7,7 @@ import (
|
||||
"strings"
|
||||
|
||||
_ "github.com/containers/libpod/cmd/podmanV2/containers"
|
||||
_ "github.com/containers/libpod/cmd/podmanV2/healthcheck"
|
||||
_ "github.com/containers/libpod/cmd/podmanV2/images"
|
||||
_ "github.com/containers/libpod/cmd/podmanV2/networks"
|
||||
_ "github.com/containers/libpod/cmd/podmanV2/pods"
|
||||
|
@ -2,6 +2,8 @@ package entities
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/containers/libpod/libpod/define"
|
||||
)
|
||||
|
||||
type ContainerEngine interface {
|
||||
@ -31,4 +33,6 @@ type ContainerEngine interface {
|
||||
VolumeRm(ctx context.Context, namesOrIds []string, opts VolumeRmOptions) ([]*VolumeRmReport, error)
|
||||
VolumePrune(ctx context.Context, opts VolumePruneOptions) ([]*VolumePruneReport, error)
|
||||
VolumeList(ctx context.Context, opts VolumeListOptions) ([]*VolumeListReport, error)
|
||||
|
||||
HealthCheckRun(ctx context.Context, nameOrId string, options HealthCheckOptions) (*define.HealthCheckResults, error)
|
||||
}
|
||||
|
3
pkg/domain/entities/healthcheck.go
Normal file
3
pkg/domain/entities/healthcheck.go
Normal file
@ -0,0 +1,3 @@
|
||||
package entities
|
||||
|
||||
type HealthCheckOptions struct{}
|
26
pkg/domain/infra/abi/healthcheck.go
Normal file
26
pkg/domain/infra/abi/healthcheck.go
Normal file
@ -0,0 +1,26 @@
|
||||
// +build ABISupport
|
||||
|
||||
package abi
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/containers/libpod/libpod"
|
||||
"github.com/containers/libpod/libpod/define"
|
||||
"github.com/containers/libpod/pkg/domain/entities"
|
||||
)
|
||||
|
||||
func (ic *ContainerEngine) HealthCheckRun(ctx context.Context, nameOrId string, options entities.HealthCheckOptions) (*define.HealthCheckResults, error) {
|
||||
status, err := ic.Libpod.HealthCheck(nameOrId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
hcStatus := "unhealthy"
|
||||
if status == libpod.HealthCheckSuccess {
|
||||
hcStatus = "healthy"
|
||||
}
|
||||
report := define.HealthCheckResults{
|
||||
Status: hcStatus,
|
||||
}
|
||||
return &report, nil
|
||||
}
|
13
pkg/domain/infra/tunnel/healthcheck.go
Normal file
13
pkg/domain/infra/tunnel/healthcheck.go
Normal file
@ -0,0 +1,13 @@
|
||||
package tunnel
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/containers/libpod/libpod/define"
|
||||
"github.com/containers/libpod/pkg/bindings/containers"
|
||||
"github.com/containers/libpod/pkg/domain/entities"
|
||||
)
|
||||
|
||||
func (ic *ContainerEngine) HealthCheckRun(ctx context.Context, nameOrId string, options entities.HealthCheckOptions) (*define.HealthCheckResults, error) {
|
||||
return containers.RunHealthCheck(ic.ClientCxt, nameOrId)
|
||||
}
|
Reference in New Issue
Block a user