api

package
v0.9.0 Latest Latest
Warning

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

Go to latest
Published: Nov 24, 2025 License: Apache-2.0 Imports: 6 Imported by: 1

Documentation

Index

Constants

View Source
const (
	PathPing           = "/"
	PathSummary        = "/summary"
	PathChildParamName = "name"
	PathChild          = "/child"
	PathOneChild       = PathChild + "/{" + PathChildParamName + "}"
	PathStartChild     = PathOneChild + "/start"
	PathStopChild      = PathOneChild + "/stop"
	PathTerminate      = "/terminate"
)
View Source
const (
	// AnnotationGroup is a key to use in [Child.Annotations] to mark children in
	// logical groups. For example, infrastructure that shouldn't be stopped by
	// default can be put in a separate group.
	AnnotationGroup = "group"
)

Variables

This section is empty.

Functions

func ListenAddr

func ListenAddr() net.Addr

Types

type API

type API interface {
	Ping(ctx context.Context) error
	Summary(ctx context.Context) ([]ChildSummary, error)
	Child(ctx context.Context, name string) (*ChildWithStatus, error)
	PutChild(ctx context.Context, child Child) (*ChildWithStatus, error)
	StartChild(ctx context.Context, name string) (*ChildWithStatus, error)
	StopChild(ctx context.Context, name string) (*ChildWithStatus, error)
	DeleteChild(ctx context.Context, name string) (*ChildWithStatus, error)
	Terminate(ctx context.Context) error
}

type Child

type Child struct {
	Name        string            `json:"name" validate:"required"`
	Annotations map[string]string `json:"annotations,omitempty"`
	Init        []Exec            `json:"init"`
	Main        Exec              `json:"main" validate:"required"`
	HealthCheck *HealthCheck      `json:"healthCheck,omitempty"`
	OneShot     bool              `json:"oneShot,omitempty"`
}

type ChildState

type ChildState string
const (
	ChildStopped     ChildState = "stopped"
	ChildInitRunning ChildState = "init-running"
	ChildInitError   ChildState = "init-error"
	ChildRunning     ChildState = "running"
	ChildStopping    ChildState = "stopping"
	ChildDone        ChildState = "done"
	ChildError       ChildState = "error"
)

type ChildStatus

type ChildStatus struct {
	State  ChildState   `json:"state"`
	Init   []ExecStatus `json:"init"`
	Main   ExecStatus   `json:"main"`
	Health HealthStatus `json:"health"`
}

type ChildSummary

type ChildSummary struct {
	Name        string            `json:"name"`
	Annotations map[string]string `json:"annotations,omitempty"`
	State       ChildState        `json:"state"`
	Pid         int               `json:"pid,omitzero"`
	Healthy     *bool             `json:"healthy,omitzero"`
}

type ChildWithStatus

type ChildWithStatus struct {
	Child
	Status ChildStatus `json:"status"`
}

type Exec

type Exec struct {
	Cmd     string            `json:"cmd" validate:"required"`
	Args    []string          `json:"args"`
	Cwd     string            `json:"cwd,omitzero"`
	Env     map[string]string `json:"env"`
	Logfile string            `json:"logfile,omitzero"`
}

type ExecState

type ExecState string
const (
	ExecNotStarted ExecState = "not-started"
	ExecRunning    ExecState = "running"
	ExecStopping   ExecState = "stopping"
	ExecEnded      ExecState = "ended"
)

type ExecStatus

type ExecStatus struct {
	State    ExecState `json:"state"`
	StartErr string    `json:"startErr"`
	Pid      int       `json:"pid,omitzero"`
	Group    string    `json:"group,omitzero"`
	ExitCode int       `json:"exitCode"`
}

type HealthCheck

type HealthCheck struct {
	Http           *HttpHealthCheck `json:"http,omitempty" validate:"required"`
	TimeoutSeconds int              `json:"timeout" validate:"required,gt=0"`
}

type HealthStatus

type HealthStatus struct {
	Healthy       bool       `json:"healthy"`
	LastHealthy   *time.Time `json:"lastHealthy,omitempty"`
	LastUnhealthy *time.Time `json:"lastUnhealthy,omitempty"`
}

type HttpHealthCheck

type HttpHealthCheck struct {
	Scheme   string `json:"scheme,omitzero" validate:"oneof=http https"`
	Insecure bool   `json:"insecure,omitzero"`
	Port     int    `json:"port" validate:"required,gt=0,lte=65535"`
	Path     string `json:"path" validate:"required"`
}

Jump to

Keyboard shortcuts

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