rest

package
v0.15.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 11, 2024 License: MIT Imports: 16 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetLoggerFromContext added in v0.10.0

func GetLoggerFromContext(rq *http.Request, fallback *slog.Logger) *slog.Logger

func NewHealth

func NewHealth(log *slog.Logger, basePath string, healthChecks ...HealthCheck) (*restful.WebService, error)

NewHealth returns a webservice for healthchecks. All checks are executed and returned in a service health map.

func NewVersion

func NewVersion(name string, basePath string, minClientVersion string) *restful.WebService

NewVersion returns a webservice which returns version information. The given name should be a descriptive name of the module.

func RequestLoggerFilter added in v0.10.0

func RequestLoggerFilter(logger *slog.Logger) restful.FilterFunction

func UserAuth

func UserAuth(ug security.UserGetter, fallbackLogger *slog.Logger) restful.FilterFunction

Types

type HealthCheck

type HealthCheck interface {
	// ServiceName returns the name of the service that is health checked.
	ServiceName() string
	// Check is a function returning a service status and an error.
	Check(ctx context.Context) (HealthResult, error)
}

HealthCheck defines an interface for health checks.

type HealthResponse added in v0.9.0

type HealthResponse struct {
	// Status indicates the overall health state.
	Status HealthStatus `json:"status"`
	// Message gives additional information on the overall health state.
	Message string `json:"message"`
	// Services contain the individual health results of the services as evaluated by the HealthCheck interface. The overall HealthStatus is then derived automatically from the results of the health checks.
	//
	// Note that the individual HealthResults evaluated by the HealthCheck interface may again consist of a plurality services. While this is only optional it allows for creating nested health structures. These can be used for more sophisticated scenarios like evaluating platform health describing service availability in different locations or similar.
	//
	// If using nested HealthResults, the status of the parent service can be derived automatically from the status of its children by leaving the parent's health status field blank.
	Services map[string]HealthResult `json:"services"`
}

HealthResponse is returned by the API when executing a health check.

type HealthResult added in v0.9.0

type HealthResult HealthResponse

HealthResult holds the health state of a service.

type HealthStatus

type HealthStatus string

HealthStatus indicates the health of a service.

const (
	// HealthStatusHealthy is returned when the service is healthy.
	HealthStatusHealthy HealthStatus = "healthy"
	// HealthStatusUnhealthy is returned when the service is not healthy.
	HealthStatusUnhealthy HealthStatus = "unhealthy"
	// HealthStatusDegraded is returned when the service is degraded.
	HealthStatusDegraded HealthStatus = "degraded"
	// HealthStatusPartiallyUnhealthy is returned when the service is partially not healthy.
	HealthStatusPartiallyUnhealthy HealthStatus = "partial-outage"
)

func DeriveOverallHealthStatus added in v0.9.0

func DeriveOverallHealthStatus(services map[string]HealthResult) HealthStatus

type Key added in v0.10.0

type Key int
const (
	RequestLoggerKey Key = iota
	RequestIDKey
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL