Documentation ¶
Overview ¶
Package client implements a Go client for Pebble's HTTP-over-unix-socket API.
To use the API, first create a client using New, and then call the methods on the returned Client to interact with the API, such as Client.Start or Client.ListFiles.
Example ¶
package main import ( "log" "github.com/canonical/pebble/client" ) var runExample = false // example won't actually be run, just type-checked func main() { if !runExample { return } pebble, err := client.New(&client.Config{Socket: ".pebble.socket"}) if err != nil { log.Fatal(err) } changeID, err := pebble.Stop(&client.ServiceOptions{Names: []string{"mysvc"}}) if err != nil { log.Fatal(err) } _, err = pebble.WaitChange(changeID, &client.WaitChangeOptions{}) if err != nil { log.Fatal(err) } }
Output:
Index ¶
- Constants
- Variables
- func FakeDoRetry(retry, timeout time.Duration) (restore func())
- type AddLayerOptions
- type Change
- type ChangeSelector
- type ChangesOptions
- type CheckInfo
- type CheckLevel
- type CheckStatus
- type ChecksOptions
- type Client
- func (client *Client) Abort(id string) (*Change, error)
- func (client *Client) AddIdentities(identities map[string]*Identity) error
- func (client *Client) AddLayer(opts *AddLayerOptions) error
- func (client *Client) AutoStart(opts *ServiceOptions) (changeID string, err error)
- func (client *Client) Change(id string) (*Change, error)
- func (client *Client) Changes(opts *ChangesOptions) ([]*Change, error)
- func (client *Client) Checks(opts *ChecksOptions) ([]*CheckInfo, error)
- func (client *Client) CloseIdleConnections()
- func (client *Client) DebugGet(action string, result interface{}, params map[string]string) error
- func (client *Client) DebugPost(action string, params interface{}, result interface{}) error
- func (client *Client) Exec(opts *ExecOptions) (*ExecProcess, error)
- func (client *Client) FollowLogs(ctx context.Context, opts *LogsOptions) error
- func (client *Client) Health(opts *HealthOptions) (health bool, err error)
- func (client *Client) Identities(opts *IdentitiesOptions) (map[string]*Identity, error)
- func (client *Client) LatestWarningTime() time.Time
- func (client *Client) ListFiles(opts *ListFilesOptions) ([]*FileInfo, error)
- func (client *Client) Logs(opts *LogsOptions) error
- func (client *Client) Maintenance() error
- func (client *Client) MakeDir(opts *MakeDirOptions) error
- func (client *Client) Notice(id string) (*Notice, error)
- func (client *Client) Notices(opts *NoticesOptions) ([]*Notice, error)
- func (client *Client) Notify(opts *NotifyOptions) (string, error)
- func (client *Client) PlanBytes(_ *PlanOptions) (data []byte, err error)
- func (client *Client) Pull(opts *PullOptions) error
- func (client *Client) Push(opts *PushOptions) error
- func (client *Client) RemoveIdentities(identityNames map[string]struct{}) error
- func (client *Client) RemovePath(opts *RemovePathOptions) error
- func (client *Client) ReplaceIdentities(identities map[string]*Identity) error
- func (client *Client) Replan(opts *ServiceOptions) (changeID string, err error)
- func (client *Client) Requester() Requester
- func (client *Client) Restart(opts *ServiceOptions) (changeID string, err error)
- func (client *Client) SendSignal(opts *SendSignalOptions) error
- func (client *Client) Services(opts *ServicesOptions) ([]*ServiceInfo, error)
- func (client *Client) Start(opts *ServiceOptions) (changeID string, err error)
- func (client *Client) Stop(opts *ServiceOptions) (changeID string, err error)
- func (client *Client) SysInfo() (*SysInfo, error)
- func (client *Client) UpdateIdentities(identities map[string]*Identity) error
- func (client *Client) WaitChange(id string, opts *WaitChangeOptions) (*Change, error)
- func (client *Client) WaitNotices(ctx context.Context, serverTimeout time.Duration, opts *NoticesOptions) ([]*Notice, error)
- type Config
- type ConnectionError
- type Error
- type ExecOptions
- type ExecProcess
- type ExitError
- type FileInfo
- func (fi *FileInfo) Group() string
- func (fi *FileInfo) GroupID() *int
- func (fi *FileInfo) IsDir() bool
- func (fi *FileInfo) ModTime() time.Time
- func (fi *FileInfo) Mode() os.FileMode
- func (fi *FileInfo) Name() string
- func (fi *FileInfo) Path() string
- func (fi *FileInfo) Size() int64
- func (fi *FileInfo) Sys() interface{}
- func (fi *FileInfo) User() string
- func (fi *FileInfo) UserID() *int
- type HealthOptions
- type IdentitiesOptions
- type Identity
- type IdentityAccess
- type ListFilesOptions
- type LocalIdentity
- type LogEntry
- type LogsOptions
- type MakeDirOptions
- type Notice
- type NoticeType
- type NoticesOptions
- type NoticesUsers
- type NotifyOptions
- type PlanOptions
- type PullOptions
- type PushOptions
- type RemovePathOptions
- type RequestError
- type RequestOptions
- type RequestResponse
- type RequestType
- type Requester
- type SendSignalOptions
- type ServiceInfo
- type ServiceOptions
- type ServiceStartup
- type ServiceStatus
- type ServicesOptions
- type SocketNotFoundError
- type SysInfo
- type Task
- type TaskProgress
- type WaitChangeOptions
Examples ¶
Constants ¶
const ( ErrorKindLoginRequired = "login-required" ErrorKindNoDefaultServices = "no-default-services" ErrorKindNotFound = "not-found" ErrorKindPermissionDenied = "permission-denied" ErrorKindGenericFileError = "generic-file-error" ErrorKindSystemRestart = "system-restart" ErrorKindDaemonRestart = "daemon-restart" )
Error kinds for use as a response or maintenance result
Variables ¶
var ErrNoData = fmt.Errorf("data entry not found")
ErrNoData is returned when there is no data associated with a given key.
Functions ¶
func FakeDoRetry ¶
FakeDoRetry fakes the delays used by the do retry loop (intended for testing). Calling restore will revert the changes.
Types ¶
type AddLayerOptions ¶
type AddLayerOptions struct { // Combine true means combine the new layer with an existing layer that // has the given label. False (the default) means append a new layer. Combine bool // Inner set to true means a new layer append may go into an existing // subdirectory, even though it may not result in appending it // to the end of the layers slice (it becomes an insert). Inner bool // Label is the label for the new layer if appending, and the label of the // layer to combine with if Combine is true. Label string // LayerData is the new layer in YAML format. LayerData []byte }
type Change ¶
type Change struct { ID string `json:"id"` Kind string `json:"kind"` Summary string `json:"summary"` Status string `json:"status"` Tasks []*Task `json:"tasks,omitempty"` Ready bool `json:"ready"` Err string `json:"err,omitempty"` SpawnTime time.Time `json:"spawn-time,omitempty"` ReadyTime time.Time `json:"ready-time,omitempty"` // contains filtered or unexported fields }
Change is a modification to the system state.
type ChangeSelector ¶
type ChangeSelector uint8
ChangeSelector represents a selection of changes to query for.
const ( ChangesInProgress ChangeSelector = 1 << iota ChangesReady ChangesAll = ChangesReady | ChangesInProgress )
func (ChangeSelector) String ¶
func (c ChangeSelector) String() string
type ChangesOptions ¶
type ChangesOptions struct { ServiceName string // if empty, no filtering by service is done Selector ChangeSelector }
type CheckInfo ¶
type CheckInfo struct { // Name is the name of this check, from the layer configuration. Name string `json:"name"` // Level is this check's level, from the layer configuration. Level CheckLevel `json:"level"` // Status is the status of this check: "up" if healthy, "down" if the // number of failures has reached the configured threshold. Status CheckStatus `json:"status"` // Failures is the number of times in a row this check has failed. It is // reset to zero as soon as the check succeeds. Failures int `json:"failures"` // Threshold is this check's failure threshold, from the layer // configuration. Threshold int `json:"threshold"` // ChangeID is the ID of the change corresponding to this check operation. // The change will be of kind "perform-check" if the check is up, or // "recover-check" if it's down. ChangeID string `json:"change-id"` }
CheckInfo holds status information for a single health check.
type CheckLevel ¶
type CheckLevel string
CheckLevel represents the level of a health check.
const ( UnsetLevel CheckLevel = "" AliveLevel CheckLevel = "alive" ReadyLevel CheckLevel = "ready" )
type CheckStatus ¶
type CheckStatus string
CheckStatus represents the status of a health check.
const ( CheckStatusUp CheckStatus = "up" CheckStatusDown CheckStatus = "down" )
type ChecksOptions ¶
type ChecksOptions struct { // Level is the check level to query for. A check is included in the // results if this field is not set, or if it is equal to the check's // level. Level CheckLevel // Names is the list of check names to query for. A check is included in // the results if this field is nil or empty slice, or if one of the // values in the slice is equal to the check's name. Names []string }
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
A Client knows how to talk to the Pebble daemon.
func (*Client) AddIdentities ¶ added in v1.15.0
AddIdentities adds the given identities to the system. It's an error if any of the named identities already exist.
func (*Client) AddLayer ¶
func (client *Client) AddLayer(opts *AddLayerOptions) error
AddLayer adds a layer to the plan's configuration layers.
func (*Client) AutoStart ¶
func (client *Client) AutoStart(opts *ServiceOptions) (changeID string, err error)
AutoStart starts the services marked as "startup: enabled". opts.Names must be empty for this call.
func (*Client) Changes ¶
func (client *Client) Changes(opts *ChangesOptions) ([]*Change, error)
Changes fetches information for the changes specified.
func (*Client) Checks ¶
func (client *Client) Checks(opts *ChecksOptions) ([]*CheckInfo, error)
Checks fetches information about specific health checks (or all of them), ordered by check name.
func (*Client) CloseIdleConnections ¶
func (client *Client) CloseIdleConnections()
CloseIdleConnections closes any API connections that are currently unused.
func (*Client) DebugGet ¶
DebugGet sends a GET debug action to the server with the provided parameters.
func (*Client) DebugPost ¶
DebugPost sends a POST debug action to the server with the provided parameters.
func (*Client) Exec ¶
func (client *Client) Exec(opts *ExecOptions) (*ExecProcess, error)
Exec starts a command with the given options, returning a value representing the process.
func (*Client) FollowLogs ¶
func (client *Client) FollowLogs(ctx context.Context, opts *LogsOptions) error
FollowLogs requests logs from the given services and follows them until the context is cancelled.
func (*Client) Health ¶ added in v1.4.0
func (client *Client) Health(opts *HealthOptions) (health bool, err error)
Health fetches healthy status of specified checks.
func (*Client) Identities ¶ added in v1.15.0
func (client *Client) Identities(opts *IdentitiesOptions) (map[string]*Identity, error)
Identities returns a map of all identities in the system.
func (*Client) LatestWarningTime ¶ added in v1.16.0
LatestWarningTime returns the most recent time a warning notice was repeated, or the zero value if there are no warnings.
func (*Client) ListFiles ¶
func (client *Client) ListFiles(opts *ListFilesOptions) ([]*FileInfo, error)
ListFiles obtains the contents of a directory or glob, or information about a file.
func (*Client) Logs ¶
func (client *Client) Logs(opts *LogsOptions) error
Logs fetches previously-written logs from the given services.
func (*Client) Maintenance ¶
Maintenance returns an error reflecting the daemon maintenance status or nil.
func (*Client) MakeDir ¶
func (client *Client) MakeDir(opts *MakeDirOptions) error
MakeDir creates a directory or directory tree.
func (*Client) Notices ¶ added in v1.5.0
func (client *Client) Notices(opts *NoticesOptions) ([]*Notice, error)
Notices returns a list of notices that match the filters given in opts, ordered by the last-repeated time.
func (*Client) Notify ¶ added in v1.5.0
func (client *Client) Notify(opts *NotifyOptions) (string, error)
Notify records an occurrence of a notice with the specified options, returning the notice ID.
func (*Client) PlanBytes ¶
func (client *Client) PlanBytes(_ *PlanOptions) (data []byte, err error)
PlanBytes fetches the plan in YAML format.
func (*Client) Pull ¶ added in v1.6.0
func (client *Client) Pull(opts *PullOptions) error
Pull retrieves a file from the remote system.
func (*Client) Push ¶ added in v1.6.0
func (client *Client) Push(opts *PushOptions) error
Push writes content to a path on the remote system.
func (*Client) RemoveIdentities ¶ added in v1.15.0
RemoveIdentities removes the named identities from the system. It's an error if any of the named identities do not exist.
func (*Client) RemovePath ¶
func (client *Client) RemovePath(opts *RemovePathOptions) error
RemovePath deletes a file or directory. The error returned is a *Error if the request went through successfully but there was an OS-level error deleting a file or directory, with the Kind field set to the specific error kind, for example "permission-denied".
func (*Client) ReplaceIdentities ¶ added in v1.15.0
ReplaceIdentities replaces the named identities in the system with the given identities (adding those that don't exist), or removes them if the map value is nil.
func (*Client) Replan ¶
func (client *Client) Replan(opts *ServiceOptions) (changeID string, err error)
Replan stops and (re)starts the services whose configuration has changed since they were started. opts.Names must be empty for this call.
func (*Client) Restart ¶
func (client *Client) Restart(opts *ServiceOptions) (changeID string, err error)
Restart stops and then starts the services named in opts.Names in dependency order.
func (*Client) SendSignal ¶
func (client *Client) SendSignal(opts *SendSignalOptions) error
SendSignal sends a signal to each of the specified services.
func (*Client) Services ¶
func (client *Client) Services(opts *ServicesOptions) ([]*ServiceInfo, error)
Services fetches information about specific services (or all of them), ordered by service name.
func (*Client) Start ¶
func (client *Client) Start(opts *ServiceOptions) (changeID string, err error)
Start starts the services named in opts.Names in dependency order.
func (*Client) Stop ¶
func (client *Client) Stop(opts *ServiceOptions) (changeID string, err error)
Stop stops the services named in opts.Names in dependency order.
func (*Client) UpdateIdentities ¶ added in v1.15.0
UpdateIdentities updates the given identities in the system. It's an error if any of the named identities do not exist.
func (*Client) WaitChange ¶
func (client *Client) WaitChange(id string, opts *WaitChangeOptions) (*Change, error)
WaitChange waits for the change to be finished. If the wait operation succeeds, the returned Change.Err string will be non-empty if the change itself had an error.
func (*Client) WaitNotices ¶ added in v1.5.0
func (client *Client) WaitNotices(ctx context.Context, serverTimeout time.Duration, opts *NoticesOptions) ([]*Notice, error)
WaitNotices returns a list of notices that match the filters given in opts, telling the server to wait up to the given timeout. They are ordered by the last-repeated time.
If the timeout elapses before any matching notices arrive, it's not considered an error: WaitNotices returns a nil slice and a nil error.
type Config ¶
type Config struct { // BaseURL contains the base URL where the Pebble daemon is expected to be. // It can be empty for a default behavior of talking over a unix socket. BaseURL string // Socket is the path to the unix socket to use. Socket string // DisableKeepAlive indicates that the connections should not be kept // alive for later reuse (the default is to keep them alive). DisableKeepAlive bool // UserAgent is the User-Agent header sent to the Pebble daemon. UserAgent string }
Config allows the user to customize client behavior.
type ConnectionError ¶
type ConnectionError struct {
// contains filtered or unexported fields
}
ConnectionError represents a connection or communication error.
func (ConnectionError) Error ¶
func (e ConnectionError) Error() string
func (ConnectionError) Unwrap ¶
func (e ConnectionError) Unwrap() error
type Error ¶
type Error struct { Kind string `json:"kind"` Value interface{} `json:"value"` Message string `json:"message"` StatusCode int }
Error is the real value of response.Result when an error occurs.
type ExecOptions ¶
type ExecOptions struct { // Required: command and arguments (first element is the executable). Command []string // Optional: run the command in the context of this service. Specifically, // inherit its environment variables, user/group settings, and working // and working directory. The other options in this struct will override // the service context; Environment will be merged on top of the service's. ServiceContext string // Optional environment variables. Environment map[string]string // Optional working directory (default is $HOME or "/" if $HOME not set). WorkingDir string // Optional user ID and group ID for the process to run as. UserID *int User string GroupID *int Group string // Optional timeout for the command execution, after which the process // will be terminated. If zero, no timeout applies. Timeout time.Duration // True to ask the server to set up a pseudo-terminal (PTY) for stdout // (this also allows window resizing). The default is no PTY, and just // to use pipes for stdout/stderr. Terminal bool // True to use the pseudo-terminal for stdin (only allowed when Terminal // is true). The default is to use a pipe for stdin. Interactive bool // Initial terminal width and height (only apply if Terminal is true). // If not specified, the Pebble server uses the target's default (usually // 80x25). When using the "pebble exec" CLI, these are set to the host's // terminal size automatically. Width int Height int // Standard input stream. If nil, no input is sent. Stdin io.Reader // Standard output stream. If nil, output is discarded. Stdout io.Writer // Standard error stream. If nil, error output is combined with standard // output and goes to the Stdout stream. Stderr io.Writer }
type ExecProcess ¶
type ExecProcess struct {
// contains filtered or unexported fields
}
ExecProcess represents a running process. Use Wait to wait for it to finish.
func (*ExecProcess) SendResize ¶
func (p *ExecProcess) SendResize(width, height int) error
SendResize sends a resize message to the running process.
func (*ExecProcess) SendSignal ¶
func (p *ExecProcess) SendSignal(signal string) error
SendSignal sends a signal to the running process.
func (*ExecProcess) Wait ¶
func (p *ExecProcess) Wait() error
Wait waits for the command process to finish. The returned error is nil if the process runs successfully and returns a zero exit code. If the command fails with a nonzero exit code, the error is of type *ExitError.
type ExitError ¶
type ExitError struct {
// contains filtered or unexported fields
}
ExitError reports an unsuccessful exit by a command (a nonzero exit code).
type FileInfo ¶
type FileInfo struct {
// contains filtered or unexported fields
}
func (*FileInfo) Size ¶
Size returns the length in bytes for regular files. For others, its behavior is system-dependent.
func (*FileInfo) Sys ¶
func (fi *FileInfo) Sys() interface{}
Sys returns the underlying data source (always nil for client.FileInfo).
type HealthOptions ¶ added in v1.4.0
type HealthOptions struct { // Level may be set to CheckAlive, to query whether alive checks are up, and // CheckReady, to query whether both alive and ready checks are up. // Defaults to CheckReady if unset. Level CheckLevel // Names defines which checks should be considered for the query. Defaults to all. Names []string }
HealthOptions holds query options to pass to a Health call.
type Identity ¶ added in v1.15.0
type Identity struct { Access IdentityAccess `json:"access" yaml:"access"` // One or more of the following type-specific configuration fields must be // non-nil (currently the only type is "local"). Local *LocalIdentity `json:"local,omitempty" yaml:"local,omitempty"` }
Identity holds the configuration of a single identity.
type IdentityAccess ¶ added in v1.15.0
type IdentityAccess string
IdentityAccess defines the access level for an identity.
const ( AdminAccess IdentityAccess = "admin" ReadAccess IdentityAccess = "read" UntrustedAccess IdentityAccess = "untrusted" )
type ListFilesOptions ¶
type ListFilesOptions struct { // Path is the absolute path of the file system entry to be listed. Path string // Pattern is the glob-like pattern string to filter results by. When // present, only file system entries with names matching this pattern will // be included in the call results. Pattern string // Itself, when set, will force directory entries not to be listed, but // instead have their information returned as if they were regular files. Itself bool }
type LocalIdentity ¶ added in v1.15.0
type LocalIdentity struct { // This is a pointer so we can distinguish between not set and 0 (a valid // user-id meaning root). UserID *uint32 `json:"user-id" yaml:"user-id"` }
LocalIdentity holds identity configuration specific to the "local" type (for ucrednet/UID authentication).
type LogEntry ¶
type LogEntry struct { Time time.Time `json:"time"` Service string `json:"service"` Message string `json:"message"` }
LogEntry is the struct passed to the WriteLog function.
type LogsOptions ¶
type LogsOptions struct { // WriteLog is called to write a single log to the output (required). WriteLog func(entry LogEntry) error // Services is the list of service names to fetch logs for (nil or empty // slice means all services). Services []string // N defines the number of log lines to return from the buffer. In follow // mode, the default is zero, in non-follow mode it's server-defined // (currently 30). Set to -1 to return the entire buffer. N int }
type MakeDirOptions ¶
type MakeDirOptions struct { // Path is the absolute path of the directory to be created (required). Path string // MakeParents, if true, specifies that any non-existent parent directories // should be created. If false (the default), the call will fail if the // directory to be created has at least one parent directory that does not // exist. MakeParents bool // Permissions specifies the permission bits of the directories to be created. // If 0 or unset, defaults to 0755. Permissions os.FileMode // UserID indicates the user ID of the owner for the created directories. UserID *int // User indicates the user name of the owner for the created directories. // If used together with UserID, this value must match the name of the user // with that ID. User string // GroupID indicates the group ID of the owner for the created directories. GroupID *int // Group indicates the name of the owner group for the created directories. // If used together with GroupID, this value must match the name of the group // with that ID. Group string }
MakeDirOptions holds the options for a call to MakeDir.
type Notice ¶ added in v1.5.0
type Notice struct { ID string `json:"id"` UserID *uint32 `json:"user-id"` Type NoticeType `json:"type"` Key string `json:"key"` FirstOccurred time.Time `json:"first-occurred"` LastOccurred time.Time `json:"last-occurred"` LastRepeated time.Time `json:"last-repeated"` Occurrences int `json:"occurrences"` LastData map[string]string `json:"last-data,omitempty"` RepeatAfter time.Duration `json:"repeat-after,omitempty"` ExpireAfter time.Duration `json:"expire-after,omitempty"` }
Notice holds details of an event that was observed and reported either inside the server itself or externally via the API. Besides the ID field itself, the Type and Key fields together also uniquely identify a particular notice, and when a new notification is made with matching Type and Key, the previous notice is updated appropriately instead of a new one being created.
type NoticeType ¶ added in v1.5.0
type NoticeType string
const ( // Recorded whenever a change is updated: when it is first spawned or its // status was updated. The key for change-update notices is the change ID. ChangeUpdateNotice NoticeType = "change-update" // A custom notice reported via the Pebble client API or "pebble notify". // The key and data fields are provided by the user. The key must be in // the format "example.com/path" to ensure well-namespaced notice keys. CustomNotice NoticeType = "custom" // Warnings are a subset of notices where the key is a human-readable // warning message. WarningNotice NoticeType = "warning" )
type NoticesOptions ¶ added in v1.5.0
type NoticesOptions struct { // Users allows returning notices for all users. Users NoticesUsers // UserID, if set, includes only notices that have this user ID or are public. UserID *uint32 // Types, if not empty, includes only notices whose type is one of these. Types []NoticeType // Keys, if not empty, includes only notices whose key is one of these. Keys []string // After, if set, includes only notices that were last repeated after this time. After time.Time }
type NoticesUsers ¶ added in v1.7.2
type NoticesUsers string
const (
NoticesUsersAll NoticesUsers = "all"
)
type NotifyOptions ¶ added in v1.5.0
type NotifyOptions struct { // Type is the notice's type. Currently only notices of type CustomNotice // can be added. Type NoticeType // Key is the notice's key. For "custom" notices, this must be in // "example.com/path" format. Key string // Data are optional key=value pairs for this occurrence of the notice. Data map[string]string // RepeatAfter, if not zero, prevents this notice from being observed if a // notification with the same Type and Key has been made recently within // the provided duration. RepeatAfter time.Duration }
type PlanOptions ¶
type PlanOptions struct{}
type PullOptions ¶ added in v1.6.0
type PushOptions ¶ added in v1.6.0
type PushOptions struct { // Source is the source of data to write (required). Source io.Reader // Path indicates the absolute path of the file in the destination // machine (required). Path string // MakeDirs, if true, will create any non-existing directories in the path // to the remote file. If false (the default) the call to Push will // fail if any of the parent directories of path do not exist. MakeDirs bool // Permissions indicates the mode of the file on the destination machine. // If 0 or unset, defaults to 0644. Note that, when used together with MakeDirs, // the directories that are created will not use this mode, but 0755. Permissions os.FileMode // UserID indicates the user ID of the owner for the file on the destination // machine. When used together with MakeDirs, the directories that are // created will also be owned by this user. UserID *int // User indicates the name of the owner user for the file on the destination // machine. When used together with MakeDirs, the directories that are // created will also be owned by this user. User string // GroupID indicates the ID of the owner group for the file on the destination // machine. When used together with MakeDirs, the directories that are // created will also be owned by this user. GroupID *int // Group indicates the name of the owner group for the file on the // machine. When used together with MakeDirs, the directories that are // created will also be owned by this user. Group string }
type RemovePathOptions ¶
type RemovePathOptions struct { // Path is the absolute path to be deleted (required). Path string // Recursive, if true, will delete all files and directories contained // within the specified path, recursively. Defaults to false. Recursive bool }
RemovePathOptions holds the options for a call to RemovePath.
type RequestError ¶
type RequestError struct {
// contains filtered or unexported fields
}
RequestError is returned when there's an error processing the request.
func (RequestError) Error ¶
func (e RequestError) Error() string
type RequestOptions ¶ added in v1.5.0
type RequestResponse ¶ added in v1.5.0
type RequestResponse struct { StatusCode int Headers http.Header // ChangeID is typically set when an AsyncRequest type is performed. The // change id allows for introspection and progress tracking of the request. ChangeID string // Result can contain request specific JSON data. The result can be // unmarshalled into the expected type using the DecodeResult method. Result []byte // Body is only set for request type RawRequest. Body io.ReadCloser }
func (*RequestResponse) DecodeResult ¶ added in v1.5.0
func (resp *RequestResponse) DecodeResult(result interface{}) error
DecodeResult decodes the endpoint-specific result payload that is included as part of sync and async request responses. The decoding is performed with the standard JSON package, so the usual field tags should be used to prepare the type for decoding.
type RequestType ¶ added in v1.5.0
type RequestType int
const ( RawRequest RequestType = iota SyncRequest AsyncRequest )
type Requester ¶ added in v1.5.0
type Requester interface { // Do performs the HTTP transaction using the provided options. Do(ctx context.Context, opts *RequestOptions) (*RequestResponse, error) // Transport returns the HTTP transport in use by the underlying HTTP client. Transport() *http.Transport }
type SendSignalOptions ¶
type ServiceInfo ¶
type ServiceInfo struct { Name string `json:"name"` Startup ServiceStartup `json:"startup"` Current ServiceStatus `json:"current"` CurrentSince time.Time `json:"current-since"` }
ServiceInfo holds status information for a single service.
type ServiceOptions ¶
type ServiceOptions struct {
Names []string
}
type ServiceStartup ¶
type ServiceStartup string
ServiceStartup defines the different startup modes for a service.
const ( StartupEnabled ServiceStartup = "enabled" StartupDisabled ServiceStartup = "disabled" )
type ServiceStatus ¶
type ServiceStatus string
ServiceStatus defines the current states for a service.
const ( StatusActive ServiceStatus = "active" StatusBackoff ServiceStatus = "backoff" StatusError ServiceStatus = "error" StatusInactive ServiceStatus = "inactive" )
type ServicesOptions ¶
type ServicesOptions struct { // Names is the list of service names to query for. If slice is nil or // empty, fetch information for all services. Names []string }
type SocketNotFoundError ¶
type SocketNotFoundError struct { // Err is the wrapped error. Err error // Path is the path of the non-existent socket. Path string }
SocketNotFoundError is the error type returned when the client fails to find a unix socket at the specified path.
func (SocketNotFoundError) Error ¶
func (s SocketNotFoundError) Error() string
func (SocketNotFoundError) Unwrap ¶
func (s SocketNotFoundError) Unwrap() error
type Task ¶
type Task struct { ID string `json:"id"` Kind string `json:"kind"` Summary string `json:"summary"` Status string `json:"status"` Log []string `json:"log,omitempty"` Progress TaskProgress `json:"progress"` SpawnTime time.Time `json:"spawn-time,omitempty"` ReadyTime time.Time `json:"ready-time,omitempty"` Data map[string]*json.RawMessage }
Task represents a single operation done to change the system's state.
type TaskProgress ¶
type TaskProgress struct { Label string `json:"label"` Done int `json:"done"` Total int `json:"total"` }
TaskProgress represents the completion progress of a task.