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
- Variables
- func GetAllStatusCodeStrings() (statusStrings []string)
- func GetParentAndSnapshotName(name string) (parentName string, snapshotName string, isSnapshot bool)
- func GetRootDiskDevice(devices map[string]map[string]string) (string, map[string]string, error)
- func StatusErrorCheck(err error, matchStatusCodes ...int) bool
- func StatusErrorMatch(err error, matchStatusCodes ...int) (int, bool)
- type AuthGroup
- type AuthGroupPost
- type AuthGroupPut
- type AuthGroupsPost
- type Certificate
- type CertificateAddToken
- type CertificatePut
- type CertificatesPost
- type Cluster
- type ClusterCertificatePut
- type ClusterGroup
- type ClusterGroupPost
- type ClusterGroupPut
- type ClusterGroupsPost
- type ClusterMember
- type ClusterMemberConfigKey
- type ClusterMemberJoinToken
- type ClusterMemberPost
- type ClusterMemberPut
- type ClusterMemberState
- type ClusterMemberStatePost
- type ClusterMemberSysInfo
- type ClusterMembersPost
- type ClusterPut
- type ConfigKeyPolicy
- type DevLXDGet
- type DevLXDGetUntrusted
- type DevLXDInstance
- type DevLXDInstancePut
- type DevLXDOperation
- type DevLXDPut
- type DevLXDResponse
- type DevLXDServerEnvironment
- type DevLXDServerStorageDriverInfo
- type DevLXDStoragePool
- type DevLXDStorageVolume
- type DevLXDStorageVolumePut
- type DevLXDStorageVolumeSnapshot
- type DevLXDStorageVolumeSnapshotsPost
- type DevLXDStorageVolumeSource
- type DevLXDStorageVolumesPost
- type DevLXDUbuntuProGuestTokenResponse
- type DevLXDUbuntuProSettings
- type Event
- type EventLifecycle
- type EventLifecycleRequestor
- type EventLogRecord
- type EventLogging
- type IdentitiesBearerPost
- type IdentitiesTLSPost
- type Identity
- type IdentityBearerToken
- type IdentityBearerTokenPost
- type IdentityInfo
- type IdentityProviderGroup
- type IdentityProviderGroupPost
- type IdentityProviderGroupPut
- type IdentityProviderGroupsPost
- type IdentityPut
- type Image
- type ImageAlias
- type ImageAliasesEntry
- type ImageAliasesEntryPost
- type ImageAliasesEntryPut
- type ImageAliasesPost
- type ImageExportPost
- type ImageMetadata
- type ImageMetadataTemplate
- type ImagePut
- type ImageSource
- type ImagesPost
- type ImagesPostSource
- type InitClusterPreseed
- type InitLocalPreseed
- type InitNetworksProjectPost
- type InitPreseed
- type InitStorageVolumesProjectPost
- type Instance
- type InstanceBackup
- type InstanceBackupPost
- type InstanceBackupsPost
- type InstanceConsoleControl
- type InstanceConsolePost
- type InstanceExecControl
- type InstanceExecPost
- type InstanceFull
- type InstancePost
- type InstancePostTarget
- type InstancePut
- type InstanceRebuildPost
- type InstanceSnapshot
- type InstanceSnapshotPost
- type InstanceSnapshotPut
- type InstanceSnapshotsPost
- type InstanceSource
- type InstanceState
- type InstanceStateCPU
- type InstanceStateDisk
- type InstanceStateMemory
- type InstanceStateNetwork
- type InstanceStateNetworkAddress
- type InstanceStateNetworkCounters
- type InstanceStatePut
- type InstanceType
- type InstanceUEFIVariable
- type InstanceUEFIVars
- type InstancesPost
- type InstancesPut
- type MetadataConfiguration
- type MetadataConfigurationConfigKey
- type MetadataConfigurationConfigKeys
- type MetadataConfigurationEntity
- type MetadataConfigurationEntityEntitlement
- type Network
- type NetworkACL
- type NetworkACLPost
- type NetworkACLPut
- type NetworkACLRule
- type NetworkACLsPost
- type NetworkAllocations
- type NetworkForward
- type NetworkForwardPort
- type NetworkForwardPut
- type NetworkForwardsPost
- type NetworkLease
- type NetworkLoadBalancer
- type NetworkLoadBalancerBackend
- type NetworkLoadBalancerPort
- type NetworkLoadBalancerPut
- type NetworkLoadBalancersPost
- type NetworkPeer
- type NetworkPeerPut
- type NetworkPeersPost
- type NetworkPost
- type NetworkPut
- type NetworkState
- type NetworkStateAddress
- type NetworkStateBond
- type NetworkStateBridge
- type NetworkStateCounters
- type NetworkStateOVN
- type NetworkStateVLAN
- type NetworkZone
- type NetworkZonePut
- type NetworkZoneRecord
- type NetworkZoneRecordEntry
- type NetworkZoneRecordPut
- type NetworkZoneRecordsPost
- type NetworkZonesPost
- type NetworksPost
- type OIDCSession
- type Operation
- type OperationRequestor
- type Permission
- type PermissionInfo
- type PlacementGroup
- type PlacementGroupPost
- type PlacementGroupPut
- type PlacementGroupsPost
- type Profile
- type ProfilePost
- type ProfilePut
- type ProfilesPost
- type Project
- type ProjectPost
- type ProjectPut
- type ProjectState
- type ProjectStateResource
- type ProjectsPost
- type Resources
- type ResourcesCPU
- type ResourcesCPUCache
- type ResourcesCPUCore
- type ResourcesCPUSocket
- type ResourcesCPUThread
- type ResourcesGPU
- type ResourcesGPUCard
- type ResourcesGPUCardDRM
- type ResourcesGPUCardMdev
- type ResourcesGPUCardNvidia
- type ResourcesGPUCardSRIOV
- type ResourcesMemory
- type ResourcesMemoryNode
- type ResourcesNetwork
- type ResourcesNetworkCard
- type ResourcesNetworkCardPort
- type ResourcesNetworkCardPortInfiniband
- type ResourcesNetworkCardSRIOV
- type ResourcesNetworkCardVDPA
- type ResourcesPCI
- type ResourcesPCIDevice
- type ResourcesPCIVPD
- type ResourcesStorage
- type ResourcesStorageDisk
- type ResourcesStorageDiskPartition
- type ResourcesStoragePool
- type ResourcesStoragePoolInodes
- type ResourcesStoragePoolSpace
- type ResourcesSystem
- type ResourcesSystemChassis
- type ResourcesSystemFirmware
- type ResourcesSystemMotherboard
- type ResourcesUSB
- type ResourcesUSBDevice
- type ResourcesUSBDeviceInterface
- type Response
- type ResponseRaw
- type ResponseType
- type Server
- type ServerEnvironment
- type ServerPut
- type ServerStorageDriverInfo
- type ServerUntrusted
- type SourceType
- type StatusCode
- type StatusError
- type StorageBucket
- type StorageBucketKey
- type StorageBucketKeyPut
- type StorageBucketKeysPost
- type StorageBucketPut
- type StorageBucketsPost
- type StoragePool
- type StoragePoolPut
- type StoragePoolState
- type StoragePoolVolumeBackup
- type StoragePoolVolumeBackupPost
- type StoragePoolVolumeBackupsPost
- type StoragePoolsPost
- type StorageVolume
- type StorageVolumePost
- type StorageVolumePostTarget
- type StorageVolumePut
- type StorageVolumeSnapshot
- type StorageVolumeSnapshotPost
- type StorageVolumeSnapshotPut
- type StorageVolumeSnapshotsPost
- type StorageVolumeSource
- type StorageVolumeState
- type StorageVolumeStateUsage
- type StorageVolumesPost
- type URL
- type Warning
- type WarningPut
- type WithEntitlements
Examples ¶
Constants ¶
const ( // AuthenticationMethodTLS is the default authentication method for interacting with LXD remotely. AuthenticationMethodTLS = "tls" // AuthenticationMethodOIDC is the OpenID Connect authentication method. AuthenticationMethodOIDC = "oidc" // AuthenticationMethodBearer is the authentication method used when the caller sends a bearer token that was issued by LXD. AuthenticationMethodBearer = "bearer" )
const ( // IdentityTypeCertificateClientRestricted represents identities that authenticate using TLS and are not privileged. IdentityTypeCertificateClientRestricted = "Client certificate (restricted)" // IdentityTypeCertificateClientUnrestricted represents identities that authenticate using TLS and are privileged. IdentityTypeCertificateClientUnrestricted = "Client certificate (unrestricted)" // IdentityTypeCertificateClient represents identities that authenticate using TLS and whose permissions are managed via group membership. IdentityTypeCertificateClient = "Client certificate" // IdentityTypeCertificateClientPending represents identities for which a token has been issued but who have not yet authenticated with LXD. IdentityTypeCertificateClientPending = "Client certificate (pending)" // IdentityTypeCertificateServer represents cluster member authentication. IdentityTypeCertificateServer = "Server certificate" // IdentityTypeCertificateMetricsRestricted represents identities that may only view metrics and are not privileged. IdentityTypeCertificateMetricsRestricted = "Metrics certificate (restricted)" // IdentityTypeCertificateMetricsUnrestricted represents identities that may only view metrics and are privileged. IdentityTypeCertificateMetricsUnrestricted = "Metrics certificate (unrestricted)" // IdentityTypeOIDCClient represents an identity that authenticates with OIDC. IdentityTypeOIDCClient = "OIDC client" // IdentityTypeBearerTokenDevLXD represents an identity that bears a LXD token that can be used to interact with the DevLXD API. IdentityTypeBearerTokenDevLXD = "DevLXD token bearer" // IdentityTypeBearerTokenClient represents an identity that bears a LXD token that can be used to interact with the LXD API. IdentityTypeBearerTokenClient = "Client token bearer" // IdentityTypeBearerTokenInitialUI is the identity type used for initial connection to LXD via the UI when conventional authentication is not yet configured. IdentityTypeBearerTokenInitialUI = "Initial UI token bearer" // IdentityTypeCertificateClusterLink represents cluster links that authenticate using TLS and whose permissions are managed via group ownership. IdentityTypeCertificateClusterLink = "Cluster link certificate" // IdentityTypeCertificateClusterLinkPending represents cluster links for which a token has been issued but who have not yet authenticated with a linked LXD cluster. IdentityTypeCertificateClusterLinkPending = "Cluster link certificate (pending)" )
const ( // BackupMetadataVersion1 represents the original backup file format version. BackupMetadataVersion1 uint32 = 1 // BackupMetadataVersion2 represents the updated backup file format version which is using // restructured fields in order to be able to track custom storage volumes attached to the instance. BackupMetadataVersion2 uint32 = 2 )
const ( // ClusterEvacuateModeStop indicates that all instances on the evacuated member should be stopped. ClusterEvacuateModeStop = "stop" // ClusterEvacuateModeMigrate indicates that all instances on the evacuated member should be migrated to other members. ClusterEvacuateModeMigrate = "migrate" // ClusterEvacuateModeLiveMigrate indicates that all instances on the evacuated member should be live-migrated to other members. ClusterEvacuateModeLiveMigrate = "live-migrate" // ClusterEvacuateModeAuto indicates that the system should automatically choose the best evacuation method for the instance based on instance type and device capabilities. ClusterEvacuateModeAuto = "auto" // ClusterEvacuateModeHeal is used internally to indicate that instances should be evacuated during automatic cluster healing. ClusterEvacuateModeHeal = "heal" // ClusterRestoreModeSkip indicates that cluster member status should be restored without starting local instances or migrating back evacuated instances. ClusterRestoreModeSkip = "skip" )
const ( EventTypeLifecycle = "lifecycle" EventTypeLogging = "logging" EventTypeOperation = "operation" EventTypeOVN = "ovn" )
LXD event types.
const ( EventLifecycleCertificateCreated = "certificate-created" EventLifecycleCertificateDeleted = "certificate-deleted" EventLifecycleCertificateUpdated = "certificate-updated" EventLifecycleClusterCertificateUpdated = "cluster-certificate-updated" EventLifecycleClusterDisabled = "cluster-disabled" EventLifecycleClusterEnabled = "cluster-enabled" EventLifecycleClusterGroupCreated = "cluster-group-created" EventLifecycleClusterGroupDeleted = "cluster-group-deleted" EventLifecycleClusterGroupRenamed = "cluster-group-renamed" EventLifecycleClusterGroupUpdated = "cluster-group-updated" EventLifecycleClusterMemberAdded = "cluster-member-added" EventLifecycleClusterMemberEvacuated = "cluster-member-evacuated" EventLifecycleClusterMemberHealed = "cluster-member-healed" EventLifecycleClusterMemberRemoved = "cluster-member-removed" EventLifecycleClusterMemberRenamed = "cluster-member-renamed" EventLifecycleClusterMemberRestored = "cluster-member-restored" EventLifecycleClusterMemberUpdated = "cluster-member-updated" EventLifecycleClusterTokenCreated = "cluster-token-created" EventLifecycleConfigUpdated = "config-updated" EventLifecycleImageAliasCreated = "image-alias-created" EventLifecycleImageAliasDeleted = "image-alias-deleted" EventLifecycleImageAliasRenamed = "image-alias-renamed" EventLifecycleImageAliasUpdated = "image-alias-updated" EventLifecycleImageCreated = "image-created" EventLifecycleImageDeleted = "image-deleted" EventLifecycleImageRefreshed = "image-refreshed" EventLifecycleImageRetrieved = "image-retrieved" EventLifecycleImageSecretCreated = "image-secret-created" EventLifecycleImageUpdated = "image-updated" EventLifecycleInstanceBackupCreated = "instance-backup-created" EventLifecycleInstanceBackupDeleted = "instance-backup-deleted" EventLifecycleInstanceBackupRenamed = "instance-backup-renamed" EventLifecycleInstanceBackupRetrieved = "instance-backup-retrieved" EventLifecycleInstanceConsole = "instance-console" EventLifecycleInstanceConsoleReset = "instance-console-reset" EventLifecycleInstanceConsoleRetrieved = "instance-console-retrieved" EventLifecycleInstanceCreated = "instance-created" EventLifecycleInstanceDeleted = "instance-deleted" EventLifecycleInstanceExec = "instance-exec" EventLifecycleInstanceFileDeleted = "instance-file-deleted" EventLifecycleInstanceFilePushed = "instance-file-pushed" EventLifecycleInstanceFileRetrieved = "instance-file-retrieved" EventLifecycleInstanceLogDeleted = "instance-log-deleted" EventLifecycleInstanceLogRetrieved = "instance-log-retrieved" EventLifecycleInstanceMetadataRetrieved = "instance-metadata-retrieved" EventLifecycleInstanceMetadataTemplateCreated = "instance-metadata-template-created" EventLifecycleInstanceMetadataTemplateDeleted = "instance-metadata-template-deleted" EventLifecycleInstanceMetadataTemplateRetrieved = "instance-metadata-template-retrieved" EventLifecycleInstanceMetadataUpdated = "instance-metadata-updated" EventLifecycleInstanceMigrated = "instance-migrated" EventLifecycleInstancePaused = "instance-paused" EventLifecycleInstanceReady = "instance-ready" EventLifecycleInstanceRenamed = "instance-renamed" EventLifecycleInstanceRestarted = "instance-restarted" EventLifecycleInstanceRestored = "instance-restored" EventLifecycleInstanceResumed = "instance-resumed" EventLifecycleInstanceShutdown = "instance-shutdown" EventLifecycleInstanceSnapshotCreated = "instance-snapshot-created" EventLifecycleInstanceSnapshotDeleted = "instance-snapshot-deleted" EventLifecycleInstanceSnapshotRenamed = "instance-snapshot-renamed" EventLifecycleInstanceSnapshotUpdated = "instance-snapshot-updated" EventLifecycleInstanceStarted = "instance-started" EventLifecycleInstanceStopped = "instance-stopped" EventLifecycleInstanceUpdated = "instance-updated" EventLifecycleNetworkACLCreated = "network-acl-created" EventLifecycleNetworkACLDeleted = "network-acl-deleted" EventLifecycleNetworkACLRenamed = "network-acl-renamed" EventLifecycleNetworkACLUpdated = "network-acl-updated" EventLifecycleNetworkCreated = "network-created" EventLifecycleNetworkDeleted = "network-deleted" EventLifecycleNetworkForwardCreated = "network-forward-created" EventLifecycleNetworkForwardDeleted = "network-forward-deleted" EventLifecycleNetworkForwardUpdated = "network-forward-updated" EventLifecycleNetworkLoadBalancerCreated = "network-load-balancer-created" EventLifecycleNetworkLoadBalancerDeleted = "network-load-balancer-deleted" EventLifecycleNetworkLoadBalancerUpdated = "network-load-balancer-updated" EventLifecycleNetworkPeerCreated = "network-peer-created" EventLifecycleNetworkPeerDeleted = "network-peer-deleted" EventLifecycleNetworkPeerUpdated = "network-peer-updated" EventLifecycleNetworkRenamed = "network-renamed" EventLifecycleNetworkUpdated = "network-updated" EventLifecycleNetworkZoneCreated = "network-zone-created" EventLifecycleNetworkZoneDeleted = "network-zone-deleted" EventLifecycleNetworkZoneRecordCreated = "network-zone-record-created" EventLifecycleNetworkZoneRecordDeleted = "network-zone-record-deleted" EventLifecycleNetworkZoneRecordUpdated = "network-zone-record-updated" EventLifecycleNetworkZoneUpdated = "network-zone-updated" EventLifecycleOperationCancelled = "operation-cancelled" EventLifecycleProfileCreated = "profile-created" EventLifecycleProfileDeleted = "profile-deleted" EventLifecycleProfileRenamed = "profile-renamed" EventLifecycleProfileUpdated = "profile-updated" EventLifecycleProjectCreated = "project-created" EventLifecycleProjectDeleted = "project-deleted" EventLifecycleProjectRenamed = "project-renamed" EventLifecycleProjectUpdated = "project-updated" EventLifecycleStoragePoolCreated = "storage-pool-created" EventLifecycleStoragePoolDeleted = "storage-pool-deleted" EventLifecycleStoragePoolUpdated = "storage-pool-updated" EventLifecycleStorageBucketCreated = "storage-bucket-created" EventLifecycleStorageBucketUpdated = "storage-bucket-updated" EventLifecycleStorageBucketDeleted = "storage-bucket-deleted" EventLifecycleStorageBucketKeyCreated = "storage-bucket-key-created" EventLifecycleStorageBucketKeyUpdated = "storage-bucket-key-updated" EventLifecycleStorageBucketKeyDeleted = "storage-bucket-key-deleted" EventLifecycleStorageVolumeCreated = "storage-volume-created" EventLifecycleStorageVolumeBackupCreated = "storage-volume-backup-created" EventLifecycleStorageVolumeBackupDeleted = "storage-volume-backup-deleted" EventLifecycleStorageVolumeBackupRenamed = "storage-volume-backup-renamed" EventLifecycleStorageVolumeBackupRetrieved = "storage-volume-backup-retrieved" EventLifecycleStorageVolumeDeleted = "storage-volume-deleted" EventLifecycleStorageVolumeRenamed = "storage-volume-renamed" EventLifecycleStorageVolumeRestored = "storage-volume-restored" EventLifecycleStorageVolumeSnapshotCreated = "storage-volume-snapshot-created" EventLifecycleStorageVolumeSnapshotDeleted = "storage-volume-snapshot-deleted" EventLifecycleStorageVolumeSnapshotRenamed = "storage-volume-snapshot-renamed" EventLifecycleStorageVolumeSnapshotUpdated = "storage-volume-snapshot-updated" EventLifecycleStorageVolumeUpdated = "storage-volume-updated" EventLifecycleWarningAcknowledged = "warning-acknowledged" EventLifecycleWarningDeleted = "warning-deleted" EventLifecycleWarningReset = "warning-reset" EventLifecycleIdentityCreated = "identity-created" EventLifecycleIdentityUpdated = "identity-updated" EventLifecycleIdentityDeleted = "identity-deleted" EventLifecycleAuthGroupCreated = "auth-group-created" EventLifecycleAuthGroupUpdated = "auth-group-updated" EventLifecycleAuthGroupRenamed = "auth-group-renamed" EventLifecycleAuthGroupDeleted = "auth-group-deleted" EventLifecycleIdentityProviderGroupCreated = "identity-provider-group-created" EventLifecycleIdentityProviderGroupUpdated = "identity-provider-group-updated" EventLifecycleIdentityProviderGroupRenamed = "identity-provider-group-renamed" EventLifecycleIdentityProviderGroupDeleted = "identity-provider-group-deleted" EventLifecyclePlacementGroupCreated = "placement-group-created" EventLifecyclePlacementGroupDeleted = "placement-group-deleted" EventLifecyclePlacementGroupRenamed = "placement-group-renamed" EventLifecyclePlacementGroupUpdated = "placement-group-updated" )
Define consts for all the lifecycle events.
const ( // DiskVolumesModeRoot represents the "root" disk volumes mode. // This mode performs an action on the root disk only. DiskVolumesModeRoot = "root" // DiskVolumesModeAllExclusive represents the "all-exclusive" disk volumes mode. // This mode performs an action on the root disk and all exclusive (non-shared) disk volumes. DiskVolumesModeAllExclusive = "all-exclusive" )
const ( // PlacementPolicySpread spreads instances across cluster members. PlacementPolicySpread string = "spread" // PlacementPolicyCompact colocates instances on the same cluster member. PlacementPolicyCompact string = "compact" )
const ( // PlacementRigorStrict enforces the placement policy strictly. // Placement fails if the requested policy cannot be satisfied. PlacementRigorStrict string = "strict" // PlacementRigorPermissive relaxes enforcement of the placement policy. // Placement continues even if the ideal policy cannot be fully met. PlacementRigorPermissive string = "permissive" )
const ( // AuthTrusted is the value of [ServerUntrusted.Auth] returned by the server when the client has authenticated. AuthTrusted = "trusted" // AuthUntrusted is the value of [ServerUntrusted.Auth] returned by the server when the client not authenticated. AuthUntrusted = "untrusted" )
const (
// AuthGroupAdminsName is the name of the admins group.
AuthGroupAdminsName = "admins"
)
const CertificateTypeClient = "client"
CertificateTypeClient indicates a client certificate type.
const CertificateTypeMetrics = "metrics"
CertificateTypeMetrics indicates a metrics certificate type.
const CertificateTypeServer = "server"
CertificateTypeServer indicates a server certificate type.
const CertificateTypeUnknown = "unknown"
CertificateTypeUnknown indicates an unknown certificate type.
const (
// ClientFeatureCookieJar indicates to LXD that the client has persistent cookie storage.
ClientFeatureCookieJar = "cookiejar"
)
const InstanceTypeAny = InstanceType("")
InstanceTypeAny defines the instance type value for requesting any instance type.
const InstanceTypeContainer = InstanceType("container")
InstanceTypeContainer defines the instance type value for a container.
const InstanceTypeVM = InstanceType("virtual-machine")
InstanceTypeVM defines the instance type value for a virtual-machine.
const NetworkStatusCreated = "Created"
NetworkStatusCreated network is fully created.
const NetworkStatusErrored = "Errored"
NetworkStatusErrored network is in error status.
const NetworkStatusPending = "Pending"
NetworkStatusPending network is pending creation on other cluster nodes.
NetworkStatusUnavailable network failed to initialize.
const NetworkStatusUnknown = "Unknown"
NetworkStatusUnknown network is in unknown status.
const OperationClassTask = "task"
OperationClassTask represents the Task OperationClass.
const OperationClassToken = "token"
OperationClassToken represents the Token OperationClass.
const OperationClassWebsocket = "websocket"
OperationClassWebsocket represents the Websocket OperationClass.
const ProjectDefaultName = "default"
ProjectDefaultName is the name of the default project that can never be deleted.
const SecretNameControl = "control"
SecretNameControl is the secret name used for the migration control connection.
const SecretNameFilesystem = "fs"
SecretNameFilesystem is the secret name used for the migration filesystem connection.
const SecretNameState = "criu" // Legacy value used for backward compatibility for clients (needed for VM migration).
SecretNameState is the secret name used for the migration state connection.
const SourceTypeConversion = SourceType("conversion")
SourceTypeConversion represents instance creation from conversion.
const SourceTypeCopy = SourceType("copy")
SourceTypeCopy represents instance creation from a copy operation.
const SourceTypeImage = SourceType("image")
SourceTypeImage represents instance creation from an image.
const SourceTypeMigration = SourceType("migration")
SourceTypeMigration represents instance creation from migration.
const SourceTypeNone = SourceType("none")
SourceTypeNone represents an unknown source type for instance creation.
const StoragePoolStatusCreated = "Created"
StoragePoolStatusCreated storage pool is fully created.
const StoragePoolStatusErrored = "Errored"
StoragePoolStatusErrored storage pool is in error status.
const StoragePoolStatusPending = "Pending"
StoragePoolStatusPending storage pool is pending creation on other cluster nodes.
const StoragePoolStatusUnknown = "Unknown"
StoragePoolStatusUnknown storage pool is in unknown status.
const StoragePoolStatusUnvailable = "Unavailable"
StoragePoolStatusUnvailable storage pool failed to initialize.
Variables ¶
var ErrMultipleRootDisks = errors.New("More than one root disk device found")
ErrMultipleRootDisks means more than one root disk device exists.
var ErrNoRootDisk = errors.New("No root disk device found")
ErrNoRootDisk means there is no root disk device found.
var InstanceCreateConfigKeyPolicy = ConfigKeyPolicy{ Remove: []string{"volatile.last_state.power"}, }
InstanceCreateConfigKeyPolicy is used for preparing config for new instance creation.
var InstanceRefreshConfigKeyPolicy = ConfigKeyPolicy{ Remove: []string{"volatile.apply_template"}, Immutable: []string{ "volatile.idmap.base", "volatile.idmap.current", "volatile.idmap.next", "volatile.last_state.idmap", "volatile.last_state.power", }, }
InstanceRefreshConfigKeyPolicy is used for preserving target-only keys during refresh.
var InstanceRemoteCopyConfigKeyPolicy = ConfigKeyPolicy{ RemoveVolatile: true, Immutable: []string{ "volatile.base_image", }, }
InstanceRemoteCopyConfigKeyPolicy is used for preparing config for remote instance copy.
var StatusCodeNames = map[StatusCode]string{ OperationCreated: "Operation created", Started: "Started", Stopped: "Stopped", Running: "Running", Cancelling: "Cancelling", Pending: "Pending", Success: "Success", Failure: "Failure", Cancelled: "Cancelled", Starting: "Starting", Stopping: "Stopping", Aborting: "Aborting", Freezing: "Freezing", Frozen: "Frozen", Thawed: "Thawed", Error: "Error", Ready: "Ready", }
StatusCodeNames associates a status code to its name.
Functions ¶
func GetAllStatusCodeStrings ¶
func GetAllStatusCodeStrings() (statusStrings []string)
GetAllStatusCodeStrings returns a slice of all status code strings.
func GetParentAndSnapshotName ¶
func GetParentAndSnapshotName(name string) (parentName string, snapshotName string, isSnapshot bool)
GetParentAndSnapshotName returns the parent name, snapshot name, and whether it actually was a snapshot name.
func GetRootDiskDevice ¶
GetRootDiskDevice returns the local root disk device from a device map. The returned values are the device name and its config map. It returns ErrNoRootDisk when no root disk device exists. It returns ErrMultipleRootDisks when more than one root disk device exists.
func StatusErrorCheck ¶
StatusErrorCheck returns whether or not err was caused by a StatusError and if it matches one of the optional status codes.
func StatusErrorMatch ¶
StatusErrorMatch checks if err was caused by StatusError. Can optionally also check whether the StatusError's status code matches one of the supplied status codes in matchStatus. Returns the matched StatusError status code and true if match criteria are met, otherwise false.
Types ¶
type AuthGroup ¶
type AuthGroup struct {
WithEntitlements `yaml:",inline"`
// Name is the name of the group.
// Example: default-c1-viewers
Name string `json:"name" yaml:"name"`
// Description is a short description of the group.
// Example: Viewers of instance c1 in the default project.
Description string `json:"description" yaml:"description"`
// Permissions are a list of permissions.
Permissions []Permission `json:"permissions" yaml:"permissions"`
// Identities is a map of authentication method to slice of identity identifiers.
Identities map[string][]string `json:"identities" yaml:"identities"`
// IdentityProviderGroups are a list of groups from the IdP whose mapping
// includes this group.
// Example: ["sales", "operations"]
IdentityProviderGroups []string `json:"identity_provider_groups" yaml:"identity_provider_groups"`
}
AuthGroup is the type for a LXD group.
swagger:model
API extension: access_management.
func (*AuthGroup) SetWritable ¶
func (g *AuthGroup) SetWritable(put AuthGroupPut)
SetWritable sets applicable values from AuthGroupPut struct to AuthGroup struct.
func (AuthGroup) Writable ¶
func (g AuthGroup) Writable() AuthGroupPut
Writable converts a AuthGroup struct into a AuthGroupPut struct (filters read-only fields).
type AuthGroupPost ¶
type AuthGroupPost struct {
// Name is the name of the group.
// Example: default-c1-viewers
Name string `json:"name" yaml:"name"`
}
AuthGroupPost is used for renaming a group.
swagger:model
API extension: access_management.
type AuthGroupPut ¶
type AuthGroupPut struct {
// Description is a short description of the group.
// Example: Viewers of instance c1 in the default project.
Description string `json:"description" yaml:"description"`
// Permissions are a list of permissions.
Permissions []Permission `json:"permissions" yaml:"permissions"`
}
AuthGroupPut contains the editable fields of a group.
swagger:model
API extension: access_management.
type AuthGroupsPost ¶
type AuthGroupsPost struct {
AuthGroupPost `yaml:",inline"`
AuthGroupPut `yaml:",inline"`
}
AuthGroupsPost is used for creating a new group.
swagger:model
API extension: access_management.
type Certificate ¶
type Certificate struct {
WithEntitlements `yaml:",inline"`
// Name associated with the certificate
// Example: castiana
Name string `json:"name" yaml:"name"`
// Usage type for the certificate
// Example: client
Type string `json:"type" yaml:"type"`
// Whether to limit the certificate to listed projects
// Example: true
//
// API extension: certificate_project
Restricted bool `json:"restricted" yaml:"restricted"`
// List of allowed projects (applies when restricted)
// Example: ["default", "foo", "bar"]
//
// API extension: certificate_project
Projects []string `json:"projects" yaml:"projects"`
// The certificate itself, as PEM encoded X509 certificate
// Example: X509 PEM certificate
//
// API extension: certificate_self_renewal
Certificate string `json:"certificate" yaml:"certificate"`
// SHA256 fingerprint of the certificate
// Read only: true
// Example: fd200419b271f1dc2a5591b693cc5774b7f234e1ff8c6b78ad703b6888fe2b69
Fingerprint string `json:"fingerprint" yaml:"fingerprint"`
}
Certificate represents a LXD certificate
swagger:model
func (*Certificate) SetWritable ¶
func (c *Certificate) SetWritable(put CertificatePut)
SetWritable sets applicable values from CertificatePut struct to Certificate struct.
func (*Certificate) URL ¶
func (c *Certificate) URL(apiVersion string) *URL
URL returns the URL for the certificate.
func (*Certificate) Writable ¶
func (c *Certificate) Writable() CertificatePut
Writable converts a full Certificate struct into a CertificatePut struct (filters read-only fields).
type CertificateAddToken ¶
type CertificateAddToken struct {
// The name of the new client
// Example: user@host
ClientName string `json:"client_name" yaml:"client_name"`
// The fingerprint of the network certificate
// Example: 57bb0ff4340b5bb28517e062023101adf788c37846dc8b619eb2c3cb4ef29436
Fingerprint string `json:"fingerprint" yaml:"fingerprint"`
// The addresses of the server
// Example: ["10.98.30.229:8443"]
Addresses []string `json:"addresses" yaml:"addresses"`
// The random join secret
// Example: 2b2284d44db32675923fe0d2020477e0e9be11801ff70c435e032b97028c35cd
Secret string `json:"secret" yaml:"secret"`
// The token's expiry date.
// Example: 2021-03-23T17:38:37.753398689-04:00
ExpiresAt time.Time `json:"expires_at" yaml:"expires_at"`
// Type is an indicator for which API (certificates or identities) to send the token.
// Example: Client certificate
//
// API extension: access_management_tls
Type string `json:"type" yaml:"type"`
}
CertificateAddToken represents the fields contained within an encoded certificate add token.
swagger:model
API extension: certificate_token.
func (*CertificateAddToken) String ¶
func (t *CertificateAddToken) String() string
String encodes the certificate add token as JSON and then base64.
type CertificatePut ¶
type CertificatePut struct {
// Name associated with the certificate
// Example: castiana
Name string `json:"name" yaml:"name"`
// Usage type for the certificate
// Example: client
Type string `json:"type" yaml:"type"`
// Whether to limit the certificate to listed projects
// Example: true
//
// API extension: certificate_project
Restricted bool `json:"restricted" yaml:"restricted"`
// List of allowed projects (applies when restricted)
// Example: ["default", "foo", "bar"]
//
// API extension: certificate_project
Projects []string `json:"projects" yaml:"projects"`
// The certificate itself, as PEM encoded X509 certificate
// Example: X509 PEM certificate
//
// API extension: certificate_self_renewal
Certificate string `json:"certificate" yaml:"certificate"`
}
CertificatePut represents the modifiable fields of a LXD certificate
swagger:model
API extension: certificate_update.
type CertificatesPost ¶
type CertificatesPost struct {
// Name associated with the certificate
// Example: castiana
Name string `json:"name" yaml:"name"`
// Usage type for the certificate
// Example: client
Type string `json:"type" yaml:"type"`
// Whether to limit the certificate to listed projects
// Example: true
//
// API extension: certificate_project
Restricted bool `json:"restricted" yaml:"restricted"`
// List of allowed projects (applies when restricted)
// Example: ["default", "foo", "bar"]
//
// API extension: certificate_project
Projects []string `json:"projects" yaml:"projects"`
// The certificate itself, as base64 encoded X509 PEM certificate
// Example: base64 encoded X509 PEM certificate
//
// API extension: certificate_self_renewal
Certificate string `json:"certificate" yaml:"certificate"`
// Server trust password (used to add an untrusted client, deprecated, use trust_token)
// Example: blah
//
// Deprecated: Use TrustToken.
Password string `json:"password" yaml:"password"`
// Trust token (used to add an untrusted client)
// Example: blah
//
// API extension: explicit_trust_token
TrustToken string `json:"trust_token" yaml:"trust_token"`
// Whether to create a certificate add token
// Example: true
//
// API extension: certificate_token
Token bool `json:"token" yaml:"token"`
}
CertificatesPost represents the fields of a new LXD certificate
swagger:model
type Cluster ¶
type Cluster struct {
// Name of the cluster member answering the request
// Example: lxd01
ServerName string `json:"server_name" yaml:"server_name"`
// Whether clustering is enabled
// Example: true
Enabled bool `json:"enabled" yaml:"enabled"`
// List of member configuration keys (used during join)
// Example: []
//
// API extension: clustering_join
MemberConfig []ClusterMemberConfigKey `json:"member_config" yaml:"member_config"`
}
Cluster represents high-level information about a LXD cluster.
swagger:model
API extension: clustering.
type ClusterCertificatePut ¶
type ClusterCertificatePut struct {
// The new certificate (X509 PEM encoded) for the cluster
// Example: X509 PEM certificate
ClusterCertificate string `json:"cluster_certificate" yaml:"cluster_certificate"`
// The new certificate key (X509 PEM encoded) for the cluster
// Example: X509 PEM certificate key
ClusterCertificateKey string `json:"cluster_certificate_key" yaml:"cluster_certificate_key"`
}
ClusterCertificatePut represents the certificate and key pair for all members in a LXD Cluster
swagger:model
API extension: clustering_update_certs.
type ClusterGroup ¶
type ClusterGroup struct {
// The new name of the cluster group
// Example: group1
Name string `json:"name" yaml:"name"`
// The description of the cluster group
// Example: amd64 servers
Description string `json:"description" yaml:"description"`
// List of members in this group
// Example: ["node1", "node3"]
Members []string `json:"members" yaml:"members"`
// UsedBy is a list or LXD entity URLs that reference the cluster group.
//
// API extension: clustering_groups_used_by
UsedBy []string `json:"used_by" yaml:"used_by"`
}
ClusterGroup represents a cluster group.
swagger:model
API extension: clustering_groups.
func (*ClusterGroup) SetWritable ¶
func (c *ClusterGroup) SetWritable(put ClusterGroupPut)
SetWritable sets applicable values from ClusterGroupPut struct to ClusterGroup struct.
func (*ClusterGroup) Writable ¶
func (c *ClusterGroup) Writable() ClusterGroupPut
Writable converts a full ClusterGroup struct into a ClusterGroupPut struct (filters read-only fields).
type ClusterGroupPost ¶
type ClusterGroupPost struct {
// The new name of the cluster group
// Example: group1
Name string `json:"name" yaml:"name"`
}
ClusterGroupPost represents the fields required to rename a cluster group.
swagger:model
API extension: clustering_groups.
type ClusterGroupPut ¶
type ClusterGroupPut struct {
// The description of the cluster group
// Example: amd64 servers
Description string `json:"description" yaml:"description"`
// List of members in this group
// Example: ["node1", "node3"]
Members []string `json:"members" yaml:"members"`
}
ClusterGroupPut represents the modifiable fields of a cluster group.
swagger:model
API extension: clustering_groups.
type ClusterGroupsPost ¶
type ClusterGroupsPost struct {
ClusterGroupPut
// The new name of the cluster group
// Example: group1
Name string `json:"name" yaml:"name"`
}
ClusterGroupsPost represents the fields available for a new cluster group.
swagger:model
API extension: clustering_groups.
type ClusterMember ¶
type ClusterMember struct {
// Name of the cluster member
// Example: lxd01
ServerName string `json:"server_name" yaml:"server_name"`
// URL at which the cluster member can be reached
// Example: https://10.0.0.1:8443
URL string `json:"url" yaml:"url"`
// Whether the cluster member is a database server (database-leader, database-voter, or database-standby)
// Example: true
Database bool `json:"database" yaml:"database"`
// Current status
// Example: Online
Status string `json:"status" yaml:"status"`
// Additional status information
// Example: fully operational
Message string `json:"message" yaml:"message"`
// The primary architecture of the cluster member
// Example: x86_64
//
// API extension: clustering_architecture
Architecture string `json:"architecture" yaml:"architecture"`
// List of roles held by this cluster member
// Example: ["database"]
//
// API extension: clustering_roles
Roles []string `json:"roles" yaml:"roles"`
// Name of the failure domain for this cluster member
// Example: rack1
//
// API extension: clustering_failure_domains
FailureDomain string `json:"failure_domain" yaml:"failure_domain"`
// Cluster member description
// Example: AMD Epyc 32c/64t
//
// API extension: clustering_description
Description string `json:"description" yaml:"description"`
// Additional configuration information
// Example: {"scheduler.instance": "all"}
//
// API extension: clustering_config
Config map[string]string `json:"config" yaml:"config"`
// List of cluster groups this member belongs to
// Example: ["group1", "group2"]
//
// API extension: clustering_groups
Groups []string `json:"groups" yaml:"groups"`
}
ClusterMember represents the a LXD node in the cluster.
swagger:model
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 {
// The kind of configuration key (network, storage-pool, ...)
// Example: storage-pool
Entity string `json:"entity" yaml:"entity"`
// The name of the object requiring this key
// Example: local
Name string `json:"name" yaml:"name"`
// The name of the key
// Example: source
Key string `json:"key" yaml:"key"`
// The value on the answering cluster member
// Example: /dev/sdb
Value string `json:"value" yaml:"value"`
// A human friendly description key
// Example: "source" property for storage pool "local"
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.
swagger:model
API extension: clustering_join.
type ClusterMemberJoinToken ¶
type ClusterMemberJoinToken struct {
// The name of the new cluster member
// Example: lxd02
ServerName string `json:"server_name" yaml:"server_name"`
// The fingerprint of the network certificate
// Example: 57bb0ff4340b5bb28517e062023101adf788c37846dc8b619eb2c3cb4ef29436
Fingerprint string `json:"fingerprint" yaml:"fingerprint"`
// The addresses of existing online cluster members
// Example: ["10.98.30.229:8443"]
Addresses []string `json:"addresses" yaml:"addresses"`
// The random join secret.
// Example: 2b2284d44db32675923fe0d2020477e0e9be11801ff70c435e032b97028c35cd
Secret string `json:"secret" yaml:"secret"`
// The token's expiry date.
// Example: 2021-03-23T17:38:37.753398689-04:00
ExpiresAt time.Time `json:"expires_at" yaml:"expires_at"`
}
ClusterMemberJoinToken represents the fields contained within an encoded cluster member join token.
swagger:model
API extension: clustering_join_token.
func (*ClusterMemberJoinToken) String ¶
func (t *ClusterMemberJoinToken) String() string
String encodes the cluster member join token as JSON and then base64.
type ClusterMemberPost ¶
type ClusterMemberPost struct {
// The new name of the cluster member
// Example: lxd02
ServerName string `json:"server_name" yaml:"server_name"`
}
ClusterMemberPost represents the fields required to rename a LXD node.
swagger:model
API extension: clustering.
type ClusterMemberPut ¶
type ClusterMemberPut struct {
// List of roles held by this cluster member
// Example: ["database"]
//
// API extension: clustering_roles
Roles []string `json:"roles" yaml:"roles"`
// Name of the failure domain for this cluster member
// Example: rack1
//
// API extension: clustering_failure_domains
FailureDomain string `json:"failure_domain" yaml:"failure_domain"`
// Cluster member description
// Example: AMD Epyc 32c/64t
//
// API extension: clustering_description
Description string `json:"description" yaml:"description"`
// Additional configuration information
// Example: {"scheduler.instance": "all"}
//
// API extension: clustering_config
Config map[string]string `json:"config" yaml:"config"`
// List of cluster groups this member belongs to
// Example: ["group1", "group2"]
//
// API extension: clustering_groups
Groups []string `json:"groups" yaml:"groups"`
}
ClusterMemberPut represents the modifiable fields of a LXD cluster member
swagger:model
API extension: clustering_edit_roles.
type ClusterMemberState ¶
type ClusterMemberState struct {
SysInfo ClusterMemberSysInfo `json:"sysinfo" yaml:"sysinfo"`
StoragePools map[string]StoragePoolState `json:"storage_pools" yaml:"storage_pools"`
}
ClusterMemberState represents the state of a cluster member.
swagger:model
API extension: cluster_member_state.
type ClusterMemberStatePost ¶
type ClusterMemberStatePost struct {
// The action to be performed. Valid actions are "evacuate" and "restore".
// Example: evacuate
Action string `json:"action" yaml:"action"`
// Override the configured evacuation mode.
// Valid modes for the "evacuate" action are "stop", "migrate", and "live-migrate".
// Valid modes for the "restore" action are "skip".
// Example: stop
//
// API extension: clustering_evacuation_mode
Mode string `json:"mode" yaml:"mode"`
}
ClusterMemberStatePost represents the fields required to evacuate a cluster member.
swagger:model
API extension: clustering_evacuation.
type ClusterMemberSysInfo ¶
type ClusterMemberSysInfo struct {
Uptime int64 `json:"uptime" yaml:"uptime"`
LoadAverages []float64 `json:"load_averages" yaml:"load_averages"`
TotalRAM uint64 `json:"total_ram" yaml:"total_ram"`
FreeRAM uint64 `json:"free_ram" yaml:"free_ram"`
BufferRAM uint64 `json:"buffered_ram" yaml:"buffered_ram"`
TotalSwap uint64 `json:"total_swap" yaml:"total_swap"`
FreeSwap uint64 `json:"free_swap" yaml:"free_swap"`
Processes uint16 `json:"processes" yaml:"processes"`
LogicalCPUs uint64 `json:"logical_cpus" yaml:"logical_cpus"`
}
ClusterMemberSysInfo represents the sysinfo of a cluster member.
swagger:model
API extension: cluster_member_state.
type ClusterMembersPost ¶
type ClusterMembersPost struct {
// The name of the new cluster member
// Example: lxd02
ServerName string `json:"server_name" yaml:"server_name"`
}
ClusterMembersPost represents the fields required to request a join token to add a member to the cluster.
swagger:model
API extension: clustering_join_token.
type ClusterPut ¶
type ClusterPut struct {
Cluster `yaml:",inline"`
// The address of the cluster you wish to join
// Example: 10.0.0.1:8443
ClusterAddress string `json:"cluster_address" yaml:"cluster_address"`
// The expected certificate (X509 PEM encoded) for the cluster
// Example: X509 PEM certificate
ClusterCertificate string `json:"cluster_certificate" yaml:"cluster_certificate"`
// The local address to use for cluster communication
// Example: 10.0.0.2:8443
//
// API extension: clustering_join
ServerAddress string `json:"server_address" yaml:"server_address"`
// The cluster join token for the cluster you're trying to join
// Example: blah
//
// API extension: explicit_trust_token
ClusterToken string `json:"cluster_token" yaml:"cluster_token"`
}
ClusterPut represents the fields required to bootstrap or join a LXD cluster.
swagger:model
API extension: clustering.
type ConfigKeyPolicy ¶
type ConfigKeyPolicy struct {
// Immutable is a list of keys whose values should be preserved from the source config.
Immutable []string
// Remove is a list of exact keys to remove.
Remove []string
// RemoveVolatile indicates whether to remove all volatile keys (keys with "volatile." prefix).
RemoveVolatile bool
}
ConfigKeyPolicy stores key rules used when transforming config maps.
func (ConfigKeyPolicy) Apply ¶
func (p ConfigKeyPolicy) Apply(config map[string]string, immutableSource map[string]string)
Apply applies the policy transformations to config. It removes keys in Remove, optionally removes volatile keys, and preserves Immutable keys. If immutableSource is nil, immutable keys are preserved from config itself. If immutableSource is non-nil, immutable keys are preserved from immutableSource.
type DevLXDGet ¶
type DevLXDGet struct {
DevLXDGetUntrusted `yaml:",inline"`
// Read-only information about DevLXD server environment.
// API extension: devlxd_volume_management
Environment DevLXDServerEnvironment `json:"environment" yaml:"environment"`
}
DevLXDGet represents the server data which is returned as the root of the devlxd API for a trusted client.
type DevLXDGetUntrusted ¶
type DevLXDGetUntrusted struct {
DevLXDPut `yaml:",inline"`
// API version number
// Example: 1.0
APIVersion string `json:"api_version" yaml:"api_version"`
// Type (container or virtual-machine)
// Example: container
InstanceType string `json:"instance_type" yaml:"instance_type"`
// What cluster member this instance is located on
// Example: lxd01
Location string `json:"location" yaml:"location"`
// Whether the caller is trusted or untrusted
// Example: untrusted
Auth string `json:"auth" yaml:"auth"`
// List of supported storage drivers.
// Example: [{"name": "zfs", "remote": false}, {"name": "ceph", "remote": true}]
// API extension: devlxd_volume_management
SupportedStorageDrivers []DevLXDServerStorageDriverInfo `json:"supported_storage_drivers" yaml:"supported_storage_drivers"`
}
DevLXDGetUntrusted represents the server data which is returned as the root of the devlxd API.
type DevLXDInstance ¶
type DevLXDInstance struct {
// Instance name
// Example: foo
Name string `json:"name" yaml:"name"`
// Instance devices
// Example: {"root": {"type": "disk", "pool": "default", "path": "/"}}
Devices map[string]map[string]string `json:"devices" yaml:"devices"`
}
DevLXDInstance is a devLXD representation of LXD instance.
type DevLXDInstancePut ¶
type DevLXDInstancePut struct {
// Instance devices
// Example: {"root": {"type": "disk", "pool": "default", "path": "/"}}
Devices map[string]map[string]string `json:"devices" yaml:"devices"`
}
DevLXDInstancePut represents the modifiable fields of LXD instance that can be updated via the devLXD API.
type DevLXDOperation ¶
type DevLXDOperation struct {
// UUID of the operation
// Example: 6916c8a6-9b7d-4abd-90b3-aedfec7ec7da
ID string `json:"id" yaml:"id"`
// Status name
// Example: Running
Status string `json:"status" yaml:"status"`
// Status code
// Example: 103
StatusCode StatusCode `json:"status_code" yaml:"status_code"`
// Operation error message
// Example: Some error message
Err string `json:"err" yaml:"err"`
}
DevLXDOperation is a devLXD representation of LXD background operation.
type DevLXDPut ¶
type DevLXDPut struct {
// Instance state
// Example: Started
State string `json:"state" yaml:"state"`
}
DevLXDPut represents the modifiable data.
type DevLXDResponse ¶
type DevLXDResponse struct {
Content json.RawMessage `json:"content" yaml:"content"`
StatusCode int `json:"status_code" yaml:"status_code"`
}
DevLXDResponse represents the response from the devLXD API.
func (DevLXDResponse) ContentAsStruct ¶
func (r DevLXDResponse) ContentAsStruct(target any) error
ContentAsStruct unmarshals the response content.
type DevLXDServerEnvironment ¶
type DevLXDServerEnvironment struct {
// Whether the underlying LXD server is part of a cluster.
// This information is populated only for trusted clients.
// Example: false
ServerClustered bool `json:"server_clustered" yaml:"server_clustered"`
}
DevLXDServerEnvironment represents the read-only environment fields of a DevLXD server.
type DevLXDServerStorageDriverInfo ¶
type DevLXDServerStorageDriverInfo struct {
// Name of the driver.
// Example: zfs
Name string `json:"name" yaml:"name"`
// Whether the driver has remote volumes.
// Example: false
Remote bool `json:"remote" yaml:"remote"`
}
DevLXDServerStorageDriverInfo represents the read-only info about a storage driver.
type DevLXDStoragePool ¶
type DevLXDStoragePool struct {
// Storage pool name
// Example: local
Name string `json:"name" yaml:"name"`
// Storage pool driver
// Example: zfs
Driver string `json:"driver" yaml:"driver"`
// Pool status (Pending, Created, Errored or Unknown)
// Read only: true
// Example: Created
Status string `json:"status" yaml:"status"`
}
DevLXDStoragePool is a devLXD representation of LXD storage pool.
type DevLXDStorageVolume ¶
type DevLXDStorageVolume struct {
// Name of the storage volume.
// Example: my-volume
Name string `json:"name"`
// Description of the storage volume.
// Example: My custom volume
Description string `json:"description"`
// Pool name of the storage volume.
// Example: local
Pool string `json:"pool"`
// Type of the storage volume.
// Example: custom
Type string `json:"type"`
// Volume content type (filesystem or block)
// Example: filesystem
ContentType string `json:"content_type" yaml:"content_type"`
// Configuration of the storage volume.
// Example: {"size": "10GiB", "block.filesystem": "ext4"}
Config map[string]string `json:"config"`
// What cluster member this record was found on
// Example: lxd01
Location string `json:"location" yaml:"location"`
}
DevLXDStorageVolume is a devLXD representation of LXD storage volume.
type DevLXDStorageVolumePut ¶
type DevLXDStorageVolumePut struct {
// Storage volume configuration map (refer to doc/storage.md)
// Example: {"zfs.remove_snapshots": "true", "size": "50GiB"}
Config map[string]string `json:"config" yaml:"config"`
// Description of the storage volume
// Example: My custom volume
Description string `json:"description" yaml:"description"`
}
DevLXDStorageVolumePut represents the modifiable fields of a LXD storage volume that can be updated via the devLXD API.
type DevLXDStorageVolumeSnapshot ¶
type DevLXDStorageVolumeSnapshot struct {
// Snapshot name
// Example: snap0
Name string `json:"name" yaml:"name"`
// Description of the storage volume
// Example: My custom volume
Description string `json:"description" yaml:"description"`
// The content type (filesystem or block)
// Example: filesystem
ContentType string `json:"content_type" yaml:"content_type"`
// Storage volume configuration map (refer to doc/storage.md)
// Example: {"zfs.remove_snapshots": "true", "size": "50GiB"}
Config map[string]string `json:"config" yaml:"config"`
}
DevLXDStorageVolumeSnapshot represents a LXD storage volume snapshot.
type DevLXDStorageVolumeSnapshotsPost ¶
type DevLXDStorageVolumeSnapshotsPost struct {
// Snapshot name
// Example: snap0
Name string `json:"name" yaml:"name"`
// Description of the storage volume snapshot
// Example: My custom snapshot
Description string `json:"description" yaml:"description"`
}
DevLXDStorageVolumeSnapshotsPost represents the fields available for a new LXD storage volume snapshot.
type DevLXDStorageVolumeSource ¶
type DevLXDStorageVolumeSource struct {
// Source volume name.
// Example: foo
Name string `json:"name" yaml:"name"`
// Source type. Currently, only "copy" is supported.
// Example: copy
Type SourceType `json:"type" yaml:"type"`
// Source storage pool.
// Example: local
Pool string `json:"pool" yaml:"pool"`
// Name of the cluster member where the volume is located.
// Example: member01
Location string `json:"location" yaml:"location"`
}
DevLXDStorageVolumeSource represents the source for a new storage volume.
type DevLXDStorageVolumesPost ¶
type DevLXDStorageVolumesPost struct {
DevLXDStorageVolumePut `yaml:",inline"`
// Volume name.
// Example: foo
Name string `json:"name" yaml:"name"`
// Volume type.
// Example: custom
Type string `json:"type" yaml:"type"`
// Volume content type (filesystem or block)
// Example: filesystem
ContentType string `json:"content_type" yaml:"content_type"`
// Volume to use as a base for the new volume.
Source DevLXDStorageVolumeSource `json:"source" yaml:"source"`
}
DevLXDStorageVolumesPost represents the fields of a new LXD storage pool volume that can be created via the devLXD API.
type DevLXDUbuntuProGuestTokenResponse ¶
type DevLXDUbuntuProGuestTokenResponse struct {
// Expires denotes the time at which the token will expire.
//
// Example: 2025-03-23T20:00:00-04:00
Expires string `json:"expires"`
// GuestToken contains the guest Pro attach token.
//
// Example: RANDOM-STRING
GuestToken string `json:"guest_token"`
// ID is an identifier for the token.
//
// Example: 9f65c3d0-c326-491e-927f-9b062b6649a0
ID string `json:"id"`
}
DevLXDUbuntuProGuestTokenResponse contains the expected fields of proAPIGetGuestTokenV1 that must be passed back to the guest for pro attachment to succeed.
API extension: ubuntu_pro_guest_attach.
type DevLXDUbuntuProSettings ¶
type DevLXDUbuntuProSettings struct {
// GuestAttach indicates the availability of ubuntu pro guest attachment.
//
// Example: on
GuestAttach string `json:"guest_attach"`
}
DevLXDUbuntuProSettings contains Ubuntu Pro settings relevant to LXD.
API extension: ubuntu_pro_guest_attach.
type Event ¶
type Event struct {
// Event type (one of operation, logging or lifecycle)
// Example: lifecycle
Type string `yaml:"type" json:"type"`
// Time at which the event was sent
// Example: 2021-02-24T19:00:45.452649098-05:00
Timestamp time.Time `yaml:"timestamp" json:"timestamp"`
// JSON encoded metadata (see EventLogging, EventLifecycle or Operation)
// Example: {"action": "instance-started", "source": "/1.0/instances/c1", "context": {}}
Metadata json.RawMessage `yaml:"metadata" json:"metadata"`
// Originating cluster member
// Example: lxd01
//
// API extension: event_location
Location string `yaml:"location,omitempty" json:"location,omitempty"`
// Project the event belongs to.
// Example: default
//
// API extension: event_project
Project string `yaml:"project,omitempty" json:"project,omitempty"`
}
Event represents an event entry (over websocket)
swagger:model
func (*Event) ToLogging ¶
func (event *Event) ToLogging() (EventLogRecord, error)
ToLogging creates log record for the event.
type EventLifecycle ¶
type EventLifecycle struct {
Action string `yaml:"action" json:"action"`
Source string `yaml:"source" json:"source"`
Context map[string]any `yaml:"context,omitempty" json:"context,omitempty"`
// API extension: event_lifecycle_requestor
Requestor *EventLifecycleRequestor `yaml:"requestor,omitempty" json:"requestor,omitempty"`
// API extension: event_lifecycle_name_and_project
Name string `yaml:"name,omitempty" json:"name,omitempty"`
Project string `yaml:"project,omitempty" json:"project,omitempty"`
}
EventLifecycle represets a lifecycle type event entry
API extension: event_lifecycle.
type EventLifecycleRequestor ¶
type EventLifecycleRequestor struct {
Username string `yaml:"username" json:"username"`
Protocol string `yaml:"protocol" json:"protocol"`
// Requestor address
// Example: 10.0.2.15
//
// API extension: event_lifecycle_requestor_address
Address string `yaml:"address" json:"address"`
}
EventLifecycleRequestor represents the initial requestor for an event
API extension: event_lifecycle_requestor.
type EventLogRecord ¶
EventLogRecord represents single log record.
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 IdentitiesBearerPost ¶
type IdentitiesBearerPost struct {
// Type of identity
// Example: DevLXD token bearer
Type string `json:"type" yaml:"type"`
// Name associated with the identity
// Example: foo
Name string `json:"name" yaml:"name"`
// Groups is the list of groups for which the identity is a member.
// Example: ["foo", "bar"]
Groups []string `json:"groups" yaml:"groups"`
}
IdentitiesBearerPost contains required information for the creation of a token identity.
swagger:model
API extension: auth_bearer_devlxd.
type IdentitiesTLSPost ¶
type IdentitiesTLSPost struct {
// Name associated with the identity
// Example: foo
Name string `json:"name" yaml:"name"`
// Trust token (used to add an untrusted client)
// Example: blah
TrustToken string `json:"trust_token" yaml:"trust_token"`
// Whether to create a certificate add token
// Example: true
Token bool `json:"token" yaml:"token"`
// The PEM encoded x509 certificate of the identity
Certificate string `json:"certificate" yaml:"certificate"`
// Groups is the list of groups for which the identity is a member.
// Example: ["foo", "bar"]
Groups []string `json:"groups" yaml:"groups"`
}
IdentitiesTLSPost contains required information for the creation of a TLS identity.
swagger:model
API extension: access_management_tls.
type Identity ¶
type Identity struct {
WithEntitlements `yaml:",inline"`
// AuthenticationMethod is the authentication method that the identity
// authenticates to LXD with.
// Example: tls
AuthenticationMethod string `json:"authentication_method" yaml:"authentication_method"`
// Type is the type of identity.
// Example: oidc-service-account
Type string `json:"type" yaml:"type"`
// Identifier is a unique identifier for the identity (e.g. certificate fingerprint or email for OIDC).
// Example: jane.doe@example.com
Identifier string `json:"id" yaml:"id"`
// Name is the Name claim of the identity if authenticated via OIDC, or the name
// of the certificate if authenticated with TLS.
// Example: Jane Doe
Name string `json:"name" yaml:"name"`
// Groups is the list of groups for which the identity is a member.
// Example: ["foo", "bar"]
Groups []string `json:"groups" yaml:"groups"`
// TLSCertificate is a PEM encoded x509 certificate. This is only set if the AuthenticationMethod is AuthenticationMethodTLS.
//
// API extension: access_management_tls.
TLSCertificate string `json:"tls_certificate" yaml:"tls_certificate"`
}
Identity is the type for an authenticated party that can make requests to the HTTPS API.
swagger:model
API extension: access_management.
func (*Identity) SetWritable ¶
func (i *Identity) SetWritable(put IdentityPut)
SetWritable sets applicable values from IdentityPut struct to Identity struct.
func (Identity) Writable ¶
func (i Identity) Writable() IdentityPut
Writable converts a Identity struct into a IdentityPut struct (filters read-only fields).
type IdentityBearerToken ¶
type IdentityBearerToken struct {
Token string `json:"token" yaml:"token"`
}
IdentityBearerToken contains a token issued for an identity whose authentication method is api.AuthenticationMethodBearer.
swagger:model
API extension: auth_bearer_devlxd.
type IdentityBearerTokenPost ¶
type IdentityBearerTokenPost struct {
Expiry string `json:"expiry" yaml:"expiry"`
}
IdentityBearerTokenPost contains parameters used when issuing a token for a bearer identity.
swagger:model
API extension: auth_bearer_devlxd.
type IdentityInfo ¶
type IdentityInfo struct {
Identity `yaml:",inline"`
// Effective groups is the combined and deduplicated list of LXD groups that the identity is a direct member of, and
// the LXD groups that the identity is an effective member of via identity provider group mappings.
// Example: ["foo", "bar"]
EffectiveGroups []string `json:"effective_groups" yaml:"effective_groups"`
// Effective permissions is the combined and deduplicated list of permissions that the identity has by virtue of
// direct membership to a LXD group, or effective membership of a LXD group via identity provider group mappings.
EffectivePermissions []Permission `json:"effective_permissions" yaml:"effective_permissions"`
// FineGrained is a boolean indicating whether the identity is fine-grained,
// meaning that permissions are managed via group membership.
FineGrained bool `json:"fine_grained" yaml:"fine_grained"`
// ExpiresAt is the expiration time of the credential used to authenticate the caller.
// It is set only when client is trusted, and authentication method is either bearer or TLS.
ExpiresAt *time.Time `json:"expires_at,omitempty" yaml:"expires_at,omitempty"`
}
IdentityInfo expands an Identity to include effective group membership and effective permissions. These fields can only be evaluated for the currently authenticated identity.
swagger:model
API extension: access_management.
type IdentityProviderGroup ¶
type IdentityProviderGroup struct {
WithEntitlements `yaml:",inline"`
// Name is the name of the IdP group.
Name string `json:"name" yaml:"name"`
// Groups are the groups the IdP group resolves to.
// Example: ["foo", "bar"]
Groups []string `json:"groups" yaml:"groups"`
}
IdentityProviderGroup represents a mapping between LXD groups and groups defined by an identity provider.
swagger:model
API extension: access_management.
func (*IdentityProviderGroup) SetWritable ¶
func (ipg *IdentityProviderGroup) SetWritable(put IdentityProviderGroupPut)
SetWritable sets applicable values from IdentityProviderGroupPut struct to IdentityProviderGroup struct.
func (IdentityProviderGroup) Writable ¶
func (ipg IdentityProviderGroup) Writable() IdentityProviderGroupPut
Writable converts a IdentityProviderGroup struct into a IdentityProviderGroupPut struct (filters read-only fields).
type IdentityProviderGroupPost ¶
type IdentityProviderGroupPost struct {
// Name is the name of the IdP group.
Name string `json:"name" yaml:"name"`
}
IdentityProviderGroupPost is used for renaming an IdentityProviderGroup.
swagger:model
API extension: access_management.
type IdentityProviderGroupPut ¶
type IdentityProviderGroupPut struct {
// Groups are the groups the IdP group resolves to.
// Example: ["foo", "bar"]
Groups []string `json:"groups" yaml:"groups"`
}
IdentityProviderGroupPut contains the editable fields of an IdentityProviderGroup.
swagger:model
API extension: access_management.
type IdentityProviderGroupsPost ¶
type IdentityProviderGroupsPost struct {
// Name is the name of the IdP group.
Name string `json:"name" yaml:"name"`
// Groups are the groups the IdP group resolves to.
// Example: ["foo", "bar"]
Groups []string `json:"groups" yaml:"groups"`
}
IdentityProviderGroupsPost is used for creating an IdentityProviderGroup.
swagger:model
API extension: access_management.
type IdentityPut ¶
type IdentityPut struct {
// Groups is the list of groups for which the identity is a member.
// Example: ["foo", "bar"]
Groups []string `json:"groups" yaml:"groups"`
// TLSCertificate is a base64 encoded x509 certificate. This can only be set if the authentication method of the identity is AuthenticationMethodTLS.
//
// API extension: access_management_tls.
TLSCertificate string `json:"tls_certificate" yaml:"tls_certificate"`
}
IdentityPut contains the editable fields of an IdentityInfo.
swagger:model
API extension: access_management.
type Image ¶
type Image struct {
WithEntitlements `yaml:",inline"`
// List of aliases
Aliases []ImageAlias `json:"aliases" yaml:"aliases"`
// Architecture
// Example: x86_64
Architecture string `json:"architecture" yaml:"architecture"`
// Whether the image is an automatically cached remote image
// Example: true
Cached bool `json:"cached" yaml:"cached"`
// Whether the image is available to unauthenticated users
// Example: false
Public bool `json:"public" yaml:"public"`
// Original filename
// Example: 06b86454720d36b20f94e31c6812e05ec51c1b568cf3a8abd273769d213394bb.rootfs
Filename string `json:"filename" yaml:"filename"`
// Full SHA-256 fingerprint
// Example: 06b86454720d36b20f94e31c6812e05ec51c1b568cf3a8abd273769d213394bb
Fingerprint string `json:"fingerprint" yaml:"fingerprint"`
// Size of the image in bytes
// Example: 272237676
Size int64 `json:"size" yaml:"size"`
// Where the image came from
UpdateSource *ImageSource `json:"update_source,omitempty" yaml:"update_source,omitempty"`
// Whether the image should auto-update when a new build is available
// Example: true
AutoUpdate bool `json:"auto_update" yaml:"auto_update"`
// Type of image (container or virtual-machine)
// Example: container
//
// API extension: image_types
Type string `json:"type" yaml:"type"`
// When the image was originally created
// Example: 2021-03-23T20:00:00-04:00
CreatedAt time.Time `json:"created_at" yaml:"created_at"`
// When the image becomes obsolete
// Example: 2025-03-23T20:00:00-04:00
//
// API extension: images_expiry
ExpiresAt time.Time `json:"expires_at" yaml:"expires_at"`
// Last time the image was used
// Example: 2021-03-22T20:39:00.575185384-04:00
LastUsedAt time.Time `json:"last_used_at" yaml:"last_used_at"`
// When the image was added to this LXD server
// Example: 2021-03-24T14:18:15.115036787-04:00
UploadedAt time.Time `json:"uploaded_at" yaml:"uploaded_at"`
// Descriptive properties
// Example: {"os": "Ubuntu", "release": "jammy", "variant": "cloud"}
Properties map[string]string `json:"properties" yaml:"properties"`
// List of profiles to use when creating from this image (if none provided by user)
// Example: ["default"]
//
// API extension: image_profiles
Profiles []string `json:"profiles" yaml:"profiles"`
// Project name
// Example: project1
//
// API extension: images_all_projects
Project string `json:"project" yaml:"project"`
}
Image represents a LXD image
swagger:model
func (*Image) SetWritable ¶
SetWritable sets applicable values from ImagePut struct to Image struct.
type ImageAlias ¶
type ImageAlias struct {
// Name of the alias
// Example: ubuntu-24.04
Name string `json:"name" yaml:"name"`
// Description of the alias
// Example: Our preferred Ubuntu image
Description string `json:"description" yaml:"description"`
}
ImageAlias represents an alias from the alias list of a LXD image
swagger:model
type ImageAliasesEntry ¶
type ImageAliasesEntry struct {
WithEntitlements `yaml:",inline"`
// Alias name
// Example: ubuntu-24.04
Name string `json:"name" yaml:"name"`
// Alias description
// Example: Our preferred Ubuntu image
Description string `json:"description" yaml:"description"`
// Alias type (container or virtual-machine)
// Example: container
//
// API extension: image_types
Type string `json:"type" yaml:"type"`
// Target fingerprint for the alias
// Example: 06b86454720d36b20f94e31c6812e05ec51c1b568cf3a8abd273769d213394bb
Target string `json:"target" yaml:"target"`
}
ImageAliasesEntry represents a LXD image alias
swagger:model
type ImageAliasesEntryPost ¶
type ImageAliasesEntryPost struct {
// Alias name
// Example: ubuntu-24.04
Name string `json:"name" yaml:"name"`
}
ImageAliasesEntryPost represents the required fields to rename a LXD image alias
swagger:model
type ImageAliasesEntryPut ¶
type ImageAliasesEntryPut struct {
// Alias description
// Example: Our preferred Ubuntu image
Description string `json:"description" yaml:"description"`
// Target fingerprint for the alias
// Example: 06b86454720d36b20f94e31c6812e05ec51c1b568cf3a8abd273769d213394bb
Target string `json:"target" yaml:"target"`
}
ImageAliasesEntryPut represents the modifiable fields of a LXD image alias
swagger:model
type ImageAliasesPost ¶
type ImageAliasesPost struct {
ImageAliasesEntry `yaml:",inline"`
}
ImageAliasesPost represents a new LXD image alias
swagger:model
type ImageExportPost ¶
type ImageExportPost struct {
// Target server URL
// Example: https://1.2.3.4:8443
Target string `json:"target" yaml:"target"`
// Image receive secret
// Example: RANDOM-STRING
Secret string `json:"secret" yaml:"secret"`
// Remote server certificate
// Example: X509 PEM certificate
Certificate string `json:"certificate" yaml:"certificate"`
// List of aliases to set on the image
Aliases []ImageAlias `json:"aliases" yaml:"aliases"`
// Project name
// Example: project1
//
// API extension: image_target_project
Project string `json:"project" yaml:"project"`
// List of profiles to use
// Example: ["default"]
//
// API extension: image_copy_profile
Profiles []string `json:"profiles" yaml:"profiles"`
}
ImageExportPost represents the fields required to export a LXD image
swagger:model
API extension: images_push_relay.
type ImageMetadata ¶
type ImageMetadata struct {
// Architecture name
// Example: x86_64
Architecture string `json:"architecture" yaml:"architecture"`
// Image creation data (as UNIX epoch)
// Example: 1620655439
CreationDate int64 `json:"creation_date" yaml:"creation_date"`
// Image expiry data (as UNIX epoch)
// Example: 1620685757
ExpiryDate int64 `json:"expiry_date" yaml:"expiry_date"`
// Descriptive properties
// Example: {"os": "Ubuntu", "release": "jammy", "variant": "cloud"}
Properties map[string]string `json:"properties" yaml:"properties"`
// Template for files in the image
Templates map[string]*ImageMetadataTemplate `json:"templates" yaml:"templates"`
}
ImageMetadata represents LXD image metadata (used in image tarball)
swagger:model
type ImageMetadataTemplate ¶
type ImageMetadataTemplate struct {
// When to trigger the template (create, copy or start)
// Example: create
When []string `json:"when" yaml:"when"`
// Whether to trigger only if the file is missing
// Example: false
CreateOnly bool `json:"create_only" yaml:"create_only"`
// The template itself as a valid pongo2 template
// Example: pongo2-template
Template string `json:"template" yaml:"template"`
// Key/value properties to pass to the template
// Example: {"foo": "bar"}
Properties map[string]string `json:"properties" yaml:"properties"`
}
ImageMetadataTemplate represents a template entry in image metadata (used in image tarball)
swagger:model
type ImagePut ¶
type ImagePut struct {
// Whether the image should auto-update when a new build is available
// Example: true
AutoUpdate bool `json:"auto_update" yaml:"auto_update"`
// Descriptive properties
// Example: {"os": "Ubuntu", "release": "jammy", "variant": "cloud"}
Properties map[string]string `json:"properties" yaml:"properties"`
// Whether the image is available to unauthenticated users
// Example: false
Public bool `json:"public" yaml:"public"`
// When the image becomes obsolete
// Example: 2025-03-23T20:00:00-04:00
//
// API extension: images_expiry
ExpiresAt time.Time `json:"expires_at" yaml:"expires_at"`
// List of profiles to use when creating from this image (if none provided by user)
// Example: ["default"]
//
// API extension: image_profiles
Profiles []string `json:"profiles" yaml:"profiles"`
}
ImagePut represents the modifiable fields of a LXD image
swagger:model
type ImageSource ¶
type ImageSource struct {
// Source alias to download from
// Example: jammy
Alias string `json:"alias" yaml:"alias"`
// Source server certificate (if not trusted by system CA)
// Example: X509 PEM certificate
Certificate string `json:"certificate" yaml:"certificate"`
// Source server protocol
// Example: simplestreams
Protocol string `json:"protocol" yaml:"protocol"`
// URL of the source server
// Example: https://cloud-images.ubuntu.com/releases/
Server string `json:"server" yaml:"server"`
// Type of image (container or virtual-machine)
// Example: container
//
// API extension: image_types
ImageType string `json:"image_type" yaml:"image_type"`
}
ImageSource represents the source of a LXD image
swagger:model
type ImagesPost ¶
type ImagesPost struct {
ImagePut `yaml:",inline"`
// Original filename of the image
// Example: lxd.tar.xz
Filename string `json:"filename" yaml:"filename"`
// Source of the image
Source *ImagesPostSource `json:"source" yaml:"source"`
// Compression algorithm to use when turning an instance into an image
// Example: gzip
//
// API extension: image_compression_algorithm
CompressionAlgorithm string `json:"compression_algorithm" yaml:"compression_algorithm"`
// Aliases to add to the image
// Example: [{"name": "foo"}, {"name": "bar"}]
//
// API extension: image_create_aliases
Aliases []ImageAlias `json:"aliases" yaml:"aliases"`
}
ImagesPost represents the fields available for a new LXD image
swagger:model
type ImagesPostSource ¶
type ImagesPostSource struct {
ImageSource `yaml:",inline"`
// Transfer mode (push or pull)
// Example: pull
Mode string `json:"mode" yaml:"mode"`
// Type of image source (instance, snapshot, image or url)
// Example: instance
Type SourceType `json:"type" yaml:"type"`
// Source URL (for type "url")
// Example: https://some-server.com/some-directory/
URL string `json:"url" yaml:"url"`
// Instance name (for type "instance" or "snapshot")
// Example: c1/snap0
Name string `json:"name" yaml:"name"`
// Source image fingerprint (for type "image")
// Example: 8ae945c52bb2f2df51c923b04022312f99bbb72c356251f54fa89ea7cf1df1d0
Fingerprint string `json:"fingerprint" yaml:"fingerprint"`
// Source image server secret token (when downloading private images)
// Example: RANDOM-STRING
Secret string `json:"secret" yaml:"secret"`
// Source project name
// Example: project1
//
// API extension: image_source_project
Project string `json:"project" yaml:"project"`
}
ImagesPostSource represents the source of a new LXD image
swagger:model
type InitClusterPreseed ¶
type InitClusterPreseed struct {
ClusterPut `yaml:",inline"`
// The path to the cluster certificate
// Example: /tmp/cluster.crt
ClusterCertificatePath string `json:"cluster_certificate_path" yaml:"cluster_certificate_path"`
}
InitClusterPreseed represents initialization configuration for the LXD cluster.
swagger:model
API extension: preseed.
type InitLocalPreseed ¶
type InitLocalPreseed struct {
ServerPut `yaml:",inline"`
// Networks by project to add to LXD
// Example: Network on the "default" project
Networks []InitNetworksProjectPost `json:"networks" yaml:"networks"`
// Storage Pools to add to LXD
// Example: local dir storage pool
StoragePools []StoragePoolsPost `json:"storage_pools" yaml:"storage_pools"`
// Storage Volumes to add to LXD
// Example: local dir storage volume
StorageVolumes []InitStorageVolumesProjectPost `json:"storage_volumes" yaml:"storage_volumes"`
// Profiles to add to LXD
// Example: "default" profile with a root disk device
Profiles []ProfilesPost `json:"profiles" yaml:"profiles"`
// Projects to add to LXD
// Example: "default" project
Projects []ProjectsPost `json:"projects" yaml:"projects"`
}
InitLocalPreseed represents initialization configuration for the local LXD.
swagger:model
API extension: preseed.
type InitNetworksProjectPost ¶
type InitNetworksProjectPost struct {
NetworksPost `yaml:",inline"` //nolint:musttag
// Project in which the network will reside
// Example: "default"
Project string `json:"Project" yaml:"project"`
}
InitNetworksProjectPost represents the fields of a new LXD network along with its associated project.
swagger:model
API extension: preseed.
type InitPreseed ¶
type InitPreseed struct {
Node InitLocalPreseed `yaml:",inline"`
Cluster *InitClusterPreseed `json:"cluster" yaml:"cluster"`
}
InitPreseed represents initialization configuration that can be supplied to `lxd init`.
swagger:model
API extension: preseed.
type InitStorageVolumesProjectPost ¶
type InitStorageVolumesProjectPost struct {
StorageVolumesPost `yaml:",inline"`
// Storage pool in which the volume will reside
// Example: "default"
Pool string
// Project in which the volume will reside
// Example: "default"
Project string
}
InitStorageVolumesProjectPost represents the fields of a new LXD storage volume along with its associated pool.
swagger:model
API extension: init_preseed_storage_volumes.
type Instance ¶
type Instance struct {
WithEntitlements `yaml:",inline"` //nolint:musttag
// Instance name
// Example: foo
Name string `json:"name" yaml:"name"`
// Instance description
// Example: My test instance
Description string `json:"description" yaml:"description"`
// Instance status (see instance_state)
// Example: Running
Status string `json:"status" yaml:"status"`
// Instance status code (see instance_state)
// Example: 101
StatusCode StatusCode `json:"status_code" yaml:"status_code"`
// Instance creation timestamp
// Example: 2021-03-23T20:00:00-04:00
CreatedAt time.Time `json:"created_at" yaml:"created_at"`
// Last start timestamp
// Example: 2021-03-23T20:00:00-04:00
LastUsedAt time.Time `json:"last_used_at" yaml:"last_used_at"`
// What cluster member this instance is located on
// Example: lxd01
Location string `json:"location" yaml:"location"`
// The type of instance (container or virtual-machine)
// Example: container
Type string `json:"type" yaml:"type"`
// Instance project name
// Example: foo
//
// API extension: instance_all_projects
Project string `json:"project" yaml:"project"`
// Architecture name
// Example: x86_64
Architecture string `json:"architecture" yaml:"architecture"`
// Whether the instance is ephemeral (deleted on shutdown)
// Example: false
Ephemeral bool `json:"ephemeral" yaml:"ephemeral"`
// Whether the instance currently has saved state on disk
// Example: false
Stateful bool `json:"stateful" yaml:"stateful"`
// List of profiles applied to the instance
// Example: ["default"]
Profiles []string `json:"profiles" yaml:"profiles"`
// Instance configuration (see doc/instances.md)
// Example: {"security.nesting": "true"}
Config map[string]string `json:"config" yaml:"config"`
// Instance devices (see doc/instances.md)
// Example: {"root": {"type": "disk", "pool": "default", "path": "/"}}
Devices map[string]map[string]string `json:"devices" yaml:"devices"`
// Expanded configuration (all profiles and local config merged)
// Example: {"security.nesting": "true"}
ExpandedConfig map[string]string `json:"expanded_config,omitempty" yaml:"expanded_config,omitempty"`
// Expanded devices (all profiles and local devices merged)
// Example: {"root": {"type": "disk", "pool": "default", "path": "/"}}
ExpandedDevices map[string]map[string]string `json:"expanded_devices,omitempty" yaml:"expanded_devices,omitempty"`
}
Instance represents a LXD instance.
swagger:model
API extension: instances.
func (Instance) IsActive ¶
IsActive checks whether the instance state indicates the instance is active.
API extension: instances.
func (*Instance) SetWritable ¶
func (c *Instance) SetWritable(put InstancePut)
SetWritable sets applicable values from InstancePut struct to Instance struct.
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 {
// Backup name
// Example: backup0
Name string `json:"name" yaml:"name"`
// When the backup was created
// Example: 2021-03-23T16:38:37.753398689-04:00
CreatedAt time.Time `json:"created_at" yaml:"created_at"`
// When the backup expires (gets auto-deleted)
// Example: 2021-03-23T17:38:37.753398689-04:00
ExpiresAt time.Time `json:"expires_at" yaml:"expires_at"`
// Whether to ignore snapshots
// Example: false
InstanceOnly bool `json:"instance_only" yaml:"instance_only"`
// Whether to ignore snapshots (deprecated, use instance_only)
// Example: false
//
// Deprecated: Use InstanceOnly.
ContainerOnly bool `json:"container_only" yaml:"container_only"`
// Whether to use a pool-optimized binary format (instead of plain tarball)
// Example: true
OptimizedStorage bool `json:"optimized_storage" yaml:"optimized_storage"`
}
InstanceBackup represents a LXD instance backup.
swagger:model
API extension: instances.
type InstanceBackupPost ¶
type InstanceBackupPost struct {
// New backup name
// Example: backup1
Name string `json:"name" yaml:"name"`
}
InstanceBackupPost represents the fields available for the renaming of a instance backup.
swagger:model
API extension: instances.
type InstanceBackupsPost ¶
type InstanceBackupsPost struct {
// Backup name
// Example: backup0
Name string `json:"name" yaml:"name"`
// When the backup expires (gets auto-deleted)
// Example: 2021-03-23T17:38:37.753398689-04:00
ExpiresAt time.Time `json:"expires_at" yaml:"expires_at"`
// Whether to ignore snapshots
// Example: false
InstanceOnly bool `json:"instance_only" yaml:"instance_only"`
// Whether to ignore snapshots (deprecated, use instance_only)
// Example: false
//
// Deprecated: Use InstanceOnly.
ContainerOnly bool `json:"container_only" yaml:"container_only"`
// Whether to use a pool-optimized binary format (instead of plain tarball)
// Example: true
OptimizedStorage bool `json:"optimized_storage" yaml:"optimized_storage"`
// What compression algorithm to use
// Example: gzip
//
// API extension: backup_compression_algorithm
CompressionAlgorithm string `json:"compression_algorithm" yaml:"compression_algorithm"`
// What backup format version to use
// Example: 1
//
// API extension: backup_metadata_version
Version uint32 `json:"version" yaml:"version"`
}
InstanceBackupsPost represents the fields available for a new LXD instance backup.
swagger:model
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 {
// Console width in columns (console type only)
// Example: 80
Width int `json:"width" yaml:"width"`
// Console height in rows (console type only)
// Example: 24
Height int `json:"height" yaml:"height"`
// Type of console to attach to (console or vga)
// Example: console
//
// API extension: console_vga_type
Type string `json:"type" yaml:"type"`
}
InstanceConsolePost represents a LXD instance console request.
swagger:model
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 and its arguments
// Example: ["bash"]
Command []string `json:"command" yaml:"command"`
// Whether to wait for all websockets to be connected before spawning the command
// Example: true
WaitForWS bool `json:"wait-for-websocket" yaml:"wait-for-websocket"`
// Whether the command is to be spawned in interactive mode (singled PTY instead of 3 PIPEs)
// Example: true
Interactive bool `json:"interactive" yaml:"interactive"`
// Additional environment to pass to the command
// Example: {"FOO": "BAR"}
Environment map[string]string `json:"environment" yaml:"environment"`
// Terminal width in characters (for interactive)
// Example: 80
Width int `json:"width" yaml:"width"`
// Terminal height in rows (for interactive)
// Example: 24
Height int `json:"height" yaml:"height"`
// Whether to capture the output for later download (requires non-interactive)
RecordOutput bool `json:"record-output" yaml:"record-output"`
// UID of the user to spawn the command as
// Example: 1000
User uint32 `json:"user" yaml:"user"`
// GID of the user to spawn the command as
// Example: 1000
Group uint32 `json:"group" yaml:"group"`
// Current working directory for the command
// Example: /home/foo/
Cwd string `json:"cwd" yaml:"cwd"`
}
InstanceExecPost represents a LXD instance exec request.
swagger:model
API extension: instances.
type InstanceFull ¶
type InstanceFull struct {
Instance `yaml:",inline"`
// List of backups.
Backups []InstanceBackup `json:"backups" yaml:"backups"`
// Current state.
State *InstanceState `json:"state" yaml:"state"`
// List of snapshots.
Snapshots []InstanceSnapshot `json:"snapshots" yaml:"snapshots"`
}
InstanceFull is a combination of Instance, InstanceBackup, InstanceState and InstanceSnapshot.
swagger:model
API extension: instances.
type InstancePost ¶
type InstancePost struct {
// New name for the instance
// Example: bar
Name string `json:"name" yaml:"name"`
// Whether the instance is being migrated to another server
// Example: false
Migration bool `json:"migration" yaml:"migration"`
// Whether to perform a live migration (migration only)
// Example: false
Live bool `json:"live" yaml:"live"`
// Whether snapshots should be discarded (migration only)
// Example: false
InstanceOnly bool `json:"instance_only" yaml:"instance_only"`
// Whether snapshots should be discarded (migration only, deprecated, use instance_only)
// Example: false
//
// Deprecated: use InstanceOnly.
ContainerOnly bool `json:"container_only" yaml:"container_only"`
// Target for the migration, will use pull mode if not set (migration only)
Target *InstancePostTarget `json:"target" yaml:"target"`
// Target pool for local cross-pool move
// Example: baz
//
// API extension: instance_pool_move
Pool string `json:"pool" yaml:"pool"`
// Target project for local cross-project move
// Example: foo
//
// API extension: instance_project_move
Project string `json:"project" yaml:"project"`
// AllowInconsistent allow inconsistent copies when migrating.
// Example: false
//
// API extension: instance_allow_inconsistent_copy
AllowInconsistent bool `json:"allow_inconsistent" yaml:"allow_inconsistent"`
// Instance configuration file.
// Example: {"security.nesting": "true"}
//
// API extension: instance_move_config
Config map[string]string `json:"Config" yaml:"config"`
// Instance devices.
// Example: {"root": {"type": "disk", "pool": "default", "path": "/"}}
//
// API extension: instance_move_config
Devices map[string]map[string]string `json:"Devices" yaml:"devices"`
// List of profiles applied to the instance.
// Example: ["default"]
//
// API extension: instance_move_config
Profiles []string `json:"Profiles" yaml:"profiles"`
// Whether the instances's snapshot should receive target instances profile on copy
// Example: true
//
// API extension: override_snapshot_profiles_on_copy
OverrideSnapshotProfiles bool `json:"override_snapshot_profiles" yaml:"override_snapshot_profiles"`
}
InstancePost represents the fields required to rename/move a LXD instance.
swagger:model
API extension: instances.
type InstancePostTarget ¶
type InstancePostTarget struct {
// The certificate of the migration target
// Example: X509 PEM certificate
Certificate string `json:"certificate" yaml:"certificate"`
// The operation URL on the remote target
// Example: https://1.2.3.4:8443/1.0/operations/5e8e1638-5345-4c2d-bac9-2c79c8577292
Operation string `json:"operation,omitempty" yaml:"operation,omitempty"`
// Migration websockets credentials
// Example: {"migration": "random-string"}
Websockets map[string]string `json:"secrets,omitempty" yaml:"secrets,omitempty"`
}
InstancePostTarget represents the migration target host and operation.
swagger:model
API extension: instances.
type InstancePut ¶
type InstancePut struct {
// Architecture name
// Example: x86_64
Architecture string `json:"architecture" yaml:"architecture"`
// Instance configuration (see doc/instances.md)
// Example: {"security.nesting": "true"}
Config map[string]string `json:"config" yaml:"config"`
// Instance devices (see doc/instances.md)
// Example: {"root": {"type": "disk", "pool": "default", "path": "/"}}
Devices map[string]map[string]string `json:"devices" yaml:"devices"`
// Whether the instance is ephemeral (deleted on shutdown)
// Example: false
Ephemeral bool `json:"ephemeral" yaml:"ephemeral"`
// List of profiles applied to the instance
// Example: ["default"]
Profiles []string `json:"profiles" yaml:"profiles"`
// If set, instance will be restored to the provided snapshot name
// Example: snap0
Restore string `json:"restore,omitempty" yaml:"restore,omitempty"`
// Which disk volumes to restore from an instance snapshot. Possible values are "root" or "all-exclusive".
// Example: all-exclusive
//
// API extension: instance_snapshot_multi_volume
RestoreDiskVolumesMode string `json:"restore_disk_volumes_mode,omitempty" yaml:"restore_disk_volumes_mode,omitempty"`
// Whether the instance currently has saved state on disk
// Example: false
Stateful bool `json:"stateful" yaml:"stateful"`
// Instance description
// Example: My test instance
Description string `json:"description" yaml:"description"`
}
InstancePut represents the modifiable fields of a LXD instance.
swagger:model
API extension: instances.
func (*InstancePut) ApplyRefreshConfig ¶
func (i *InstancePut) ApplyRefreshConfig(target Instance)
ApplyRefreshConfig adjusts this instance config so it can be used as the body of a refresh request against an existing target instance. The receiver is taken as the base (source) and then selectively patched with values from the target that must not change during a refresh. This helper is intended for clients constructing refresh requests.
type InstanceRebuildPost ¶
type InstanceRebuildPost struct {
// Rebuild source
Source InstanceSource `json:"source" yaml:"source"`
}
InstanceRebuildPost indicates how to rebuild an instance.
swagger:model
API extension: instances_rebuild.
type InstanceSnapshot ¶
type InstanceSnapshot struct {
// Architecture name
// Example: x86_64
Architecture string `json:"architecture" yaml:"architecture"`
// Instance configuration (see doc/instances.md)
// Example: {"security.nesting": "true"}
Config map[string]string `json:"config" yaml:"config"`
// Instance creation timestamp
// Example: 2021-03-23T20:00:00-04:00
CreatedAt time.Time `json:"created_at" yaml:"created_at"`
// When the snapshot expires (gets auto-deleted)
// Example: 2021-03-23T17:38:37.753398689-04:00
ExpiresAt time.Time `json:"expires_at" yaml:"expires_at"`
// Instance devices (see doc/instances.md)
// Example: {"root": {"type": "disk", "pool": "default", "path": "/"}}
Devices map[string]map[string]string `json:"devices" yaml:"devices"`
// Whether the instance is ephemeral (deleted on shutdown)
// Example: false
Ephemeral bool `json:"ephemeral" yaml:"ephemeral"`
// Expanded configuration (all profiles and local config merged)
// Example: {"security.nesting": "true"}
ExpandedConfig map[string]string `json:"expanded_config,omitempty" yaml:"expanded_config,omitempty"`
// Expanded devices (all profiles and local devices merged)
// Example: {"root": {"type": "disk", "pool": "default", "path": "/"}}
ExpandedDevices map[string]map[string]string `json:"expanded_devices,omitempty" yaml:"expanded_devices,omitempty"`
// Last start timestamp
// Example: 2021-03-23T20:00:00-04:00
LastUsedAt time.Time `json:"last_used_at" yaml:"last_used_at"`
// Snapshot name
// Example: foo
Name string `json:"name" yaml:"name"`
// List of profiles applied to the instance
// Example: ["default"]
Profiles []string `json:"profiles" yaml:"profiles"`
// Whether the instance currently has saved state on disk
// Example: false
Stateful bool `json:"stateful" yaml:"stateful"`
// Size of the snapshot in bytes
// Example: 143360
//
// API extension: snapshot_disk_usage
Size int64 `json:"size" yaml:"size"`
}
InstanceSnapshot represents a LXD instance snapshot.
swagger:model
API extension: instances.
func (*InstanceSnapshot) SetWritable ¶
func (c *InstanceSnapshot) SetWritable(put InstanceSnapshotPut)
SetWritable sets applicable values from InstanceSnapshotPut struct to InstanceSnapshot struct.
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 {
// New name for the snapshot
// Example: foo
Name string `json:"name" yaml:"name"`
// Whether this is a migration request
// Example: false
Migration bool `json:"migration" yaml:"migration"`
// Migration target for push migration (requires migration)
Target *InstancePostTarget `json:"target" yaml:"target"`
// Whether to perform a live migration (requires migration)
// Example: false
Live bool `json:"live,omitempty" yaml:"live,omitempty"`
}
InstanceSnapshotPost represents the fields required to rename/move a LXD instance snapshot.
swagger:model
API extension: instances.
type InstanceSnapshotPut ¶
type InstanceSnapshotPut struct {
// When the snapshot expires (gets auto-deleted)
// Example: 2021-03-23T17:38:37.753398689-04:00
ExpiresAt time.Time `json:"expires_at" yaml:"expires_at"`
}
InstanceSnapshotPut represents the modifiable fields of a LXD instance snapshot.
swagger:model
API extension: instances.
type InstanceSnapshotsPost ¶
type InstanceSnapshotsPost struct {
// Snapshot name
// Example: snap0
Name string `json:"name" yaml:"name"`
// Whether the snapshot should include runtime state
// Example: false
Stateful bool `json:"stateful" yaml:"stateful"`
// When the snapshot expires (gets auto-deleted)
// Example: 2021-03-23T17:38:37.753398689-04:00
//
// API extension: snapshot_expiry_creation
ExpiresAt *time.Time `json:"expires_at" yaml:"expires_at"`
// Which disk volumes to include in instance snapshot. Possible values are "root" or "all-exclusive".
// Example: all-exclusive
//
// API extension: instance_snapshot_multi_volume
DiskVolumesMode string `json:"disk_volumes_mode,omitempty" yaml:"disk_volumes_mode,omitempty"`
}
InstanceSnapshotsPost represents the fields available for a new LXD instance snapshot.
swagger:model
API extension: instances.
type InstanceSource ¶
type InstanceSource struct {
// Source type
// Example: image
Type SourceType `json:"type" yaml:"type"`
// Certificate (for remote images or migration)
// Example: X509 PEM certificate
Certificate string `json:"certificate" yaml:"certificate"`
// Image alias name (for image source)
// Example: ubuntu/24.04
Alias string `json:"alias,omitempty" yaml:"alias,omitempty"`
// Image fingerprint (for image source)
// Example: ed56997f7c5b48e8d78986d2467a26109be6fb9f2d92e8c7b08eb8b6cec7629a
Fingerprint string `json:"fingerprint,omitempty" yaml:"fingerprint,omitempty"`
// Image filters (for image source)
// Example: {"os": "Ubuntu", "release": "jammy", "variant": "cloud"}
Properties map[string]string `json:"properties,omitempty" yaml:"properties,omitempty"`
// Remote server URL (for remote images)
// Example: https://cloud-images.ubuntu.com/releases/
Server string `json:"server,omitempty" yaml:"server,omitempty"`
// Remote server secret (for remote private images)
// Example: RANDOM-STRING
Secret string `json:"secret,omitempty" yaml:"secret,omitempty"`
// Protocol name (for remote image)
// Example: simplestreams
Protocol string `json:"protocol,omitempty" yaml:"protocol,omitempty"`
// Base image fingerprint (for faster migration)
// Example: ed56997f7c5b48e8d78986d2467a26109be6fb9f2d92e8c7b08eb8b6cec7629a
BaseImage string `json:"base-image,omitempty" yaml:"base-image,omitempty"`
// Whether to use pull or push mode (for migration)
// Example: pull
Mode string `json:"mode,omitempty" yaml:"mode,omitempty"`
// Remote operation URL (for migration)
// Example: https://1.2.3.4:8443/1.0/operations/1721ae08-b6a8-416a-9614-3f89302466e1
Operation string `json:"operation,omitempty" yaml:"operation,omitempty"`
// Map of migration websockets (for migration)
// Example: {"criu": "RANDOM-STRING", "rsync": "RANDOM-STRING"}
Websockets map[string]string `json:"secrets,omitempty" yaml:"secrets,omitempty"`
// Existing instance name or snapshot (for copy)
// Example: foo/snap0
Source string `json:"source,omitempty" yaml:"source,omitempty"`
// Whether this is a live migration (for migration)
// Example: false
Live bool `json:"live,omitempty" yaml:"live,omitempty"`
// Whether the copy should skip the snapshots (for copy)
// Example: false
InstanceOnly bool `json:"instance_only,omitempty" yaml:"instance_only,omitempty"`
// Whether the copy should skip the snapshots (for copy, deprecated, use instance_only)
// Example: false
//
// Deprecated: Use InstanceOnly.
ContainerOnly bool `json:"container_only,omitempty" yaml:"container_only,omitempty"`
// Whether this is refreshing an existing instance (for migration and copy)
// Example: false
Refresh bool `json:"refresh,omitempty" yaml:"refresh,omitempty"`
// Source project name (for copy and local image)
// Example: blah
Project string `json:"project,omitempty" yaml:"project,omitempty"`
// Whether to ignore errors when copying (e.g. for volatile files)
// Example: false
//
// API extension: instance_allow_inconsistent_copy
AllowInconsistent bool `json:"allow_inconsistent" yaml:"allow_inconsistent"`
// Source disk size in bytes used to set the instance's volume size to accommodate the transferred root
// disk. This value is ignored if the root disk device has a size explicitly configured (for conversion).
// Example: 12345
//
// API extension: instance_import_conversion
SourceDiskSize int64 `json:"source_disk_size" yaml:"source_disk_size"`
// Optional list of options that are used during image conversion (for conversion).
// Example: ["format"]
//
// API extension: instance_import_conversion
ConversionOptions []string `json:"conversion_options" yaml:"conversion_options"`
// Whether the instances's snapshot should receive target instances profile on copy
// Example: true
//
// API extension: override_snapshot_profiles_on_copy
OverrideSnapshotProfiles bool `json:"override_snapshot_profiles" yaml:"override_snapshot_profiles"`
}
InstanceSource represents the creation source for a new instance.
swagger:model
API extension: instances.
type InstanceState ¶
type InstanceState struct {
// Current status (Running, Stopped, Frozen or Error)
// Example: Running
Status string `json:"status" yaml:"status"`
// Numeric status code (101, 102, 110, 112)
// Example: 101
StatusCode StatusCode `json:"status_code" yaml:"status_code"`
// Disk usage key/value pairs
Disk map[string]InstanceStateDisk `json:"disk" yaml:"disk"`
// Memory usage information
Memory InstanceStateMemory `json:"memory" yaml:"memory"`
// Network usage key/value pairs
Network map[string]InstanceStateNetwork `json:"network" yaml:"network"`
// PID of the runtime
// Example: 7281
Pid int64 `json:"pid" yaml:"pid"`
// Number of processes in the instance
// Example: 50
Processes int64 `json:"processes" yaml:"processes"`
// CPU usage information
CPU InstanceStateCPU `json:"cpu" yaml:"cpu"`
}
InstanceState represents a LXD instance's state.
swagger:model
API extension: instances.
type InstanceStateCPU ¶
type InstanceStateCPU struct {
// CPU usage in nanoseconds
// Example: 3637691016
Usage int64 `json:"usage" yaml:"usage"`
}
InstanceStateCPU represents the cpu information section of a LXD instance's state.
swagger:model
API extension: instances.
type InstanceStateDisk ¶
type InstanceStateDisk struct {
// Disk usage in bytes. Uses 0 to indicate that the storage driver for the pool does not support retrieving disk usage.
// Example: 502239232
Usage int64 `json:"usage" yaml:"usage"`
// Total size in bytes. Uses 0 to convey that the instance has access to the entire pool's storage.
// Example: 502239232
//
// API extension: instances_state_total
Total int64 `json:"total" yaml:"total"`
}
InstanceStateDisk represents the disk information section of a LXD instance's state.
swagger:model
API extension: instances.
type InstanceStateMemory ¶
type InstanceStateMemory struct {
// Memory usage in bytes
// Example: 73248768
Usage int64 `json:"usage" yaml:"usage"`
// Peak memory usage in bytes
// Example: 73785344
UsagePeak int64 `json:"usage_peak" yaml:"usage_peak"`
// Total memory size in bytes
// Example: 12297557
//
// API extension: instances_state_total
Total int64 `json:"total" yaml:"total"`
// SWAP usage in bytes
// Example: 12297557
SwapUsage int64 `json:"swap_usage" yaml:"swap_usage"`
// Peak SWAP usage in bytes
// Example: 12297557
SwapUsagePeak int64 `json:"swap_usage_peak" yaml:"swap_usage_peak"`
}
InstanceStateMemory represents the memory information section of a LXD instance's state.
swagger:model
API extension: instances.
type InstanceStateNetwork ¶
type InstanceStateNetwork struct {
// List of IP addresses
Addresses []InstanceStateNetworkAddress `json:"addresses" yaml:"addresses"`
// Traffic counters
Counters InstanceStateNetworkCounters `json:"counters" yaml:"counters"`
// MAC address
// Example: 00:16:3e:0c:ee:dd
Hwaddr string `json:"hwaddr" yaml:"hwaddr"`
// Name of the interface on the host
// Example: vethbbcd39c7
HostName string `json:"host_name" yaml:"host_name"`
// MTU (maximum transmit unit) for the interface
// Example: 1500
Mtu int `json:"mtu" yaml:"mtu"`
// Administrative state of the interface (up/down)
// Example: up
State string `json:"state" yaml:"state"`
// Type of interface (broadcast, loopback, point-to-point, ...)
// Example: broadcast
Type string `json:"type" yaml:"type"`
}
InstanceStateNetwork represents the network information section of a LXD instance's state.
swagger:model
API extension: instances.
type InstanceStateNetworkAddress ¶
type InstanceStateNetworkAddress struct {
// Network family (inet or inet6)
// Example: inet6
Family string `json:"family" yaml:"family"`
// IP address
// Example: fd42:4c81:5770:1eaf:216:3eff:fe0c:eedd
Address string `json:"address" yaml:"address"`
// Network mask
// Example: 64
Netmask string `json:"netmask" yaml:"netmask"`
// Address scope (local, link or global)
// Example: global
Scope string `json:"scope" yaml:"scope"`
}
InstanceStateNetworkAddress represents a network address as part of the network section of a LXD instance's state.
swagger:model
API extension: instances.
type InstanceStateNetworkCounters ¶
type InstanceStateNetworkCounters struct {
// Number of bytes received
// Example: 192021
BytesReceived uint64 `json:"bytes_received" yaml:"bytes_received"`
// Number of bytes sent
// Example: 10888579
BytesSent uint64 `json:"bytes_sent" yaml:"bytes_sent"`
// Number of packets received
// Example: 1748
PacketsReceived uint64 `json:"packets_received" yaml:"packets_received"`
// Number of packets sent
// Example: 964
PacketsSent uint64 `json:"packets_sent" yaml:"packets_sent"`
// Number of errors received
// Example: 14
ErrorsReceived uint64 `json:"errors_received" yaml:"errors_received"`
// Number of errors sent
// Example: 41
ErrorsSent uint64 `json:"errors_sent" yaml:"errors_sent"`
// Number of outbound packets dropped
// Example: 541
PacketsDroppedOutbound uint64 `json:"packets_dropped_outbound" yaml:"packets_dropped_outbound"`
// Number of inbound packets dropped
// Example: 179
PacketsDroppedInbound uint64 `json:"packets_dropped_inbound" yaml:"packets_dropped_inbound"`
}
InstanceStateNetworkCounters represents packet counters as part of the network section of a LXD instance's state.
swagger:model
API extension: instances.
type InstanceStatePut ¶
type InstanceStatePut struct {
// State change action (start, stop, restart, freeze, unfreeze)
// Example: start
Action string `json:"action" yaml:"action"`
// How long to wait (in s) before giving up (when force isn't set)
// Example: 30
Timeout int `json:"timeout" yaml:"timeout"`
// Whether to force the action (for stop and restart)
// Example: false
Force bool `json:"force" yaml:"force"`
// Whether to store the runtime state (for stop)
// Example: false
Stateful bool `json:"stateful" yaml:"stateful"`
}
InstanceStatePut represents the modifiable fields of a LXD instance's state.
swagger:model
API extension: instances.
type InstanceType ¶
type InstanceType string
InstanceType represents the type if instance being returned or requested via the API.
type InstanceUEFIVariable ¶
type InstanceUEFIVariable struct {
// UEFI variable data (HEX-encoded)
// example: 01
Data string `json:"data" yaml:"data"`
// UEFI variable attributes
// example: 7
Attr uint32 `json:"attr" yaml:"attr"`
// UEFI variable timestamp (HEX-encoded)
Timestamp string `json:"timestamp" yaml:"timestamp"`
// UEFI variable digest (HEX-encoded)
Digest string `json:"digest" yaml:"digest"`
}
InstanceUEFIVariable represents an EFI variable entry
swagger:model
API extension: instances_uefi_vars.
type InstanceUEFIVars ¶
type InstanceUEFIVars struct {
// UEFI variables map
// Hashmap key format is <uefi-variable-name>-<UUID>
// Example: { "SecureBootEnable-f0a30bc7-af08-4556-99c4-001009c93a44": { "data": "01", "attr": 3 } }
Variables map[string]InstanceUEFIVariable `json:"variables" yaml:"variables"`
}
InstanceUEFIVars represents the UEFI variables of a LXD virtual machine.
swagger:model
API extension: instances_uefi_vars.
type InstancesPost ¶
type InstancesPost struct {
InstancePut `yaml:",inline"`
// Instance name
// Example: foo
Name string `json:"name" yaml:"name"`
// Creation source
Source InstanceSource `json:"source" yaml:"source"`
// Cloud instance type (AWS, GCP, Azure, ...) to emulate with limits
// Example: t1.micro
InstanceType string `json:"instance_type" yaml:"instance_type"`
// Type (container or virtual-machine)
// Example: container
Type InstanceType `json:"type" yaml:"type"`
// Whether to start the instance after creation
// Example: true
//
// API extension: instance_create_start
Start bool `json:"start" yaml:"start"`
}
InstancesPost represents the fields available for a new LXD instance.
swagger:model
API extension: instances.
type InstancesPut ¶
type InstancesPut struct {
// Desired runtime state
State *InstanceStatePut `json:"state" yaml:"state"`
}
InstancesPut represents the fields available for a mass update.
swagger:model
API extension: instance_bulk_state_change.
type MetadataConfiguration ¶
type MetadataConfiguration struct {
// Configs contains all server configuration metadata.
Configs map[string]map[string]MetadataConfigurationConfigKeys `json:"configs" yaml:"configs"`
// Entities contains all authorization related metadata.
//
// API extension: metadata_configuration_entity_types
Entities map[string]MetadataConfigurationEntity `json:"entities" yaml:"entities"`
}
MetadataConfiguration contains metadata about the LXD server configuration options.
swagger:model
API extension: metadata_configuration.
type MetadataConfigurationConfigKey ¶
type MetadataConfigurationConfigKey struct {
// DefaultDescription contains a description of the configuration key.
//
// Example: A general description of a configuration key.
DefaultDescription string `json:"defaultdesc" yaml:"defaultdesc"`
// LongDescription contains a long-form description of the configuration key.
//
// Example: A much more in-depth description of the configuration key, including where and how it is used.
LongDescription string `json:"longdesc" yaml:"longdesc"`
// ShortDescription contains a short-form description of the configuration key.
//
// Example: A key for doing X.
ShortDescription string `json:"shortdesc" yaml:"shortdesc"`
// Type describes the type of the key.
//
// Example: Comma delimited CIDR format subnets.
Type string `json:"type" yaml:"type"`
// Condition describes conditions under which the configuration key can be applied.
//
// Example: Virtual machines only.
Condition string `json:"condition" yaml:"condition"`
// Required describes conditions under which the configuration key is required.
//
// Example: On device creation.
Required string `json:"required" yaml:"required"`
// Managed describes whether the configuration key is managed by LXD.
//
// Example: yes.
Managed string `json:"managed"`
// Scope describes the cluster member specificity of a configuration key. Options marked with a `global` scope are applied to all cluster members. Options marked with a `local` scope are set on a per-member basis.
//
// Example: global
// API extension: metadata_configuration_scope
Scope string `json:"scope" yaml:"scope"`
}
MetadataConfigurationConfigKey contains metadata about a LXD server configuration option.
swagger:model
API extension: metadata_configuration.
type MetadataConfigurationConfigKeys ¶
type MetadataConfigurationConfigKeys struct {
Keys []map[string]MetadataConfigurationConfigKey `json:"keys" yaml:"keys"`
}
MetadataConfigurationConfigKeys contains metadata about LXD server configuration options.
swagger:model
API extension: metadata_configuration.
type MetadataConfigurationEntity ¶
type MetadataConfigurationEntity struct {
// ProjectSpecific indicates whether the entity is project specific.
//
// Example: true
ProjectSpecific bool `json:"project_specific" yaml:"project_specific"`
// Entitlements contains a list of entitlements that apply to a specific entity type.
Entitlements []MetadataConfigurationEntityEntitlement `json:"entitlements" yaml:"entitlements"`
}
MetadataConfigurationEntity contains metadata about LXD server entities and available entitlements for authorization.
swagger:model
API extension: metadata_configuration_entity_types.
type MetadataConfigurationEntityEntitlement ¶
type MetadataConfigurationEntityEntitlement struct {
// Name contains the name of the entitlement.
//
// Example: can_edit
Name string `json:"name" yaml:"name"`
// Description describes the entitlement.
//
// Example: Grants permission to do X, Y, and Z.
Description string `json:"description" yaml:"description"`
}
MetadataConfigurationEntityEntitlement contains metadata about a LXD server entitlement.
swagger:model
API extension: metadata_configuration_entity_types.
type Network ¶
type Network struct {
WithEntitlements `yaml:",inline"`
// The network name
// Read only: true
// Example: lxdbr0
Name string `json:"name" yaml:"name"`
// Description of the profile
// Example: My new LXD bridge
//
// API extension: entity_description
Description string `json:"description" yaml:"description"`
// The network type
// Read only: true
// Example: bridge
Type string `json:"type" yaml:"type"`
// Whether this is a LXD managed network
// Read only: true
// Example: true
//
// API extension: network
Managed bool `json:"managed" yaml:"managed"`
// The state of the network (for managed network in clusters)
// Read only: true
// Example: Created
//
// API extension: clustering
Status string `json:"status" yaml:"status"`
// Network configuration map (refer to doc/networks.md)
// Example: {"ipv4.address": "10.0.0.1/24", "ipv4.nat": "true", "ipv6.address": "none"}
Config map[string]string `json:"config" yaml:"config"`
// List of URLs of objects using this profile
// Read only: true
// Example: ["/1.0/profiles/default", "/1.0/instances/c1"]
UsedBy []string `json:"used_by" yaml:"used_by"`
// Cluster members on which the network has been defined
// Read only: true
// Example: ["lxd01", "lxd02", "lxd03"]
//
// API extension: clustering
Locations []string `json:"locations" yaml:"locations"`
// Project name
// Example: project1
//
// API extension: networks_all_projects
Project string `json:"project" yaml:"project"`
}
Network represents a LXD network
swagger:model
func (*Network) SetWritable ¶
func (network *Network) SetWritable(put NetworkPut)
SetWritable sets applicable values from NetworkPut struct to Network struct.
func (*Network) Writable ¶
func (network *Network) Writable() NetworkPut
Writable converts a full Network struct into a NetworkPut struct (filters read-only fields).
type NetworkACL ¶
type NetworkACL struct {
WithEntitlements `yaml:",inline"`
// The new name for the ACL
// Example: bar
Name string `json:"name" yaml:"name"` // Name of ACL.
// Description of the ACL
// Example: Web servers
Description string `json:"description" yaml:"description"`
// List of egress rules (order independent)
Egress []NetworkACLRule `json:"egress" yaml:"egress"`
// List of ingress rules (order independent)
Ingress []NetworkACLRule `json:"ingress" yaml:"ingress"`
// ACL configuration map (refer to doc/network-acls.md)
// Example: {"user.mykey": "foo"}
Config map[string]string `json:"config" yaml:"config"`
// List of URLs of objects using this profile
// Read only: true
// Example: ["/1.0/instances/c1", "/1.0/instances/v1", "/1.0/networks/lxdbr0"]
UsedBy []string `json:"used_by" yaml:"used_by"` // Resources that use the ACL.
// Project name
// Example: project1
//
// API extension: network_acls_all_projects
Project string `json:"project" yaml:"project"` // Project the ACL belongs to.
}
NetworkACL used for displaying an ACL.
swagger:model
API extension: network_acl.
func (*NetworkACL) SetWritable ¶
func (acl *NetworkACL) SetWritable(put NetworkACLPut)
SetWritable sets applicable values from NetworkACLPut struct to NetworkACL struct.
func (*NetworkACL) Writable ¶
func (acl *NetworkACL) Writable() NetworkACLPut
Writable converts a full NetworkACL struct into a NetworkACLPut struct (filters read-only fields).
type NetworkACLPost ¶
type NetworkACLPost struct {
// The new name for the ACL
// Example: bar
Name string `json:"name" yaml:"name"` // Name of ACL.
}
NetworkACLPost used for renaming an ACL.
swagger:model
API extension: network_acl.
type NetworkACLPut ¶
type NetworkACLPut struct {
// Description of the ACL
// Example: Web servers
Description string `json:"description" yaml:"description"`
// List of egress rules (order independent)
Egress []NetworkACLRule `json:"egress" yaml:"egress"`
// List of ingress rules (order independent)
Ingress []NetworkACLRule `json:"ingress" yaml:"ingress"`
// ACL configuration map (refer to doc/network-acls.md)
// Example: {"user.mykey": "foo"}
Config map[string]string `json:"config" yaml:"config"`
}
NetworkACLPut used for updating an ACL.
swagger:model
API extension: network_acl.
type NetworkACLRule ¶
type NetworkACLRule struct {
// Action to perform on rule match
// Example: allow
Action string `json:"action" yaml:"action"`
// Source address
// Example: @internal
Source string `json:"source,omitempty" yaml:"source,omitempty"`
// Destination address
// Example: 8.8.8.8/32,8.8.4.4/32
Destination string `json:"destination,omitempty" yaml:"destination,omitempty"`
// Protocol
// Example: udp
Protocol string `json:"protocol,omitempty" yaml:"protocol,omitempty"`
// Source port
// Example: 1234
SourcePort string `json:"source_port,omitempty" yaml:"source_port,omitempty"`
// Destination port
// Example: 53
DestinationPort string `json:"destination_port,omitempty" yaml:"destination_port,omitempty"`
// Type of ICMP message (for ICMP protocol)
// Example: 8
ICMPType string `json:"icmp_type,omitempty" yaml:"icmp_type,omitempty"`
// ICMP message code (for ICMP protocol)
// Example: 0
ICMPCode string `json:"icmp_code,omitempty" yaml:"icmp_code,omitempty"`
// Description of the rule
// Example: Allow DNS queries to Google DNS
Description string `json:"description,omitempty" yaml:"description,omitempty"`
// State of the rule
// Example: enabled
State string `json:"state" yaml:"state"`
}
NetworkACLRule represents a single rule in an ACL ruleset. Refer to doc/network-acls.md for details.
swagger:model
API extension: network_acl.
func (*NetworkACLRule) Normalise ¶
func (r *NetworkACLRule) Normalise()
Normalise normalises the fields in the rule so that they are comparable with ones stored.
type NetworkACLsPost ¶
type NetworkACLsPost struct {
NetworkACLPost `yaml:",inline"`
NetworkACLPut `yaml:",inline"`
}
NetworkACLsPost used for creating an ACL.
swagger:model
API extension: network_acl.
type NetworkAllocations ¶
type NetworkAllocations struct {
// The network address of the allocation (in CIDR format)
// Example: 192.0.2.1/24
Address string `json:"addresses" yaml:"addresses"`
// Name of the entity consuming the network address
UsedBy string `json:"used_by" yaml:"used_by"`
// Type of the entity consuming the network address
Type string `json:"type" yaml:"type"`
// Whether the entity comes from a network that LXD performs egress source NAT on
NAT bool `json:"nat" yaml:"nat"`
// Hwaddr is the MAC address of the entity consuming the network address
Hwaddr string `json:"hwaddr" yaml:"hwaddr"`
// Network is the name of the network the allocated address belongs to
Network string `json:"network" yaml:"network"`
}
NetworkAllocations used for displaying network addresses used by a consuming entity e.g, instance, network forward, load-balancer, network...
swagger:model
API extension: network_allocations.
type NetworkForward ¶
type NetworkForward struct {
// The listen address of the forward
// Example: 192.0.2.1
ListenAddress string `json:"listen_address" yaml:"listen_address"`
// What cluster member this record was found on
// Example: lxd01
Location string `json:"location" yaml:"location"`
// Description of the forward listen IP
// Example: My public IP forward
Description string `json:"description" yaml:"description"`
// Forward configuration map (refer to doc/network-forwards.md)
// Example: {"user.mykey": "foo","target_address": "198.51.100.99"}
Config map[string]string `json:"config" yaml:"config"`
// Port forwards (optional)
Ports []NetworkForwardPort `json:"ports" yaml:"ports"`
}
NetworkForward used for displaying an network address forward.
swagger:model
API extension: network_forward.
func (*NetworkForward) Etag ¶
func (f *NetworkForward) Etag() []any
Etag returns the values used for etag generation.
func (*NetworkForward) Normalise ¶
func (f *NetworkForward) Normalise()
Normalise normalises the fields in the rule so that they are comparable with ones stored.
func (*NetworkForward) SetWritable ¶
func (f *NetworkForward) SetWritable(put NetworkForwardPut)
SetWritable sets applicable values from NetworkForwardPut struct to NetworkForward struct.
func (*NetworkForward) Writable ¶
func (f *NetworkForward) Writable() NetworkForwardPut
Writable converts a full NetworkForward struct into a NetworkForwardPut struct (filters read-only fields).
type NetworkForwardPort ¶
type NetworkForwardPort struct {
// Description of the forward port
// Example: My web server forward
Description string `json:"description" yaml:"description"`
// Protocol for port forward (either tcp or udp)
// Example: tcp
Protocol string `json:"protocol" yaml:"protocol"`
// ListenPort(s) to forward (comma delimited ranges)
// Example: 80,81,8080-8090
ListenPort string `json:"listen_port" yaml:"listen_port"`
// TargetPort(s) to forward ListenPorts to (allows for many-to-one)
// Example: 80,81,8080-8090
TargetPort string `json:"target_port" yaml:"target_port"`
// TargetAddress to forward ListenPorts to
// Example: 198.51.100.2
TargetAddress string `json:"target_address" yaml:"target_address"`
}
NetworkForwardPort represents a port specification in a network address forward
swagger:model
API extension: network_forward.
func (*NetworkForwardPort) Normalise ¶
func (p *NetworkForwardPort) Normalise()
Normalise normalises the fields in the rule so that they are comparable with ones stored.
type NetworkForwardPut ¶
type NetworkForwardPut struct {
// Description of the forward listen IP
// Example: My public IP forward
Description string `json:"description" yaml:"description"`
// Forward configuration map (refer to doc/network-forwards.md)
// Example: {"user.mykey": "foo","target_address": "198.51.100.99"}
Config map[string]string `json:"config" yaml:"config"`
// Port forwards (optional)
Ports []NetworkForwardPort `json:"ports" yaml:"ports"`
}
NetworkForwardPut represents the modifiable fields of a LXD network address forward
swagger:model
API extension: network_forward.
func (*NetworkForwardPut) Normalise ¶
func (f *NetworkForwardPut) Normalise()
Normalise normalises the fields in the rule so that they are comparable with ones stored.
type NetworkForwardsPost ¶
type NetworkForwardsPost struct {
NetworkForwardPut `yaml:",inline"`
// The listen address of the forward
// For OVN networks only, you can dynamically allocate the listen address from a pre-defined range.
// To do so for an IPv4 address, provide a listen_address of `0.0.0.0`.
// For an IPv6 address, provide a listen_address of `::`.
// These are equivalent to the `allocate=ipv{4|6}` flag used to create a network forward via the CLI.
// Example: 192.0.2.1
ListenAddress string `json:"listen_address" yaml:"listen_address"`
}
NetworkForwardsPost represents the fields of a new LXD network address forward
swagger:model
API extension: network_forward.
func (*NetworkForwardsPost) Normalise ¶
func (f *NetworkForwardsPost) Normalise()
Normalise normalises the fields in the rule so that they are comparable with ones stored.
type NetworkLease ¶
type NetworkLease struct {
// The hostname associated with the record
// Example: c1
Hostname string `json:"hostname" yaml:"hostname"`
// The MAC address
// Example: 00:16:3e:2c:89:d9
Hwaddr string `json:"hwaddr" yaml:"hwaddr"`
// The IP address
// Example: 10.0.0.98
Address string `json:"address" yaml:"address"`
// The type of record (static or dynamic)
// Example: dynamic
Type string `json:"type" yaml:"type"`
// What cluster member this record was found on
// Example: lxd01
//
// API extension: network_leases_location
Location string `json:"location" yaml:"location"`
// Name of the project of the entity related to the hostname
// Example: default
//
// API extension: network_allocations_ovn_uplink
Project string `json:"project" yaml:"project"`
}
NetworkLease represents a DHCP lease
swagger:model
API extension: network_leases.
type NetworkLoadBalancer ¶
type NetworkLoadBalancer struct {
// The listen address of the load balancer
// Example: 192.0.2.1
ListenAddress string `json:"listen_address" yaml:"listen_address"`
// What cluster member this record was found on
// Example: lxd01
Location string `json:"location" yaml:"location"`
// Description of the load balancer listen IP
// Example: My public IP load balancer
Description string `json:"description" yaml:"description"`
// Load balancer configuration map (refer to doc/network-load-balancers.md)
// Example: {"user.mykey": "foo"}
Config map[string]string `json:"config" yaml:"config"`
// Backends (optional)
Backends []NetworkLoadBalancerBackend `json:"backends" yaml:"backends"`
// Port forwards (optional)
Ports []NetworkLoadBalancerPort `json:"ports" yaml:"ports"`
}
NetworkLoadBalancer used for displaying a network load balancer
swagger:model
API extension: network_load_balancer.
func (*NetworkLoadBalancer) Etag ¶
func (lb *NetworkLoadBalancer) Etag() []any
Etag returns the values used for etag generation.
func (*NetworkLoadBalancer) Normalise ¶
func (lb *NetworkLoadBalancer) Normalise()
Normalise normalises the fields in the load balancer so that they are comparable with ones stored.
func (*NetworkLoadBalancer) SetWritable ¶
func (lb *NetworkLoadBalancer) SetWritable(put NetworkLoadBalancerPut)
SetWritable sets applicable values from NetworkLoadBalancerPut struct to NetworkLoadBalancer struct.
func (*NetworkLoadBalancer) Writable ¶
func (lb *NetworkLoadBalancer) Writable() NetworkLoadBalancerPut
Writable converts a full NetworkLoadBalancer struct into a NetworkLoadBalancerPut struct (filters read-only fields).
type NetworkLoadBalancerBackend ¶
type NetworkLoadBalancerBackend struct {
// Name of the load balancer backend
// Example: c1-http
Name string `json:"name" yaml:"name"`
// Description of the load balancer backend
// Example: C1 webserver
Description string `json:"description" yaml:"description"`
// TargetPort(s) to forward ListenPorts to (allows for many-to-one)
// Example: 80,81,8080-8090
TargetPort string `json:"target_port" yaml:"target_port"`
// TargetAddress to forward ListenPorts to
// Example: 198.51.100.2
TargetAddress string `json:"target_address" yaml:"target_address"`
}
NetworkLoadBalancerBackend represents a target backend specification in a network load balancer
swagger:model
API extension: network_load_balancer.
func (*NetworkLoadBalancerBackend) Normalise ¶
func (b *NetworkLoadBalancerBackend) Normalise()
Normalise normalises the fields in the load balancer backend so that they are comparable with ones stored.
type NetworkLoadBalancerPort ¶
type NetworkLoadBalancerPort struct {
// Description of the load balancer port
// Example: My web server load balancer
Description string `json:"description" yaml:"description"`
// Protocol for load balancer port (either tcp or udp)
// Example: tcp
Protocol string `json:"protocol" yaml:"protocol"`
// ListenPort(s) of load balancer (comma delimited ranges)
// Example: 80,81,8080-8090
ListenPort string `json:"listen_port" yaml:"listen_port"`
// TargetBackend backend names to load balance ListenPorts to
// Example: ["c1-http","c2-http"]
TargetBackend []string `json:"target_backend" yaml:"target_backend"`
}
NetworkLoadBalancerPort represents a port specification in a network load balancer
swagger:model
API extension: network_load_balancer.
func (*NetworkLoadBalancerPort) Normalise ¶
func (p *NetworkLoadBalancerPort) Normalise()
Normalise normalises the fields in the load balancer port so that they are comparable with ones stored.
type NetworkLoadBalancerPut ¶
type NetworkLoadBalancerPut struct {
// Description of the load balancer listen IP
// Example: My public IP load balancer
Description string `json:"description" yaml:"description"`
// Load balancer configuration map (refer to doc/network-load-balancers.md)
// Example: {"user.mykey": "foo"}
Config map[string]string `json:"config" yaml:"config"`
// Backends (optional)
Backends []NetworkLoadBalancerBackend `json:"backends" yaml:"backends"`
// Port forwards (optional)
Ports []NetworkLoadBalancerPort `json:"ports" yaml:"ports"`
}
NetworkLoadBalancerPut represents the modifiable fields of a LXD network load balancer
swagger:model
API extension: network_load_balancer.
func (*NetworkLoadBalancerPut) Normalise ¶
func (f *NetworkLoadBalancerPut) Normalise()
Normalise normalises the fields in the load balancer so that they are comparable with ones stored.
type NetworkLoadBalancersPost ¶
type NetworkLoadBalancersPost struct {
NetworkLoadBalancerPut `yaml:",inline"`
// The listen address of the load balancer
// Example: 192.0.2.1
ListenAddress string `json:"listen_address" yaml:"listen_address"`
}
NetworkLoadBalancersPost represents the fields of a new LXD network load balancer
swagger:model
API extension: network_load_balancer.
type NetworkPeer ¶
type NetworkPeer struct {
// Name of the peer
// Read only: true
// Example: project1-network1
Name string `json:"name" yaml:"name"`
// Description of the peer
// Example: Peering with network1 in project1
Description string `json:"description" yaml:"description"`
// Name of the target project
// Read only: true
// Example: project1
TargetProject string `json:"target_project" yaml:"target_project"`
// Name of the target network
// Read only: true
// Example: network1
TargetNetwork string `json:"target_network" yaml:"target_network"`
// The state of the peering
// Read only: true
// Example: Pending
Status string `json:"status" yaml:"status"`
// Peer configuration map (refer to doc/network-peers.md)
// Example: {"user.mykey": "foo"}
Config map[string]string `json:"config" yaml:"config"`
// List of URLs of objects using this network peering
// Read only: true
// Example: ["/1.0/network-acls/test", "/1.0/network-acls/foo"]
UsedBy []string `json:"used_by" yaml:"used_by"`
}
NetworkPeer used for displaying a LXD network peering.
swagger:model
API extension: network_forward.
func (*NetworkPeer) Etag ¶
func (p *NetworkPeer) Etag() []any
Etag returns the values used for etag generation.
func (*NetworkPeer) SetWritable ¶
func (p *NetworkPeer) SetWritable(put NetworkPeerPut)
SetWritable sets applicable values from NetworkPeerPut struct to NetworkPeer struct.
func (*NetworkPeer) Writable ¶
func (p *NetworkPeer) Writable() NetworkPeerPut
Writable converts a full NetworkPeer struct into a NetworkPeerPut struct (filters read-only fields).
type NetworkPeerPut ¶
type NetworkPeerPut struct {
// Description of the peer
// Example: Peering with network1 in project1
Description string `json:"description" yaml:"description"`
// Peer configuration map (refer to doc/network-peers.md)
// Example: {"user.mykey": "foo"}
Config map[string]string `json:"config" yaml:"config"`
}
NetworkPeerPut represents the modifiable fields of a LXD network peering
swagger:model
API extension: network_peer.
type NetworkPeersPost ¶
type NetworkPeersPost struct {
NetworkPeerPut `yaml:",inline"`
// Name of the peer
// Example: project1-network1
Name string `json:"name" yaml:"name"`
// Name of the target project
// Example: project1
TargetProject string `json:"target_project" yaml:"target_project"`
// Name of the target network
// Example: network1
TargetNetwork string `json:"target_network" yaml:"target_network"`
}
NetworkPeersPost represents the fields of a new LXD network peering
swagger:model
API extension: network_peer.
type NetworkPost ¶
type NetworkPost struct {
// The new name for the network
// Example: lxdbr1
Name string `json:"name" yaml:"name"`
}
NetworkPost represents the fields required to rename a LXD network
swagger:model
API extension: network.
type NetworkPut ¶
type NetworkPut struct {
// Network configuration map (refer to doc/networks.md)
// Example: {"ipv4.address": "10.0.0.1/24", "ipv4.nat": "true", "ipv6.address": "none"}
Config map[string]string `json:"config" yaml:"config"`
// Description of the profile
// Example: My new LXD bridge
//
// API extension: entity_description
Description string `json:"description" yaml:"description"`
}
NetworkPut represents the modifiable fields of a LXD network
swagger:model
API extension: network.
type NetworkState ¶
type NetworkState struct {
// List of addresses
Addresses []NetworkStateAddress `json:"addresses" yaml:"addresses"`
// Interface counters
Counters NetworkStateCounters `json:"counters" yaml:"counters"`
// MAC address
// Example: 00:16:3e:5a:83:57
Hwaddr string `json:"hwaddr" yaml:"hwaddr"`
// MTU
// Example: 1500
Mtu int `json:"mtu" yaml:"mtu"`
// Link state
// Example: up
State string `json:"state" yaml:"state"`
// Interface type
// Example: broadcast
Type string `json:"type" yaml:"type"`
// Additional bond interface information
//
// API extension: network_state_bond_bridge
Bond *NetworkStateBond `json:"bond" yaml:"bond"`
// Additional bridge interface information
//
// API extension: network_state_bond_bridge
Bridge *NetworkStateBridge `json:"bridge" yaml:"bridge"`
// Additional vlan interface information
//
// API extension: network_state_vlan
VLAN *NetworkStateVLAN `json:"vlan" yaml:"vlan"`
// Additional OVN network information
//
// API extension: network_state_ovn
OVN *NetworkStateOVN `json:"ovn" yaml:"ovn"`
}
NetworkState represents the network state
swagger:model
type NetworkStateAddress ¶
type NetworkStateAddress struct {
// Address family
// Example: inet
Family string `json:"family" yaml:"family"`
// IP address
// Example: 10.0.0.1
Address string `json:"address" yaml:"address"`
// IP netmask (CIDR)
// Example: 24
Netmask string `json:"netmask" yaml:"netmask"`
// Address scope
// Example: global
Scope string `json:"scope" yaml:"scope"`
}
NetworkStateAddress represents a network address
swagger:model
type NetworkStateBond ¶
type NetworkStateBond struct {
// Bonding mode
// Example: 802.3ad
Mode string `json:"mode" yaml:"mode"`
// Transmit balancing policy
// Example: layer3+4
TransmitPolicy string `json:"transmit_policy" yaml:"transmit_policy"`
// Delay on link up (ms)
// Example: 0
UpDelay uint64 `json:"up_delay" yaml:"up_delay"`
// Delay on link down (ms)
// Example: 0
DownDelay uint64 `json:"down_delay" yaml:"down_delay"`
// How often to check for link state (ms)
// Example: 100
MIIFrequency uint64 `json:"mii_frequency" yaml:"mii_frequency"`
// Bond link state
// Example: up
MIIState string `json:"mii_state" yaml:"mii_state"`
// List of devices that are part of the bond
// Example: ["eth0", "eth1"]
LowerDevices []string `json:"lower_devices" yaml:"lower_devices"`
}
NetworkStateBond represents bond specific state
swagger:model
API extension: network_state_bond_bridge.
type NetworkStateBridge ¶
type NetworkStateBridge struct {
// Bridge ID
// Example: 8000.0a0f7c6edbd9
ID string `json:"id" yaml:"id"`
// Whether STP is enabled
// Example: false
STP bool `json:"stp" yaml:"stp"`
// Delay on port join (ms)
// Example: 1500
ForwardDelay uint64 `json:"forward_delay" yaml:"forward_delay"`
// Default VLAN ID
// Example: 1
VLANDefault uint64 `json:"vlan_default" yaml:"vlan_default"`
// Whether VLAN filtering is enabled
// Example: false
VLANFiltering bool `json:"vlan_filtering" yaml:"vlan_filtering"`
// List of devices that are in the bridge
// Example: ["eth0", "eth1"]
UpperDevices []string `json:"upper_devices" yaml:"upper_devices"`
}
NetworkStateBridge represents bridge specific state
swagger:model
API extension: network_state_bond_bridge.
type NetworkStateCounters ¶
type NetworkStateCounters struct {
// Number of bytes received
// Example: 250542118
BytesReceived uint64 `json:"bytes_received" yaml:"bytes_received"`
// Number of bytes sent
// Example: 17524040140
BytesSent uint64 `json:"bytes_sent" yaml:"bytes_sent"`
// Number of packets received
// Example: 1182515
PacketsReceived uint64 `json:"packets_received" yaml:"packets_received"`
// Number of packets sent
// Example: 1567934
PacketsSent uint64 `json:"packets_sent" yaml:"packets_sent"`
}
NetworkStateCounters represents packet counters
swagger:model
type NetworkStateOVN ¶
type NetworkStateOVN struct {
// OVN network chassis name
Chassis string `json:"chassis" yaml:"chassis"`
}
NetworkStateOVN represents OVN specific state
swagger:model
API extension: network_state_ovn.
type NetworkStateVLAN ¶
type NetworkStateVLAN struct {
// Parent device
// Example: eth0
LowerDevice string `json:"lower_device" yaml:"lower_device"`
// VLAN ID
// Example: 100
VID uint64 `json:"vid" yaml:"vid"`
}
NetworkStateVLAN represents VLAN specific state
swagger:model
API extension: network_state_vlan.
type NetworkZone ¶
type NetworkZone struct {
WithEntitlements `yaml:",inline"`
// The name of the zone (DNS domain name)
// Example: example.net
Name string `json:"name" yaml:"name"`
// Description of the network zone
// Example: Internal domain
Description string `json:"description" yaml:"description"`
// Zone configuration map (refer to doc/network-zones.md)
// Example: {"user.mykey": "foo"}
Config map[string]string `json:"config" yaml:"config"`
// List of URLs of objects using this network zone
// Read only: true
// Example: ["/1.0/networks/foo", "/1.0/networks/bar"]
UsedBy []string `json:"used_by" yaml:"used_by"` // Resources that use the zone.
// Project name
// Example: project1
//
// API extension: network_zones_all_projects
Project string `json:"project" yaml:"project"`
}
NetworkZone represents a network zone (DNS).
swagger:model
API extension: network_dns.
func (*NetworkZone) SetWritable ¶
func (zone *NetworkZone) SetWritable(put NetworkZonePut)
SetWritable sets applicable values from NetworkZonePut struct to NetworkZone struct.
func (*NetworkZone) Writable ¶
func (zone *NetworkZone) Writable() NetworkZonePut
Writable converts a full NetworkZone struct into a NetworkZonePut struct (filters read-only fields).
type NetworkZonePut ¶
type NetworkZonePut struct {
// Description of the network zone
// Example: Internal domain
Description string `json:"description" yaml:"description"`
// Zone configuration map (refer to doc/network-zones.md)
// Example: {"user.mykey": "foo"}
Config map[string]string `json:"config" yaml:"config"`
}
NetworkZonePut represents the modifiable fields of a LXD network zone
swagger:model
API extension: network_dns.
type NetworkZoneRecord ¶
type NetworkZoneRecord struct {
// The name of the record
// Example: @
Name string `json:"name" yaml:"name"`
// Description of the record
// Example: SPF record
Description string `json:"description" yaml:"description"`
// Entries in the record
Entries []NetworkZoneRecordEntry `json:"entries" yaml:"entries"`
// Advanced configuration for the record
// Example: {"user.mykey": "foo"}
Config map[string]string `json:"config" yaml:"config"`
}
NetworkZoneRecord represents a network zone (DNS) record.
swagger:model
API extension: network_dns_records.
func (*NetworkZoneRecord) SetWritable ¶
func (record *NetworkZoneRecord) SetWritable(put NetworkZoneRecordPut)
SetWritable sets applicable values from NetworkZoneRecordPut struct to NetworkZoneRecord struct.
func (*NetworkZoneRecord) Writable ¶
func (record *NetworkZoneRecord) Writable() NetworkZoneRecordPut
Writable converts a full NetworkZoneRecord struct into a NetworkZoneRecordPut struct (filters read-only fields).
type NetworkZoneRecordEntry ¶
type NetworkZoneRecordEntry struct {
// Type of DNS entry
// Example: TXT
Type string `json:"type" yaml:"type"`
// TTL for the entry
// Example: 3600
TTL uint64 `json:"ttl,omitempty" yaml:"ttl,omitempty"`
// Value for the record
// Example: v=spf1 mx ~all
Value string `json:"value" yaml:"value"`
}
NetworkZoneRecordEntry represents the fields in a record entry
swagger:model
API extension: network_dns_records.
type NetworkZoneRecordPut ¶
type NetworkZoneRecordPut struct {
// Description of the record
// Example: SPF record
Description string `json:"description" yaml:"description"`
// Entries in the record
Entries []NetworkZoneRecordEntry `json:"entries" yaml:"entries"`
// Advanced configuration for the record
// Example: {"user.mykey": "foo"}
Config map[string]string `json:"config" yaml:"config"`
}
NetworkZoneRecordPut represents the modifiable fields of a LXD network zone record
swagger:model
API extension: network_dns_records.
type NetworkZoneRecordsPost ¶
type NetworkZoneRecordsPost struct {
NetworkZoneRecordPut `yaml:",inline"`
// The record name in the zone
// Example: @
Name string `json:"name" yaml:"name"`
}
NetworkZoneRecordsPost represents the fields of a new LXD network zone record
swagger:model
API extension: network_dns_records.
type NetworkZonesPost ¶
type NetworkZonesPost struct {
NetworkZonePut `yaml:",inline"`
// The name of the zone (DNS domain name)
// Example: example.net
Name string `json:"name" yaml:"name"`
}
NetworkZonesPost represents the fields of a new LXD network zone
swagger:model
API extension: network_dns.
type NetworksPost ¶
type NetworksPost struct {
NetworkPut `yaml:",inline"` //nolint:musttag
// The name of the new network
// Example: lxdbr1
Name string `json:"name" yaml:"name"`
// The network type (refer to doc/networks.md)
// Example: bridge
Type string `json:"type" yaml:"type"`
}
NetworksPost represents the fields of a new LXD network
swagger:model
API extension: network.
type OIDCSession ¶
type OIDCSession struct {
// UUID is the session UUID.
// Example: 01993985-7b5d-7a7e-afeb-23e8f6a15cf4
UUID string `json:"uuid" yaml:"uuid"`
// Email is the email of the user that holds the session.
// Example: jane.doe@example.com
Email string `json:"email" yaml:"email"`
// Username is the name of the user that holds the session.
// Example: Jane Doe
Username string `json:"username" yaml:"username"`
// IP is the IP address of the user that holds the session.
// Example: 10.21.242.46
IP string `json:"ip" yaml:"ip"`
// UserAgent is the UserAgent of the user that holds the session.
// Example: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36
UserAgent string `json:"user_agent" yaml:"user_agent"`
// ExpiresAt is when the session will expire.
// Example: 2025-09-11T15:14:04+00:00
ExpiresAt time.Time `json:"expires_at" yaml:"expires_at"`
// CreatedAt is when the session was started.
// Example: 2025-09-11T15:14:04+00:00
CreatedAt time.Time `json:"created_at" yaml:"created_at"`
}
OIDCSession contains session details for a current login.
swagger:model
API extension: auth_oidc_sessions.
type Operation ¶
type Operation struct {
// UUID of the operation
// Example: 6916c8a6-9b7d-4abd-90b3-aedfec7ec7da
ID string `json:"id" yaml:"id"`
// Type of operation (task, token or websocket)
// Example: websocket
Class string `json:"class" yaml:"class"`
// Description of the operation
// Example: Executing command
Description string `json:"description" yaml:"description"`
// Operation creation time
// Example: 2021-03-23T17:38:37.753398689-04:00
CreatedAt time.Time `json:"created_at" yaml:"created_at"`
// Operation last change
// Example: 2021-03-23T17:38:37.753398689-04:00
UpdatedAt time.Time `json:"updated_at" yaml:"updated_at"`
// Status name
// Example: Running
Status string `json:"status" yaml:"status"`
// Status code
// Example: 103
StatusCode StatusCode `json:"status_code" yaml:"status_code"`
// Affected resourcs
// Example: {"containers": ["/1.0/containers/foo"], "instances": ["/1.0/instances/foo"]}
Resources map[string][]string `json:"resources" yaml:"resources"`
// Operation specific metadata
// Example: {"command": ["bash"], "environment": {"HOME": "/root", "LANG": "C.UTF-8", "PATH": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "TERM": "xterm", "USER": "root"}, "fds": {"0": "da3046cf02c0116febf4ef3fe4eaecdf308e720c05e5a9c730ce1a6f15417f66", "1": "05896879d8692607bd6e4a09475667da3b5f6714418ab0ee0e5720b4c57f754b"}, "interactive": true}
Metadata map[string]any `json:"metadata" yaml:"metadata"`
// Whether the operation can be canceled
// Example: false
MayCancel bool `json:"may_cancel" yaml:"may_cancel"`
// Operation error mesage
// Example: Some error message
Err string `json:"err" yaml:"err"`
// Which cluster member this record was found on
// Example: lxd01
//
// API extension: operation_location
Location string `json:"location" yaml:"location"`
// Requestor is a record of the original operation requestor.
//
// API extension: operation_requestor
Requestor *OperationRequestor `json:"requestor,omitempty" yaml:"requestor,omitempty"`
}
Operation represents a LXD background operation
swagger:model
func (*Operation) ToCertificateAddToken ¶
func (op *Operation) ToCertificateAddToken() (*CertificateAddToken, error)
ToCertificateAddToken creates a certificate add token from the operation metadata.
func (*Operation) ToClusterJoinToken ¶
func (op *Operation) ToClusterJoinToken() (*ClusterMemberJoinToken, error)
ToClusterJoinToken creates a cluster join token from the operation metadata.
type OperationRequestor ¶
type OperationRequestor struct {
// Username is the username of the requestor. This is the identifier of the identity, or the username if using the unix socket.
// Example: jane.doe@example.com
Username string `yaml:"username" json:"username"`
// Protocol represents the method used to authenticate the requestor.
// Example: oidc
Protocol string `yaml:"protocol" json:"protocol"`
// Address is the origin address of the request.
// Example: 10.0.2.15
Address string `yaml:"address" json:"address"`
}
OperationRequestor represents the initial requestor of an operation
API extension: operation_requestor.
type Permission ¶
type Permission struct {
// EntityType is the string representation of the entity type.
// Example: instance
EntityType string `json:"entity_type" yaml:"entity_type"`
// EntityReference is the URL of the entity that the permission applies to.
// Example: /1.0/instances/c1?project=default
EntityReference string `json:"url" yaml:"url"`
// Entitlement is the entitlement define for the entity type.
// Example: can_view
Entitlement string `json:"entitlement" yaml:"entitlement"`
}
Permission represents a permission that may be granted to a group.
swagger:model
API extension: access_management.
type PermissionInfo ¶
type PermissionInfo struct {
Permission `yaml:",inline"`
// Groups is a list of groups that have the Entitlement on the Entity.
// Example: ["foo", "bar"]
Groups []string `json:"groups" yaml:"groups"`
}
PermissionInfo expands a Permission to include any groups that may have the specified Permission.
swagger:model
API extension: access_management.
type PlacementGroup ¶
type PlacementGroup struct {
WithEntitlements `yaml:",inline"`
// Name of the placement group.
// Example: pg1
Name string `json:"name" yaml:"name"`
// Description of the placement group.
// Example: My placement group.
Description string `json:"description" yaml:"description"`
// Placement group configuration map (refer to doc/placement-groups.md)
// Example: {"user.mykey": "foo", "policy: "compact", "rigor": "permissive"}
Config map[string]string `json:"config" yaml:"config"`
// Project the placement group belongs to.
// Example: default
Project string `json:"project" yaml:"project"`
// List of URLs of objects using this placement group.
// Example: ["/1.0/instances/c1", "/1.0/profiles/default"]
UsedBy []string `json:"used_by" yaml:"used_by"`
}
PlacementGroup represents a group of instances that should be scheduled.
API extension: instance_placement_groups.
func (PlacementGroup) Writable ¶
func (p PlacementGroup) Writable() PlacementGroupPut
Writable returns the editable fields of a PlacementGroup as PlacementGroupPut.
type PlacementGroupPost ¶
type PlacementGroupPost struct {
// New name of the placement group.
// Example: pg2
Name string `json:"name" yaml:"name"`
}
PlacementGroupPost represents the fields required to rename a placement group.
API extension: instance_placement_groups.
type PlacementGroupPut ¶
type PlacementGroupPut struct {
// Description of the placement group.
// Example: My placement group.
Description string `json:"description" yaml:"description"`
// Placement group configuration map (refer to doc/placement-groups.md)
// Example: {"user.mykey": "foo", "policy: "spread", "rigor": "strict"}
Config map[string]string `json:"config" yaml:"config"`
}
PlacementGroupPut represents the modifiable fields of a placement group.
API extension: instance_placement_groups.
type PlacementGroupsPost ¶
type PlacementGroupsPost struct {
// Name of the placement group.
// Example: pg1
Name string `json:"name" yaml:"name"`
PlacementGroupPut `yaml:",inline"`
}
PlacementGroupsPost represents the fields required to create a new placement group.
API extension: instance_placement_groups.
type Profile ¶
type Profile struct {
WithEntitlements `yaml:",inline"` //nolint:musttag
// The profile name
// Read only: true
// Example: foo
Name string `json:"name" yaml:"name" db:"primary=yes"`
// Description of the profile
// Example: Medium size instances
Description string `json:"description" yaml:"description"`
// Instance configuration map (refer to doc/instances.md)
// Example: {"limits.cpu": "4", "limits.memory": "4GiB"}
Config map[string]string `json:"config" yaml:"config"`
// List of devices
// Example: {"root": {"type": "disk", "pool": "default", "path": "/"}, "eth0": {"type": "nic", "network": "lxdbr0", "name": "eth0"}}
Devices map[string]map[string]string `json:"devices" yaml:"devices"`
// List of URLs of objects using this profile
// Read only: true
// Example: ["/1.0/instances/c1", "/1.0/instances/v1"]
//
// API extension: profile_usedby
UsedBy []string `json:"used_by" yaml:"used_by"`
// Project name
// Example: project1
//
// API extension: profiles_all_projects
Project string `json:"project" yaml:"project"`
}
Profile represents a LXD profile
swagger:model
func (*Profile) SetWritable ¶
func (profile *Profile) SetWritable(put ProfilePut)
SetWritable sets applicable values from ProfilePut struct to Profile struct.
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 {
// The new name for the profile
// Example: bar
Name string `json:"name" yaml:"name"`
}
ProfilePost represents the fields required to rename a LXD profile
swagger:model
type ProfilePut ¶
type ProfilePut struct {
// Instance configuration map (refer to doc/instances.md)
// Example: {"limits.cpu": "4", "limits.memory": "4GiB"}
Config map[string]string `json:"config" yaml:"config"`
// Description of the profile
// Example: Medium size instances
Description string `json:"description" yaml:"description"`
// List of devices
// Example: {"root": {"type": "disk", "pool": "default", "path": "/"}, "eth0": {"type": "nic", "network": "lxdbr0", "name": "eth0"}}
Devices map[string]map[string]string `json:"devices" yaml:"devices"`
}
ProfilePut represents the modifiable fields of a LXD profile
swagger:model
type ProfilesPost ¶
type ProfilesPost struct {
ProfilePut `yaml:",inline"`
// The name of the new profile
// Example: foo
Name string `json:"name" yaml:"name" db:"primary=yes"`
}
ProfilesPost represents the fields of a new LXD profile
swagger:model
type Project ¶
type Project struct {
WithEntitlements `yaml:",inline"`
// The project name
// Read only: true
// Example: foo
Name string `json:"name" yaml:"name"`
// Description of the project
// Example: My new project
Description string `json:"description" yaml:"description"`
// Project configuration map (refer to doc/projects.md)
// Example: {"features.profiles": "true", "features.networks": "false"}
Config map[string]string `json:"config" yaml:"config"`
// List of URLs of objects using this project
// Read only: true
// Example: ["/1.0/images/0e60015346f06627f10580d56ac7fffd9ea775f6d4f25987217d5eed94910a20", "/1.0/instances/c1", "/1.0/networks/lxdbr0", "/1.0/profiles/default", "/1.0/storage-pools/default/volumes/custom/blah"]
UsedBy []string `json:"used_by" yaml:"used_by"`
}
Project represents a LXD project
swagger:model
API extension: projects.
func (*Project) SetWritable ¶
func (project *Project) SetWritable(put ProjectPut)
SetWritable sets applicable values from ProjectPut struct to Project struct.
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 {
// The new name for the project
// Example: bar
Name string `json:"name" yaml:"name"`
}
ProjectPost represents the fields required to rename a LXD project
swagger:model
API extension: projects.
type ProjectPut ¶
type ProjectPut struct {
// Project configuration map (refer to doc/projects.md)
// Example: {"features.profiles": "true", "features.networks": "false"}
Config map[string]string `json:"config" yaml:"config"`
// Description of the project
// Example: My new project
Description string `json:"description" yaml:"description"`
}
ProjectPut represents the modifiable fields of a LXD project
swagger:model
API extension: projects.
type ProjectState ¶
type ProjectState struct {
// Allocated and used resources
// Read only: true
// Example: {"containers": {"limit": 10, "usage": 4}, "cpu": {"limit": 20, "usage": 16}}
Resources map[string]ProjectStateResource `json:"resources" yaml:"resources"`
}
ProjectState represents the current running state of a LXD project
swagger:model
API extension: project_usage.
type ProjectStateResource ¶
type ProjectStateResource struct {
// Limit for the resource (-1 if none)
// Example: 10
Limit int64
// Current usage for the resource
// Example: 4
Usage int64
}
ProjectStateResource represents the state of a particular resource in a LXD project
swagger:model
API extension: project_usage.
type ProjectsPost ¶
type ProjectsPost struct {
ProjectPut `yaml:",inline"`
// The name of the new project
// Example: foo
Name string `json:"name" yaml:"name"`
// Add a root disk device using the specified storage pool to the default profile
// Example: default
StoragePool string `json:"storage" yaml:"storage"`
// Add a network device connected to the specified network to the default profile
// Example: lxdbr0
Network string `json:"network" yaml:"network"`
}
ProjectsPost represents the fields of a new LXD project
swagger:model
API extension: projects.
type Resources ¶
type Resources struct {
// CPU information
CPU ResourcesCPU `json:"cpu" yaml:"cpu"`
// Memory information
Memory ResourcesMemory `json:"memory" yaml:"memory"`
// GPU devices
//
// API extension: resources_gpu
GPU ResourcesGPU `json:"gpu" yaml:"gpu"`
// Network devices
//
// API extension: resources_v2
Network ResourcesNetwork `json:"network" yaml:"network"`
// Storage devices
//
// API extension: resources_v2
Storage ResourcesStorage `json:"storage" yaml:"storage"`
// USB devices
//
// API extension: resources_usb_pci
USB ResourcesUSB `json:"usb" yaml:"usb"`
// PCI devices
//
// API extension: resources_usb_pci
PCI ResourcesPCI `json:"pci" yaml:"pci"`
// System information
//
// API extension: resources_system
System ResourcesSystem `json:"system" yaml:"system"`
}
Resources represents the system resources available for LXD
swagger:model
API extension: resources.
type ResourcesCPU ¶
type ResourcesCPU struct {
// Architecture name
// Example: x86_64
//
// API extension: resources_v2
Architecture string `json:"architecture" yaml:"architecture"`
// List of CPU sockets
Sockets []ResourcesCPUSocket `json:"sockets" yaml:"sockets"`
// Total number of CPU threads (from all sockets and cores)
// Example: 1
Total uint64 `json:"total" yaml:"total"`
}
ResourcesCPU represents the cpu resources available on the system
swagger:model
API extension: resources.
type ResourcesCPUCache ¶
type ResourcesCPUCache struct {
// Cache level (usually a number from 1 to 3)
// Example: 1
Level uint64 `json:"level" yaml:"level"`
// Type of cache (Data, Instruction, Unified, ...)
// Example: Data
Type string `json:"type" yaml:"type"`
// Size of the cache (in bytes)
// Example: 32768
Size uint64 `json:"size" yaml:"size"`
}
ResourcesCPUCache represents a CPU cache
swagger:model
API extension: resources_v2.
type ResourcesCPUCore ¶
type ResourcesCPUCore struct {
// Core identifier within the socket
// Example: 0
Core uint64 `json:"core" yaml:"core"`
// What die the CPU is a part of (for chiplet designs)
// Example: 0
//
// API extension: resources_cpu_core_die
Die uint64 `json:"die" yaml:"die"`
// List of threads
Threads []ResourcesCPUThread `json:"threads" yaml:"threads"`
// Current frequency
// Example: 3500
Frequency uint64 `json:"frequency,omitempty" yaml:"frequency,omitempty"`
}
ResourcesCPUCore represents a CPU core on the system
swagger:model
API extension: resources_v2.
type ResourcesCPUSocket ¶
type ResourcesCPUSocket struct {
// Product name
// Example: Intel(R) Core(TM) i5-7300U CPU @ 2.60GHz
Name string `json:"name,omitempty" yaml:"name,omitempty"`
// Vendor name
// Example: GenuineIntel
Vendor string `json:"vendor,omitempty" yaml:"vendor,omitempty"`
// Socket number
// Example: 0
Socket uint64 `json:"socket" yaml:"socket"`
// List of CPU caches
Cache []ResourcesCPUCache `json:"cache,omitempty" yaml:"cache,omitempty"`
// List of CPU cores
Cores []ResourcesCPUCore `json:"cores" yaml:"cores"`
// Current CPU frequency (Mhz)
// Example: 3499
Frequency uint64 `json:"frequency,omitempty" yaml:"frequency,omitempty"`
// Minimum CPU frequency (Mhz)
// Example: 400
FrequencyMinimum uint64 `json:"frequency_minimum,omitempty" yaml:"frequency_minimum,omitempty"`
// Maximum CPU frequency (Mhz)
// Example: 3500
FrequencyTurbo uint64 `json:"frequency_turbo,omitempty" yaml:"frequency_turbo,omitempty"`
}
ResourcesCPUSocket represents a CPU socket on the system
swagger:model
API extension: resources_v2.
type ResourcesCPUThread ¶
type ResourcesCPUThread struct {
// Thread ID (used for CPU pinning)
// Example: 0
ID int64 `json:"id" yaml:"id"`
// NUMA node the thread is a part of
// Example: 0
NUMANode uint64 `json:"numa_node" yaml:"numa_node"`
// Thread identifier within the core
// Example: 0
Thread uint64 `json:"thread" yaml:"thread"`
// Whether the thread is online (enabled)
// Example: true
Online bool `json:"online" yaml:"online"`
// Whether the thread has been isolated (outside of normal scheduling)
// Example: false
//
// API extension: resource_cpu_isolated
Isolated bool `json:"isolated" yaml:"isolated"`
}
ResourcesCPUThread represents a CPU thread on the system
swagger:model
API extension: resources_v2.
type ResourcesGPU ¶
type ResourcesGPU struct {
// List of GPUs
Cards []ResourcesGPUCard `json:"cards" yaml:"cards"`
// Total number of GPUs
// Example: 1
Total uint64 `json:"total" yaml:"total"`
}
ResourcesGPU represents the GPU resources available on the system
swagger:model
API extension: resources_gpu.
type ResourcesGPUCard ¶
type ResourcesGPUCard struct {
// Kernel driver currently associated with the GPU
// Example: i915
Driver string `json:"driver,omitempty" yaml:"driver,omitempty"`
// Version of the kernel driver
// Example: 5.8.0-36-generic
DriverVersion string `json:"driver_version,omitempty" yaml:"driver_version,omitempty"`
// DRM information (if card is in used by the host)
DRM *ResourcesGPUCardDRM `json:"drm,omitempty" yaml:"drm,omitempty"`
// SRIOV information (when supported by the card)
SRIOV *ResourcesGPUCardSRIOV `json:"sriov,omitempty" yaml:"sriov,omitempty"`
// NVIDIA specific information
Nvidia *ResourcesGPUCardNvidia `json:"nvidia,omitempty" yaml:"nvidia,omitempty"`
// Map of available mediated device profiles
// Example: null
//
// API extension: resources_gpu_mdev
Mdev map[string]ResourcesGPUCardMdev `json:"mdev,omitempty" yaml:"mdev,omitempty"`
// NUMA node the GPU is a part of
// Example: 0
NUMANode uint64 `json:"numa_node" yaml:"numa_node"`
// PCI address
// Example: 0000:00:02.0
PCIAddress string `json:"pci_address,omitempty" yaml:"pci_address,omitempty"`
// Name of the vendor
// Example: Intel Corporation
Vendor string `json:"vendor,omitempty" yaml:"vendor,omitempty"`
// PCI ID of the vendor
// Example: 8086
VendorID string `json:"vendor_id,omitempty" yaml:"vendor_id,omitempty"`
// Name of the product
// Example: HD Graphics 620
Product string `json:"product,omitempty" yaml:"product,omitempty"`
// PCI ID of the product
// Example: 5916
ProductID string `json:"product_id,omitempty" yaml:"product_id,omitempty"`
// USB address (for USB cards)
// Example: 2:7
//
// API extension: resources_gpu_usb
USBAddress string `json:"usb_address,omitempty" yaml:"usb_address,omitempty"`
}
ResourcesGPUCard represents a GPU card on the system
swagger:model
API extension: resources_v2.
type ResourcesGPUCardDRM ¶
type ResourcesGPUCardDRM struct {
// DRM card ID
// Example: 0
ID uint64 `json:"id" yaml:"id"`
// Card device name
// Example: card0
CardName string `json:"card_name" yaml:"card_name"`
// Card device number
// Example: 226:0
CardDevice string `json:"card_device" yaml:"card_device"`
// Control device name
// Example: controlD64
ControlName string `json:"control_name,omitempty" yaml:"control_name,omitempty"`
// Control device number
// Example: 226:0
ControlDevice string `json:"control_device,omitempty" yaml:"control_device,omitempty"`
// Render device name
// Example: renderD128
RenderName string `json:"render_name,omitempty" yaml:"render_name,omitempty"`
// Render device number
// Example: 226:128
RenderDevice string `json:"render_device,omitempty" yaml:"render_device,omitempty"`
}
ResourcesGPUCardDRM represents the Linux DRM configuration of the GPU
swagger:model
API extension: resources_v2.
type ResourcesGPUCardMdev ¶
type ResourcesGPUCardMdev struct {
// The mechanism used by this device
// Example: vfio-pci
API string `json:"api" yaml:"api"`
// Number of available devices of this profile
// Example: 2
Available uint64 `json:"available" yaml:"available"`
// Profile name
// Example: i915-GVTg_V5_8
Name string `json:"name,omitempty" yaml:"name,omitempty"`
// Profile description
// Example: low_gm_size: 128MB\nhigh_gm_size: 512MB\nfence: 4\nresolution: 1920x1200\nweight: 4
Description string `json:"description,omitempty" yaml:"description,omitempty"`
// List of active devices (UUIDs)
// Example: ["42200aac-0977-495c-8c9e-6c51b9092a01", "b4950c00-1437-41d9-88f6-28d61cf9b9ef"]
Devices []string `json:"devices" yaml:"devices"`
}
ResourcesGPUCardMdev represents the mediated devices configuration of the GPU
swagger:model
API extension: resources_gpu_mdev.
type ResourcesGPUCardNvidia ¶
type ResourcesGPUCardNvidia struct {
// Version of the CUDA API
// Example: 11.0
CUDAVersion string `json:"cuda_version,omitempty" yaml:"cuda_version,omitempty"`
// Version of the NVRM (usually driver version)
// Example: 450.102.04
NVRMVersion string `json:"nvrm_version,omitempty" yaml:"nvrm_version,omitempty"`
// Brand name
// Example: GeForce
Brand string `json:"brand" yaml:"brand"`
// Model name
// Example: GeForce GT 730
Model string `json:"model" yaml:"model"`
// GPU UUID
// Example: GPU-6ddadebd-dafe-2db9-f10f-125719770fd3
UUID string `json:"uuid,omitempty" yaml:"uuid,omitempty"`
// Architecture (generation)
// Example: 3.5
Architecture string `json:"architecture,omitempty" yaml:"architecture,omitempty"`
// Card device name
// Example: nvidia0
//
// API extension: resources_v2
CardName string `json:"card_name" yaml:"card_name"`
// Card device number
// Example: 195:0
//
// API extension: resources_v2
CardDevice string `json:"card_device" yaml:"card_device"`
}
ResourcesGPUCardNvidia represents additional information for NVIDIA GPUs
swagger:model
API extension: resources_gpu.
type ResourcesGPUCardSRIOV ¶
type ResourcesGPUCardSRIOV struct {
// Number of VFs currently configured
// Example: 0
CurrentVFs uint64 `json:"current_vfs" yaml:"current_vfs"`
// Maximum number of supported VFs
// Example: 0
MaximumVFs uint64 `json:"maximum_vfs" yaml:"maximum_vfs"`
// List of VFs (as additional GPU devices)
// Example: null
VFs []ResourcesGPUCard `json:"vfs" yaml:"vfs"`
}
ResourcesGPUCardSRIOV represents the SRIOV configuration of the GPU
swagger:model
API extension: resources_v2.
type ResourcesMemory ¶
type ResourcesMemory struct {
// List of NUMA memory nodes
// Example: null
//
// API extension: resources_v2
Nodes []ResourcesMemoryNode `json:"nodes,omitempty" yaml:"nodes,omitempty"`
// Total of memory huge pages (bytes)
// Example: 429284917248
HugepagesTotal uint64 `json:"hugepages_total" yaml:"hugepages_total"`
// Used memory huge pages (bytes)
// Example: 429284917248
HugepagesUsed uint64 `json:"hugepages_used" yaml:"hugepages_used"`
// Size of memory huge pages (bytes)
// Example: 2097152
HugepagesSize uint64 `json:"hugepages_size" yaml:"hugepages_size"`
// Used system memory (bytes)
// Example: 557450502144
Used uint64 `json:"used" yaml:"used"`
// Total system memory (bytes)
// Example: 687194767360
Total uint64 `json:"total" yaml:"total"`
}
ResourcesMemory represents the memory resources available on the system
swagger:model
API extension: resources.
type ResourcesMemoryNode ¶
type ResourcesMemoryNode struct {
// NUMA node identifier
// Example: 0
NUMANode uint64 `json:"numa_node" yaml:"numa_node"`
// Used memory huge pages (bytes)
// Example: 214536552448
HugepagesUsed uint64 `json:"hugepages_used" yaml:"hugepages_used"`
// Total of memory huge pages (bytes)
// Example: 214536552448
HugepagesTotal uint64 `json:"hugepages_total" yaml:"hugepages_total"`
// Used system memory (bytes)
// Example: 264880439296
Used uint64 `json:"used" yaml:"used"`
// Total system memory (bytes)
// Example: 343597383680
Total uint64 `json:"total" yaml:"total"`
}
ResourcesMemoryNode represents the node-specific memory resources available on the system
swagger:model
API extension: resources_v2.
type ResourcesNetwork ¶
type ResourcesNetwork struct {
// List of network cards
Cards []ResourcesNetworkCard `json:"cards" yaml:"cards"`
// Total number of network cards
// Example: 1
Total uint64 `json:"total" yaml:"total"`
}
ResourcesNetwork represents the network cards available on the system
swagger:model
API extension: resources_v2.
type ResourcesNetworkCard ¶
type ResourcesNetworkCard struct {
// Kernel driver currently associated with the card
// Example: atlantic
Driver string `json:"driver,omitempty" yaml:"driver,omitempty"`
// Version of the kernel driver
// Example: 5.8.0-36-generic
DriverVersion string `json:"driver_version,omitempty" yaml:"driver_version,omitempty"`
// List of ports on the card
Ports []ResourcesNetworkCardPort `json:"ports,omitempty" yaml:"ports,omitempty"`
// SRIOV information (when supported by the card)
SRIOV *ResourcesNetworkCardSRIOV `json:"sriov,omitempty" yaml:"sriov,omitempty"`
// vDPA information (when supported by the card)
//
// API extension: ovn_nic_acceleration_vdpa
VDPA *ResourcesNetworkCardVDPA `json:"vdpa,omitempty" yaml:"vdpa,omitempty"`
// NUMA node the card is a part of
// Example: 0
NUMANode uint64 `json:"numa_node" yaml:"numa_node"`
// PCI address (for PCI cards)
// Example: 0000:0d:00.0
PCIAddress string `json:"pci_address,omitempty" yaml:"pci_address,omitempty"`
// Name of the vendor
// Example: Aquantia Corp.
Vendor string `json:"vendor,omitempty" yaml:"vendor,omitempty"`
// PCI ID of the vendor
// Example: 1d6a
VendorID string `json:"vendor_id,omitempty" yaml:"vendor_id,omitempty"`
// Name of the product
// Example: AQC107 NBase-T/IEEE
Product string `json:"product,omitempty" yaml:"product,omitempty"`
// PCI ID of the product
// Example: 87b1
ProductID string `json:"product_id,omitempty" yaml:"product_id,omitempty"`
// Current firmware version
// Example: 3.1.100
//
// API extension: resources_network_firmware
FirmwareVersion string `json:"firmware_version,omitempty" yaml:"firmware_version,omitempty"`
// USB address (for USB cards)
// Example: 2:7
//
// API extension: resources_network_usb
USBAddress string `json:"usb_address,omitempty" yaml:"usb_address,omitempty"`
}
ResourcesNetworkCard represents a network card on the system
swagger:model
API extension: resources_v2.
type ResourcesNetworkCardPort ¶
type ResourcesNetworkCardPort struct {
// Port identifier (interface name)
// Example: eth0
ID string `json:"id" yaml:"id"`
// MAC address
// Example: 00:23:a4:01:01:6f
Address string `json:"address,omitempty" yaml:"address,omitempty"`
// Port number
// Example: 0
Port uint64 `json:"port" yaml:"port"`
// Transport protocol
// Example: ethernet
Protocol string `json:"protocol" yaml:"protocol"`
// List of supported modes
// Example: ["100baseT/Full", "1000baseT/Full", "2500baseT/Full", "5000baseT/Full", "10000baseT/Full"]
SupportedModes []string `json:"supported_modes,omitempty" yaml:"supported_modes,omitempty"`
// List of supported port types
// Example: ["twisted pair"]
SupportedPorts []string `json:"supported_ports,omitempty" yaml:"supported_ports,omitempty"`
// Current port type
// Example: twisted pair
PortType string `json:"port_type,omitempty" yaml:"port_type,omitempty"`
// Type of transceiver used
// Example: internal
TransceiverType string `json:"transceiver_type,omitempty" yaml:"transceiver_type,omitempty"`
// Whether auto negotiation is used
// Example: true
AutoNegotiation bool `json:"auto_negotiation" yaml:"auto_negotiation"`
// Whether a link was detected
// Example: true
LinkDetected bool `json:"link_detected" yaml:"link_detected"`
// Current speed (Mbit/s)
// Example: 10000
LinkSpeed uint64 `json:"link_speed,omitempty" yaml:"link_speed,omitempty"`
// Duplex type
// Example: full
LinkDuplex string `json:"link_duplex,omitempty" yaml:"link_duplex,omitempty"`
// Additional information for infiniband devices
//
// API extension: resources_infiniband
Infiniband *ResourcesNetworkCardPortInfiniband `json:"infiniband,omitempty" yaml:"infiniband,omitempty"`
}
ResourcesNetworkCardPort represents a network port on the system
swagger:model
API extension: resources_v2.
type ResourcesNetworkCardPortInfiniband ¶
type ResourcesNetworkCardPortInfiniband struct {
// ISSM device name
// Example: issm0
IsSMName string `json:"issm_name,omitempty" yaml:"issm_name,omitempty"`
// ISSM device number
// Example: 231:64
IsSMDevice string `json:"issm_device,omitempty" yaml:"issm_device,omitempty"`
// MAD device name
// Example: umad0
MADName string `json:"mad_name,omitempty" yaml:"mad_name,omitempty"`
// MAD device number
// Example: 231:0
MADDevice string `json:"mad_device,omitempty" yaml:"mad_device,omitempty"`
// Verb device name
// Example: uverbs0
VerbName string `json:"verb_name,omitempty" yaml:"verb_name,omitempty"`
// Verb device number
// Example: 231:192
VerbDevice string `json:"verb_device,omitempty" yaml:"verb_device,omitempty"`
}
ResourcesNetworkCardPortInfiniband represents the Linux Infiniband configuration for the port
swagger:model
API extension: resources_infiniband.
type ResourcesNetworkCardSRIOV ¶
type ResourcesNetworkCardSRIOV struct {
// Number of VFs currently configured
// Example: 0
CurrentVFs uint64 `json:"current_vfs" yaml:"current_vfs"`
// Maximum number of supported VFs
// Example: 0
MaximumVFs uint64 `json:"maximum_vfs" yaml:"maximum_vfs"`
// List of VFs (as additional Network devices)
// Example: null
VFs []ResourcesNetworkCard `json:"vfs" yaml:"vfs"`
}
ResourcesNetworkCardSRIOV represents the SRIOV configuration of the network card
swagger:model
API extension: resources_v2.
type ResourcesNetworkCardVDPA ¶
type ResourcesNetworkCardVDPA struct {
// Name of the VDPA device
Name string `json:"name" yaml:"name"`
// Device identifier of the VDPA device
Device string `json:"device" yaml:"device"`
}
ResourcesNetworkCardVDPA represents the VDPA configuration of the network card
swagger:model
API extension: ovn_nic_acceleration_vdpa.
type ResourcesPCI ¶
type ResourcesPCI struct {
// List of PCI devices
Devices []ResourcesPCIDevice `json:"devices" yaml:"devices"`
// Total number of PCI devices
// Example: 1
Total uint64 `json:"total" yaml:"total"`
}
ResourcesPCI represents the PCI devices available on the system
swagger:model
API extension: resources_usb_pci.
type ResourcesPCIDevice ¶
type ResourcesPCIDevice struct {
// Kernel driver currently associated with the GPU
// Example: mgag200
Driver string `json:"driver" yaml:"driver"`
// Version of the kernel driver
// Example: 5.8.0-36-generic
DriverVersion string `json:"driver_version" yaml:"driver_version"`
// NUMA node the card is a part of
// Example: 0
NUMANode uint64 `json:"numa_node" yaml:"numa_node"`
// PCI address
// Example: 0000:07:03.0
PCIAddress string `json:"pci_address" yaml:"pci_address"`
// Name of the vendor
// Example: Matrox Electronics Systems Ltd.
Vendor string `json:"vendor" yaml:"vendor"`
// PCI ID of the vendor
// Example: 102b
VendorID string `json:"vendor_id" yaml:"vendor_id"`
// Name of the product
// Example: MGA G200eW WPCM450
Product string `json:"product" yaml:"product"`
// PCI ID of the product
// Example: 0532
ProductID string `json:"product_id" yaml:"product_id"`
// IOMMU group number
// Example: 20
//
// API extension: resources_pci_iommu
IOMMUGroup uint64 `json:"iommu_group" yaml:"iommu_group"`
// Vital Product Data
// Example:
//
// API extension: resources_pci_vpd
VPD ResourcesPCIVPD `json:"vpd" yaml:"vpd"`
}
ResourcesPCIDevice represents a PCI device
swagger:model
API extension: resources_usb_pci.
type ResourcesPCIVPD ¶
type ResourcesPCIVPD struct {
// Hardware provided product name.
// Example: HP Ethernet 1Gb 4-port 331i Adapter
ProductName string `json:"product_name,omitempty" yaml:"product_name,omitempty"`
// Vendor provided key/value pairs.
// Example: {"EC": ""A-5545", "MN": "103C", "V0": "5W PCIeGen2"}
Entries map[string]string `json:"entries,omitempty" yaml:"entries,omitempty"`
}
ResourcesPCIVPD represents VPD entries for a device
swagger:model
API extension: resources_pci_vpd.
type ResourcesStorage ¶
type ResourcesStorage struct {
// List of disks
Disks []ResourcesStorageDisk `json:"disks" yaml:"disks"`
// Total number of partitions
// Example: 1
Total uint64 `json:"total" yaml:"total"`
}
ResourcesStorage represents the local storage
swagger:model
API extension: resources_v2.
type ResourcesStorageDisk ¶
type ResourcesStorageDisk struct {
// ID of the disk (device name)
// Example: nvme0n1
ID string `json:"id" yaml:"id"`
// Device number
// Example: 259:0
Device string `json:"device" yaml:"device"`
// Disk model name
// Example: INTEL SSDPEKKW256G7
Model string `json:"model,omitempty" yaml:"model,omitempty"`
// Storage type
// Example: nvme
Type string `json:"type,omitempty" yaml:"type,omitempty"`
// Whether the disk is read-only
// Example: false
ReadOnly bool `json:"read_only" yaml:"read_only"`
// Mounted status of the disk
// Example: true
Mounted bool `json:"mounted" yaml:"mounted"`
// Total size of the disk (bytes)
// Example: 256060514304
Size uint64 `json:"size" yaml:"size"`
// Whether the disk is removable (hot-plug)
// Example: false
Removable bool `json:"removable" yaml:"removable"`
// WWN identifier
// Example: eui.0000000001000000e4d25cafae2e4c00
WWN string `json:"wwn,omitempty" yaml:"wwn,omitempty"`
// NUMA node the disk is a part of
// Example: 0
NUMANode uint64 `json:"numa_node" yaml:"numa_node"`
// Device by-path identifier
// Example: pci-0000:05:00.0-nvme-1
//
// API extension: resources_disk_sata
DevicePath string `json:"device_path,omitempty" yaml:"device_path,omitempty"`
// Block size
// Example: 512
//
// API extension: resources_disk_sata
BlockSize uint64 `json:"block_size" yaml:"block_size"`
// Current firmware version
// Example: PSF121C
//
// API extension: resources_disk_sata
FirmwareVersion string `json:"firmware_version,omitempty" yaml:"firmware_version,omitempty"`
// Rotation speed (RPM)
// Example: 0
//
// API extension: resources_disk_sata
RPM uint64 `json:"rpm" yaml:"rpm"`
// Serial number
// Example: BTPY63440ARH256D
//
// API extension: resources_disk_sata
Serial string `json:"serial,omitempty" yaml:"serial,omitempty"`
// Device by-id identifier
// Example: nvme-eui.0000000001000000e4d25cafae2e4c00
//
// API extension: resources_disk_id
DeviceID string `json:"device_id" yaml:"device_id"`
// List of partitions
Partitions []ResourcesStorageDiskPartition `json:"partitions" yaml:"partitions"`
// PCI address
// Example: 0000:05:00.0
//
// API extension: resources_disk_address
PCIAddress string `json:"pci_address,omitempty" yaml:"pci_address,omitempty"`
// USB address
// Example: 3:5
//
// API extension: resources_disk_address
USBAddress string `json:"usb_address,omitempty" yaml:"usb_address,omitempty"`
// UUID of the filesystem on the device
// Example: 9313518c-0e13-4067-9746-5c1703830b78
//
// API extension: resources_device_fs_uuid
DeviceFSUUID string `json:"device_fs_uuid" yaml:"device_fs_uuid"`
// Parent device type
// Example: bcache
//
// API extension: resources_disk_used_by
UsedBy string `json:"used_by,omitempty" yaml:"used_by,omitempty"`
}
ResourcesStorageDisk represents a disk
swagger:model
API extension: resources_v2.
type ResourcesStorageDiskPartition ¶
type ResourcesStorageDiskPartition struct {
// ID of the partition (device name)
// Example: nvme0n1p1
ID string `json:"id" yaml:"id"`
// Device number
// Example: 259:1
Device string `json:"device" yaml:"device"`
// Whether the partition is read-only
// Example: false
ReadOnly bool `json:"read_only" yaml:"read_only"`
// Size of the partition (bytes)
// Example: 254933278208
Size uint64 `json:"size" yaml:"size"`
// Partition number
// Example: 1
Partition uint64 `json:"partition" yaml:"partition"`
// Mounted status of the partition.
// Example: true
Mounted bool `json:"mounted" yaml:"mounted"`
// UUID of the filesystem on the device
// Example: 9313518c-0e13-4067-9746-5c1703830b78
//
// API extension: resources_device_fs_uuid
DeviceFSUUID string `json:"device_fs_uuid" yaml:"device_fs_uuid"`
}
ResourcesStorageDiskPartition represents a partition on a disk
swagger:model
API extension: resources_v2.
type ResourcesStoragePool ¶
type ResourcesStoragePool struct {
// Disk space usage
Space ResourcesStoragePoolSpace `json:"space,omitempty" yaml:"space,omitempty"`
// DIsk inode usage
Inodes ResourcesStoragePoolInodes `json:"inodes,omitempty" yaml:"inodes,omitempty"`
}
ResourcesStoragePool represents the resources available to a given storage pool
swagger:model
API extension: resources.
type ResourcesStoragePoolInodes ¶
type ResourcesStoragePoolInodes struct {
// Used inodes
// Example: 23937695
Used uint64 `json:"used" yaml:"used"`
// Total inodes
// Example: 30709993797
Total uint64 `json:"total" yaml:"total"`
}
ResourcesStoragePoolInodes represents the inodes available to a given storage pool
swagger:model
API extension: resources.
type ResourcesStoragePoolSpace ¶
type ResourcesStoragePoolSpace struct {
// Used disk space (bytes)
// Example: 343537419776
Used uint64 `json:"used,omitempty" yaml:"used,omitempty"`
// Total disk space (bytes)
// Example: 420100937728
Total uint64 `json:"total" yaml:"total"`
}
ResourcesStoragePoolSpace represents the space available to a given storage pool
swagger:model
API extension: resources.
type ResourcesSystem ¶
type ResourcesSystem struct {
// System UUID
// Example: 7fa1c0cc-2271-11b2-a85c-aab32a05d71a
UUID string `json:"uuid" yaml:"uuid"`
// System vendor
// Example: LENOVO
Vendor string `json:"vendor" yaml:"vendor"`
// System model
// Example: 20HRCTO1WW
Product string `json:"product" yaml:"product"`
// System family
// Example: ThinkPad X1 Carbon 5th
Family string `json:"family" yaml:"family"`
// System version
// Example: ThinkPad X1 Carbon 5th
Version string `json:"version" yaml:"version"`
// System nanufacturer SKU
// LENOVO_MT_20HR_BU_Think_FM_ThinkPad X1 Carbon 5th
Sku string `json:"sku" yaml:"sku"`
// System serial number
// Example: PY3DD4X9
Serial string `json:"serial" yaml:"serial"`
// System type (unknown, physical, virtual-machine, container, ...)
// Example: physical
Type string `json:"type" yaml:"type"`
// Firmware details
Firmware *ResourcesSystemFirmware `json:"firmware" yaml:"firmware"`
// Chassis details
Chassis *ResourcesSystemChassis `json:"chassis" yaml:"chassis"`
// Motherboard details
Motherboard *ResourcesSystemMotherboard `json:"motherboard" yaml:"motherboard"`
}
ResourcesSystem represents the system
swagger:model
API extension: resources_system.
type ResourcesSystemChassis ¶
type ResourcesSystemChassis struct {
// Chassis vendor
// Example: Lenovo
Vendor string `json:"vendor" yaml:"vendor"`
// Chassis type
// Example: Notebook
Type string `json:"type" yaml:"type"`
// Chassis serial number
// Example: PY3DD4X9
Serial string `json:"serial" yaml:"serial"`
// Chassis version/revision
// Example: None
Version string `json:"version" yaml:"version"`
}
ResourcesSystemChassis represents the system chassis
swagger:model
API extension: resources_system.
type ResourcesSystemFirmware ¶
type ResourcesSystemFirmware struct {
// Firmware vendor
// Example: Lenovo
Vendor string `json:"vendor" yaml:"vendor"`
// Firmware build date
// Example: 10/14/2020
Date string `json:"date" yaml:"date"`
// Firmware version
// Example: N1MET64W (1.49)
Version string `json:"version" yaml:"version"`
}
ResourcesSystemFirmware represents the system firmware
swagger:model
API extension: resources_system.
type ResourcesSystemMotherboard ¶
type ResourcesSystemMotherboard struct {
// Motherboard vendor
// Example: Lenovo
Vendor string `json:"vendor" yaml:"vendor"`
// Motherboard model
// Example: 20HRCTO1WW
Product string `json:"product" yaml:"product"`
// Motherboard serial number
// Example: L3CF4FX003A
Serial string `json:"serial" yaml:"serial"`
// Motherboard version/revision
// Example: None
Version string `json:"version" yaml:"version"`
}
ResourcesSystemMotherboard represents the motherboard
swagger:model
API extension: resources_system.
type ResourcesUSB ¶
type ResourcesUSB struct {
// List of USB devices
Devices []ResourcesUSBDevice `json:"devices" yaml:"devices"`
// Total number of USB devices
// Example: 1
Total uint64 `json:"total" yaml:"total"`
}
ResourcesUSB represents the USB devices available on the system
swagger:model
API extension: resources_usb_pci.
type ResourcesUSBDevice ¶
type ResourcesUSBDevice struct {
// USB address (bus)
// Example: 1
BusAddress uint64 `json:"bus_address" yaml:"bus_address"`
// USB address (device)
// Example: 3
DeviceAddress uint64 `json:"device_address" yaml:"device_address"`
// USB serial number
// Example: DAE005fp
//
// API extension: device_usb_serial.
Serial string `json:"serial" yaml:"serial"`
// List of USB interfaces
Interfaces []ResourcesUSBDeviceInterface `json:"interfaces" yaml:"interfaces"`
// Name of the vendor
// Example: ATEN International Co., Ltd
Vendor string `json:"vendor" yaml:"vendor"`
// USB ID of the vendor
// Example: 0557
VendorID string `json:"vendor_id" yaml:"vendor_id"`
// Name of the product
// Example: Hermon USB hidmouse Device
Product string `json:"product" yaml:"product"`
// USB ID of the product
// Example: 2221
ProductID string `json:"product_id" yaml:"product_id"`
// Transfer speed (Mbit/s)
// Example: 12
Speed float64 `json:"speed" yaml:"speed"`
}
ResourcesUSBDevice represents a USB device
swagger:model
API extension: resources_usb_pci.
type ResourcesUSBDeviceInterface ¶
type ResourcesUSBDeviceInterface struct {
// Class of USB interface
// Example: Human Interface Device
Class string `json:"class" yaml:"class"`
// ID of the USB interface class
// Example: 3
ClassID uint64 `json:"class_id" yaml:"class_id"`
// Kernel driver currently associated with the device
// Example: usbhid
Driver string `json:"driver" yaml:"driver"`
// Version of the kernel driver
// Example: 5.8.0-36-generic
DriverVersion string `json:"driver_version" yaml:"driver_version"`
// Interface number
// Example: 0
Number uint64 `json:"number" yaml:"number"`
// Sub class of the interface
// Example: Boot Interface Subclass
SubClass string `json:"subclass" yaml:"subclass"`
// ID of the USB interface sub class
// Example: 1
SubClassID uint64 `json:"subclass_id" yaml:"subclass_id"`
}
ResourcesUSBDeviceInterface represents a USB device interface
swagger:model
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 ¶
MetadataAsMap unmarshals the Response metadata into a map.
func (*Response) MetadataAsOperation ¶
MetadataAsOperation turns the Response metadata into an Operation.
func (*Response) MetadataAsStringSlice ¶
MetadataAsStringSlice unmarshals the Response metadata into a slice of string.
func (*Response) MetadataAsStruct ¶
MetadataAsStruct unmarshals the Response metadata content.
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 any `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 {
WithEntitlements `yaml:",inline"`
ServerUntrusted `yaml:",inline"`
// The current user username as seen by LXD
// Read only: true
// Example: uid=201105
//
// API extension: auth_user
AuthUserName string `json:"auth_user_name" yaml:"auth_user_name"`
// The current user login method as seen by LXD
// Read only: true
// Example: unix
//
// API extension: auth_user
AuthUserMethod string `json:"auth_user_method" yaml:"auth_user_method"`
// Read-only status/configuration information
// Read only: true
Environment ServerEnvironment `json:"environment" yaml:"environment"`
}
Server represents a LXD server
swagger:model
type ServerEnvironment ¶
type ServerEnvironment struct {
// List of addresses the server is listening on
// Example: [":8443"]
Addresses []string `json:"addresses" yaml:"addresses"`
// List of architectures supported by the server
// Example: ["x86_64", "i686"]
Architectures []string `json:"architectures" yaml:"architectures"`
// Range of supported backup metadata versions
// Example: [1, 2]
//
// API extension: backup_metadata_version
BackupMetadataVersionRange []uint32 `json:"backup_metadata_version_range" yaml:"backup_metadata_version_range"`
// Server certificate as PEM encoded X509
// Example: X509 PEM certificate
Certificate string `json:"certificate" yaml:"certificate"`
// Server certificate fingerprint as SHA256
// Example: fd200419b271f1dc2a5591b693cc5774b7f234e1ff8c6b78ad703b6888fe2b69
CertificateFingerprint string `json:"certificate_fingerprint" yaml:"certificate_fingerprint"`
// List of supported instance drivers (separate by " | ")
// Example: lxc | qemu
Driver string `json:"driver" yaml:"driver"`
// List of supported instance driver versions (separate by " | ")
// Example: 4.0.7 | 5.2.0
DriverVersion string `json:"driver_version" yaml:"driver_version"`
// List of supported instance types
// Example: ["container", "virtual-machine"]
//
// API extension: server_instance_type_info
InstanceTypes []string `json:"instance_types" yaml:"instance_types"`
// Current firewall driver
// Example: nftables
//
// API extension: firewall_driver
Firewall string `json:"firewall" yaml:"firewall"`
// OS kernel name
// Example: Linux
Kernel string `json:"kernel" yaml:"kernel"`
// OS kernel architecture
// Example: x86_64
KernelArchitecture string `json:"kernel_architecture" yaml:"kernel_architecture"`
// Map of kernel features that were tested on startup
// Example: {"netnsid_getifaddrs": "true", "seccomp_listener": "true"}
//
// API extension: kernel_features
KernelFeatures map[string]string `json:"kernel_features" yaml:"kernel_features"`
// Kernel version
// Example: 5.15.0-36-generic
KernelVersion string `json:"kernel_version" yaml:"kernel_version"`
// Map of LXC features that were tested on startup
// Example: {"cgroup2": "true", "devpts_fd": "true", "pidfd": "true"}
//
// API extension: lxc_features
LXCFeatures map[string]string `json:"lxc_features" yaml:"lxc_features"`
// Name of the operating system (Linux distribution)
// Example: Ubuntu
//
// API extension: api_os
OSName string `json:"os_name" yaml:"os_name"`
// Version of the operating system (Linux distribution)
// Example: 24.04
//
// API extension: api_os
OSVersion string `json:"os_version" yaml:"os_version"`
// Current project name
// Example: default
//
// API extension: projects
Project string `json:"project" yaml:"project"`
// Server implementation name
// Example: lxd
Server string `json:"server" yaml:"server"`
// Whether the server is part of a cluster
// Example: false
//
// API extension: clustering
ServerClustered bool `json:"server_clustered" yaml:"server_clustered"`
// Mode that the event distribution subsystem is operating in on this server.
// Either "full-mesh", "hub-server" or "hub-client".
// Example: full-mesh
//
// API extension: event_hub
ServerEventMode string `json:"server_event_mode" yaml:"server_event_mode"`
// Server hostname
// Example: castiana
//
// API extension: clustering
ServerName string `json:"server_name" yaml:"server_name"`
// PID of the LXD process
// Example: 1453969
ServerPid int `json:"server_pid" yaml:"server_pid"`
// Server version
// Example: 4.11
ServerVersion string `json:"server_version" yaml:"server_version"`
// Whether the version is an LTS release
// Example: false
ServerLTS bool `json:"server_lts" yaml:"server_lts"`
// List of active storage drivers (separate by " | ")
// Example: dir | zfs
Storage string `json:"storage" yaml:"storage"`
// List of active storage driver versions (separate by " | ")
// Example: 1 | 0.8.4-1ubuntu11
StorageVersion string `json:"storage_version" yaml:"storage_version"`
// List of supported storage drivers
StorageSupportedDrivers []ServerStorageDriverInfo `json:"storage_supported_drivers" yaml:"storage_supported_drivers"`
}
ServerEnvironment represents the read-only environment fields of a LXD server.
type ServerPut ¶
type ServerPut struct {
// Server configuration map (refer to doc/server.md)
// Example: {"core.https_address": ":8443"}
Config map[string]any `json:"config" yaml:"config"`
}
ServerPut represents the modifiable fields of a LXD server configuration
swagger:model
type ServerStorageDriverInfo ¶
type ServerStorageDriverInfo struct {
// Name of the driver
// Example: zfs
//
// API extension: server_supported_storage_drivers
Name string
// Version of the driver
// Example: 0.8.4-1ubuntu11
//
// API extension: server_supported_storage_drivers
Version string
// Whether the driver has remote volumes
// Example: false
//
// API extension: server_supported_storage_drivers
Remote bool
}
ServerStorageDriverInfo represents the read-only info about a storage driver
swagger:model
API extension: server_supported_storage_drivers.
type ServerUntrusted ¶
type ServerUntrusted struct {
// List of supported API extensions
// Read only: true
// Example: ["etag", "patch", "network", "storage"]
APIExtensions []string `json:"api_extensions" yaml:"api_extensions"`
// Support status of the current API (one of "devel", "stable" or "deprecated")
// Read only: true
// Example: stable
APIStatus string `json:"api_status" yaml:"api_status"`
// API version number
// Read only: true
// Example: 1.0
APIVersion string `json:"api_version" yaml:"api_version"`
// Whether the client is trusted (one of "trusted" or "untrusted")
// Read only: true
// Example: untrusted
Auth string `json:"auth" yaml:"auth"`
// Whether the server is public-only (only public endpoints are implemented)
// Read only: true
// Example: false
Public bool `json:"public" yaml:"public"`
// List of supported authentication methods
// Read only: true
// Example: ["bearer", "tls", "oidc"]
//
// API extension: oidc
AuthMethods []string `json:"auth_methods" yaml:"auth_methods"`
// Whether the requester sent a client certificate with the request
// Read only: true
// Example: false
//
// API extension: client_cert_presence
ClientCertificate bool `json:"client_certificate" yaml:"client_certificate"`
// Server configuration map (refer to doc/server.md) The available fields for public endpoint (before authentication) are limited.
// Example: {"user.microcloud": "true"}
Config map[string]any `json:"config" yaml:"config"`
}
ServerUntrusted represents a LXD server for an untrusted client
swagger:model
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 Ready StatusCode = 113 Success StatusCode = 200 Failure StatusCode = 400 Cancelled StatusCode = 401 )
LXD status codes.
func StatusCodeFromString ¶
func StatusCodeFromString(status string) StatusCode
StatusCodeFromString returns the status code of the giving status name.
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 StatusError ¶
type StatusError struct {
// contains filtered or unexported fields
}
StatusError error type that contains an HTTP status code and message.
func NewGenericStatusError ¶
func NewGenericStatusError(status int) StatusError
NewGenericStatusError returns a new StatusError with the given status code. The generic http.StatusText will be used for the error message.
func NewStatusError ¶
func NewStatusError(status int, msg string) StatusError
NewStatusError returns a new StatusError with the given message and status code.
func StatusErrorf ¶
func StatusErrorf(status int, format string, a ...any) StatusError
StatusErrorf returns a new StatusError containing the specified status and message.
func (StatusError) Error ¶
func (e StatusError) Error() string
Error returns the error message or the http.StatusText() of the status code if error message is empty.
func (StatusError) Unwrap ¶
func (e StatusError) Unwrap() error
Unwrap implements the xerrors.Wrapper interface for StatusError.
type StorageBucket ¶
type StorageBucket struct {
WithEntitlements `yaml:",inline"` //nolint:musttag
// Bucket name
// Example: foo
//
// API extension: storage_buckets
Name string `json:"name" yaml:"name"`
// Description of the storage bucket
// Example: My custom bucket
//
// API extension: storage_buckets
Description string `json:"description" yaml:"description"`
// Bucket S3 URL
// Example: https://127.0.0.1:8080/foo
//
// API extension: storage_buckets
S3URL string `json:"s3_url" yaml:"s3_url"`
// What cluster member this record was found on
// Example: lxd01
//
// API extension: storage_buckets
Location string `json:"location" yaml:"location"`
// Storage bucket configuration map
// Example: {"size": "50GiB"}
//
// API extension: storage_buckets
Config map[string]string `json:"config" yaml:"config"`
// Project name
// Example: project1
//
// API extension: storage_buckets_all_projects
Project string `json:"project" yaml:"project"`
}
StorageBucket represents the fields of a LXD storage pool bucket
swagger:model
API extension: storage_buckets.
func (*StorageBucket) Etag ¶
func (b *StorageBucket) Etag() []any
Etag returns the values used for etag generation.
func (*StorageBucket) SetWritable ¶
func (b *StorageBucket) SetWritable(put StorageBucketPut)
SetWritable sets applicable values from StorageBucketPut struct to StorageBucket struct.
func (*StorageBucket) URL ¶
func (b *StorageBucket) URL(apiVersion string, poolName string, projectName string) *URL
URL returns the URL for the bucket.
func (*StorageBucket) Writable ¶
func (b *StorageBucket) Writable() StorageBucketPut
Writable converts a full StorageBucket struct into a StorageBucketPut struct (filters read-only fields).
type StorageBucketKey ¶
type StorageBucketKey struct {
// Key name
// Example: my-read-only-key
//
// API extension: storage_buckets
Name string `json:"name" yaml:"name"`
// Description of the storage bucket key
// Example: My read-only bucket key
//
// API extension: storage_buckets
Description string `json:"description" yaml:"description"`
// Whether the key can perform write actions or not.
// Example: read-only
//
// API extension: storage_buckets
Role string `json:"role" yaml:"role"`
// Access key
// Example: 33UgkaIBLBIxb7O1
//
// API extension: storage_buckets
AccessKey string `json:"access-key" yaml:"access-key"`
// Secret key
// Example: kDQD6AOgwHgaQI1UIJBJpPaiLgZuJbq0
//
// API extension: storage_buckets
SecretKey string `json:"secret-key" yaml:"secret-key"`
}
StorageBucketKey represents the fields of a LXD storage pool bucket key
swagger:model
API extension: storage_buckets.
func (*StorageBucketKey) Etag ¶
func (b *StorageBucketKey) Etag() []any
Etag returns the values used for etag generation.
func (*StorageBucketKey) SetWritable ¶
func (b *StorageBucketKey) SetWritable(put StorageBucketKeyPut)
SetWritable sets applicable values from StorageBucketKeyPut struct to StorageBucketKey struct.
func (*StorageBucketKey) URL ¶
func (b *StorageBucketKey) URL(apiVersion string, poolName string, projectName string, bucketName string) *URL
URL for the deployment instance set.
func (*StorageBucketKey) Writable ¶
func (b *StorageBucketKey) Writable() StorageBucketKeyPut
Writable converts a full StorageBucketKey struct into a StorageBucketKeyPut struct (filters read-only fields).
type StorageBucketKeyPut ¶
type StorageBucketKeyPut struct {
// Description of the storage bucket key
// Example: My read-only bucket key
//
// API extension: storage_buckets
Description string `json:"description" yaml:"description"`
// Whether the key can perform write actions or not.
// Example: read-only
//
// API extension: storage_buckets
Role string `json:"role" yaml:"role"`
// Access key
// Example: 33UgkaIBLBIxb7O1
//
// API extension: storage_buckets
AccessKey string `json:"access-key" yaml:"access-key"`
// Secret key
// Example: kDQD6AOgwHgaQI1UIJBJpPaiLgZuJbq0
//
// API extension: storage_buckets
SecretKey string `json:"secret-key" yaml:"secret-key"`
}
StorageBucketKeyPut represents the modifiable fields of a LXD storage pool bucket key
swagger:model
API extension: storage_buckets.
type StorageBucketKeysPost ¶
type StorageBucketKeysPost struct {
StorageBucketKeyPut `yaml:",inline"`
// Key name
// Example: my-read-only-key
//
// API extension: storage_buckets
Name string `json:"name" yaml:"name"`
}
StorageBucketKeysPost represents the fields of a new LXD storage pool bucket key
swagger:model
API extension: storage_buckets.
type StorageBucketPut ¶
type StorageBucketPut struct {
// Storage bucket configuration map
// Example: {"size": "50GiB"}
//
// API extension: storage_buckets
Config map[string]string `json:"config" yaml:"config"`
// Description of the storage bucket
// Example: My custom bucket
//
// API extension: storage_buckets
Description string `json:"description" yaml:"description"`
}
StorageBucketPut represents the modifiable fields of a LXD storage pool bucket
swagger:model
API extension: storage_buckets.
type StorageBucketsPost ¶
type StorageBucketsPost struct {
StorageBucketPut `yaml:",inline"`
// Bucket name
// Example: foo
//
// API extension: storage_buckets
Name string `json:"name" yaml:"name"`
}
StorageBucketsPost represents the fields of a new LXD storage pool bucket
swagger:model
API extension: storage_buckets.
type StoragePool ¶
type StoragePool struct {
WithEntitlements `yaml:",inline"` //nolint:musttag
// Storage pool name
// Example: local
Name string `json:"name" yaml:"name"`
// Description of the storage pool
// Example: Local SSD pool
//
// API extension: entity_description
Description string `json:"description" yaml:"description"`
// Storage pool driver (btrfs, ceph, cephfs, dir, lvm or zfs)
// Example: zfs
Driver string `json:"driver" yaml:"driver"`
// Pool status (Pending, Created, Errored or Unknown)
// Read only: true
// Example: Created
//
// API extension: clustering
Status string `json:"status" yaml:"status"`
// Storage pool configuration map (refer to doc/storage.md)
// Example: {"volume.block.filesystem": "ext4", "volume.size": "50GiB"}
Config map[string]string `json:"config" yaml:"config"`
// List of URLs of objects using this storage pool
// Example: ["/1.0/profiles/default", "/1.0/instances/c1"]
UsedBy []string `json:"used_by" yaml:"used_by"`
// Cluster members on which the storage pool has been defined
// Read only: true
// Example: ["lxd01", "lxd02", "lxd03"]
//
// API extension: clustering
Locations []string `json:"locations" yaml:"locations"`
}
StoragePool represents the fields of a LXD storage pool.
swagger:model
API extension: storage.
func (*StoragePool) SetWritable ¶
func (storagePool *StoragePool) SetWritable(put StoragePoolPut)
SetWritable sets applicable values from StoragePoolPut struct to StoragePool struct.
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 {
// Storage pool configuration map (refer to doc/storage.md)
// Example: {"volume.block.filesystem": "ext4", "volume.size": "50GiB"}
Config map[string]string `json:"config" yaml:"config"`
// Description of the storage pool
// Example: Local SSD pool
//
// API extension: entity_description
Description string `json:"description" yaml:"description"`
}
StoragePoolPut represents the modifiable fields of a LXD storage pool.
swagger:model
API extension: storage.
type StoragePoolState ¶
type StoragePoolState struct {
ResourcesStoragePool `yaml:",inline"`
}
StoragePoolState represents the state of a storage pool.
swagger:model
API extension: cluster_member_state.
type StoragePoolVolumeBackup ¶
type StoragePoolVolumeBackup struct {
// Backup name
// Example: backup0
Name string `json:"name" yaml:"name"`
// When the backup was created
// Example: 2021-03-23T16:38:37.753398689-04:00
CreatedAt time.Time `json:"created_at" yaml:"created_at"`
// When the backup expires (gets auto-deleted)
// Example: 2021-03-23T17:38:37.753398689-04:00
ExpiresAt time.Time `json:"expires_at" yaml:"expires_at"`
// Whether to ignore snapshots
// Example: false
VolumeOnly bool `json:"volume_only" yaml:"volume_only"`
// Whether to use a pool-optimized binary format (instead of plain tarball)
// Example: true
OptimizedStorage bool `json:"optimized_storage" yaml:"optimized_storage"`
}
StoragePoolVolumeBackup represents a LXD volume backup
swagger:model
API extension: custom_volume_backup.
type StoragePoolVolumeBackupPost ¶
type StoragePoolVolumeBackupPost struct {
// New backup name
// Example: backup1
Name string `json:"name" yaml:"name"`
}
StoragePoolVolumeBackupPost represents the fields available for the renaming of a volume backup
swagger:model
API extension: custom_volume_backup.
type StoragePoolVolumeBackupsPost ¶
type StoragePoolVolumeBackupsPost struct {
// Backup name
// Example: backup0
Name string `json:"name" yaml:"name"`
// When the backup expires (gets auto-deleted)
// Example: 2021-03-23T17:38:37.753398689-04:00
ExpiresAt time.Time `json:"expires_at" yaml:"expires_at"`
// Whether to ignore snapshots
// Example: false
VolumeOnly bool `json:"volume_only" yaml:"volume_only"`
// Whether to use a pool-optimized binary format (instead of plain tarball)
// Example: true
OptimizedStorage bool `json:"optimized_storage" yaml:"optimized_storage"`
// What compression algorithm to use
// Example: gzip
CompressionAlgorithm string `json:"compression_algorithm" yaml:"compression_algorithm"`
// What backup format version to use
// Example: 1
//
// API extension: backup_metadata_version
Version uint32 `json:"version" yaml:"version"`
}
StoragePoolVolumeBackupsPost represents the fields available for a new LXD volume backup
swagger:model
API extension: custom_volume_backup.
type StoragePoolsPost ¶
type StoragePoolsPost struct {
StoragePoolPut `yaml:",inline"`
// Storage pool name
// Example: local
Name string `json:"name" yaml:"name"`
// Storage pool driver (btrfs, ceph, cephfs, dir, lvm or zfs)
// Example: zfs
Driver string `json:"driver" yaml:"driver"`
}
StoragePoolsPost represents the fields of a new LXD storage pool
swagger:model
API extension: storage.
type StorageVolume ¶
type StorageVolume struct {
WithEntitlements `yaml:",inline"` //nolint:musttag
// Volume name
// Example: foo
Name string `json:"name" yaml:"name"`
// Description of the storage volume
// Example: My custom volume
//
// API extension: entity_description
Description string `json:"description" yaml:"description"`
// Volume type
// Example: custom
Type string `json:"type" yaml:"type"`
// Name of the pool the volume is using
// Example: "default"
//
// API extension: storage_volumes_all
Pool string `json:"pool" yaml:"pool"`
// Volume content type (filesystem or block)
// Example: filesystem
//
// API extension: custom_block_volumes
ContentType string `json:"content_type" yaml:"content_type"`
// Project containing the volume.
// Example: default
//
// API extension: storage_volumes_all_projects
Project string `json:"project" yaml:"project"`
// What cluster member this record was found on
// Example: lxd01
//
// API extension: clustering
Location string `json:"location" yaml:"location"`
// Volume creation timestamp
// Example: 2021-03-23T20:00:00-04:00
// API extension: storage_volumes_created_at
CreatedAt time.Time `json:"created_at" yaml:"created_at"`
// Storage volume configuration map (refer to doc/storage.md)
// Example: {"zfs.remove_snapshots": "true", "size": "50GiB"}
Config map[string]string `json:"config" yaml:"config"`
// List of URLs of objects using this storage volume
// Example: ["/1.0/instances/blah"]
UsedBy []string `json:"used_by" yaml:"used_by"`
}
StorageVolume represents the fields of a LXD storage volume.
swagger:model
API extension: storage.
func (*StorageVolume) SetWritable ¶
func (v *StorageVolume) SetWritable(put StorageVolumePut)
SetWritable sets applicable values from StorageVolumePut struct to StorageVolume struct.
func (*StorageVolume) URL ¶
func (v *StorageVolume) URL(apiVersion string) *URL
URL returns the URL for the volume.
func (*StorageVolume) Writable ¶
func (v *StorageVolume) Writable() StorageVolumePut
Writable converts a full StorageVolume struct into a StorageVolumePut struct (filters read-only fields).
type StorageVolumePost ¶
type StorageVolumePost struct {
// New volume name
// Example: foo
Name string `json:"name" yaml:"name"`
// New storage pool
// Example: remote
//
// API extension: storage_api_local_volume_handling
Pool string `json:"pool,omitempty" yaml:"pool,omitempty"`
// Initiate volume migration
// Example: false
//
// API extension: storage_api_remote_volume_handling
Migration bool `json:"migration" yaml:"migration"`
// Migration target (for push mode)
//
// API extension: storage_api_remote_volume_handling
Target *StorageVolumePostTarget `json:"target" yaml:"target"`
// Whether snapshots should be discarded (migration only)
// Example: false
//
// API extension: storage_api_remote_volume_snapshots
VolumeOnly bool `json:"volume_only" yaml:"volume_only"`
// New project name
// Example: foo
//
// API extension: storage_volume_project_move
Project string `json:"project,omitempty" yaml:"project,omitempty"`
// Migration source
//
// API extension: cluster_internal_custom_volume_copy
Source StorageVolumeSource `json:"source" yaml:"source"`
}
StorageVolumePost represents the fields required to rename a LXD storage pool volume
swagger:model
API extension: storage_api_volume_rename.
type StorageVolumePostTarget ¶
type StorageVolumePostTarget struct {
// The certificate of the migration target
// Example: X509 PEM certificate
Certificate string `json:"certificate" yaml:"certificate"`
// Remote operation URL (for migration)
// Example: https://1.2.3.4:8443/1.0/operations/1721ae08-b6a8-416a-9614-3f89302466e1
Operation string `json:"operation,omitempty" yaml:"operation,omitempty"`
// Migration websockets credentials
// Example: {"migration": "random-string"}
Websockets map[string]string `json:"secrets,omitempty" yaml:"secrets,omitempty"`
}
StorageVolumePostTarget represents the migration target host and operation
swagger:model
API extension: storage_api_remote_volume_handling.
type StorageVolumePut ¶
type StorageVolumePut struct {
// Storage volume configuration map (refer to doc/storage.md)
// Example: {"zfs.remove_snapshots": "true", "size": "50GiB"}
Config map[string]string `json:"config" yaml:"config"`
// Description of the storage volume
// Example: My custom volume
//
// API extension: entity_description
Description string `json:"description" yaml:"description"`
// Name of a snapshot to restore
// Example: snap0
//
// API extension: storage_api_volume_snapshots
Restore string `json:"restore,omitempty" yaml:"restore,omitempty"`
}
StorageVolumePut represents the modifiable fields of a LXD storage volume
swagger:model
API extension: storage.
type StorageVolumeSnapshot ¶
type StorageVolumeSnapshot struct {
// Snapshot name
// Example: snap0
Name string `json:"name" yaml:"name"`
// Description of the storage volume
// Example: My custom volume
Description string `json:"description" yaml:"description"`
// The content type (filesystem or block)
// Example: filesystem
//
// API extension: custom_block_volumes
ContentType string `json:"content_type" yaml:"content_type"`
// Volume snapshot creation timestamp
// Example: 2021-03-23T20:00:00-04:00
// API extension: storage_volumes_created_at
CreatedAt time.Time `json:"created_at" yaml:"created_at"`
// When the snapshot expires (gets auto-deleted)
// Example: 2021-03-23T17:38:37.753398689-04:00
//
// API extension: custom_volume_snapshot_expiry
ExpiresAt *time.Time `json:"expires_at" yaml:"expires_at"`
// Storage volume configuration map (refer to doc/storage.md)
// Example: {"zfs.remove_snapshots": "true", "size": "50GiB"}
Config map[string]string `json:"config" yaml:"config"`
}
StorageVolumeSnapshot represents a LXD storage volume snapshot
swagger:model
API extension: storage_api_volume_snapshots.
func (*StorageVolumeSnapshot) SetWritable ¶
func (storageVolumeSnapshot *StorageVolumeSnapshot) SetWritable(put StorageVolumeSnapshotPut)
SetWritable sets applicable values from StorageVolumeSnapshotPut struct to StorageVolumeSnapshot struct.
func (*StorageVolumeSnapshot) Writable ¶
func (storageVolumeSnapshot *StorageVolumeSnapshot) Writable() StorageVolumeSnapshotPut
Writable converts a full StorageVolumeSnapshot struct into a StorageVolumeSnapshotPut struct (filters read-only fields).
type StorageVolumeSnapshotPost ¶
type StorageVolumeSnapshotPost struct {
// New snapshot name
// Example: snap1
Name string `json:"name" yaml:"name"`
// Initiate volume snapshot migration
// Example: false
//
// API extension: storage_api_remote_volume_snapshot_copy
Migration bool `json:"migration" yaml:"migration"`
// Migration target (for push mode)
//
// API extension: storage_api_remote_volume_snapshot_copy
Target *StorageVolumePostTarget `json:"target" yaml:"target"`
}
StorageVolumeSnapshotPost represents the fields required to rename/move a LXD storage volume snapshot
swagger:model
API extension: storage_api_volume_snapshots.
type StorageVolumeSnapshotPut ¶
type StorageVolumeSnapshotPut struct {
// Description of the storage volume
// Example: My custom volume
Description string `json:"description" yaml:"description"`
// When the snapshot expires (gets auto-deleted)
// Example: 2021-03-23T17:38:37.753398689-04:00
//
// 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
swagger:model
API extension: storage_api_volume_snapshots.
type StorageVolumeSnapshotsPost ¶
type StorageVolumeSnapshotsPost struct {
// Snapshot name
// Example: snap0
Name string `json:"name" yaml:"name"`
// Description of the storage volume snapshot
// Example: My custom snapshot
Description string `json:"description" yaml:"description"`
// When the snapshot expires (gets auto-deleted)
// Example: 2021-03-23T17:38:37.753398689-04:00
//
// 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
swagger:model
API extension: storage_api_volume_snapshots.
type StorageVolumeSource ¶
type StorageVolumeSource struct {
// Source volume name (for copy)
// Example: foo
Name string `json:"name" yaml:"name"`
// Source type (copy or migration)
// Example: copy
Type SourceType `json:"type" yaml:"type"`
// Source storage pool (for copy)
// Example: local
Pool string `json:"pool" yaml:"pool"`
// Certificate (for migration)
// Example: X509 PEM certificate
//
// API extension: storage_api_remote_volume_handling
Certificate string `json:"certificate" yaml:"certificate"`
// Whether to use pull or push mode (for migration)
// Example: pull
//
// API extension: storage_api_remote_volume_handling
Mode string `json:"mode,omitempty" yaml:"mode,omitempty"`
// Remote operation URL (for migration)
// Example: https://1.2.3.4:8443/1.0/operations/1721ae08-b6a8-416a-9614-3f89302466e1
//
// API extension: storage_api_remote_volume_handling
Operation string `json:"operation,omitempty" yaml:"operation,omitempty"`
// Map of migration websockets (for migration)
// Example: {"rsync": "RANDOM-STRING"}
//
// API extension: storage_api_remote_volume_handling
Websockets map[string]string `json:"secrets,omitempty" yaml:"secrets,omitempty"`
// Whether snapshots should be discarded (for migration)
// Example: false
//
// API extension: storage_api_volume_snapshots
VolumeOnly bool `json:"volume_only" yaml:"volume_only"`
// Whether existing destination volume should be refreshed
// Example: false
//
// API extension: custom_volume_refresh
Refresh bool `json:"refresh" yaml:"refresh"`
// Source project name
// Example: foo
//
// API extension: storage_api_project
Project string `json:"project,omitempty" yaml:"project,omitempty"`
// What cluster member this record was found on
// Example: lxd01
//
// API extension: cluster_internal_custom_volume_copy
Location string `json:"location" yaml:"location"`
}
StorageVolumeSource represents the creation source for a new storage volume
swagger:model
API extension: storage_api_local_volume_handling.
type StorageVolumeState ¶
type StorageVolumeState struct {
// Volume usage
Usage *StorageVolumeStateUsage `json:"usage" yaml:"usage"`
}
StorageVolumeState represents the live state of the volume
swagger:model
API extension: storage_volume_state.
type StorageVolumeStateUsage ¶
type StorageVolumeStateUsage struct {
// Used space in bytes. Uses 0 to indicate that the storage driver for the pool does not support retrieving volume usage.
// Example: 1693552640
Used uint64 `json:"used" yaml:"used"`
// Storage volume size in bytes. Uses 0 to convey that the volume has access to the entire pool's storage.
// Example: 5189222192
//
// API extension: storage_volume_state_total
Total int64 `json:"total" yaml:"total"`
}
StorageVolumeStateUsage represents the disk usage of a volume
swagger:model
API extension: storage_volume_state.
type StorageVolumesPost ¶
type StorageVolumesPost struct {
StorageVolumePut `yaml:",inline"`
// Volume name
// Example: foo
Name string `json:"name" yaml:"name"`
// Volume type (container, custom, image or virtual-machine)
// Example: custom
Type string `json:"type" yaml:"type"`
// Migration source
//
// API extension: storage_api_local_volume_handling
Source StorageVolumeSource `json:"source" yaml:"source"`
// Volume content type (filesystem or block)
// Example: filesystem
//
// API extension: custom_block_volumes
ContentType string `json:"content_type" yaml:"content_type"`
}
StorageVolumesPost represents the fields of a new LXD storage pool volume
swagger:model
API extension: storage.
type URL ¶
URL represents an endpoint for the LXD API.
Example ¶
u := NewURL()
fmt.Println(u.Path("1.0", "networks", "name-with-/-in-it"))
fmt.Println(u.Project("default"))
fmt.Println(u.Project("project-with-%-in-it"))
fmt.Println(u.Target(""))
fmt.Println(u.Target("member-with-%-in-it"))
fmt.Println(u.Host("example.com"))
fmt.Println(u.Scheme("https"))
Output: /1.0/networks/name-with-%2F-in-it /1.0/networks/name-with-%2F-in-it /1.0/networks/name-with-%2F-in-it?project=project-with-%25-in-it /1.0/networks/name-with-%2F-in-it?project=project-with-%25-in-it /1.0/networks/name-with-%2F-in-it?project=project-with-%25-in-it&target=member-with-%25-in-it //example.com/1.0/networks/name-with-%2F-in-it?project=project-with-%25-in-it&target=member-with-%25-in-it https://example.com/1.0/networks/name-with-%2F-in-it?project=project-with-%25-in-it&target=member-with-%25-in-it
func (*URL) Path ¶
Path sets the path of the URL from one or more path parts. It appends each of the pathParts (escaped using url.PathEscape) prefixed with "/" to the URL path.
func (*URL) Project ¶
Project sets the "project" query parameter in the URL if the projectName is not empty or "default".
type Warning ¶
type Warning struct {
// UUID of the warning
// Example: e9e9da0d-2538-4351-8047-46d4a8ae4dbb
UUID string `json:"uuid" yaml:"uuid"`
// What cluster member this warning occurred on
// Example: node1
Location string `json:"location" yaml:"location"`
// The project the warning occurred in
// Example: default
Project string `json:"project" yaml:"project"`
// Type type of warning
// Example: Couldn't find CGroup
Type string `json:"type" yaml:"type"`
// The number of times this warning occurred
// Example: 1
Count int `json:"count" yaml:"count"`
// The first time this warning occurred
// Example: 2021-03-23T17:38:37.753398689-04:00
FirstSeenAt time.Time `json:"first_seen_at" yaml:"first_seen_at"`
// The last time this warning occurred
// Example: 2021-03-23T17:38:37.753398689-04:00
LastSeenAt time.Time `json:"last_seen_at" yaml:"last_seen_at"`
// The warning message
// Example: Couldn't find the CGroup blkio.weight, disk priority will be ignored
LastMessage string `json:"last_message" yaml:"last_message"`
// The severity of this warning
// Example: low
Severity string `json:"severity" yaml:"severity"`
// Status of the warning (new, acknowledged, or resolved)
// Example: new
Status string `json:"status" yaml:"status"`
// The entity affected by this warning
// Example: /1.0/instances/c1?project=default
EntityURL string `json:"entity_url" yaml:"entity_url"`
}
Warning represents a warning entry.
swagger:model
API extension: warnings.
type WarningPut ¶
type WarningPut struct {
// Status of the warning (new, acknowledged, or resolved)
// Example: new
Status string `json:"status" yaml:"status"`
}
WarningPut represents the modifiable fields of a warning.
swagger:model
API extension: warnings.
type WithEntitlements ¶
type WithEntitlements struct {
// AccessEntitlements represents the entitlements that are granted to the requesting user on the attached entity.
// Example: ["can_view", "can_edit"]
AccessEntitlements []string `json:"access_entitlements,omitempty" yaml:"access_entitlements,omitempty"`
}
WithEntitlements is meant to be an embedded struct to API types eligible for entitlement enrichment, that is, entities that can have access entitlements granted to the requesting user.
swagger:model
API extension: entities_with_entitlements.
func (*WithEntitlements) ReportEntitlements ¶
func (e *WithEntitlements) ReportEntitlements(entitlements []string)
ReportEntitlements adds entitlements to the identity.
Source Files
¶
- auth.go
- backup.go
- certificate.go
- client.go
- cluster.go
- cluster_state.go
- devlxd.go
- devlxd_instance.go
- devlxd_operation.go
- devlxd_storage.go
- doc.go
- error.go
- event.go
- event_lifecycle.go
- image.go
- init.go
- instance.go
- instance_backup.go
- instance_console.go
- instance_exec.go
- instance_snapshot.go
- instance_state.go
- metadata_configuration.go
- migration.go
- network.go
- network_acl.go
- network_addresses.go
- network_forward.go
- network_load_balancer.go
- network_peer.go
- network_zone.go
- operation.go
- placement_group.go
- profile.go
- project.go
- resource.go
- response.go
- server.go
- status_code.go
- storage_pool.go
- storage_pool_bucket.go
- storage_pool_volume.go
- storage_pool_volume_backup.go
- storage_pool_volume_snapshot.go
- storage_pool_volume_state.go
- url.go
- warning.go