Documentation
¶
Overview ¶
Package workloads contains high-level logic for managing the lifecycle of ToolHive-managed containers.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( ErrContainerNotFound = fmt.Errorf("container not found") ErrContainerNotRunning = fmt.Errorf("container not running") )
ErrContainerNotFound is returned when a container cannot be found by name.
Functions ¶
func CleanupTempPermissionProfile ¶
CleanupTempPermissionProfile removes a temporary permission profile file if it was created by toolhive
func CreatePermissionProfileFile ¶
func CreatePermissionProfileFile(serverName string, permProfile *permissions.Profile) (string, error)
CreatePermissionProfileFile creates a temporary file with the permission profile
Types ¶
type Manager ¶
type Manager interface {
// GetWorkload returns information about the named container.
GetWorkload(ctx context.Context, name string) (Workload, error)
// ListWorkloads lists all ToolHive-managed containers.
ListWorkloads(ctx context.Context, listAll bool) ([]Workload, error)
// DeleteWorkload deletes a container and its associated proxy process.
// The container will be stopped if it is still running.
DeleteWorkload(ctx context.Context, name string) error
// StopWorkload stops a container and its associated proxy process.
StopWorkload(ctx context.Context, name string) error
// RunWorkload runs a container in the foreground.
RunWorkload(ctx context.Context, runConfig *runner.RunConfig) error
// RunWorkloadDetached runs a container in the background.
RunWorkloadDetached(runConfig *runner.RunConfig) error
// RestartWorkload restarts a previously stopped container.
RestartWorkload(ctx context.Context, name string) error
}
Manager is responsible for managing the state of ToolHive-managed containers.
type Workload ¶
type Workload struct {
// Name is the name of the workload.
// It is used as a unique identifier.
Name string `json:"name"`
// Package specifies the Workload Package used to create this Workload.
Package string `json:"package"`
// URL is the URL of the workload exposed by the ToolHive proxy.
URL string `json:"url"`
// Port is the port on which the workload is exposed.
// This is embedded in the URL.
Port int `json:"port"`
// ToolType is the type of tool this workload represents.
// For now, it will always be "mcp" - representing an MCP server.
ToolType string `json:"tool_type"`
// Status is the current status of the workload.
Status WorkloadStatus `json:"status"`
// StatusContext provides additional context about the workload's status.
// The exact meaning is determined by the status and the underlying runtime.
StatusContext string `json:"status_context,omitempty"`
// CreatedAt is the timestamp when the workload was created.
CreatedAt time.Time `json:"created_at"`
}
Workload is a domain model representing a workload in the system. This is used in our API to hide details of the underlying runtime.
func WorkloadFromContainerInfo ¶
func WorkloadFromContainerInfo(container *runtime.ContainerInfo) (Workload, error)
WorkloadFromContainerInfo creates a Workload struct from the runtime container info.
type WorkloadStatus ¶
type WorkloadStatus string
WorkloadStatus is an enum representing the possible statuses of a workload.
const ( // WorkloadStatusRunning indicates that the workload is currently running. WorkloadStatusRunning WorkloadStatus = "running" // WorkloadStatusStopped indicates that the workload is stopped. WorkloadStatusStopped WorkloadStatus = "stopped" // WorkloadStatusError indicates that the workload encountered an error. WorkloadStatusError WorkloadStatus = "error" // WorkloadStatusStarting indicates that the workload is in the process of starting. // TODO: this is not used yet. WorkloadStatusStarting WorkloadStatus = "starting" // WorkloadStatusUnknown indicates that the workload status is unknown. WorkloadStatusUnknown WorkloadStatus = "unknown" )