api

package
v0.0.0-...-b84de06 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 9, 2020 License: Apache-2.0 Imports: 2 Imported by: 0

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

Constants

View Source
const InstanceTypeAny = InstanceType("")

InstanceTypeAny defines the instance type value for requesting any instance type.

View Source
const InstanceTypeContainer = InstanceType("container")

InstanceTypeContainer defines the instance type value for a container.

View Source
const InstanceTypeVM = InstanceType("virtual-machine")

InstanceTypeVM defines the instance type value for a virtual-machine.

View Source
const NetworkStatusCreated = "Created"

NetworkStatusCreated network is fully created.

View Source
const NetworkStatusErrored = "Errored"

NetworkStatusErrored network is in error status.

View Source
const NetworkStatusPending = "Pending"

NetworkStatusPending network is pending creation on other cluster nodes.

View Source
const NetworkStatusUnknown = "Unknown"

NetworkStatusUnknown network is in unknown status.

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 Cluster

type Cluster struct {
	ServerName string `json:"server_name" yaml:"server_name"`
	Enabled    bool   `json:"enabled" yaml:"enabled"`

	// API extension: clustering_join
	MemberConfig []ClusterMemberConfigKey `json:"member_config" yaml:"member_config"`
}

Cluster represents high-level information about a LXD cluster.

API extension: clustering

type ClusterMember

type ClusterMember struct {
	ClusterMemberPut `yaml:",inline"`

	ServerName string `json:"server_name" yaml:"server_name"`
	URL        string `json:"url" yaml:"url"`
	Database   bool   `json:"database" yaml:"database"`
	Status     string `json:"status" yaml:"status"`
	Message    string `json:"message" yaml:"message"`
}

ClusterMember represents the a LXD node in the cluster.

API extension: clustering

func (*ClusterMember) Writable

func (member *ClusterMember) Writable() ClusterMemberPut

Writable converts a full Profile struct into a ProfilePut struct (filters read-only fields)

type ClusterMemberConfigKey

type ClusterMemberConfigKey struct {
	Entity      string `json:"entity" yaml:"entity"`
	Name        string `json:"name" yaml:"name"`
	Key         string `json:"key" yaml:"key"`
	Value       string `json:"value" yaml:"value"`
	Description string `json:"description" yaml:"description"`
}

ClusterMemberConfigKey represents a single config key that a new member of the cluster is required to provide when joining.

The Value field is empty when getting clustering information with GET /1.0/cluster, and should be filled by the joining node when performing a PUT /1.0/cluster join request.

API extension: clustering_join

type ClusterMemberPost

type ClusterMemberPost struct {
	ServerName string `json:"server_name" yaml:"server_name"`
}

ClusterMemberPost represents the fields required to rename a LXD node.

API extension: clustering

type ClusterMemberPut

type ClusterMemberPut struct {
	// API extension: clustering_roles
	Roles []string `json:"roles" yaml:"roles"`

	// API extension: clustering_architecture
	Architecture string `json:"architecture" yaml:"architecture"`

	// API extension: clustering_failure_domains
	FailureDomain string `json:"failure_domain" yaml:"failure_domain"`
}

ClusterMemberPut represents the the modifiable fields of a LXD cluster member

API extension: clustering_edit_roles

type ClusterPut

type ClusterPut struct {
	Cluster            `yaml:",inline"`
	ClusterAddress     string `json:"cluster_address" yaml:"cluster_address"`
	ClusterCertificate string `json:"cluster_certificate" yaml:"cluster_certificate"`

	// API extension: clustering_join
	ServerAddress   string `json:"server_address" yaml:"server_address"`
	ClusterPassword string `json:"cluster_password" yaml:"cluster_password"`
}

ClusterPut represents the fields required to bootstrap or join a LXD cluster.

API extension: clustering

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"`

	// API extension: clustering
	Location string `json:"location" yaml:"location"`
}

Container represents a LXD container

func (Container) IsActive

func (c Container) IsActive() bool

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 ContainerBackup

type ContainerBackup struct {
	Name             string    `json:"name" yaml:"name"`
	CreatedAt        time.Time `json:"created_at" yaml:"created_at"`
	ExpiresAt        time.Time `json:"expires_at" yaml:"expires_at"`
	ContainerOnly    bool      `json:"container_only" yaml:"container_only"`
	OptimizedStorage bool      `json:"optimized_storage" yaml:"optimized_storage"`
}

ContainerBackup represents a LXD container backup API extension: container_backup

type ContainerBackupPost

type ContainerBackupPost struct {
	Name string `json:"name" yaml:"name"`
}

ContainerBackupPost represents the fields available for the renaming of a container backup API extension: container_backup

type ContainerBackupsPost

type ContainerBackupsPost struct {
	Name             string    `json:"name" yaml:"name"`
	ExpiresAt        time.Time `json:"expires_at" yaml:"expires_at"`
	ContainerOnly    bool      `json:"container_only" yaml:"container_only"`
	OptimizedStorage bool      `json:"optimized_storage" yaml:"optimized_storage"`
}

ContainerBackupsPost represents the fields available for a new LXD container backup API extension: container_backup

type ContainerConsoleControl

type ContainerConsoleControl struct {
	Command string            `json:"command" yaml:"command"`
	Args    map[string]string `json:"args" yaml:"args"`
}

ContainerConsoleControl represents a message on the container console "control" socket

API extension: console

type ContainerConsolePost

type ContainerConsolePost struct {
	Width  int `json:"width" yaml:"width"`
	Height int `json:"height" yaml:"height"`
}

ContainerConsolePost represents a LXD container console request

API extension: console

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"`

	// API extension: container_user_group_cwd
	User  uint32 `json:"user" yaml:"user"`
	Group uint32 `json:"group" yaml:"group"`
	Cwd   string `json:"cwd" yaml:"cwd"`
}

ContainerExecPost represents a LXD container exec request

type ContainerFull

type ContainerFull struct {
	Container `yaml:",inline"`

	Backups   []ContainerBackup   `json:"backups" yaml:"backups"`
	State     *ContainerState     `json:"state" yaml:"state"`
	Snapshots []ContainerSnapshot `json:"snapshots" yaml:"snapshots"`
}

ContainerFull is a combination of Container, ContainerState and CotnainerSnapshot

API extension: container_full

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"`

	// API extension: container_push_target
	Target *ContainerPostTarget `json:"target" yaml:"target"`
}

ContainerPost represents the fields required to rename/move a LXD container

type ContainerPostTarget

type ContainerPostTarget struct {
	Certificate string            `json:"certificate" yaml:"certificate"`
	Operation   string            `json:"operation,omitempty" yaml:"operation,omitempty"`
	Websockets  map[string]string `json:"secrets,omitempty" yaml:"secrets,omitempty"`
}

