Documentation ¶
Index ¶
- Variables
- func SetRebootMode(mode RebootMode)
- type AccessChecker
- type AdminAccess
- type Command
- type Daemon
- func (d *Daemon) CanStandby() bool
- func (d *Daemon) Dying() <-chan struct{}
- func (d *Daemon) HandleRestart(t restart.RestartType)
- func (d *Daemon) Init() error
- func (d *Daemon) Overlord() *overlord.Overlord
- func (d *Daemon) RebootIsFine(st *state.State) error
- func (d *Daemon) RebootIsMissing(st *state.State) error
- func (d *Daemon) SetDegradedMode(err error)
- func (d *Daemon) SetServiceArgs(serviceArgs map[string][]string) error
- func (d *Daemon) Start() error
- func (d *Daemon) Stop(sigCh chan<- os.Signal) error
- type OpenAccess
- type Options
- type RebootMode
- type Response
- type ResponseFunc
- type ResponseType
- type Ucrednet
- type UserAccess
- type UserState
Constants ¶
This section is empty.
Variables ¶
var ( ErrRestartSocket = fmt.Errorf("daemon stop requested to wait for socket activation") ErrRestartServiceFailure = fmt.Errorf("daemon stop requested due to service failure") ErrRestartCheckFailure = fmt.Errorf("daemon stop requested due to check failure") )
var ( BadRequest = makeErrorResponder(http.StatusBadRequest) Forbidden = makeErrorResponder(http.StatusForbidden) NotFound = makeErrorResponder(http.StatusNotFound) MethodNotAllowed = makeErrorResponder(http.StatusMethodNotAllowed) InternalError = makeErrorResponder(http.StatusInternalServerError) GatewayTimeout = makeErrorResponder(http.StatusGatewayTimeout) )
Standard error responses.
var API = []*Command{{ Path: "/v1/system-info", ReadAccess: OpenAccess{}, GET: v1SystemInfo, }, { Path: "/v1/health", ReadAccess: OpenAccess{}, GET: v1Health, }, { Path: "/v1/warnings", ReadAccess: UserAccess{}, WriteAccess: UserAccess{}, GET: v1GetWarnings, POST: v1AckWarnings, }, { Path: "/v1/changes", ReadAccess: UserAccess{}, GET: v1GetChanges, }, { Path: "/v1/changes/{id}", ReadAccess: UserAccess{}, WriteAccess: UserAccess{}, GET: v1GetChange, POST: v1PostChange, }, { Path: "/v1/changes/{id}/wait", ReadAccess: UserAccess{}, GET: v1GetChangeWait, }, { Path: "/v1/services", ReadAccess: UserAccess{}, WriteAccess: UserAccess{}, GET: v1GetServices, POST: v1PostServices, }, { Path: "/v1/services/{name}", ReadAccess: UserAccess{}, WriteAccess: UserAccess{}, GET: v1GetService, POST: v1PostService, }, { Path: "/v1/plan", ReadAccess: UserAccess{}, GET: v1GetPlan, }, { Path: "/v1/layers", WriteAccess: UserAccess{}, POST: v1PostLayers, }, { Path: "/v1/files", ReadAccess: UserAccess{}, WriteAccess: UserAccess{}, GET: v1GetFiles, POST: v1PostFiles, }, { Path: "/v1/logs", ReadAccess: UserAccess{}, GET: v1GetLogs, }, { Path: "/v1/exec", WriteAccess: UserAccess{}, POST: v1PostExec, }, { Path: "/v1/tasks/{task-id}/websocket/{websocket-id}", ReadAccess: UserAccess{}, GET: v1GetTaskWebsocket, }, { Path: "/v1/signals", WriteAccess: UserAccess{}, POST: v1PostSignals, }, { Path: "/v1/checks", ReadAccess: UserAccess{}, GET: v1GetChecks, }, { Path: "/v1/notices", ReadAccess: UserAccess{}, WriteAccess: UserAccess{}, GET: v1GetNotices, POST: v1PostNotices, }, { Path: "/v1/notices/{id}", ReadAccess: UserAccess{}, GET: v1GetNotice, }}
Functions ¶
func SetRebootMode ¶
func SetRebootMode(mode RebootMode)
SetRebootMode configures how the system issues a reboot. The default reboot handler mode is SystemdMode, which relies on systemd (or similar) provided functionality to reboot.
Types ¶
type AccessChecker ¶ added in v1.9.0
type AccessChecker interface { // Check if access should be granted or denied. In case of granting access, // return nil. In case access is denied, return a non-nil error response, // such as Unauthorized("access denied"). CheckAccess(d *Daemon, r *http.Request, ucred *Ucrednet, user *UserState) Response }
AccessChecker checks whether a particular request is allowed.
type AdminAccess ¶ added in v1.9.0
type AdminAccess struct{}
AdminAccess allows requests over the UNIX domain socket from the root uid and the current user's uid
func (AdminAccess) CheckAccess ¶ added in v1.9.0
type Command ¶
type Command struct { Path string PathPrefix string // GET ResponseFunc PUT ResponseFunc POST ResponseFunc // Access control. ReadAccess AccessChecker WriteAccess AccessChecker // contains filtered or unexported fields }
A Command routes a request to an individual per-verb ResponseFUnc
type Daemon ¶
A Daemon listens for requests and routes them to the right command
func (*Daemon) CanStandby ¶
func (*Daemon) HandleRestart ¶
func (d *Daemon) HandleRestart(t restart.RestartType)
HandleRestart implements overlord.RestartBehavior.
func (*Daemon) RebootIsFine ¶
RebootIsFine implements part of overlord.RestartBehavior.
func (*Daemon) RebootIsMissing ¶
RebootIsMissing implements part of overlord.RestartBehavior.
func (*Daemon) SetDegradedMode ¶
SetDegradedMode puts the daemon into a degraded mode which will the error given in the "err" argument for commands that are not marked as readonlyOK.
This is useful to report errors to the client when the daemon cannot work because e.g. a sanity check failed or the system is out of diskspace.
When the system is fine again calling "DegradedMode(nil)" is enough to put the daemon into full operation again.
func (*Daemon) SetServiceArgs ¶
SetServiceArgs updates the specified service commands by replacing existing arguments with the newly specified arguments.
type OpenAccess ¶ added in v1.9.0
type OpenAccess struct{}
OpenAccess allows all requests, including non-local sockets (e.g. TCP)
func (OpenAccess) CheckAccess ¶ added in v1.9.0
type Options ¶
type Options struct { // Dir is the pebble directory where all setup is found. Defaults to /var/lib/pebble/default. Dir string // SocketPath is an optional path for the unix socket used for the client // to communicate with the daemon. Defaults to a hidden (dotted) name inside // the pebble directory. SocketPath string // HTTPAddress is the address for the plain HTTP API server, for example // ":4000" to listen on any address, port 4000. If not set, the HTTP API // server is not started. HTTPAddress string // ServiceOuput is an optional io.Writer for the service log output, if set, all services // log output will be written to the writer. ServiceOutput io.Writer // OverlordExtension is an optional interface used to extend the capabilities // of the Overlord. OverlordExtension overlord.Extension }
Options holds the daemon setup required for the initialization of a new daemon.
type RebootMode ¶
type RebootMode int
const ( // Reboot uses systemd SystemdMode RebootMode = iota + 1 // Reboot uses direct kernel syscalls SyscallMode )
type Response ¶
type Response interface {
ServeHTTP(w http.ResponseWriter, r *http.Request)
}
Response knows how to serve itself, and how to find itself
func AsyncResponse ¶
func ErrorResponse ¶ added in v1.5.0
ErrorResponse builds an error Response that returns the status and formatted message.
If no arguments are provided, formatting is disabled, and the format string is used as is and not interpreted in any way.
func SyncResponse ¶
func SyncResponse(result interface{}) Response
type ResponseFunc ¶
A ResponseFunc handles one of the individual verbs for a method
type ResponseType ¶
type ResponseType string
const ( ResponseTypeSync ResponseType = "sync" ResponseTypeAsync ResponseType = "async" ResponseTypeError ResponseType = "error" )
type UserAccess ¶ added in v1.9.0
type UserAccess struct{}
UserAccess allows requests over the UNIX domain socket from any local user