github.com/containers/libpod@v1.9.4-0.20220419124438-4284fd425507/cmd/podman/healthcheck_run.go (about) 1 package main 2 3 import ( 4 "fmt" 5 6 "github.com/containers/libpod/cmd/podman/cliconfig" 7 "github.com/containers/libpod/pkg/adapter" 8 "github.com/pkg/errors" 9 "github.com/spf13/cobra" 10 ) 11 12 var ( 13 healthcheckRunCommand cliconfig.HealthCheckValues 14 healthcheckRunDescription = "run the health check of a container" 15 _healthcheckrunCommand = &cobra.Command{ 16 Use: "run [flags] CONTAINER", 17 Short: "run the health check of a container", 18 Long: healthcheckRunDescription, 19 Example: `podman healthcheck run mywebapp`, 20 RunE: func(cmd *cobra.Command, args []string) error { 21 healthcheckRunCommand.InputArgs = args 22 healthcheckRunCommand.GlobalFlags = MainGlobalOpts 23 healthcheckRunCommand.Remote = remoteclient 24 return healthCheckCmd(&healthcheckRunCommand) 25 }, 26 Args: func(cmd *cobra.Command, args []string) error { 27 if len(args) < 1 || len(args) > 1 { 28 return errors.New("must provide the name or ID of one container") 29 } 30 return nil 31 }, 32 } 33 ) 34 35 func init() { 36 healthcheckRunCommand.Command = _healthcheckrunCommand 37 healthcheckRunCommand.SetUsageTemplate(UsageTemplate()) 38 } 39 40 func healthCheckCmd(c *cliconfig.HealthCheckValues) error { 41 runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand) 42 if err != nil { 43 return errors.Wrap(err, "could not get runtime") 44 } 45 defer runtime.DeferredShutdown(false) 46 status, err := runtime.HealthCheck(c) 47 if err == nil && status == "unhealthy" { 48 exitCode = 1 49 } 50 fmt.Println(status) 51 return err 52 }