Documentation ¶
Overview ¶
Package api contains Go structs for all LXD API objects
Overview ¶
This package has Go structs for every API object, all the various structs are named after the object they represent and some variations of those structs exist for initial object creation, object update and object retrieval.
A few convenience functions are also tied to those structs which let you convert between the various strucs for a given object and also query some of the more complex metadata that LXD can export.
Index ¶
- type Certificate
- type CertificatePut
- type CertificatesPost
- type Container
- type ContainerExecControl
- type ContainerExecPost
- type ContainerPost
- type ContainerPut
- type ContainerSnapshot
- type ContainerSnapshotPost
- type ContainerSnapshotsPost
- type ContainerSource
- type ContainerState
- type ContainerStateCPU
- type ContainerStateDisk
- type ContainerStateMemory
- type ContainerStateNetwork
- type ContainerStateNetworkAddress
- type ContainerStateNetworkCounters
- type ContainerStatePut
- type ContainersPost
- type Image
- type ImageAlias
- type ImageAliasesEntry
- type ImageAliasesEntryPost
- type ImageAliasesEntryPut
- type ImageAliasesPost
- type ImagePut
- type ImageSource
- type ImagesPost
- type ImagesPostSource
- type Network
- type NetworkPost
- type NetworkPut
- type NetworksPost
- type Operation
- type Profile
- type ProfilePost
- type ProfilePut
- type ProfilesPost
- type Response
- type ResponseRaw
- type ResponseType
- type Server
- type ServerEnvironment
- type ServerPut
- type ServerUntrusted
- type StatusCode
- type StoragePool
- type StoragePoolPut
- type StoragePoolsPost
- type StorageVolume
- type StorageVolumePut
- type StorageVolumesPost
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Certificate ¶
type Certificate struct { CertificatePut `yaml:",inline"` Certificate string `json:"certificate" yaml:"certificate"` Fingerprint string `json:"fingerprint" yaml:"fingerprint"` }
Certificate represents a LXD certificate
func (*Certificate) Writable ¶
func (cert *Certificate) Writable() CertificatePut
Writable converts a full Certificate struct into a CertificatePut struct (filters read-only fields)
type CertificatePut ¶
type CertificatePut struct { Name string `json:"name" yaml:"name"` Type string `json:"type" yaml:"type"` }
CertificatePut represents the modifiable fields of a LXD certificate
API extension: certificate_update
type CertificatesPost ¶
type CertificatesPost struct { CertificatePut `yaml:",inline"` Certificate string `json:"certificate" yaml:"certificate"` Password string `json:"password" yaml:"password"` }
CertificatesPost represents the fields of a new LXD certificate
type Container ¶
type Container struct { ContainerPut `yaml:",inline"` CreatedAt time.Time `json:"created_at" yaml:"created_at"` ExpandedConfig map[string]string `json:"expanded_config" yaml:"expanded_config"` ExpandedDevices map[string]map[string]string `json:"expanded_devices" yaml:"expanded_devices"` Name string `json:"name" yaml:"name"` Status string `json:"status" yaml:"status"` StatusCode StatusCode `json:"status_code" yaml:"status_code"` // API extension: container_last_used_at LastUsedAt time.Time `json:"last_used_at" yaml:"last_used_at"` }
Container represents a LXD container
func (Container) IsActive ¶
IsActive checks whether the container state indicates the container is active
func (*Container) Writable ¶
func (c *Container) Writable() ContainerPut
Writable converts a full Container struct into a ContainerPut struct (filters read-only fields)
type ContainerExecControl ¶
type ContainerExecControl struct { Command string `json:"command" yaml:"command"` Args map[string]string `json:"args" yaml:"args"` Signal int `json:"signal" yaml:"signal"` }
ContainerExecControl represents a message on the container exec "control" socket
type ContainerExecPost ¶
type ContainerExecPost struct { Command []string `json:"command" yaml:"command"` WaitForWS bool `json:"wait-for-websocket" yaml:"wait-for-websocket"` Interactive bool `json:"interactive" yaml:"interactive"` Environment map[string]string `json:"environment" yaml:"environment"` Width int `json:"width" yaml:"width"` Height int `json:"height" yaml:"height"` // API extension: container_exec_recording RecordOutput bool `json:"record-output" yaml:"record-output"` }
ContainerExecPost represents a LXD container exec request
type ContainerPost ¶
type ContainerPost struct { // Used for renames Name string `json:"name" yaml:"name"` // Used for migration Migration bool `json:"migration" yaml:"migration"` // API extension: container_stateless_copy Live bool `json:"live" yaml:"live"` // API extension: container_only_migration ContainerOnly bool `json:"container_only" yaml:"container_only"` }
ContainerPost represents the fields required to rename/move a LXD container
type ContainerPut ¶
type ContainerPut struct { Architecture string `json:"architecture" yaml:"architecture"` Config map[string]string `json:"config" yaml:"config"` Devices map[string]map[string]string `json:"devices" yaml:"devices"` Ephemeral bool `json:"ephemeral" yaml:"ephemeral"` Profiles []string `json:"profiles" yaml:"profiles"` // For snapshot restore Restore string `json:"restore,omitempty" yaml:"restore,omitempty"` Stateful bool `json:"stateful" yaml:"stateful"` // API extension: entity_description Description string `json:"description" yaml:"description"` }
ContainerPut represents the modifiable fields of a LXD container
type ContainerSnapshot ¶
type ContainerSnapshot struct { Architecture string `json:"architecture" yaml:"architecture"` Config map[string]string `json:"config" yaml:"config"` CreationDate time.Time `json:"created_at" yaml:"created_at"` Devices map[string]map[string]string `json:"devices" yaml:"devices"` Ephemeral bool `json:"ephemeral" yaml:"ephemeral"` ExpandedConfig map[string]string `json:"expanded_config" yaml:"expanded_config"` ExpandedDevices map[string]map[string]string `json:"expanded_devices" yaml:"expanded_devices"` LastUsedDate time.Time `json:"last_used_at" yaml:"last_used_at"` Name string `json:"name" yaml:"name"` Profiles []string `json:"profiles" yaml:"profiles"` Stateful bool `json:"stateful" yaml:"stateful"` }
ContainerSnapshot represents a LXD conainer snapshot
type ContainerSnapshotPost ¶
type ContainerSnapshotPost struct { Name string `json:"name" yaml:"name"` Migration bool `json:"migration" yaml:"migration"` }
ContainerSnapshotPost represents the fields required to rename/move a LXD container snapshot
type ContainerSnapshotsPost ¶
type ContainerSnapshotsPost struct { Name string `json:"name" yaml:"name"` Stateful bool `json:"stateful" yaml:"stateful"` }
ContainerSnapshotsPost represents the fields available for a new LXD container snapshot
type ContainerSource ¶
type ContainerSource struct { Type string `json:"type" yaml:"type"` Certificate string `json:"certificate" yaml:"certificate"` // For "image" type Alias string `json:"alias,omitempty" yaml:"alias,omitempty"` Fingerprint string `json:"fingerprint,omitempty" yaml:"fingerprint,omitempty"` Properties map[string]string `json:"properties,omitempty" yaml:"properties,omitempty"` Server string `json:"server,omitempty" yaml:"server,omitempty"` Secret string `json:"secret,omitempty" yaml:"secret,omitempty"` Protocol string `json:"protocol,omitempty" yaml:"protocol,omitempty"` // For "migration" and "copy" types BaseImage string `json:"base-image,omitempty" yaml:"base-image,omitempty"` // For "migration" type Mode string `json:"mode,omitempty" yaml:"mode,omitempty"` Operation string `json:"operation,omitempty" yaml:"operation,omitempty"` Websockets map[string]string `json:"secrets,omitempty" yaml:"secrets,omitempty"` // For "copy" type Source string `json:"source,omitempty" yaml:"source,omitempty"` // API extension: container_push Live bool `json:"live,omitempty" yaml:"live,omitempty"` // API extension: container_only_migration ContainerOnly bool `json:"container_only,omitempty" yaml:"container_only,omitempty"` }
ContainerSource represents the creation source for a new container
type ContainerState ¶
type ContainerState struct { Status string `json:"status" yaml:"status"` StatusCode StatusCode `json:"status_code" yaml:"status_code"` Disk map[string]ContainerStateDisk `json:"disk" yaml:"disk"` Memory ContainerStateMemory `json:"memory" yaml:"memory"` Network map[string]ContainerStateNetwork `json:"network" yaml:"network"` Pid int64 `json:"pid" yaml:"pid"` Processes int64 `json:"processes" yaml:"processes"` // API extension: container_cpu_time CPU ContainerStateCPU `json:"cpu" yaml:"cpu"` }
ContainerState represents a LXD container's state
type ContainerStateCPU ¶
type ContainerStateCPU struct {
Usage int64 `json:"usage" yaml:"usage"`
}
ContainerStateCPU represents the cpu information section of a LXD container's state
API extension: container_cpu_time
type ContainerStateDisk ¶
type ContainerStateDisk struct {
Usage int64 `json:"usage" yaml:"usage"`
}
ContainerStateDisk represents the disk information section of a LXD container's state
type ContainerStateMemory ¶
type ContainerStateMemory struct { Usage int64 `json:"usage" yaml:"usage"` UsagePeak int64 `json:"usage_peak" yaml:"usage_peak"` SwapUsage int64 `json:"swap_usage" yaml:"swap_usage"` SwapUsagePeak int64 `json:"swap_usage_peak" yaml:"swap_usage_peak"` }
ContainerStateMemory represents the memory information section of a LXD container's state
type ContainerStateNetwork ¶
type ContainerStateNetwork struct { Addresses []ContainerStateNetworkAddress `json:"addresses" yaml:"addresses"` Counters ContainerStateNetworkCounters `json:"counters" yaml:"counters"` Hwaddr string `json:"hwaddr" yaml:"hwaddr"` HostName string `json:"host_name" yaml:"host_name"` Mtu int `json:"mtu" yaml:"mtu"` State string `json:"state" yaml:"state"` Type string `json:"type" yaml:"type"` }
ContainerStateNetwork represents the network information section of a LXD container's state
type ContainerStateNetworkAddress ¶
type ContainerStateNetworkAddress struct { Family string `json:"family" yaml:"family"` Address string `json:"address" yaml:"address"` Netmask string `json:"netmask" yaml:"netmask"` Scope string `json:"scope" yaml:"scope"` }
ContainerStateNetworkAddress represents a network address as part of the network section of a LXD container's state
type ContainerStateNetworkCounters ¶
type ContainerStateNetworkCounters struct { BytesReceived int64 `json:"bytes_received" yaml:"bytes_received"` BytesSent int64 `json:"bytes_sent" yaml:"bytes_sent"` PacketsReceived int64 `json:"packets_received" yaml:"packets_received"` PacketsSent int64 `json:"packets_sent" yaml:"packets_sent"` }
ContainerStateNetworkCounters represents packet counters as part of the network section of a LXD container's state
type ContainerStatePut ¶
type ContainerStatePut struct { Action string `json:"action" yaml:"action"` Timeout int `json:"timeout" yaml:"timeout"` Force bool `json:"force" yaml:"force"` Stateful bool `json:"stateful" yaml:"stateful"` }
ContainerStatePut represents the modifiable fields of a LXD container's state
type ContainersPost ¶
type ContainersPost struct { ContainerPut `yaml:",inline"` Name string `json:"name" yaml:"name"` Source ContainerSource `json:"source" yaml:"source"` }
ContainersPost represents the fields available for a new LXD container
type Image ¶
type Image struct { ImagePut `yaml:",inline"` Aliases []ImageAlias `json:"aliases" yaml:"aliases"` Architecture string `json:"architecture" yaml:"architecture"` Cached bool `json:"cached" yaml:"cached"` Filename string `json:"filename" yaml:"filename"` Fingerprint string `json:"fingerprint" yaml:"fingerprint"` Size int64 `json:"size" yaml:"size"` UpdateSource *ImageSource `json:"update_source,omitempty" yaml:"update_source,omitempty"` CreatedAt time.Time `json:"created_at" yaml:"created_at"` ExpiresAt time.Time `json:"expires_at" yaml:"expires_at"` LastUsedAt time.Time `json:"last_used_at" yaml:"last_used_at"` UploadedAt time.Time `json:"uploaded_at" yaml:"uploaded_at"` }
Image represents a LXD image
type ImageAlias ¶
type ImageAlias struct { Name string `json:"name" yaml:"name"` Description string `json:"description" yaml:"description"` }
ImageAlias represents an alias from the alias list of a LXD image
type ImageAliasesEntry ¶
type ImageAliasesEntry struct { ImageAliasesEntryPut `yaml:",inline"` Name string `json:"name" yaml:"name"` }
ImageAliasesEntry represents a LXD image alias
type ImageAliasesEntryPost ¶
type ImageAliasesEntryPost struct {
Name string `json:"name" yaml:"name"`
}
ImageAliasesEntryPost represents the required fields to rename a LXD image alias
type ImageAliasesEntryPut ¶
type ImageAliasesEntryPut struct { Description string `json:"description" yaml:"description"` Target string `json:"target" yaml:"target"` }
ImageAliasesEntryPut represents the modifiable fields of a LXD image alias
type ImageAliasesPost ¶
type ImageAliasesPost struct {
ImageAliasesEntry `yaml:",inline"`
}
ImageAliasesPost represents a new LXD image alias
type ImagePut ¶
type ImagePut struct { AutoUpdate bool `json:"auto_update" yaml:"auto_update"` Properties map[string]string `json:"properties" yaml:"properties"` Public bool `json:"public" yaml:"public"` }
ImagePut represents the modifiable fields of a LXD image
type ImageSource ¶
type ImageSource struct { Alias string `json:"alias" yaml:"alias"` Certificate string `json:"certificate" yaml:"certificate"` Protocol string `json:"protocol" yaml:"protocol"` Server string `json:"server" yaml:"server"` }
ImageSource represents the source of a LXD image
type ImagesPost ¶
type ImagesPost struct { ImagePut `yaml:",inline"` Filename string `json:"filename" yaml:"filename"` Source *ImagesPostSource `json:"source" yaml:"source"` // API extension: image_compression_algorithm CompressionAlgorithm string `json:"compression_algorithm" yaml:"compression_algorithm"` // API extension: image_create_aliases Aliases []ImageAlias `json:"aliases" yaml:"aliases"` }
ImagesPost represents the fields available for a new LXD image
type ImagesPostSource ¶
type ImagesPostSource struct { ImageSource `yaml:",inline"` Mode string `json:"mode" yaml:"mode"` Type string `json:"type" yaml:"type"` // For protocol "direct" URL string `json:"url" yaml:"url"` // For type "container" Name string `json:"name" yaml:"name"` // For type "image" Fingerprint string `json:"fingerprint" yaml:"fingerprint"` Secret string `json:"secret" yaml:"secret"` }
ImagesPostSource represents the source of a new LXD image
type Network ¶
type Network struct { NetworkPut `yaml:",inline"` Name string `json:"name" yaml:"name"` Type string `json:"type" yaml:"type"` UsedBy []string `json:"used_by" yaml:"used_by"` // API extension: network Managed bool `json:"managed" yaml:"managed"` }
Network represents a LXD network
func (*Network) Writable ¶
func (network *Network) Writable() NetworkPut
Writable converts a full Network struct into a NetworkPut struct (filters read-only fields)
type NetworkPost ¶
type NetworkPost struct {
Name string `json:"name" yaml:"name"`
}
NetworkPost represents the fields required to rename a LXD network
API extension: network
type NetworkPut ¶
type NetworkPut struct { Config map[string]string `json:"config" yaml:"config"` // API extension: entity_description Description string `json:"description" yaml:"description"` }
NetworkPut represents the modifiable fields of a LXD network
API extension: network
type NetworksPost ¶
type NetworksPost struct { NetworkPut `yaml:",inline"` Managed bool `json:"managed" yaml:"managed"` Name string `json:"name" yaml:"name"` Type string `json:"type" yaml:"type"` }
NetworksPost represents the fields of a new LXD network
API extension: network
type Operation ¶
type Operation struct { ID string `json:"id" yaml:"id"` Class string `json:"class" yaml:"class"` CreatedAt time.Time `json:"created_at" yaml:"created_at"` UpdatedAt time.Time `json:"updated_at" yaml:"updated_at"` Status string `json:"status" yaml:"status"` StatusCode StatusCode `json:"status_code" yaml:"status_code"` Resources map[string][]string `json:"resources" yaml:"resources"` Metadata map[string]interface{} `json:"metadata" yaml:"metadata"` MayCancel bool `json:"may_cancel" yaml:"may_cancel"` Err string `json:"err" yaml:"err"` }
Operation represents a LXD background operation
type Profile ¶
type Profile struct { ProfilePut `yaml:",inline"` Name string `json:"name" yaml:"name"` // API extension: profile_usedby UsedBy []string `json:"used_by" yaml:"used_by"` }
Profile represents a LXD profile
func (*Profile) Writable ¶
func (profile *Profile) Writable() ProfilePut
Writable converts a full Profile struct into a ProfilePut struct (filters read-only fields)
type ProfilePost ¶
type ProfilePost struct {
Name string `json:"name" yaml:"name"`
}
ProfilePost represents the fields required to rename a LXD profile
type ProfilePut ¶
type ProfilePut struct { Config map[string]string `json:"config" yaml:"config"` Description string `json:"description" yaml:"description"` Devices map[string]map[string]string `json:"devices" yaml:"devices"` }
ProfilePut represents the modifiable fields of a LXD profile
type ProfilesPost ¶
type ProfilesPost struct { ProfilePut `yaml:",inline"` Name string `json:"name" yaml:"name"` }
ProfilesPost represents the fields of a new LXD profile
type Response ¶
type Response struct { Type ResponseType `json:"type" yaml:"type"` // Valid only for Sync responses Status string `json:"status" yaml:"status"` StatusCode int `json:"status_code" yaml:"status_code"` // Valid only for Async responses Operation string `json:"operation" yaml:"operation"` // Valid only for Error responses Code int `json:"error_code" yaml:"error_code"` Error string `json:"error" yaml:"error"` // Valid for Sync and Error responses Metadata json.RawMessage `json:"metadata" yaml:"metadata"` }
Response represents a LXD operation
func (*Response) MetadataAsMap ¶
MetadataAsMap parses the Response metadata into a map
func (*Response) MetadataAsOperation ¶
MetadataAsOperation turns the Response metadata into an Operation
func (*Response) MetadataAsStringSlice ¶
MetadataAsStringSlice parses the Response metadata into a slice of string
func (*Response) MetadataAsStruct ¶
MetadataAsStruct parses the Response metadata into a provided struct
type ResponseRaw ¶
type ResponseRaw struct { Response `yaml:",inline"` Metadata interface{} `json:"metadata" yaml:"metadata"` }
ResponseRaw represents a LXD operation in its original form
type ResponseType ¶
type ResponseType string
ResponseType represents a valid LXD response type
const ( SyncResponse ResponseType = "sync" AsyncResponse ResponseType = "async" ErrorResponse ResponseType = "error" )
LXD response types
type Server ¶
type Server struct { ServerPut `yaml:",inline"` ServerUntrusted `yaml:",inline"` Environment ServerEnvironment `json:"environment" yaml:"environment"` }
Server represents a LXD server
type ServerEnvironment ¶
type ServerEnvironment struct { Addresses []string `json:"addresses" yaml:"addresses"` Architectures []string `json:"architectures" yaml:"architectures"` Certificate string `json:"certificate" yaml:"certificate"` CertificateFingerprint string `json:"certificate_fingerprint" yaml:"certificate_fingerprint"` Driver string `json:"driver" yaml:"driver"` DriverVersion string `json:"driver_version" yaml:"driver_version"` Kernel string `json:"kernel" yaml:"kernel"` KernelArchitecture string `json:"kernel_architecture" yaml:"kernel_architecture"` KernelVersion string `json:"kernel_version" yaml:"kernel_version"` Server string `json:"server" yaml:"server"` ServerPid int `json:"server_pid" yaml:"server_pid"` ServerVersion string `json:"server_version" yaml:"server_version"` Storage string `json:"storage" yaml:"storage"` StorageVersion string `json:"storage_version" yaml:"storage_version"` }
ServerEnvironment represents the read-only environment fields of a LXD server
type ServerPut ¶
type ServerPut struct {
Config map[string]interface{} `json:"config" yaml:"config"`
}
ServerPut represents the modifiable fields of a LXD server configuration
type ServerUntrusted ¶
type ServerUntrusted struct { APIExtensions []string `json:"api_extensions" yaml:"api_extensions"` APIStatus string `json:"api_status" yaml:"api_status"` APIVersion string `json:"api_version" yaml:"api_version"` Auth string `json:"auth" yaml:"auth"` Public bool `json:"public" yaml:"public"` }
ServerUntrusted represents a LXD server for an untrusted client
type StatusCode ¶
type StatusCode int
StatusCode represents a valid LXD operation and container status
const ( OperationCreated StatusCode = 100 Started StatusCode = 101 Stopped StatusCode = 102 Running StatusCode = 103 Cancelling StatusCode = 104 Pending StatusCode = 105 Starting StatusCode = 106 Stopping StatusCode = 107 Aborting StatusCode = 108 Freezing StatusCode = 109 Frozen StatusCode = 110 Thawed StatusCode = 111 Error StatusCode = 112 Success StatusCode = 200 Failure StatusCode = 400 Cancelled StatusCode = 401 )
LXD status codes
func (StatusCode) IsFinal ¶
func (o StatusCode) IsFinal() bool
IsFinal will return true if the status code indicates an end state
func (StatusCode) String ¶
func (o StatusCode) String() string
String returns a suitable string representation for the status code
type StoragePool ¶
type StoragePool struct { StoragePoolPut `yaml:",inline"` Name string `json:"name" yaml:"name"` Driver string `json:"driver" yaml:"driver"` UsedBy []string `json:"used_by" yaml:"used_by"` }
StoragePool represents the fields of a LXD storage pool.
API extension: storage
func (*StoragePool) Writable ¶
func (storagePool *StoragePool) Writable() StoragePoolPut
Writable converts a full StoragePool struct into a StoragePoolPut struct (filters read-only fields).
type StoragePoolPut ¶
type StoragePoolPut struct { Config map[string]string `json:"config" yaml:"config"` // API extension: entity_description Description string `json:"description" yaml:"description"` }
StoragePoolPut represents the modifiable fields of a LXD storage pool.
API extension: storage
type StoragePoolsPost ¶
type StoragePoolsPost struct { StoragePoolPut `yaml:",inline"` Name string `json:"name" yaml:"name"` Driver string `json:"driver" yaml:"driver"` }
StoragePoolsPost represents the fields of a new LXD storage pool
API extension: storage
type StorageVolume ¶
type StorageVolume struct { StorageVolumePut `yaml:",inline"` Name string `json:"name" yaml:"name"` Type string `json:"type" yaml:"type"` UsedBy []string `json:"used_by" yaml:"used_by"` }
StorageVolume represents the fields of a LXD storage volume.
API extension: storage
func (*StorageVolume) Writable ¶
func (storageVolume *StorageVolume) Writable() StorageVolumePut
Writable converts a full StorageVolume struct into a StorageVolumePut struct (filters read-only fields).
type StorageVolumePut ¶
type StorageVolumePut struct { Config map[string]string `json:"config" yaml:"config"` // API extension: entity_description Description string `json:"description" yaml:"description"` }
StorageVolumePut represents the modifiable fields of a LXD storage volume.
API extension: storage
type StorageVolumesPost ¶
type StorageVolumesPost struct { StorageVolumePut `yaml:",inline"` Name string `json:"name" yaml:"name"` Type string `json:"type" yaml:"type"` }
StorageVolumesPost represents the fields of a new LXD storage pool volume
API extension: storage