ContainerPostTarget represents the migration target host and operation

API extension: container_push_target

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 {
	ContainerSnapshotPut `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"`
	LastUsedAt      time.Time                    `json:"last_used_at" yaml:"last_used_at"`
	Name            string                       `json:"name" yaml:"name"`
	Stateful        bool                         `json:"stateful" yaml:"stateful"`
}

ContainerSnapshot represents a LXD conainer snapshot

func (*ContainerSnapshot) Writable

Writable converts a full ContainerSnapshot struct into a ContainerSnapshotPut struct (filters read-only fields)

type ContainerSnapshotPost

type ContainerSnapshotPost struct {
	Name      string               `json:"name" yaml:"name"`
	Migration bool                 `json:"migration" yaml:"migration"`
	Target    *ContainerPostTarget `json:"target" yaml:"target"`

	// API extension: container_snapshot_stateful_migration
	Live bool `json:"live,omitempty" yaml:"live,omitempty"`
}

ContainerSnapshotPost represents the fields required to rename/move a LXD container snapshot

type ContainerSnapshotPut

type ContainerSnapshotPut 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"`
	ExpiresAt    time.Time                    `json:"expires_at" yaml:"expires_at"`
}

ContainerSnapshotPut represents the modifiable fields of a LXD container snapshot API extension: snapshot_expiry

type ContainerSnapshotsPost

type ContainerSnapshotsPost struct {
	Name     string `json:"name" yaml:"name"`
	Stateful bool   `json:"stateful" yaml:"stateful"`

	// API extension: snapshot_expiry_creation
	ExpiresAt *time.Time `json:"expires_at" yaml:"expires_at"`
}

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"`

	// API extension: container_incremental_copy
	Refresh bool `json:"refresh,omitempty" yaml:"refresh,omitempty"`

	// API extension: container_copy_project
	Project string `json:"project,omitempty" yaml:"project,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"`

	InstanceType string `json:"instance_type" yaml:"instance_type"`
}

ContainersPost represents the fields available for a new LXD container

type Event

type Event struct {
	Type      string          `yaml:"type" json:"type"`
	Timestamp time.Time       `yaml:"timestamp" json:"timestamp"`
	Metadata  json.RawMessage `yaml:"metadata" json:"metadata"`

	// API extension: event_location
	Location string `yaml:"location,omitempty" json:"location,omitempty"`
}

Event represents an event entry (over websocket)

type EventLifecycle

type EventLifecycle struct {
	Action  string                 `yaml:"action" json:"action"`
	Source  string                 `yaml:"source" json:"source"`
	Context map[string]interface{} `yaml:"context,omitempty" json:"context,omitempty"`
}

EventLifecycle represets a lifecycle type event entry

API extension: event_lifecycle

type EventLogging

type EventLogging struct {
	Message string            `yaml:"message" json:"message"`
	Level   string            `yaml:"level" json:"level"`
	Context map[string]string `yaml:"context" json:"context"`
}

EventLogging represents a logging type event entry (admin only)

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"`

	// API extension: image_types
	Type string `json:"type" yaml:"type"`

	CreatedAt  time.Time `json:"created_at" yaml:"created_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

func (*Image) Writable

func (img *Image) Writable() ImagePut

Writable converts a full Image struct into a ImagePut struct (filters read-only fields)

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"`

	// API extension: image_types
	Type string `json:"type" yaml:"type"`
}

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 ImageExportPost

type ImageExportPost struct {
	Target      string       `json:"target" yaml:"target"`
	Secret      string       `json:"secret" yaml:"secret"`
	Certificate string       `json:"certificate" yaml:"certificate"`
	Aliases     []ImageAlias `json:"aliases" yaml:"aliases"`
}

ImageExportPost represents the fields required to export a LXD image API extension: images_push_relay

type ImageMetadata

type ImageMetadata struct {
	Architecture string                            `json:"architecture" yaml:"architecture"`
	CreationDate int64                             `json:"creation_date" yaml:"creation_date"`
	ExpiryDate   int64                             `json:"expiry_date" yaml:"expiry_date"`
	Properties   map[string]string                 `json:"properties" yaml:"properties"`
	Templates    map[string]*ImageMetadataTemplate `json:"templates" yaml:"templates"`
}

ImageMetadata represents LXD image metadata

type ImageMetadataTemplate

type ImageMetadataTemplate struct {
	When       []string          `json:"when" yaml:"when"`
	CreateOnly bool              `json:"create_only" yaml:"create_only"`
	Template   string            `json:"template" yaml:"template"`
	Properties map[string]string `json:"properties" yaml:"properties"`
}

ImageMetadataTemplate represents a template entry in image metadata

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"`

	// API extension: images_expiry
	ExpiresAt time.Time `json:"expires_at" yaml:"expires_at"`

	// API extension: image_profiles
	Profiles []string `json:"profiles" yaml:"profiles"`
}

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"`

	// API extension: image_types
	ImageType string `json:"image_type" yaml:"image_type"`
}

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 Instance

type Instance struct {
	InstancePut `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"`
	LastUsedAt      time.Time                    `json:"last_used_at" yaml:"last_used_at"`
	Location        string                       `json:"location" yaml:"location"`
	Type            string                       `json:"type" yaml:"type"`
}

Instance represents a LXD instance.

API extension: instances

func (Instance) IsActive

func (c Instance) IsActive() bool

IsActive checks whether the instance state indicates the instance is active.

API extension: instances

func (*Instance) Writable

func (c *Instance) Writable() InstancePut

Writable converts a full Instance struct into a InstancePut struct (filters read-only fields).

API extension: instances

type InstanceBackup

type InstanceBackup struct {
	Name             string    `json:"name" yaml:"name"`
	CreatedAt        time.Time `json:"created_at" yaml:"created_at"`
	ExpiresAt        time.Time `json:"expires_at" yaml:"expires_at"`
	InstanceOnly     bool      `json:"instance_only" yaml:"instance_only"`
	ContainerOnly    bool      `json:"container_only" yaml:"container_only"` // Deprecated, use InstanceOnly.
	OptimizedStorage bool      `json:"optimized_storage" yaml:"optimized_storage"`
}

InstanceBackup represents a LXD instance backup.

API extension: instances

type InstanceBackupPost

type InstanceBackupPost struct {
	Name string `json:"name" yaml:"name"`
}

InstanceBackupPost represents the fields available for the renaming of a instance backup.

API extension: instances

type InstanceBackupsPost

type InstanceBackupsPost struct {
	Name             string    `json:"name" yaml:"name"`
	ExpiresAt        time.Time `json:"expires_at" yaml:"expires_at"`
	InstanceOnly     bool      `json:"instance_only" yaml:"instance_only"`
	ContainerOnly    bool      `json:"container_only" yaml:"container_only"` // Deprecated, use InstanceOnly.
	OptimizedStorage bool      `json:"optimized_storage" yaml:"optimized_storage"`

	// API extension: backup_compression_algorithm
	CompressionAlgorithm string `json:"compression_algorithm" yaml:"compression_algorithm"`
}

InstanceBackupsPost represents the fields available for a new LXD instance backup.

API extension: instances

type InstanceConsoleControl

type InstanceConsoleControl struct {
	Command string            `json:"command" yaml:"command"`
	Args    map[string]string `json:"args" yaml:"args"`
}

InstanceConsoleControl represents a message on the instance console "control" socket.

API extension: instances

type InstanceConsolePost

type InstanceConsolePost struct {
	Width  int `json:"width" yaml:"width"`
	Height int `json:"height" yaml:"height"`

	// API extension: console_vga_type
	Type string `json:"type" yaml:"type"`
}

InstanceConsolePost represents a LXD instance console request.

API extension: instances

type InstanceExecControl

type InstanceExecControl struct {
	Command string            `json:"command" yaml:"command"`
	Args    map[string]string `json:"args" yaml:"args"`
	Signal  int               `json:"signal" yaml:"signal"`
}

InstanceExecControl represents a message on the instance exec "control" socket.

API extension: instances

type InstanceExecPost

type InstanceExecPost 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"`
	RecordOutput bool              `json:"record-output" yaml:"record-output"`
	User         uint32            `json:"user" yaml:"user"`
	Group        uint32            `json:"group" yaml:"group"`
	Cwd          string            `json:"cwd" yaml:"cwd"`
}

InstanceExecPost represents a LXD instance exec request.

API extension: instances

type InstanceFull

type InstanceFull struct {
	Instance `yaml:",inline"`

	Backups   []InstanceBackup   `json:"backups" yaml:"backups"`
	State     *InstanceState     `json:"state" yaml:"state"`
	Snapshots []InstanceSnapshot `json:"snapshots" yaml:"snapshots"`
}

InstanceFull is a combination of Instance, InstanceBackup, InstanceState and InstanceSnapshot.

API extension: instances

type InstancePost

type InstancePost struct {
	Name          string              `json:"name" yaml:"name"`
	Migration     bool                `json:"migration" yaml:"migration"`
	Live          bool                `json:"live" yaml:"live"`
	InstanceOnly  bool                `json:"instance_only" yaml:"instance_only"`
	ContainerOnly bool                `json:"container_only" yaml:"container_only"` // Deprecated, use InstanceOnly.
	Target        *InstancePostTarget `json:"target" yaml:"target"`
}

InstancePost represents the fields required to rename/move a LXD instance.

API extension: instances

type InstancePostTarget

type InstancePostTarget struct {
	Certificate string            `json:"certificate" yaml:"certificate"`
	Operation   string            `json:"operation,omitempty" yaml:"operation,omitempty"`
	Websockets  map[string]string `json:"secrets,omitempty" yaml:"secrets,omitempty"`
}

InstancePostTarget represents the migration target host and operation.

API extension: instances

type InstancePut

type InstancePut 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"`
	Restore      string                       `json:"restore,omitempty" yaml:"restore,omitempty"`
	Stateful     bool                         `json:"stateful" yaml:"stateful"`
	Description  string                       `json:"description" yaml:"description"`
}

InstancePut represents the modifiable fields of a LXD instance.

API extension: instances

type InstanceSnapshot

type InstanceSnapshot struct {
	InstanceSnapshotPut `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"`
	LastUsedAt      time.Time                    `json:"last_used_at" yaml:"last_used_at"`
	Name            string                       `json:"name" yaml:"name"`
	Stateful        bool                         `json:"stateful" yaml:"stateful"`

	// API extension: snapshot_disk_usage
	Size int64 `json:"size" yaml:"size"`
}

InstanceSnapshot represents a LXD instance snapshot.

API extension: instances

func (*InstanceSnapshot) Writable

func (c *InstanceSnapshot) Writable() InstanceSnapshotPut

Writable converts a full InstanceSnapshot struct into a InstanceSnapshotPut struct (filters read-only fields).

API extension: instances

type InstanceSnapshotPost

type InstanceSnapshotPost struct {
	Name      string              `json:"name" yaml:"name"`
	Migration bool                `json:"migration" yaml:"migration"`
	Target    *InstancePostTarget `json:"target" yaml:"target"`
	Live      bool                `json:"live,omitempty" yaml:"live,omitempty"`
}

InstanceSnapshotPost represents the fields required to rename/move a LXD instance snapshot.

API extension: instances

type InstanceSnapshotPut

type InstanceSnapshotPut 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"`
	ExpiresAt    time.Time                    `json:"expires_at" yaml:"expires_at"`
}

InstanceSnapshotPut represents the modifiable fields of a LXD instance snapshot.

API extension: instances

type InstanceSnapshotsPost

type InstanceSnapshotsPost struct {
	Name     string `json:"name" yaml:"name"`
	Stateful bool   `json:"stateful" yaml:"stateful"`

	// API extension: snapshot_expiry_creation
	ExpiresAt *time.Time `json:"expires_at" yaml:"expires_at"`
}

InstanceSnapshotsPost represents the fields available for a new LXD instance snapshot.

API extension: instances

type InstanceSource

type InstanceSource struct {
	Type          string            `json:"type" yaml:"type"`
	Certificate   string            `json:"certificate" yaml:"certificate"`
	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"`
	BaseImage     string            `json:"base-image,omitempty" yaml:"base-image,omitempty"`
	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"`
	Source        string            `json:"source,omitempty" yaml:"source,omitempty"`
	Live          bool              `json:"live,omitempty" yaml:"live,omitempty"`
	InstanceOnly  bool              `json:"instance_only,omitempty" yaml:"instance_only,omitempty"`
	ContainerOnly bool              `json:"container_only,omitempty" yaml:"container_only,omitempty"` // Deprecated, use InstanceOnly.
	Refresh       bool              `json:"refresh,omitempty" yaml:"refresh,omitempty"`
	Project       string            `json:"project,omitempty" yaml:"project,omitempty"`
}

InstanceSource represents the creation source for a new instance.

API extension: instances

type InstanceState

type InstanceState struct {
	Status     string                          `json:"status" yaml:"status"`
	StatusCode StatusCode                      `json:"status_code" yaml:"status_code"`
	Disk       map[string]InstanceStateDisk    `json:"disk" yaml:"disk"`
	Memory     InstanceStateMemory             `json:"memory" yaml:"memory"`
	Network    map[string]InstanceStateNetwork `json:"network" yaml:"network"`
	Pid        int64                           `json:"pid" yaml:"pid"`
	Processes  int64                           `json:"processes" yaml:"processes"`
	CPU        InstanceStateCPU                `json:"cpu" yaml:"cpu"`
}

