idlewatcher

package
v0.11.5 Latest Latest
Warning

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

Go to latest
Published: Apr 27, 2025 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrUnexpectedContainerStatus = gperr.New("unexpected container status")

Functions

This section is empty.

Types

type Config

type Config struct {
	Proxmox *ProxmoxConfig `json:"proxmox,omitempty"`
	Docker  *DockerConfig  `json:"docker,omitempty"`

	IdleTimeout   time.Duration `json:"idle_timeout" json_ext:"duration"`
	WakeTimeout   time.Duration `json:"wake_timeout" json_ext:"duration"`
	StopTimeout   time.Duration `json:"stop_timeout" json_ext:"duration"`
	StopMethod    StopMethod    `json:"stop_method"`
	StopSignal    Signal        `json:"stop_signal,omitempty"`
	StartEndpoint string        `json:"start_endpoint,omitempty"` // Optional path that must be hit to start container
}

func (*Config) ContainerName

func (c *Config) ContainerName() string

func (*Config) Key

func (c *Config) Key() string

func (*Config) Validate

func (c *Config) Validate() gperr.Error

type ContainerStatus

type ContainerStatus string
const (
	ContainerStatusError   ContainerStatus = "error"
	ContainerStatusRunning ContainerStatus = "running"
	ContainerStatusPaused  ContainerStatus = "paused"
	ContainerStatusStopped ContainerStatus = "stopped"
)

type DockerConfig

type DockerConfig struct {
	DockerHost    string `json:"docker_host" validate:"required"`
	ContainerID   string `json:"container_id" validate:"required"`
	ContainerName string `json:"container_name" validate:"required"`
}

type Provider

type Provider interface {
	ContainerPause(ctx context.Context) error
	ContainerUnpause(ctx context.Context) error
	ContainerStart(ctx context.Context) error
	ContainerStop(ctx context.Context, signal Signal, timeout int) error
	ContainerKill(ctx context.Context, signal Signal) error
	ContainerStatus(ctx context.Context) (ContainerStatus, error)
	Watch(ctx context.Context) (eventCh <-chan events.Event, errCh <-chan gperr.Error)
	Close()
}

type ProxmoxConfig

type ProxmoxConfig struct {
	Node string `json:"node" validate:"required"`
	VMID int    `json:"vmid" validate:"required"`
}

type Signal

type Signal string

type StopMethod

type StopMethod string
const (
	WakeTimeoutDefault = 30 * time.Second
	StopTimeoutDefault = 1 * time.Minute

	StopMethodPause StopMethod = "pause"
	StopMethodStop  StopMethod = "stop"
	StopMethodKill  StopMethod = "kill"
)

type Waker

type Waker interface {
	health.HealthMonitor
	http.Handler
	net.Stream
	Wake() error
}

Jump to

Keyboard shortcuts

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