Documentation
¶
Index ¶
- Constants
- Variables
- func PrometheusMetricsHandler(prometheusRegistry *prometheus.Registry, logger slog.Logger) http.Handler
- func SSHKeySeed(userName, workspaceName, agentName string) (int64, error)
- type Agent
- type Client
- type LSFile
- type LSRelativity
- type LSRequest
- type LSResponse
- type Options
- type PostWorkspaceAgentAppHealth
- type WorkspaceAppHealthReporter
Constants ¶
const ( ProtocolReconnectingPTY = "reconnecting-pty" ProtocolSSH = "ssh" ProtocolDial = "dial" )
const ( EnvProcPrioMgmt = "CODER_PROC_PRIO_MGMT" EnvProcOOMScore = "CODER_PROC_OOM_SCORE" )
EnvProcPrioMgmt determines whether we attempt to manage process CPU and OOM Killer priority.
const EnvAgentSubsystem = "CODER_AGENT_SUBSYSTEM"
EnvAgentSubsystem is the environment variable used to denote the specialized environment in which the agent is running (e.g. envbox, envbuilder).
Variables ¶
var WindowsDriveRegex = regexp.MustCompile(`^[a-zA-Z]:\\$`)
Functions ¶
func PrometheusMetricsHandler ¶ added in v2.10.0
func SSHKeySeed ¶ added in v2.22.0
SSHKeySeed converts an owner userName, workspaceName and agentName to an int64 hash. This uses the FNV-1a hash algorithm which provides decent distribution and collision resistance for string inputs.
Why owner username, workspace name, and agent name? These are the components that are used in hostnames for the workspace over SSH, and so we want the workspace to have a stable key with respect to these. We don't use the respective UUIDs. The workspace UUID would be different if you delete and recreate a workspace with the same name. The agent UUID is regenerated on each build. Since Coder's Tailnet networking is handling the authentication, we should not be showing users warnings about host SSH keys.
Types ¶
type Agent ¶
type Client ¶
type Client interface { ConnectRPC24(ctx context.Context) ( proto.DRPCAgentClient24, tailnetproto.DRPCTailnetClient24, error, ) RewriteDERPMap(derpMap *tailcfg.DERPMap) }
type LSRelativity ¶ added in v2.21.0
type LSRelativity string
const ( LSRelativityRoot LSRelativity = "root" LSRelativityHome LSRelativity = "home" )
type LSRequest ¶ added in v2.21.0
type LSRequest struct { // e.g. [], ["repos", "coder"], Path []string `json:"path"` // Whether the supplied path is relative to the user's home directory, // or the root directory. Relativity LSRelativity `json:"relativity"` }
type LSResponse ¶ added in v2.21.0
type LSResponse struct { AbsolutePath []string `json:"absolute_path"` // Returned so clients can display the full path to the user, and // copy it to configure file sync // e.g. Windows: "C:\\Users\\coder" // Linux: "/home/coder" AbsolutePathString string `json:"absolute_path_string"` Contents []LSFile `json:"contents"` }
type Options ¶
type Options struct { Filesystem afero.Fs LogDir string TempDir string ScriptDataDir string ExchangeToken func(ctx context.Context) (string, error) Client Client ReconnectingPTYTimeout time.Duration EnvironmentVariables map[string]string Logger slog.Logger IgnorePorts map[int]string PortCacheDuration time.Duration SSHMaxTimeout time.Duration TailnetListenPort uint16 Subsystems []codersdk.AgentSubsystem PrometheusRegistry *prometheus.Registry ReportMetadataInterval time.Duration ServiceBannerRefreshInterval time.Duration BlockFileTransfer bool Execer agentexec.Execer ExperimentalDevcontainersEnabled bool ContainerAPIOptions []agentcontainers.Option // Enable ExperimentalDevcontainersEnabled for these to be effective. }
type PostWorkspaceAgentAppHealth ¶
type PostWorkspaceAgentAppHealth func(context.Context, agentsdk.PostAppHealthsRequest) error
PostWorkspaceAgentAppHealth updates the workspace app health.
type WorkspaceAppHealthReporter ¶
WorkspaceAppHealthReporter is a function that checks and reports the health of the workspace apps until the passed context is canceled.
func NewAppHealthReporterWithClock ¶ added in v2.13.0
func NewAppHealthReporterWithClock( logger slog.Logger, apps []codersdk.WorkspaceApp, postWorkspaceAgentAppHealth PostWorkspaceAgentAppHealth, clk quartz.Clock, ) WorkspaceAppHealthReporter
NewAppHealthReporterWithClock is only called directly by test code. Product code should call NewAppHealthReporter.
func NewWorkspaceAppHealthReporter ¶
func NewWorkspaceAppHealthReporter(logger slog.Logger, apps []codersdk.WorkspaceApp, postWorkspaceAgentAppHealth PostWorkspaceAgentAppHealth) WorkspaceAppHealthReporter
NewWorkspaceAppHealthReporter creates a WorkspaceAppHealthReporter that reports app health to coderd.
Source Files
¶
Directories
¶
Path | Synopsis |
---|---|
acmock
Package acmock is a generated GoMock package.
|
Package acmock is a generated GoMock package. |
dcspec
Package dcspec contains an automatically generated Devcontainer specification.
|
Package dcspec contains an automatically generated Devcontainer specification. |
watcher
Package watcher provides file system watching capabilities for the agent.
|
Package watcher provides file system watching capabilities for the agent. |
Package reaper contains logic for reaping subprocesses.
|
Package reaper contains logic for reaping subprocesses. |