InstanceState represents a LXD instance's state.

API extension: instances

type InstanceStateCPU

type InstanceStateCPU struct {
	Usage int64 `json:"usage" yaml:"usage"`
}

InstanceStateCPU represents the cpu information section of a LXD instance's state.

API extension: instances

type InstanceStateDisk

type InstanceStateDisk struct {
	Usage int64 `json:"usage" yaml:"usage"`
}

InstanceStateDisk represents the disk information section of a LXD instance's state.

API extension: instances

type InstanceStateMemory

type InstanceStateMemory 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"`
}

InstanceStateMemory represents the memory information section of a LXD instance's state.

API extension: instances

type InstanceStateNetwork

type InstanceStateNetwork struct {
	Addresses []InstanceStateNetworkAddress `json:"addresses" yaml:"addresses"`
	Counters  InstanceStateNetworkCounters  `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"`
}

InstanceStateNetwork represents the network information section of a LXD instance's state.

API extension: instances

type InstanceStateNetworkAddress

type InstanceStateNetworkAddress 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"`
}

InstanceStateNetworkAddress represents a network address as part of the network section of a LXD instance's state.

API extension: instances

type InstanceStateNetworkCounters

type InstanceStateNetworkCounters 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"`
}

InstanceStateNetworkCounters represents packet counters as part of the network section of a LXD instance's state.

API extension: instances

type InstanceStatePut

type InstanceStatePut 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"`
}

InstanceStatePut represents the modifiable fields of a LXD instance's state.

API extension: instances

type InstanceType

type InstanceType string

InstanceType represents the type if instance being returned or requested via the API.

type InstancesPost

type InstancesPost struct {
	InstancePut `yaml:",inline"`

	Name         string         `json:"name" yaml:"name"`
	Source       InstanceSource `json:"source" yaml:"source"`
	InstanceType string         `json:"instance_type" yaml:"instance_type"`
	Type         InstanceType   `json:"type" yaml:"type"`
}

InstancesPost represents the fields available for a new LXD instance.

API extension: instances

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"`

	// API extension: clustering
	Status    string   `json:"status" yaml:"status"`
	Locations []string `json:"locations" yaml:"locations"`
}

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 NetworkLease

type NetworkLease struct {
	Hostname string `json:"hostname" yaml:"hostname"`
	Hwaddr   string `json:"hwaddr" yaml:"hwaddr"`
	Address  string `json:"address" yaml:"address"`
	Type     string `json:"type" yaml:"type"`

	// API extension: network_leases_location
	Location string `json:"location" yaml:"location"`
}

NetworkLease represents a DHCP lease

API extension: network_leases

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 NetworkState

type NetworkState struct {
	Addresses []NetworkStateAddress `json:"addresses" yaml:"addresses"`
	Counters  NetworkStateCounters  `json:"counters" yaml:"counters"`
	Hwaddr    string                `json:"hwaddr" yaml:"hwaddr"`
	Mtu       int                   `json:"mtu" yaml:"mtu"`
	State     string                `json:"state" yaml:"state"`
	Type      string                `json:"type" yaml:"type"`

	// API extension: network_state_bond_bridge
	Bond   *NetworkStateBond   `json:"bond" yaml:"bond"`
	Bridge *NetworkStateBridge `json:"bridge" yaml:"bridge"`
}

NetworkState represents the network state

type NetworkStateAddress

type NetworkStateAddress 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"`
}

NetworkStateAddress represents a network address

type NetworkStateBond

type NetworkStateBond struct {
	Mode           string `json:"mode" yaml:"mode"`
	TransmitPolicy string `json:"transmit_policy" yaml:"transmit_policy"`
	UpDelay        uint64 `json:"up_delay" yaml:"up_delay"`
	DownDelay      uint64 `json:"down_delay" yaml:"down_delay"`

	MIIFrequency uint64 `json:"mii_frequency" yaml:"mii_frequency"`
	MIIState     string `json:"mii_state" yaml:"mii_state"`

	LowerDevices []string `json:"lower_devices" yaml:"lower_devices"`
}

NetworkStateBond represents bond specific state API extension: network_state_bond_bridge

type NetworkStateBridge

type NetworkStateBridge struct {
	ID           string `json:"id" yaml:"id"`
	STP          bool   `json:"stp" yaml:"stp"`
	ForwardDelay uint64 `json:"forward_delay" yaml:"forward_delay"`

	VLANDefault   uint64 `json:"vlan_default" yaml:"vlan_default"`
	VLANFiltering bool   `json:"vlan_filtering" yaml:"vlan_filtering"`

	UpperDevices []string `json:"upper_devices" yaml:"upper_devices"`
}

NetworkStateBridge represents bond specific state API extension: network_state_bond_bridge

type NetworkStateCounters

type NetworkStateCounters 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"`
}

NetworkStateCounters represents packet counters

type NetworksPost

type NetworksPost struct {
	NetworkPut `yaml:",inline"`

	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"`
	Description string                 `json:"description" yaml:"description"`
	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"`

	// API extension: operation_location
	Location string `json:"location" yaml:"location"`
}

Operation represents a LXD background operation

type Profile

type Profile struct {
	ProfilePut `yaml:",inline"`

	Name string `json:"name" yaml:"name" db:"primary=yes"`

	// 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" db:"primary=yes"`
}

ProfilesPost represents the fields of a new LXD profile

type Project

type Project struct {
	ProjectPut `yaml:",inline"`

	Name   string   `json:"name" yaml:"name"`
	UsedBy []string `json:"used_by" yaml:"used_by"`
}

Project represents a LXD project

API extension: projects

func (*Project) Writable

func (project *Project) Writable() ProjectPut

Writable converts a full Project struct into a ProjectPut struct (filters read-only fields)

API extension: projects

type ProjectPost

type ProjectPost struct {
	Name string `json:"name" yaml:"name"`
}

ProjectPost represents the fields required to rename a LXD project

API extension: projects

type ProjectPut

type ProjectPut struct {
	Description string            `json:"description" yaml:"description"`
	Config      map[string]string `json:"config" yaml:"config"`
}

ProjectPut represents the modifiable fields of a LXD project

API extension: projects

type ProjectsPost

type ProjectsPost struct {
	ProjectPut `yaml:",inline"`

	Name string `json:"name" yaml:"name"`
}

ProjectsPost represents the fields of a new LXD project

API extension: projects

type Resources

