mirror of https://github.com/containers/podman.git
				
				
				
			Merge pull request #5655 from baude/v2hcrun
podmanv2 enable healthcheck run
This commit is contained in:
		
						commit
						9f5fcc3565
					
				|  | @ -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 | ||||
| } | ||||
|  | @ -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 { | ||||
|  | @ -32,4 +34,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) | ||||
| } | ||||
|  |  | |||
|  | @ -0,0 +1,3 @@ | |||
| package entities | ||||
| 
 | ||||
| type HealthCheckOptions struct{} | ||||
|  | @ -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 | ||||
| } | ||||
|  | @ -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) | ||||
| } | ||||
		Loading…
	
		Reference in New Issue