lxd: github.com/lxc/lxd/shared/api Index | Files

package api

import "github.com/lxc/lxd/shared/api"

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

Package Files

certificate.go cluster.go container.go container_backup.go container_console.go container_exec.go container_snapshot.go container_state.go doc.go event.go image.go network.go operation.go profile.go resource.go response.go server.go status_code.go storage_pool.go storage_pool_volume.go

type Certificate Uses

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 Uses

func (cert *Certificate) Writable() CertificatePut

Writable converts a full Certificate struct into a CertificatePut struct (filters read-only fields)

type CertificatePut Uses

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 Uses

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 Uses

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 Uses

type ClusterMember struct {
    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

type ClusterMemberConfigKey Uses

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 Uses

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 ClusterPut Uses

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 Uses

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 Uses

func (c Container) IsActive() bool

IsActive checks whether the container state indicates the container is active

func (*Container) Writable Uses

func (c *Container) Writable() ContainerPut

Writable converts a full Container struct into a ContainerPut struct (filters read-only fields)

type ContainerBackup Uses

type ContainerBackup struct {
    Name             string    `json:"name" yaml:"name"`
    CreationDate     time.Time `json:"creation_date" yaml:"creation_date"`
    ExpiryDate       time.Time `json:"expiry_date" yaml:"expiry_date"`
    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 Uses

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 Uses

type ContainerBackupsPost struct {
    Name             string    `json:"name" yaml:"name"`
    ExpiryDate       time.Time `json:"expiry" yaml:"expiry"`
    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 Uses

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 Uses

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 Uses

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 Uses

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 ContainerFull Uses

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 Uses

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 Uses

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 Uses

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 Uses

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 Uses

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 ContainerSnapshotsPost Uses

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 Uses

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 Uses

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 Uses

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 Uses

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

ContainerStateDisk represents the disk information section of a LXD container's state

type ContainerStateMemory Uses

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 Uses

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 Uses

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 Uses

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 Uses

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 Uses

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 Uses

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

Event represents an event entry (over websocket)

type EventLifecycle Uses

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 Uses

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 Uses

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

func (*Image) Writable Uses

func (img *Image) Writable() ImagePut

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

type ImageAlias Uses

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 Uses

type ImageAliasesEntry struct {
    ImageAliasesEntryPut `yaml:",inline"`

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

ImageAliasesEntry represents a LXD image alias

type ImageAliasesEntryPost Uses

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

ImageAliasesEntryPost represents the required fields to rename a LXD image alias

type ImageAliasesEntryPut Uses

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 Uses

type ImageAliasesPost struct {
    ImageAliasesEntry `yaml:",inline"`
}

ImageAliasesPost represents a new LXD image alias

type ImageMetadata Uses

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 Uses

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 Uses

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 Uses

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 Uses

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 Uses

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 Uses

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 Uses

func (network *Network) Writable() NetworkPut

Writable converts a full Network struct into a NetworkPut struct (filters read-only fields)

type NetworkLease Uses

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

NetworkLease represents a DHCP lease

API extension: network_leases

type NetworkPost Uses

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

NetworkPost represents the fields required to rename a LXD network

API extension: network

type NetworkPut Uses

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 Uses

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

NetworkState represents the network state

type NetworkStateAddress Uses

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 NetworkStateCounters Uses

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 Uses

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 Uses

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

Operation represents a LXD background operation

type Profile Uses

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 Uses

func (profile *Profile) Writable() ProfilePut

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

type ProfilePost Uses

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

ProfilePost represents the fields required to rename a LXD profile

type ProfilePut Uses

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 Uses

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

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

ProfilesPost represents the fields of a new LXD profile

type Resources Uses

type Resources struct {
    CPU         ResourcesCPU         `json:"cpu,omitempty" yaml:"cpu,omitempty"`
    Memory      ResourcesMemory      `json:"memory,omitempty" yaml:"memory,omitempty"`
    StoragePool ResourcesStoragePool `json:"pool,omitempty" yaml:"pool,omitempty"`
}

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

type ResourcesCPU Uses

type ResourcesCPU struct {
    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 ResourcesCPUSocket Uses

type ResourcesCPUSocket struct {
    Cores          uint64 `json:"cores" yaml:"cores"`
    Frequency      uint64 `json:"frequency,omitempty" yaml:"frequency,omitempty"`
    FrequencyTurbo uint64 `json:"frequency_turbo,omitempty" yaml:"frequency_turbo,omitempty"`
    Name           string `json:"name,omitempty" yaml:"name,omitempty"`
    Vendor         string `json:"vendor,omitempty" yaml:"vendor,omitempty"`
    Threads        uint64 `json:"threads" yaml:"threads"`
}

ResourcesCPUSocket represents a cpu socket on the system API extension: resources

type ResourcesMemory Uses

type ResourcesMemory struct {
    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 ResourcesStoragePool Uses

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 Uses

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 Uses

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 Response Uses

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 Uses

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

MetadataAsMap parses the Response metadata into a map

func (*Response) MetadataAsOperation Uses

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

MetadataAsOperation turns the Response metadata into an Operation

func (*Response) MetadataAsStringSlice Uses

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

MetadataAsStringSlice parses the Response metadata into a slice of string

func (*Response) MetadataAsStruct Uses

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

MetadataAsStruct parses the Response metadata into a provided struct

type ResponseRaw Uses

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 Uses

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 Uses

type Server struct {
    ServerPut       `yaml:",inline"`
    ServerUntrusted `yaml:",inline"`

    Environment ServerEnvironment `json:"environment" yaml:"environment"`
}

Server represents a LXD server

func (*Server) Writable Uses

func (srv *Server) Writable() ServerPut

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

type ServerEnvironment Uses

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

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

ServerEnvironment represents the read-only environment fields of a LXD server

type ServerPut Uses

type ServerPut struct {
    Config map[string]interface{} `json:"config" yaml:"config"`
}

ServerPut represents the modifiable fields of a LXD server configuration

type ServerUntrusted Uses

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 Uses

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 Uses

func (o StatusCode) IsFinal() bool

IsFinal will return true if the status code indicates an end state

func (StatusCode) String Uses

func (o StatusCode) String() string

String returns a suitable string representation for the status code

type StoragePool Uses

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 Uses

func (storagePool *StoragePool) Writable() StoragePoolPut

Writable converts a full StoragePool struct into a StoragePoolPut struct (filters read-only fields).

type StoragePoolPut Uses

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 Uses

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 Uses

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

StorageVolume represents the fields of a LXD storage volume.

API extension: storage

func (*StorageVolume) Writable Uses

func (storageVolume *StorageVolume) Writable() StorageVolumePut

Writable converts a full StorageVolume struct into a StorageVolumePut struct (filters read-only fields).

type StorageVolumePost Uses

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

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

API extension: storage_api_volume_rename

type StorageVolumePostTarget Uses

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 Uses

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 StorageVolumeSource Uses

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

StorageVolumeSource represents the creation source for a new storage volume.

API extension: storage_api_local_volume_handling

type StorageVolumesPost Uses

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

StorageVolumesPost represents the fields of a new LXD storage pool volume

API extension: storage

Package api imports 2 packages (graph) and is imported by 69 packages. Updated 2018-08-24. Refresh now. Tools for package owners.