type Resources struct {
	CPU    ResourcesCPU    `json:"cpu" yaml:"cpu"`
	Memory ResourcesMemory `json:"memory" yaml:"memory"`

	// API extension: resources_gpu
	GPU ResourcesGPU `json:"gpu" yaml:"gpu"`

	// API extension: resources_v2
	Network ResourcesNetwork `json:"network" yaml:"network"`
	Storage ResourcesStorage `json:"storage" yaml:"storage"`

	// API extension: resources_usb_pci
	USB ResourcesUSB `json:"usb" yaml:"usb"`
	PCI ResourcesPCI `json:"pci" yaml:"pci"`

	// API extension: resources_system
	System ResourcesSystem `json:"system" yaml:"system"`
}

Resources represents the system resources avaible for LXD API extension: resources

type ResourcesCPU

type ResourcesCPU struct {
	// API extension: resources_v2
	Architecture string `json:"architecture" yaml:"architecture"`

	Sockets []ResourcesCPUSocket `json:"sockets" yaml:"sockets"`
	Total   uint64               `json:"total" yaml:"total"`
}

ResourcesCPU represents the cpu resources available on the system API extension: resources

type ResourcesCPUCache

type ResourcesCPUCache struct {
	Level uint64 `json:"level" yaml:"level"`
	Type  string `json:"type" yaml:"type"`
	Size  uint64 `json:"size" yaml:"size"`
}

ResourcesCPUCache represents a CPU cache API extension: resources_v2

type ResourcesCPUCore

type ResourcesCPUCore struct {
	Core uint64 `json:"core" yaml:"core"`

	// API extension: resources_cpu_core_die
	Die uint64 `json:"die" yaml:"die"`

	Threads []ResourcesCPUThread `json:"threads" yaml:"threads"`

	Frequency uint64 `json:"frequency,omitempty" yaml:"frequency,omitempty"`
}

ResourcesCPUCore represents a CPU core on the system API extension: resources_v2

type ResourcesCPUSocket

type ResourcesCPUSocket struct {
	Name   string `json:"name,omitempty" yaml:"name,omitempty"`
	Vendor string `json:"vendor,omitempty" yaml:"vendor,omitempty"`

	Socket uint64              `json:"socket" yaml:"socket"`
	Cache  []ResourcesCPUCache `json:"cache,omitempty" yaml:"cache,omitempty"`
	Cores  []ResourcesCPUCore  `json:"cores" yaml:"cores"`

	Frequency        uint64 `json:"frequency,omitempty" yaml:"frequency,omitempty"`
	FrequencyMinimum uint64 `json:"frequency_minimum,omitempty" yaml:"frequency_minimum,omitempty"`
	FrequencyTurbo   uint64 `json:"frequency_turbo,omitempty" yaml:"frequency_turbo,omitempty"`
}

ResourcesCPUSocket represents a CPU socket on the system API extension: resources_v2

type ResourcesCPUThread

type ResourcesCPUThread struct {
	ID       int64  `json:"id" yaml:"id"`
	NUMANode uint64 `json:"numa_node" yaml:"numa_node"`
	Thread   uint64 `json:"thread" yaml:"thread"`
	Online   bool   `json:"online" yaml:"online"`

	// API extension: resource_cpu_isolated
	Isolated bool `json:"isolated" yaml:"isolated"`
}

ResourcesCPUThread represents a CPU thread on the system API extension: resources_v2

type ResourcesGPU

type ResourcesGPU struct {
	Cards []ResourcesGPUCard `json:"cards" yaml:"cards"`
	Total uint64             `json:"total" yaml:"total"`
}

ResourcesGPU represents the GPU resources available on the system API extension: resources_gpu

type ResourcesGPUCard

type ResourcesGPUCard struct {
	Driver        string `json:"driver,omitempty" yaml:"driver,omitempty"`
	DriverVersion string `json:"driver_version,omitempty" yaml:"driver_version,omitempty"`

	DRM    *ResourcesGPUCardDRM    `json:"drm,omitempty" yaml:"drm,omitempty"`
	SRIOV  *ResourcesGPUCardSRIOV  `json:"sriov,omitempty" yaml:"sriov,omitempty"`
	Nvidia *ResourcesGPUCardNvidia `json:"nvidia,omitempty" yaml:"nvidia,omitempty"`

	// API extension: resources_gpu_mdev
	Mdev map[string]ResourcesGPUCardMdev `json:"mdev,omitempty" yaml:"mdev,omitempty"`

	NUMANode   uint64 `json:"numa_node" yaml:"numa_node"`
	PCIAddress string `json:"pci_address,omitempty" yaml:"pci_address,omitempty"`

	Vendor    string `json:"vendor,omitempty" yaml:"vendor,omitempty"`
	VendorID  string `json:"vendor_id,omitempty" yaml:"vendor_id,omitempty"`
	Product   string `json:"product,omitempty" yaml:"product,omitempty"`
	ProductID string `json:"product_id,omitempty" yaml:"product_id,omitempty"`
}

ResourcesGPUCard represents a GPU card on the system API extension: resources_v2

type ResourcesGPUCardDRM

type ResourcesGPUCardDRM struct {
	ID uint64 `json:"id" yaml:"id"`

	CardName   string `json:"card_name" yaml:"card_name"`
	CardDevice string `json:"card_device" yaml:"card_device"`

	ControlName   string `json:"control_name,omitempty" yaml:"control_name,omitempty"`
	ControlDevice string `json:"control_device,omitempty" yaml:"control_device,omitempty"`

	RenderName   string `json:"render_name,omitempty" yaml:"render_name,omitempty"`
	RenderDevice string `json:"render_device,omitempty" yaml:"render_device,omitempty"`
}

ResourcesGPUCardDRM represents the Linux DRM configuration of the GPU API extension: resources_v2

type ResourcesGPUCardMdev

type ResourcesGPUCardMdev struct {
	API         string   `json:"api" yaml:"api"`
	Available   uint64   `json:"available" yaml:"available"`
	Name        string   `json:"name,omitempty" yaml:"name,omitempty"`
	Description string   `json:"description,omitempty" yaml:"description,omitempty"`
	Devices     []string `json:"devices" yaml:"devices"`
}

ResourcesGPUCardMdev represents the mediated devices configuration of the GPU API extension: resources_gpu_mdev

type ResourcesGPUCardNvidia

type ResourcesGPUCardNvidia struct {
	CUDAVersion string `json:"cuda_version,omitempty" yaml:"cuda_version,omitempty"`
	NVRMVersion string `json:"nvrm_version,omitempty" yaml:"nvrm_version,omitempty"`

	Brand        string `json:"brand" yaml:"brand"`
	Model        string `json:"model" yaml:"model"`
	UUID         string `json:"uuid,omitempty" yaml:"uuid,omitempty"`
	Architecture string `json:"architecture,omitempty" yaml:"architecture,omitempty"`

	// API extension: resources_v2
	CardName   string `json:"card_name" yaml:"card_name"`
	CardDevice string `json:"card_device" yaml:"card_device"`
}

