mirror of
https://github.com/containers/podman.git
synced 2025-12-08 06:39:05 +08:00
This includes: Implement exec -i and fix some typos in description of -i docs pass failed runtime status to caller Add resize handling for a terminal connection Customize exec systemd-cgroup slice fix healthcheck fix top add --detach-keys Implement podman-remote exec (jhonce) * Cleanup some orphaned code (jhonce) adapt remote exec for conmon exec (pehunt) Fix healthcheck and exec to match docs Introduce two new OCIRuntime errors to more comprehensively describe situations in which the runtime can error Use these different errors in branching for exit code in healthcheck and exec Set conmon to use new api version Signed-off-by: Jhon Honce <jhonce@redhat.com> Signed-off-by: Peter Hunt <pehunt@redhat.com>
53 lines
1.4 KiB
Go
53 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/containers/libpod/cmd/podman/cliconfig"
|
|
"github.com/containers/libpod/pkg/adapter"
|
|
"github.com/pkg/errors"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
var (
|
|
healthcheckRunCommand cliconfig.HealthCheckValues
|
|
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: func(cmd *cobra.Command, args []string) error {
|
|
healthcheckRunCommand.InputArgs = args
|
|
healthcheckRunCommand.GlobalFlags = MainGlobalOpts
|
|
healthcheckRunCommand.Remote = remoteclient
|
|
return healthCheckCmd(&healthcheckRunCommand)
|
|
},
|
|
Args: func(cmd *cobra.Command, args []string) error {
|
|
if len(args) < 1 || len(args) > 1 {
|
|
return errors.New("must provide the name or ID of one container")
|
|
}
|
|
return nil
|
|
},
|
|
}
|
|
)
|
|
|
|
func init() {
|
|
healthcheckRunCommand.Command = _healthcheckrunCommand
|
|
healthcheckRunCommand.SetUsageTemplate(UsageTemplate())
|
|
}
|
|
|
|
func healthCheckCmd(c *cliconfig.HealthCheckValues) error {
|
|
runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
|
|
if err != nil {
|
|
return errors.Wrap(err, "could not get runtime")
|
|
}
|
|
defer runtime.DeferredShutdown(false)
|
|
status, err := runtime.HealthCheck(c)
|
|
if err == nil && status == "unhealthy" {
|
|
exitCode = 1
|
|
}
|
|
fmt.Println(status)
|
|
return err
|
|
}
|