ResourcesGPUCardNvidia represents additional information for NVIDIA GPUs API extension: resources_gpu

type ResourcesGPUCardSRIOV

type ResourcesGPUCardSRIOV struct {
	CurrentVFs uint64 `json:"current_vfs" yaml:"current_vfs"`
	MaximumVFs uint64 `json:"maximum_vfs" yaml:"maximum_vfs"`

	VFs []ResourcesGPUCard `json:"vfs" yaml:"vfs"`
}

ResourcesGPUCardSRIOV represents the SRIOV configuration of the GPU API extension: resources_v2

type ResourcesMemory

type ResourcesMemory struct {
	// API extension: resources_v2
	Nodes          []ResourcesMemoryNode `json:"nodes,omitempty" yaml:"nodes,omitempty"`
	HugepagesTotal uint64                `json:"hugepages_total" yaml:"hugepages_total"`
	HugepagesUsed  uint64                `json:"hugepages_used" yaml:"hugepages_used"`
	HugepagesSize  uint64                `json:"hugepages_size" yaml:"hugepages_size"`

	Used  uint64 `json:"used" yaml:"used"`
	Total uint64 `json:"total" yaml:"total"`
}

ResourcesMemory represents the memory resources available on the system API extension: resources

type ResourcesMemoryNode

type ResourcesMemoryNode struct {
	NUMANode       uint64 `json:"numa_node" yaml:"numa_node"`
	HugepagesUsed  uint64 `json:"hugepages_used" yaml:"hugepages_used"`
	HugepagesTotal uint64 `json:"hugepages_total" yaml:"hugepages_total"`

	Used  uint64 `json:"used" yaml:"used"`
	Total uint64 `json:"total" yaml:"total"`
}

ResourcesMemoryNode represents the node-specific memory resources available on the system API extension: resources_v2

type ResourcesNetwork

type ResourcesNetwork struct {
	Cards []ResourcesNetworkCard `json:"cards" yaml:"cards"`
	Total uint64                 `json:"total" yaml:"total"`
}

ResourcesNetwork represents the network cards available on the system API extension: resources_v2

type ResourcesNetworkCard

type ResourcesNetworkCard struct {
	Driver        string `json:"driver,omitempty" yaml:"driver,omitempty"`
	DriverVersion string `json:"driver_version,omitempty" yaml:"driver_version,omitempty"`

	Ports []ResourcesNetworkCardPort `json:"ports,omitempty" yaml:"ports,omitempty"`
	SRIOV *ResourcesNetworkCardSRIOV `json:"sriov,omitempty" yaml:"sriov,omitempty"`

	NUMANode   uint64 `json:"numa_node" yaml:"numa_node"`
	PCIAddress string `json:"pci_address,omitempty" yaml:"pci_address,omitempty"`

	Vendor    string `json:"vendor,omitempty" yaml:"vendor,omitempty"`
	VendorID  string `json:"vendor_id,omitempty" yaml:"vendor_id,omitempty"`
	Product   string `json:"product,omitempty" yaml:"product,omitempty"`
	ProductID string `json:"product_id,omitempty" yaml:"product_id,omitempty"`

	// API extension: resources_network_firmware
	FirmwareVersion string `json:"firmware_version,omitempty" yaml:"firmware_version,omitempty"`
}

ResourcesNetworkCard represents a network card on the system API extension: resources_v2

type ResourcesNetworkCardPort

type ResourcesNetworkCardPort struct {
	ID       string `json:"id" yaml:"id"`
	Address  string `json:"address,omitempty" yaml:"address,omitempty"`
	Port     uint64 `json:"port" yaml:"port"`
	Protocol string `json:"protocol" yaml:"protocol"`

	SupportedModes []string `json:"supported_modes,omitempty" yaml:"supported_modes,omitempty"`
	SupportedPorts []string `json:"supported_ports,omitempty" yaml:"supported_ports,omitempty"`

	PortType        string `json:"port_type,omitempty" yaml:"port_type,omitempty"`
	TransceiverType string `json:"transceiver_type,omitempty" yaml:"transceiver_type,omitempty"`

	AutoNegotiation bool   `json:"auto_negotiation" yaml:"auto_negotiation"`
	LinkDetected    bool   `json:"link_detected" yaml:"link_detected"`
	LinkSpeed       uint64 `json:"link_speed,omitempty" yaml:"link_speed,omitempty"`
	LinkDuplex      string `json:"link_duplex,omitempty" yaml:"link_duplex,omitempty"`

	// API extension: resources_infiniband
	Infiniband *ResourcesNetworkCardPortInfiniband `json:"infiniband,omitempty" yaml:"infiniband,omitempty"`
}

ResourcesNetworkCardPort represents a network port on the system API extension: resources_v2

type ResourcesNetworkCardPortInfiniband

type ResourcesNetworkCardPortInfiniband struct {
	IsSMName   string `json:"issm_name,omitempty" yaml:"issm_name,omitempty"`
	IsSMDevice string `json:"issm_device,omitempty" yaml:"issm_device,omitempty"`

	MADName   string `json:"mad_name,omitempty" yaml:"mad_name,omitempty"`
	MADDevice string `json:"mad_device,omitempty" yaml:"mad_device,omitempty"`

	VerbName   string `json:"verb_name,omitempty" yaml:"verb_name,omitempty"`
	VerbDevice string `json:"verb_device,omitempty" yaml:"verb_device,omitempty"`
}

ResourcesNetworkCardPortInfiniband represents the Linux Infiniband configuration for the port API extension: resources_infiniband

type ResourcesNetworkCardSRIOV

type ResourcesNetworkCardSRIOV struct {
	CurrentVFs uint64 `json:"current_vfs" yaml:"current_vfs"`
	MaximumVFs uint64 `json:"maximum_vfs" yaml:"maximum_vfs"`

	VFs []ResourcesNetworkCard `json:"vfs" yaml:"vfs"`
}

ResourcesNetworkCardSRIOV represents the SRIOV configuration of the network card API extension: resources_v2

type ResourcesPCI

type ResourcesPCI struct {
	Devices []ResourcesPCIDevice `json:"devices" yaml:"devices"`
	Total   uint64               `json:"total" yaml:"total"`
}

ResourcesPCI represents the PCI devices available on the system API extension: resources_usb_pci

type ResourcesPCIDevice

type ResourcesPCIDevice struct {
	Driver        string `json:"driver" yaml:"driver"`
	DriverVersion string `json:"driver_version" yaml:"driver_version"`
	NUMANode      uint64 `json:"numa_node" yaml:"numa_node"`
	PCIAddress    string `json:"pci_address" yaml:"pci_address"`
	Product       string `json:"product" yaml:"product"`
	ProductID     string `json:"product_id" yaml:"product_id"`
	Vendor        string `json:"vendor" yaml:"vendor"`
	VendorID      string `json:"vendor_id" yaml:"vendor_id"`
}

ResourcesPCIDevice represents a PCI device API extension: resources_usb_pci

type ResourcesStorage

type ResourcesStorage struct {
	Disks []ResourcesStorageDisk `json:"disks" yaml:"disks"`
	Total uint64                 `json:"total" yaml:"total"`
}

ResourcesStorage represents the local storage API extension: resources_v2

type ResourcesStorageDisk

type ResourcesStorageDisk struct {
	ID       string `json:"id" yaml:"id"`
	Device   string `json:"device" yaml:"device"`
	Model    string `json:"model,omitempty" yaml:"model,omitempty"`
	Type     string `json:"type,omitempty" yaml:"type,omitempty"`
	ReadOnly bool   `json:"read_only" yaml:"read_only"`
	Size     uint64 `json:"size" yaml:"size"`

	Removable bool   `json:"removable" yaml:"removable"`
	WWN       string `json:"wwn,omitempty" yaml:"wwn,omitempty"`
	NUMANode  uint64 `json:"numa_node" yaml:"numa_node"`

	// API extension: resources_disk_sata
	DevicePath      string `json:"device_path" yaml:"device_path"`
	BlockSize       uint64 `json:"block_size" yaml:"block_size"`
	FirmwareVersion string `json:"firmware_version,omitempty" yaml:"firmware_version,omitempty"`
	RPM             uint64 `json:"rpm" yaml:"rpm"`
	Serial          string `json:"serial,omitempty" yaml:"serial,omitempty"`

	// API extension: resources_disk_id
	DeviceID string `json:"device_id" yaml:"device_id"`

	Partitions []ResourcesStorageDiskPartition `json:"partitions" yaml:"partitions"`
}

ResourcesStorageDisk represents a disk API extension: resources_v2

type ResourcesStorageDiskPartition

type ResourcesStorageDiskPartition struct {
	ID       string `json:"id" yaml:"id"`
	Device   string `json:"device" yaml:"device"`
	ReadOnly bool   `json:"read_only" yaml:"read_only"`
	Size     uint64 `json:"size" yaml:"size"`

	Partition uint64 `json:"partition" yaml:"partition"`
}

ResourcesStorageDiskPartition represents a partition on a disk API extension: resources_v2

type ResourcesStoragePool

type ResourcesStoragePool struct {
	Space  ResourcesStoragePoolSpace  `json:"space,omitempty" yaml:"space,omitempty"`
	Inodes ResourcesStoragePoolInodes `json:"inodes,omitempty" yaml:"inodes,omitempty"`
}

ResourcesStoragePool represents the resources available to a given storage pool API extension: resources

type ResourcesStoragePoolInodes

type ResourcesStoragePoolInodes struct {
	Used  uint64 `json:"used" yaml:"used"`
	Total uint64 `json:"total" yaml:"total"`
}

ResourcesStoragePoolInodes represents the inodes available to a given storage pool API extension: resources

type ResourcesStoragePoolSpace

type ResourcesStoragePoolSpace struct {
	Used  uint64 `json:"used,omitempty" yaml:"used,omitempty"`
	Total uint64 `json:"total" yaml:"total"`
}

ResourcesStoragePoolSpace represents the space available to a given storage pool API extension: resources

type ResourcesSystem

type ResourcesSystem struct {
	UUID    string `json:"uuid" yaml:"uuid"`
	Vendor  string `json:"vendor" yaml:"vendor"`
	Product string `json:"product" yaml:"product"`
	Family  string `json:"family" yaml:"family"`
	Version string `json:"version" yaml:"version"`
	Sku     string `json:"sku" yaml:"sku"`
	Serial  string `json:"serial" yaml:"serial"`
	Type    string `json:"type" yaml:"type"`

	Firmware    *ResourcesSystemFirmware    `json:"firmware" yaml:"firmware"`
	Chassis     *ResourcesSystemChassis     `json:"chassis" yaml:"chassis"`
	Motherboard *ResourcesSystemMotherboard `json:"motherboard" yaml:"motherboard"`
}

ResourcesSystem represents the system API extension: resources_system

type ResourcesSystemChassis

type ResourcesSystemChassis struct {
	Vendor  string `json:"vendor" yaml:"vendor"`
	Type    string `json:"type" yaml:"type"`
	Serial  string `json:"serial" yaml:"serial"`
	Version string `json:"version" yaml:"version"`
}

ResourcesSystemChassis represents the system chassis API extension: resources_system

type ResourcesSystemFirmware

type ResourcesSystemFirmware struct {
	Vendor  string `json:"vendor" yaml:"vendor"`
	Date    string `json:"date" yaml:"date"`
	Version string `json:"version" yaml:"version"`
}

ResourcesSystemFirmware represents the system firmware API extension: resources_system

type ResourcesSystemMotherboard

type ResourcesSystemMotherboard struct {
	Vendor  string `json:"vendor" yaml:"vendor"`
	Product string `json:"product" yaml:"product"`
	Serial  string `json:"serial" yaml:"serial"`
	Version string `json:"version" yaml:"version"`
}

ResourcesSystemMotherboard represents the motherboard API extension: resources_system

type ResourcesUSB

type ResourcesUSB struct {
	Devices []ResourcesUSBDevice `json:"devices" yaml:"devices"`
	Total   uint64               `json:"total" yaml:"total"`
}

ResourcesUSB represents the USB devices available on the system API extension: resources_usb_pci

type ResourcesUSBDevice

type ResourcesUSBDevice struct {
	BusAddress    uint64                        `json:"bus_address" yaml:"bus_address"`
	DeviceAddress uint64                        `json:"device_address" yaml:"device_address"`
	Interfaces    []ResourcesUSBDeviceInterface `json:"interfaces" yaml:"interfaces"`
	Product       string                        `json:"product" yaml:"product"`
	ProductID     string                        `json:"product_id" yaml:"product_id"`
	Speed         float64                       `json:"speed" yaml:"speed"`
	Vendor        string                        `json:"vendor" yaml:"vendor"`
	VendorID      string                        `json:"vendor_id" yaml:"vendor_id"`
}

ResourcesUSBDevice represents a USB device API extension: resources_usb_pci

type ResourcesUSBDeviceInterface

type ResourcesUSBDeviceInterface struct {
	Class         string `json:"class" yaml:"class"`
	ClassID       uint64 `json:"class_id" yaml:"class_id"`
	Driver        string `json:"driver" yaml:"driver"`
	DriverVersion string `json:"driver_version" yaml:"driver_version"`
	Number        uint64 `json:"number" yaml:"number"`
	SubClass      string `json:"subclass" yaml:"subclass"`
	SubClassID    uint64 `json:"subclass_id" yaml:"subclass_id"`
}

ResourcesUSBDeviceInterface represents a USB device interface API extension: resources_usb_pci

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

func (r *Response) MetadataAsMap() (map[string]interface{}, error)

MetadataAsMap parses the Response metadata into a map

func (*Response) MetadataAsOperation

func (r *Response) MetadataAsOperation() (*Operation, error)

MetadataAsOperation turns the Response metadata into an Operation

func (*Response) MetadataAsStringSlice

func (r *Response) MetadataAsStringSlice() ([]string, error)

MetadataAsStringSlice parses the Response metadata into a slice of string

func (*Response) MetadataAsStruct

func (r *Response) MetadataAsStruct(target interface{}) error

MetadataAsStruct parses the Response metadata into a provided struct

type ResponseRaw

type ResponseRaw 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"`

	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

func (*Server) Writable

func (srv *Server) Writable() ServerPut

Writable converts a full Server struct into a ServerPut struct (filters read-only fields)

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"`

	// API extension: firewall_driver
	Firewall string `json:"firewall" yaml:"firewall"`

	Kernel             string `json:"kernel" yaml:"kernel"`
	KernelArchitecture string `json:"kernel_architecture" yaml:"kernel_architecture"`

	// API extension: kernel_features
	KernelFeatures map[string]string `json:"kernel_features" yaml:"kernel_features"`

	KernelVersion string `json:"kernel_version" yaml:"kernel_version"`

	// API extension: lxc_features
	LXCFeatures map[string]string `json:"lxc_features" yaml:"lxc_features"`

	// API extension: api_os
	OSName    string `json:"os_name" yaml:"os_name"`
	OSVersion string `json:"os_version" yaml:"os_version"`

	// API extension: projects
	Project string `json:"project" yaml:"project"`

	Server string `json:"server" yaml:"server"`

	// API extension: clustering
	ServerClustered bool   `json:"server_clustered" yaml:"server_clustered"`
	ServerName      string `json:"server_name" yaml:"server_name"`

	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"`

	// API extension: macaroon_authentication
	AuthMethods []string `json:"auth_methods" yaml:"auth_methods"`
}

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"`

	// API extension: clustering
	Status    string   `json:"status" yaml:"status"`
	Locations []string `json:"locations" yaml:"locations"`
}

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"`

	// API extension: clustering
	Location string `json:"location" yaml:"location"`

	// API extension: custom_block_volumes
	ContentType string `json:"content_type" yaml:"content_type"`
}

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 StorageVolumePost

type StorageVolumePost struct {
	Name string `json:"name" yaml:"name"`

	// API extension: storage_api_local_volume_handling
	Pool string `json:"pool,omitempty" yaml:"pool,omitempty"`

	// API extension: storage_api_remote_volume_handling
	Migration bool `json:"migration" yaml:"migration"`

	// API extension: storage_api_remote_volume_handling
	Target *StorageVolumePostTarget `json:"target" yaml:"target"`

	// API extension: storage_api_remote_volume_snapshots
	VolumeOnly bool `json:"volume_only" yaml:"volume_only"`
}

StorageVolumePost represents the fields required to rename a LXD storage pool volume

API extension: storage_api_volume_rename

type StorageVolumePostTarget

type StorageVolumePostTarget struct {
	Certificate string            `json:"certificate" yaml:"certificate"`
	Operation   string            `json:"operation,omitempty" yaml:"operation,omitempty"`
	Websockets  map[string]string `json:"secrets,omitempty" yaml:"secrets,omitempty"`
}

StorageVolumePostTarget represents the migration target host and operation

API extension: storage_api_remote_volume_handling

type StorageVolumePut

type StorageVolumePut struct {
	Config map[string]string `json:"config" yaml:"config"`

	// API extension: entity_description
	Description string `json:"description" yaml:"description"`

	// API extension: storage_api_volume_snapshots
	Restore string `json:"restore,omitempty" yaml:"restore,omitempty"`
}

StorageVolumePut represents the modifiable fields of a LXD storage volume.

API extension: storage

type StorageVolumeSnapshot

type StorageVolumeSnapshot struct {
	StorageVolumeSnapshotPut `json:",inline" yaml:",inline"`

	Name   string            `json:"name" yaml:"name"`
	Config map[string]string `json:"config" yaml:"config"`

	// API extension: custom_block_volumes
	ContentType string `json:"content_type" yaml:"content_type"`
}

StorageVolumeSnapshot represents a LXD storage volume snapshot

API extension: storage_api_volume_snapshots

type StorageVolumeSnapshotPost

type StorageVolumeSnapshotPost struct {
	Name string `json:"name" yaml:"name"`
}

StorageVolumeSnapshotPost represents the fields required to rename/move a LXD storage volume snapshot

API extension: storage_api_volume_snapshots

type StorageVolumeSnapshotPut

type StorageVolumeSnapshotPut struct {
	Description string `json:"description" yaml:"description"`

	// API extension: custom_volume_snapshot_expiry
	ExpiresAt *time.Time `json:"expires_at" yaml:"expires_at"`
}

StorageVolumeSnapshotPut represents the modifiable fields of a LXD storage volume

API extension: storage_api_volume_snapshots

type StorageVolumeSnapshotsPost

type StorageVolumeSnapshotsPost struct {
	Name string `json:"name" yaml:"name"`

	// API extension: custom_volume_snapshot_expiry
	ExpiresAt *time.Time `json:"expires_at" yaml:"expires_at"`
}

StorageVolumeSnapshotsPost represents the fields available for a new LXD storage volume snapshot

API extension: storage_api_volume_snapshots

type StorageVolumeSource

type StorageVolumeSource struct {
	Name string `json:"name" yaml:"name"`
	Type string `json:"type" yaml:"type"`
	Pool string `json:"pool" yaml:"pool"`

	// API extension: storage_api_remote_volume_handling
	Certificate string            `json:"certificate" yaml:"certificate"`
	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"`

	// API extension: storage_api_volume_snapshots
	VolumeOnly bool `json:"volume_only" yaml:"volume_only"`
}

StorageVolumeSource represents the creation source for a new storage volume.

API extension: storage_api_local_volume_handling

type StorageVolumesPost

type StorageVolumesPost struct {
	StorageVolumePut `yaml:",inline"`

	Name string `json:"name" yaml:"name"`
	Type string `json:"type" yaml:"type"`

	// API extension: storage_api_local_volume_handling
	Source StorageVolumeSource `json:"source" yaml:"source"`

	// API extension: custom_block_volumes
	ContentType string `json:"content_type" yaml:"content_type"`
}

StorageVolumesPost represents the fields of a new LXD storage pool volume

API extension: storage

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL