Documentation
¶
Index ¶
- Constants
- Variables
- func CreateInstanceConfig(tx *sql.Tx, id int, config map[string]string) error
- func ExpandInstanceConfig(config map[string]string, profiles []api.Profile) map[string]string
- func ExpandInstanceDevices(devices deviceConfig.Devices, profiles []api.Profile) deviceConfig.Devices
- func NetworkStateToAPIStatus(state NetworkState) string
- func NewTestDqliteServer(t *testing.T) (string, driver.NodeStore, func())
- func OpenNode(dir string, fresh func(*Node) error, legacyPatches map[int]*LegacyPatch) (*Node, *Dump, error)
- func ProfileToAPI(profile *Profile) *api.Profile
- func StoragePoolStateToAPIStatus(state StoragePoolState) string
- func TxCommit(tx *sql.Tx) error
- func UpdateInstance(tx *sql.Tx, id int, description string, architecture int, ephemeral bool, ...) error
- type Certificate
- type CertificateFilter
- type Cluster
- func (c *Cluster) AddImageToLocalNode(project, fingerprint string) error
- func (c *Cluster) Begin() (*sql.Tx, error)
- func (c *Cluster) Close() error
- func (c *Cluster) CopyDefaultImageProfiles(id int, newID int) error
- func (c *Cluster) CreateCertificate(cert Certificate) (int64, error)
- func (c *Cluster) CreateImage(project, fp string, fname string, sz int64, public bool, autoUpdate bool, ...) error
- func (c *Cluster) CreateImageAlias(project, name string, imageID int, desc string) error
- func (c *Cluster) CreateImageSource(id int, server string, protocol string, certificate string, alias string) error
- func (c *Cluster) CreateInstanceBackup(args InstanceBackup) error
- func (c *Cluster) CreateNetwork(projectName string, name string, description string, netType NetworkType, ...) (int64, error)
- func (c *Cluster) CreateNetworkACL(projectName string, info *api.NetworkACLsPost) (int64, error)
- func (c *Cluster) CreateStoragePool(poolName string, poolDescription string, poolDriver string, ...) (int64, error)
- func (c *Cluster) CreateStoragePoolVolume(project, volumeName, volumeDescription string, volumeType int, poolID int64, ...) (int64, error)
- func (c *Cluster) CreateStoragePoolVolumeBackup(args StoragePoolVolumeBackup) error
- func (c *Cluster) CreateStorageVolumeSnapshot(project, volumeName, volumeDescription string, volumeType int, poolID int64, ...) (int64, error)
- func (c *Cluster) DB() *sql.DB
- func (c *Cluster) DeleteCertificate(fingerprint string) error
- func (c *Cluster) DeleteImage(id int) error
- func (c *Cluster) DeleteImageAlias(project, name string) error
- func (c *Cluster) DeleteInstance(project, name string) error
- func (c *Cluster) DeleteInstanceBackup(name string) error
- func (c *Cluster) DeleteInstanceConfigKey(id int, key string) error
- func (c *Cluster) DeleteNetwork(project string, name string) error
- func (c *Cluster) DeleteNetworkACL(id int64) error
- func (c *Cluster) DeleteStoragePoolVolumeBackup(name string) error
- func (c *Cluster) EnterExclusive() error
- func (c *Cluster) ExitExclusive(f func(*ClusterTx) error) error
- func (c *Cluster) FillMissingStoragePoolDriver() error
- func (c *Cluster) GetCachedImageSourceFingerprint(server string, protocol string, alias string, typeName string, ...) (string, error)
- func (c *Cluster) GetCertificate(fingerprint string) (*Certificate, error)
- func (c *Cluster) GetCreatedNetworks(project string) ([]string, error)
- func (c *Cluster) GetCreatedStoragePoolNames() ([]string, error)
- func (c *Cluster) GetExpiredImagesInProject(expiry int64, project string) ([]string, error)
- func (c *Cluster) GetExpiredInstanceBackups() ([]InstanceBackup, error)
- func (c *Cluster) GetExpiredStorageVolumeSnapshots() ([]StorageVolumeArgs, error)
- func (c *Cluster) GetImage(project, fingerprint string, public bool) (int, *api.Image, error)
- func (c *Cluster) GetImageAlias(project, name string, isTrustedClient bool) (int, api.ImageAliasesEntry, error)
- func (c *Cluster) GetImageAliases(project string) ([]string, error)
- func (c *Cluster) GetImageFromAnyProject(fingerprint string) (int, *api.Image, error)
- func (c *Cluster) GetImagesFingerprints(project string, public bool) ([]string, error)
- func (c *Cluster) GetImagesOnLocalNode() (map[string][]string, error)
- func (c *Cluster) GetImagesOnNode(id int64) (map[string][]string, error)
- func (c *Cluster) GetInstanceBackup(projectName string, name string) (InstanceBackup, error)
- func (c *Cluster) GetInstanceBackups(projectName string, name string) ([]string, error)
- func (c *Cluster) GetInstanceConfig(id int, key string) (string, error)
- func (c *Cluster) GetInstanceID(project, name string) (int, error)
- func (c *Cluster) GetInstancePool(project, instanceName string) (string, error)
- func (c *Cluster) GetInstanceProjectAndName(id int) (string, string, error)
- func (c *Cluster) GetInstanceSnapshotID(project, instance, name string) (int, error)
- func (c *Cluster) GetInstanceSnapshotsNames(project, name string) ([]string, error)
- func (c *Cluster) GetInstancesWithProfile(project, profile string) (map[string][]string, error)
- func (c *Cluster) GetLocalStoragePoolVolume(project, volumeName string, volumeType int, poolID int64) (int64, *api.StorageVolume, error)
- func (c *Cluster) GetLocalStoragePoolVolumeSnapshotsWithType(projectName string, volumeName string, volumeType int, poolID int64) ([]StorageVolumeArgs, error)
- func (c *Cluster) GetLocalStoragePoolVolumes(project string, poolID int64, volumeTypes []int) ([]*api.StorageVolume, error)
- func (c *Cluster) GetLocalStoragePoolVolumesWithType(projectName string, volumeType int, poolID int64) ([]string, error)
- func (c *Cluster) GetNetworkACL(projectName string, name string) (int64, *api.NetworkACL, error)
- func (c *Cluster) GetNetworkACLIDsByNames(project string) (map[string]int64, error)
- func (c *Cluster) GetNetworkACLs(project string) ([]string, error)
- func (c *Cluster) GetNetworkInAnyState(project string, name string) (int64, *api.Network, map[int64]NetworkNode, error)
- func (c *Cluster) GetNetworkWithInterface(devName string) (int64, *api.Network, error)
- func (c *Cluster) GetNetworks(project string) ([]string, error)
- func (c *Cluster) GetNextInstanceSnapshotIndex(project string, name string, pattern string) int
- func (c *Cluster) GetNextStorageVolumeSnapshotIndex(pool, name string, typ int, pattern string) int
- func (c *Cluster) GetNodeID() int64
- func (c *Cluster) GetNodesWithImage(fingerprint string) ([]string, error)
- func (c *Cluster) GetNodesWithoutImage(fingerprint string) ([]string, error)
- func (c *Cluster) GetPoolNamesFromIDs(poolIDs []int64) ([]string, error)
- func (c *Cluster) GetPoolsWithImage(imageFingerprint string) ([]int64, error)
- func (c *Cluster) GetProfile(project, name string) (int64, *api.Profile, error)
- func (c *Cluster) GetProfileNames(project string) ([]string, error)
- func (c *Cluster) GetProfiles(project string, names []string) ([]api.Profile, error)
- func (c *Cluster) GetProject(projectName string) (*api.Project, error)
- func (c *Cluster) GetStoragePool(poolName string) (int64, *api.StoragePool, map[int64]StoragePoolNode, error)
- func (c *Cluster) GetStoragePoolDrivers() ([]string, error)
- func (c *Cluster) GetStoragePoolID(poolName string) (int64, error)
- func (c *Cluster) GetStoragePoolInAnyState(name string) (int64, *api.StoragePool, map[int64]StoragePoolNode, error)
- func (c *Cluster) GetStoragePoolNames() ([]string, error)
- func (c *Cluster) GetStoragePoolNodeVolumeID(projectName string, volumeName string, volumeType int, poolID int64) (int64, error)
- func (c *Cluster) GetStoragePoolVolumeBackup(projectName string, poolName string, backupName string) (StoragePoolVolumeBackup, error)
- func (c *Cluster) GetStoragePoolVolumeBackups(projectName string, volumeName string, poolID int64) ([]StoragePoolVolumeBackup, error)
- func (c *Cluster) GetStoragePoolVolumeBackupsNames(projectName string, volumeName string, poolID int64) ([]string, error)
- func (c *Cluster) GetStoragePoolVolumes(project string, poolID int64, volumeTypes []int) ([]*api.StorageVolume, error)
- func (c *Cluster) GetStoragePoolVolumesNames(poolID int64) ([]string, error)
- func (c *Cluster) GetStoragePoolVolumesWithType(volumeType int) ([]StorageVolumeArgs, error)
- func (c *Cluster) GetStorageVolumeDescription(volumeID int64) (string, error)
- func (c *Cluster) GetStorageVolumeSnapshotExpiry(volumeID int64) (time.Time, error)
- func (c *Cluster) GetStorageVolumeSnapshotsNames(volumeID int64) ([]string, error)
- func (c *Cluster) ImageExists(project string, fingerprint string) (bool, error)
- func (c *Cluster) ImageIsReferencedByOtherProjects(project string, fingerprint string) (bool, error)
- func (c *Cluster) InitImageLastUseDate(fingerprint string) error
- func (c *Cluster) InstanceList(filter *InstanceFilter, ...) error
- func (c *Cluster) IsRemoteStorage(poolID int64) (bool, error)
- func (c *Cluster) Kill()
- func (c *Cluster) LegacyContainersList() ([]string, error)
- func (c *Cluster) LegacySnapshotsList() ([]string, error)
- func (c *Cluster) LocateImage(fingerprint string) (string, error)
- func (c *Cluster) MoveImageAlias(source int, destination int) error
- func (c *Cluster) NetworkNodes(networkID int64) (map[int64]NetworkNode, error)
- func (c *Cluster) NodeID(id int64)
- func (c *Cluster) RemoveStoragePool(poolName string) (*api.StoragePool, error)
- func (c *Cluster) RemoveStoragePoolVolume(project, volumeName string, volumeType int, poolID int64) error
- func (c *Cluster) RemoveStorageVolumeImages(fingerprints []string) error
- func (c *Cluster) RemoveUnreferencedProfiles() error
- func (c *Cluster) RenameImageAlias(id int, name string) error
- func (c *Cluster) RenameInstanceBackup(oldName, newName string) error
- func (c *Cluster) RenameNetwork(project string, oldName string, newName string) error
- func (c *Cluster) RenameNetworkACL(id int64, newName string) error
- func (c *Cluster) RenameStoragePoolVolume(project, oldVolumeName string, newVolumeName string, volumeType int, ...) error
- func (c *Cluster) RenameVolumeBackup(oldName, newName string) error
- func (c *Cluster) ResetInstancesPowerState() error
- func (c *Cluster) Transaction(f func(*ClusterTx) error) error
- func (c *Cluster) UpdateCertificate(fingerprint string, cert Certificate) error
- func (c *Cluster) UpdateCertificateProjects(id int, projects []string) error
- func (c *Cluster) UpdateImage(id int, fname string, sz int64, public bool, autoUpdate bool, ...) error
- func (c *Cluster) UpdateImageAlias(id int, imageID int, desc string) error
- func (c *Cluster) UpdateImageLastUseDate(fingerprint string, date time.Time) error
- func (c *Cluster) UpdateImageUploadDate(id int, uploadedAt time.Time) error
- func (c *Cluster) UpdateInstancePowerState(id int, state string) error
- func (c *Cluster) UpdateInstanceSnapshotCreationDate(instanceID int, date time.Time) error
- func (c *Cluster) UpdateInstanceStatefulFlag(id int, stateful bool) error
- func (c *Cluster) UpdateNetwork(project string, name, description string, config map[string]string) error
- func (c *Cluster) UpdateNetworkACL(id int64, config *api.NetworkACLPut) error
- func (c *Cluster) UpdateStoragePool(poolName, description string, poolConfig map[string]string) error
- func (c *Cluster) UpdateStoragePoolVolume(project, volumeName string, volumeType int, poolID int64, ...) error
- func (c *Cluster) UpdateStorageVolumeSnapshot(project, volumeName string, volumeType int, poolID int64, ...) error
- func (c *Cluster) UpgradeStorageVolumConfigToLVMThinPoolNameKey() error
- type ClusterRole
- type ClusterTx
- func (c *ClusterTx) CertificateExists(fingerprint string) (bool, error)
- func (c *ClusterTx) CertificateProjectsRef(filter CertificateFilter) (map[string][]string, error)
- func (c *ClusterTx) ClearNode(id int64) error
- func (c *ClusterTx) Config() (map[string]string, error)
- func (c *ClusterTx) CreateCertificate(object Certificate) (int64, error)
- func (c *ClusterTx) CreateInstance(object Instance) (int64, error)
- func (c *ClusterTx) CreateInstanceConfig(id int, config map[string]string) error
- func (c *ClusterTx) CreateInstanceSnapshot(object InstanceSnapshot) (int64, error)
- func (c *ClusterTx) CreateNetworkConfig(networkID, nodeID int64, config map[string]string) error
- func (c *ClusterTx) CreateNode(name string, address string) (int64, error)
- func (c *ClusterTx) CreateNodeRole(id int64, role ClusterRole) error
- func (c *ClusterTx) CreateNodeWithArch(name string, address string, arch int) (int64, error)
- func (c *ClusterTx) CreateOperation(project, uuid string, typ OperationType) (int64, error)
- func (c *ClusterTx) CreatePendingNetwork(node string, projectName string, name string, netType NetworkType, ...) error
- func (c *ClusterTx) CreatePendingStoragePool(node, name, driver string, conf map[string]string) error
- func (c *ClusterTx) CreateProfile(object Profile) (int64, error)
- func (c *ClusterTx) CreateProject(object api.ProjectsPost) (int64, error)
- func (c *ClusterTx) CreateStoragePoolConfig(poolID, nodeID int64, config map[string]string) error
- func (c *ClusterTx) DeleteCertificate(fingerprint string) error
- func (c *ClusterTx) DeleteInstance(project string, name string) error
- func (c *ClusterTx) DeleteInstanceConfigKey(id int64, key string) error
- func (c *ClusterTx) DeleteInstanceSnapshot(project string, instance string, name string) error
- func (c *ClusterTx) DeleteProfile(project string, name string) error
- func (c *ClusterTx) DeleteProject(name string) error
- func (c *ClusterTx) GetCertificate(fingerprint string) (*Certificate, error)
- func (c *ClusterTx) GetCertificateID(fingerprint string) (int64, error)
- func (c *ClusterTx) GetCertificates(filter CertificateFilter) ([]Certificate, error)
- func (c *ClusterTx) GetCreatedNetworks() (map[string]map[int64]api.Network, error)
- func (c *ClusterTx) GetCustomVolumesInProject(project string) ([]StorageVolumeArgs, error)
- func (c *ClusterTx) GetFailureDomainsNames() (map[uint64]string, error)
- func (c *ClusterTx) GetImage(project string, fingerprint string) (*Image, error)
- func (c *ClusterTx) GetImageSource(imageID int) (int, api.ImageSource, error)
- func (c *ClusterTx) GetImages(filter ImageFilter) ([]Image, error)
- func (c *ClusterTx) GetInstance(project string, name string) (*Instance, error)
- func (c *ClusterTx) GetInstanceID(project string, name string) (int64, error)
- func (c *ClusterTx) GetInstanceNames(project string) ([]string, error)
- func (c *ClusterTx) GetInstanceNamesByNodeAddress(project string, instanceType instancetype.Type) (map[string][]string, error)
- func (c *ClusterTx) GetInstancePool(projectName string, instanceName string) (string, error)
- func (c *ClusterTx) GetInstanceSnapshot(project string, instance string, name string) (*InstanceSnapshot, error)
- func (c *ClusterTx) GetInstanceSnapshotID(project string, instance string, name string) (int64, error)
- func (c *ClusterTx) GetInstanceSnapshots(filter InstanceSnapshotFilter) ([]InstanceSnapshot, error)
- func (c *ClusterTx) GetInstanceSnapshotsWithName(project string, name string) ([]Instance, error)
- func (c *ClusterTx) GetInstanceToNodeMap(project string, instanceType instancetype.Type) (map[string]string, error)
- func (c *ClusterTx) GetInstances(filter InstanceFilter) ([]Instance, error)
- func (c *ClusterTx) GetLocalImagesFingerprints() ([]string, error)
- func (c *ClusterTx) GetLocalInstancesInProject(projectName string, instanceType instancetype.Type) ([]Instance, error)
- func (c *ClusterTx) GetLocalNodeAddress() (string, error)
- func (c *ClusterTx) GetLocalNodeName() (string, error)
- func (c *ClusterTx) GetLocalOperations() ([]Operation, error)
- func (c *ClusterTx) GetLocalOperationsUUIDs() ([]string, error)
- func (c *ClusterTx) GetNetworkID(projectName string, name string) (int64, error)
- func (c *ClusterTx) GetNetworksLocalConfig() (map[string]map[string]string, error)
- func (c *ClusterTx) GetNodeAddressOfInstance(project string, name string, instanceType instancetype.Type) (string, error)
- func (c *ClusterTx) GetNodeByAddress(address string) (NodeInfo, error)
- func (c *ClusterTx) GetNodeByName(name string) (NodeInfo, error)
- func (c *ClusterTx) GetNodeFailureDomain(id int64) (string, error)
- func (c *ClusterTx) GetNodeOfflineThreshold() (time.Duration, error)
- func (c *ClusterTx) GetNodeWithLeastInstances(archs []int) (string, error)
- func (c *ClusterTx) GetNodes() ([]NodeInfo, error)
- func (c *ClusterTx) GetNodesCount() (int, error)
- func (c *ClusterTx) GetNodesFailureDomains() (map[string]uint64, error)
- func (c *ClusterTx) GetNodesWithRunningOperations(project string) ([]string, error)
- func (c *ClusterTx) GetNonPendingNetworkIDs() (map[string]int64, error)
- func (c *ClusterTx) GetNonPendingStoragePoolsNamesToIDs() (map[string]int64, error)
- func (c *ClusterTx) GetOperationByUUID(uuid string) (Operation, error)
- func (c *ClusterTx) GetPendingNodeByAddress(address string) (NodeInfo, error)
- func (c *ClusterTx) GetProfile(project string, name string) (*Profile, error)
- func (c *ClusterTx) GetProfileID(project string, name string) (int64, error)
- func (c *ClusterTx) GetProfileURIs(filter ProfileFilter) ([]string, error)
- func (c *ClusterTx) GetProfiles(filter ProfileFilter) ([]Profile, error)
- func (c *ClusterTx) GetProject(name string) (*api.Project, error)
- func (c *ClusterTx) GetProjectID(name string) (int64, error)
- func (c *ClusterTx) GetProjectIDsToNames() (map[int64]string, error)
- func (c *ClusterTx) GetProjectNames() ([]string, error)
- func (c *ClusterTx) GetProjectURIs(filter ProjectFilter) ([]string, error)
- func (c *ClusterTx) GetProjects(filter ProjectFilter) ([]api.Project, error)
- func (c *ClusterTx) GetStoragePoolDriver(id int64) (string, error)
- func (c *ClusterTx) GetStoragePoolID(name string) (int64, error)
- func (c *ClusterTx) GetStoragePoolNodeConfigs(poolID int64) (map[string]map[string]string, error)
- func (c *ClusterTx) GetStoragePoolUsedBy(name string) ([]string, error)
- func (c *ClusterTx) GetStoragePoolsLocalConfig() (map[string]map[string]string, error)
- func (c *ClusterTx) GetStorageVolumeNodes(poolID int64, projectName string, volumeName string, volumeType int) ([]NodeInfo, error)
- func (c *ClusterTx) InitProjectWithoutImages(project string) error
- func (c *ClusterTx) InstanceConfigRef(filter InstanceFilter) (map[string]map[string]map[string]string, error)
- func (c *ClusterTx) InstanceDevicesRef(filter InstanceFilter) (map[string]map[string]map[string]map[string]string, error)
- func (c *ClusterTx) InstanceExists(project string, name string) (bool, error)
- func (c *ClusterTx) InstanceProfilesRef(filter InstanceFilter) (map[string]map[string][]string, error)
- func (c *ClusterTx) InstanceSnapshotConfigRef(filter InstanceSnapshotFilter) (map[string]map[string]map[string]map[string]string, error)
- func (c *ClusterTx) InstanceSnapshotDevicesRef(filter InstanceSnapshotFilter) (map[string]map[string]map[string]map[string]map[string]string, error)
- func (c *ClusterTx) InstanceSnapshotExists(project string, instance string, name string) (bool, error)
- func (c *ClusterTx) NetworkCreated(project string, name string) error
- func (c *ClusterTx) NetworkErrored(project string, name string) error
- func (c *ClusterTx) NetworkNodeConfigs(networkID int64) (map[string]map[string]string, error)
- func (c *ClusterTx) NetworkNodeCreated(networkID int64) error
- func (c *ClusterTx) NetworkNodeJoin(networkID, nodeID int64) error
- func (c *ClusterTx) NetworkNodes(networkID int64) (map[int64]NetworkNode, error)
- func (c *ClusterTx) NodeID(id int64)
- func (c *ClusterTx) NodeIsEmpty(id int64) (string, error)
- func (c *ClusterTx) NodeIsOutdated() (bool, error)
- func (c *ClusterTx) ProfileConfigRef(filter ProfileFilter) (map[string]map[string]map[string]string, error)
- func (c *ClusterTx) ProfileDevicesRef(filter ProfileFilter) (map[string]map[string]map[string]map[string]string, error)
- func (c *ClusterTx) ProfileExists(project string, name string) (bool, error)
- func (c *ClusterTx) ProfileUsedByRef(filter ProfileFilter) (map[string]map[string][]string, error)
- func (c *ClusterTx) ProjectConfigRef(filter ProjectFilter) (map[string]map[string]string, error)
- func (c *ClusterTx) ProjectExists(name string) (bool, error)
- func (c *ClusterTx) ProjectHasImages(name string) (bool, error)
- func (c *ClusterTx) ProjectHasProfiles(name string) (bool, error)
- func (c *ClusterTx) ProjectUsedByRef(filter ProjectFilter) (map[string][]string, error)
- func (c *ClusterTx) RemoveNode(id int64) error
- func (c *ClusterTx) RemoveNodeRole(id int64, role ClusterRole) error
- func (c *ClusterTx) RemoveOperation(uuid string) error
- func (c *ClusterTx) RenameInstance(project string, name string, to string) error
- func (c *ClusterTx) RenameInstanceSnapshot(project string, instance string, name string, to string) error
- func (c *ClusterTx) RenameNode(old, new string) error
- func (c *ClusterTx) RenameProfile(project string, name string, to string) error
- func (c *ClusterTx) RenameProject(name string, to string) error
- func (c *ClusterTx) SetNodeHeartbeat(address string, heartbeat time.Time) error
- func (c *ClusterTx) SetNodePendingFlag(id int64, pending bool) error
- func (c *ClusterTx) SetNodeVersion(id int64, version [2]int) error
- func (c *ClusterTx) StoragePoolCreated(name string) error
- func (c *ClusterTx) StoragePoolErrored(name string) error
- func (c *ClusterTx) StoragePoolNodeCreated(poolID int64) error
- func (c *ClusterTx) UpdateCephStoragePoolAfterNodeJoin(poolID, nodeID int64) error
- func (c *ClusterTx) UpdateCertificate(fingerprint string, object Certificate) error
- func (c *ClusterTx) UpdateCertificateProjects(id int, projects []string) error
- func (c *ClusterTx) UpdateConfig(values map[string]string) error
- func (c *ClusterTx) UpdateInstance(project string, name string, object Instance) error
- func (c *ClusterTx) UpdateInstanceConfig(id int, values map[string]string) error
- func (c *ClusterTx) UpdateInstanceLastUsedDate(id int, date time.Time) error
- func (c *ClusterTx) UpdateInstanceNode(project, oldName, newName, newNode string) error
- func (c *ClusterTx) UpdateInstancePowerState(id int, state string) error
- func (c *ClusterTx) UpdateInstanceSnapshot(id int, description string, expiryDate time.Time) error
- func (c *ClusterTx) UpdateInstanceSnapshotConfig(id int, values map[string]string) error
- func (c *ClusterTx) UpdateNetwork(id int64, description string, config map[string]string) error
- func (c *ClusterTx) UpdateNode(id int64, name string, address string) error
- func (c *ClusterTx) UpdateNodeFailureDomain(id int64, domain string) error
- func (c *ClusterTx) UpdateNodeRoles(id int64, roles []ClusterRole) error
- func (c *ClusterTx) UpdateProfile(project string, name string, object Profile) error
- func (c *ClusterTx) UpdateProject(name string, object api.ProjectPut) error
- func (c *ClusterTx) UpdateStoragePoolAfterNodeJoin(poolID, nodeID int64) error
- type Dump
- type Image
- type ImageFilter
- type Instance
- type InstanceArgs
- type InstanceBackup
- type InstanceFilter
- type InstanceSnapshot
- type InstanceSnapshotFilter
- type LegacyPatch
- type NetworkNode
- type NetworkState
- type NetworkType
- type Node
- type NodeInfo
- type NodeTx
- func (n *NodeTx) Config() (map[string]string, error)
- func (n *NodeTx) CreateFirstRaftNode(address string) error
- func (n *NodeTx) CreateRaftNode(address string) (int64, error)
- func (n *NodeTx) GetRaftNodeAddress(id int64) (string, error)
- func (n *NodeTx) GetRaftNodeAddresses() ([]string, error)
- func (n *NodeTx) GetRaftNodes() ([]RaftNode, error)
- func (n *NodeTx) RemoteRaftNode(id int64) error
- func (n *NodeTx) ReplaceRaftNodes(nodes []RaftNode) error
- func (n *NodeTx) Tx() *sql.Tx
- func (n *NodeTx) UpdateConfig(values map[string]string) error
- type Operation
- type OperationType
- type Profile
- type ProfileFilter
- type ProjectFilter
- type RaftNode
- type RaftRole
- type StoragePoolNode
- type StoragePoolState
- type StoragePoolVolumeBackup
- type StorageVolumeArgs
Constants ¶
const ( RaftVoter = client.Voter RaftStandBy = client.StandBy RaftSpare = client.Spare )
RaftNode roles.
const ( StoragePoolVolumeTypeContainer = iota StoragePoolVolumeTypeImage StoragePoolVolumeTypeCustom StoragePoolVolumeTypeVM )
XXX: this was extracted from lxd/storage_volume_utils.go, we find a way to
factor it independently from both the db and main packages.
const ( StoragePoolVolumeTypeNameContainer string = "container" StoragePoolVolumeTypeNameVM string = "virtual-machine" StoragePoolVolumeTypeNameImage string = "image" StoragePoolVolumeTypeNameCustom string = "custom" )
Leave the string type in here! This guarantees that go treats this is as a typed string constant. Removing it causes go to treat these as untyped string constants which is not what we want.
const ( StoragePoolVolumeContentTypeFS = iota StoragePoolVolumeContentTypeBlock )
Content types.
const ( StoragePoolVolumeContentTypeNameFS string = "filesystem" StoragePoolVolumeContentTypeNameBlock string = "block" )
Content type names.
const ClusterRoleDatabase = ClusterRole("database")
ClusterRoleDatabase represents the database role in a cluster.
const DefaultOfflineThreshold = 20
DefaultOfflineThreshold is the default value for the cluster.offline_threshold configuration key, expressed in seconds.
Variables ¶
var ( // ErrAlreadyDefined hapens when the given entry already exists, // for example a container. ErrAlreadyDefined = fmt.Errorf("The record already exists") // ErrNoSuchObject is in the case of joins (and probably other) queries, // we don't get back sql.ErrNoRows when no rows are returned, even though we do // on selects without joins. Instead, you can use this error to // propagate up and generate proper 404s to the client when something // isn't found so we don't abuse sql.ErrNoRows any more than we // already do. ErrNoSuchObject = fmt.Errorf("No such object") // ErrNoClusterMember is used to indicate no cluster member has been found for a resource. ErrNoClusterMember = fmt.Errorf("No cluster member found") )
var ClusterRoles = map[int]ClusterRole{}
ClusterRoles maps role ids into human-readable names.
Note: the database role is currently stored directly in the raft configuration which acts as single source of truth for it. This map should only contain LXD-specific cluster roles.
var ErrInstanceListStop = fmt.Errorf("search stopped")
ErrInstanceListStop used as return value from InstanceList's instanceFunc when prematurely stopping the search.
var ErrSomeNodesAreBehind = fmt.Errorf("some nodes are behind this node's version")
ErrSomeNodesAreBehind is returned by OpenCluster if some of the nodes in the cluster have a schema or API version that is less recent than this node.
var ImageSourceProtocol = map[int]string{
0: "lxd",
1: "direct",
2: "simplestreams",
}
ImageSourceProtocol maps image source protocol codes to human-readable names.
var NodeSpecificNetworkConfig = []string{
"bridge.external_interfaces",
"parent",
}
NodeSpecificNetworkConfig lists all network config keys which are node-specific.
var StoragePoolNodeConfigKeys = []string{
"size",
"source",
"volatile.initial_source",
"zfs.pool_name",
"lvm.thinpool_name",
"lvm.vg_name",
}
StoragePoolNodeConfigKeys lists all storage pool config keys which are node-specific.
var StorageRemoteDriverNames func() []string
StorageRemoteDriverNames returns a list of remote storage driver names.
Functions ¶
func CreateInstanceConfig ¶
CreateInstanceConfig inserts a new config for the instance with the given ID.
func ExpandInstanceConfig ¶
ExpandInstanceConfig expands the given instance config with the config values of the given profiles.
func ExpandInstanceDevices ¶
func ExpandInstanceDevices(devices deviceConfig.Devices, profiles []api.Profile) deviceConfig.Devices
ExpandInstanceDevices expands the given instance devices with the devices defined in the given profiles.
func NetworkStateToAPIStatus ¶
func NetworkStateToAPIStatus(state NetworkState) string
NetworkStateToAPIStatus converts DB NetworkState to API status string.
func NewTestDqliteServer ¶
NewTestDqliteServer creates a new test dqlite server.
Return the directory backing the test server and a newly created server store that can be used to connect to it.
func OpenNode ¶
func OpenNode(dir string, fresh func(*Node) error, legacyPatches map[int]*LegacyPatch) (*Node, *Dump, error)
OpenNode creates a new Node object.
The fresh hook parameter is used by the daemon to mark all known patch names as applied when a brand new database is created.
The legacyPatches parameter is used as a mean to apply the legacy V10, V11, V15, V29 and V30 non-db updates during the database upgrade sequence, to avoid any change in semantics wrt the old logic (see PR #3322).
Return the newly created Node object, and a Dump of the pre-clustering data if we've migrating to a cluster-aware version.
func ProfileToAPI ¶
ProfileToAPI is a convenience to convert a Profile db struct into an API profile struct.
func StoragePoolStateToAPIStatus ¶
func StoragePoolStateToAPIStatus(state StoragePoolState) string
StoragePoolStateToAPIStatus converts DB StoragePoolState to API status string.
Types ¶
type Certificate ¶
type Certificate struct { ID int Fingerprint string `db:"primary=yes&comparison=like"` Type int Name string Certificate string Restricted bool Projects []string }
Certificate is here to pass the certificates content from the database around
func (*Certificate) ToAPI ¶
func (cert *Certificate) ToAPI() api.Certificate
ToAPI converts the database Certificate struct to an api.Certificate entry.
type CertificateFilter ¶
type CertificateFilter struct {
Fingerprint string // Matched with LIKE
}
CertificateFilter can be used to filter results yielded by GetCertInfos
type Cluster ¶
type Cluster struct {
// contains filtered or unexported fields
}
Cluster mediates access to LXD's data stored in the cluster dqlite database.
func ForLocalInspection ¶
ForLocalInspection is a aid for the hack in initializeDbObject, which sets the db-related Deamon attributes upfront, to be backward compatible with the legacy patches that need to interact with the database.
func ForLocalInspectionWithPreparedStmts ¶
ForLocalInspectionWithPreparedStmts is the same as ForLocalInspection but it also prepares the statements used in auto-generated database code.
func NewTestCluster ¶
NewTestCluster creates a new Cluster for testing purposes, along with a function that can be used to clean it up when done.
func OpenCluster ¶
func OpenCluster(name string, store driver.NodeStore, address, dir string, timeout time.Duration, dump *Dump, options ...driver.Option) (*Cluster, error)
OpenCluster creates a new Cluster object for interacting with the dqlite database.
- name: Basename of the database file holding the data. Typically "db.bin". - dialer: Function used to connect to the dqlite backend via gRPC SQL. - address: Network address of this node (or empty string). - dir: Base LXD database directory (e.g. /var/lib/lxd/database) - timeout: Give up trying to open the database after this amount of time. - dump: If not nil, a copy of 2.0 db data, for migrating to 3.0.
The address and api parameters will be used to determine if the cluster database matches our version, and possibly trigger a schema update. If the schema update can't be performed right now, because some nodes are still behind, an Upgrading error is returned.
func (*Cluster) AddImageToLocalNode ¶
AddImageToLocalNode creates a new entry in the images_nodes table for tracking that the local node has the given image.
func (*Cluster) CopyDefaultImageProfiles ¶
CopyDefaultImageProfiles copies default profiles from id to new_id.
func (*Cluster) CreateCertificate ¶
func (c *Cluster) CreateCertificate(cert Certificate) (int64, error)
CreateCertificate stores a CertInfo object in the db, it will ignore the ID field from the CertInfo.
func (*Cluster) CreateImage ¶
func (c *Cluster) CreateImage(project, fp string, fname string, sz int64, public bool, autoUpdate bool, architecture string, createdAt time.Time, expiresAt time.Time, properties map[string]string, typeName string) error
CreateImage creates a new image.
func (*Cluster) CreateImageAlias ¶
CreateImageAlias inserts an alias ento the database.
func (*Cluster) CreateImageSource ¶
func (c *Cluster) CreateImageSource(id int, server string, protocol string, certificate string, alias string) error
CreateImageSource inserts a new image source.
func (*Cluster) CreateInstanceBackup ¶
func (c *Cluster) CreateInstanceBackup(args InstanceBackup) error
CreateInstanceBackup creates a new backup.
func (*Cluster) CreateNetwork ¶
func (c *Cluster) CreateNetwork(projectName string, name string, description string, netType NetworkType, config map[string]string) (int64, error)
CreateNetwork creates a new network.
func (*Cluster) CreateNetworkACL ¶
CreateNetworkACL creates a new Network ACL.
func (*Cluster) CreateStoragePool ¶
func (c *Cluster) CreateStoragePool(poolName string, poolDescription string, poolDriver string, poolConfig map[string]string) (int64, error)
CreateStoragePool creates new storage pool.
func (*Cluster) CreateStoragePoolVolume ¶
func (c *Cluster) CreateStoragePoolVolume(project, volumeName, volumeDescription string, volumeType int, poolID int64, volumeConfig map[string]string, contentType int) (int64, error)
CreateStoragePoolVolume creates a new storage volume attached to a given storage pool.
func (*Cluster) CreateStoragePoolVolumeBackup ¶
func (c *Cluster) CreateStoragePoolVolumeBackup(args StoragePoolVolumeBackup) error
CreateStoragePoolVolumeBackup creates a new storage volume backup.
func (*Cluster) CreateStorageVolumeSnapshot ¶
func (c *Cluster) CreateStorageVolumeSnapshot(project, volumeName, volumeDescription string, volumeType int, poolID int64, volumeConfig map[string]string, expiryDate time.Time) (int64, error)
CreateStorageVolumeSnapshot creates a new storage volume snapshot attached to a given storage pool.
func (*Cluster) DB ¶
DB returns the low level database handle to the cluster database.
FIXME: this is used for compatibility with some legacy code, and should be
dropped once there are no call sites left.
func (*Cluster) DeleteCertificate ¶
DeleteCertificate deletes a certificate from the db.
func (*Cluster) DeleteImage ¶
DeleteImage deletes the image with the given ID.
func (*Cluster) DeleteImageAlias ¶
DeleteImageAlias deletes the alias with the given name.
func (*Cluster) DeleteInstance ¶
DeleteInstance removes the instance with the given name from the database.
func (*Cluster) DeleteInstanceBackup ¶
DeleteInstanceBackup removes the instance backup with the given name from the database.
func (*Cluster) DeleteInstanceConfigKey ¶
DeleteInstanceConfigKey removes the given key from the config of the instance with the given ID.
func (*Cluster) DeleteNetwork ¶
DeleteNetwork deletes the network with the given name.
func (*Cluster) DeleteNetworkACL ¶
DeleteNetworkACL deletes the Network ACL.
func (*Cluster) DeleteStoragePoolVolumeBackup ¶
DeleteStoragePoolVolumeBackup removes the storage volume backup with the given name from the database.
func (*Cluster) EnterExclusive ¶
EnterExclusive acquires a lock on the cluster db, so any successive call to Transaction will block until ExitExclusive has been called.
func (*Cluster) ExitExclusive ¶
ExitExclusive runs the given transaction and then releases the lock acquired with EnterExclusive.
func (*Cluster) FillMissingStoragePoolDriver ¶
FillMissingStoragePoolDriver fills the driver of all storage pools without a driver, setting it to 'zfs'.
func (*Cluster) GetCachedImageSourceFingerprint ¶
func (c *Cluster) GetCachedImageSourceFingerprint(server string, protocol string, alias string, typeName string, architecture int) (string, error)
GetCachedImageSourceFingerprint tries to find a source entry of a locally cached image that matches the given remote details (server, protocol and alias). Return the fingerprint linked to the matching entry, if any.
func (*Cluster) GetCertificate ¶
func (c *Cluster) GetCertificate(fingerprint string) (*Certificate, error)
GetCertificate gets an CertBaseInfo object from the database. The argument fingerprint will be queried with a LIKE query, means you can pass a shortform and will get the full fingerprint. There can never be more than one certificate with a given fingerprint, as it is enforced by a UNIQUE constraint in the schema.
func (*Cluster) GetCreatedNetworks ¶
GetCreatedNetworks returns the names of all networks that are in state networkCreated.
func (*Cluster) GetCreatedStoragePoolNames ¶
GetCreatedStoragePoolNames returns the names of all storage pools that are created.
func (*Cluster) GetExpiredImagesInProject ¶
GetExpiredImagesInProject returns the names of all images that have expired since the given time.
func (*Cluster) GetExpiredInstanceBackups ¶
func (c *Cluster) GetExpiredInstanceBackups() ([]InstanceBackup, error)
GetExpiredInstanceBackups returns a list of expired instance backups.
func (*Cluster) GetExpiredStorageVolumeSnapshots ¶
func (c *Cluster) GetExpiredStorageVolumeSnapshots() ([]StorageVolumeArgs, error)
GetExpiredStorageVolumeSnapshots returns a list of expired volume snapshots.
func (*Cluster) GetImage ¶
GetImage gets an Image object from the database.
The fingerprint argument will be queried with a LIKE query, means you can pass a shortform and will get the full fingerprint. However in case the shortform matches more than one image, an error will be returned.
func (*Cluster) GetImageAlias ¶
func (c *Cluster) GetImageAlias(project, name string, isTrustedClient bool) (int, api.ImageAliasesEntry, error)
GetImageAlias returns the alias with the given name in the given project.
func (*Cluster) GetImageAliases ¶
GetImageAliases returns the names of the aliases of all images.
func (*Cluster) GetImageFromAnyProject ¶
GetImageFromAnyProject returns an image matching the given fingerprint, if it exists in any project.
func (*Cluster) GetImagesFingerprints ¶
GetImagesFingerprints returns the names of all images (optionally only the public ones).
func (*Cluster) GetImagesOnLocalNode ¶
GetImagesOnLocalNode returns all images that the local LXD node has.
func (*Cluster) GetImagesOnNode ¶
GetImagesOnNode returns all images that the node with the given id has.
func (*Cluster) GetInstanceBackup ¶
func (c *Cluster) GetInstanceBackup(projectName string, name string) (InstanceBackup, error)
GetInstanceBackup returns the backup with the given name.
func (*Cluster) GetInstanceBackups ¶
GetInstanceBackups returns the names of all backups of the instance with the given name.
func (*Cluster) GetInstanceConfig ¶
GetInstanceConfig returns the value of the given key in the configuration of the instance with the given ID.
func (*Cluster) GetInstanceID ¶
GetInstanceID returns the ID of the instance with the given name.
func (*Cluster) GetInstancePool ¶
GetInstancePool returns the storage pool of a given instance.
This is a non-transactional variant of ClusterTx.GetInstancePool().
func (*Cluster) GetInstanceProjectAndName ¶
GetInstanceProjectAndName returns the project and the name of the instance with the given ID.
func (*Cluster) GetInstanceSnapshotID ¶
GetInstanceSnapshotID returns the ID of the snapshot with the given name.
func (*Cluster) GetInstanceSnapshotsNames ¶
GetInstanceSnapshotsNames returns the names of all snapshots of the instance in the given project with the given name.
func (*Cluster) GetInstancesWithProfile ¶
GetInstancesWithProfile gets the names of the instance associated with the profile with the given name in the given project.
func (*Cluster) GetLocalStoragePoolVolume ¶
func (c *Cluster) GetLocalStoragePoolVolume(project, volumeName string, volumeType int, poolID int64) (int64, *api.StorageVolume, error)
GetLocalStoragePoolVolume gets a single storage volume attached to a given storage pool of a given type, on the current node in the given project.
func (*Cluster) GetLocalStoragePoolVolumeSnapshotsWithType ¶
func (c *Cluster) GetLocalStoragePoolVolumeSnapshotsWithType(projectName string, volumeName string, volumeType int, poolID int64) ([]StorageVolumeArgs, error)
GetLocalStoragePoolVolumeSnapshotsWithType get all snapshots of a storage volume attached to a given storage pool of a given volume type, on the local node. Returns snapshots slice ordered by when they were created, oldest first.
func (*Cluster) GetLocalStoragePoolVolumes ¶
func (c *Cluster) GetLocalStoragePoolVolumes(project string, poolID int64, volumeTypes []int) ([]*api.StorageVolume, error)
GetLocalStoragePoolVolumes returns all storage volumes attached to a given storage pool on the current node. If there are no volumes, it returns an empty list as well as ErrNoSuchObject.
func (*Cluster) GetLocalStoragePoolVolumesWithType ¶
func (c *Cluster) GetLocalStoragePoolVolumesWithType(projectName string, volumeType int, poolID int64) ([]string, error)
GetLocalStoragePoolVolumesWithType returns all storage volumes attached to a given storage pool of a given volume type, on the current node.
func (*Cluster) GetNetworkACL ¶
GetNetworkACL returns the Network ACL with the given name in the given project.
func (*Cluster) GetNetworkACLIDsByNames ¶
GetNetworkACLIDsByNames returns a map of names to IDs of existing Network ACLs.
func (*Cluster) GetNetworkACLs ¶
GetNetworkACLs returns the names of existing Network ACLs.
func (*Cluster) GetNetworkInAnyState ¶
func (c *Cluster) GetNetworkInAnyState(project string, name string) (int64, *api.Network, map[int64]NetworkNode, error)
GetNetworkInAnyState returns the network with the given name. The network can be in any state.
func (*Cluster) GetNetworkWithInterface ¶
GetNetworkWithInterface returns the network associated with the interface with the given name.
func (*Cluster) GetNetworks ¶
GetNetworks returns the names of existing networks.
func (*Cluster) GetNextInstanceSnapshotIndex ¶
GetNextInstanceSnapshotIndex returns the index that the next snapshot of the instance with the given name and pattern should have.
func (*Cluster) GetNextStorageVolumeSnapshotIndex ¶
GetNextStorageVolumeSnapshotIndex returns the index of the next snapshot of the storage volume with the given name should have.
Note, the code below doesn't deal with snapshots of snapshots. To do that, we'll need to weed out based on # slashes in names
func (*Cluster) GetNodesWithImage ¶
GetNodesWithImage returns the addresses of online nodes which already have the image.
func (*Cluster) GetNodesWithoutImage ¶
GetNodesWithoutImage returns the addresses of online nodes which don't have the image.
func (*Cluster) GetPoolNamesFromIDs ¶
GetPoolNamesFromIDs get the names of the storage pools with the given IDs.
func (*Cluster) GetPoolsWithImage ¶
GetPoolsWithImage get the IDs of all storage pools on which a given image exists.
func (*Cluster) GetProfile ¶
GetProfile returns the profile with the given name.
func (*Cluster) GetProfileNames ¶
GetProfileNames returns the names of all profiles in the given project.
func (*Cluster) GetProfiles ¶
GetProfiles returns the profiles with the given names in the given project.
func (*Cluster) GetProject ¶
GetProject returns the project with the given key.
func (*Cluster) GetStoragePool ¶
func (c *Cluster) GetStoragePool(poolName string) (int64, *api.StoragePool, map[int64]StoragePoolNode, error)
GetStoragePool returns a single storage pool.
The pool must be in the created stated, not pending.
func (*Cluster) GetStoragePoolDrivers ¶
GetStoragePoolDrivers returns the names of all storage drivers currently being used by at least one storage pool.
func (*Cluster) GetStoragePoolID ¶
GetStoragePoolID returns the id of a single storage pool.
func (*Cluster) GetStoragePoolInAnyState ¶
func (c *Cluster) GetStoragePoolInAnyState(name string) (int64, *api.StoragePool, map[int64]StoragePoolNode, error)
GetStoragePoolInAnyState returns the storage pool with the given name.
The pool can be in any state.
func (*Cluster) GetStoragePoolNames ¶
GetStoragePoolNames returns the names of all storage pools.
func (*Cluster) GetStoragePoolNodeVolumeID ¶
func (c *Cluster) GetStoragePoolNodeVolumeID(projectName string, volumeName string, volumeType int, poolID int64) (int64, error)
GetStoragePoolNodeVolumeID gets the ID of a storage volume on a given storage pool of a given storage volume type and project, on the current node.
func (*Cluster) GetStoragePoolVolumeBackup ¶
func (c *Cluster) GetStoragePoolVolumeBackup(projectName string, poolName string, backupName string) (StoragePoolVolumeBackup, error)
GetStoragePoolVolumeBackup returns the volume backup with the given name.
func (*Cluster) GetStoragePoolVolumeBackups ¶
func (c *Cluster) GetStoragePoolVolumeBackups(projectName string, volumeName string, poolID int64) ([]StoragePoolVolumeBackup, error)
GetStoragePoolVolumeBackups returns a list of volume backups.
func (*Cluster) GetStoragePoolVolumeBackupsNames ¶
func (c *Cluster) GetStoragePoolVolumeBackupsNames(projectName string, volumeName string, poolID int64) ([]string, error)
GetStoragePoolVolumeBackupsNames returns the names of all backups of the storage volume with the given name.
func (*Cluster) GetStoragePoolVolumes ¶
func (c *Cluster) GetStoragePoolVolumes(project string, poolID int64, volumeTypes []int) ([]*api.StorageVolume, error)
GetStoragePoolVolumes returns all storage volumes attached to a given storage pool on any node. If there are no volumes, it returns an empty list and no error.
func (*Cluster) GetStoragePoolVolumesNames ¶
GetStoragePoolVolumesNames gets the names of all storage volumes attached to a given storage pool.
func (*Cluster) GetStoragePoolVolumesWithType ¶
func (c *Cluster) GetStoragePoolVolumesWithType(volumeType int) ([]StorageVolumeArgs, error)
GetStoragePoolVolumesWithType return a list of all volumes of the given type.
func (*Cluster) GetStorageVolumeDescription ¶
GetStorageVolumeDescription gets the description of a storage volume.
func (*Cluster) GetStorageVolumeSnapshotExpiry ¶
GetStorageVolumeSnapshotExpiry gets the expiry date of a storage volume snapshot.
func (*Cluster) GetStorageVolumeSnapshotsNames ¶
GetStorageVolumeSnapshotsNames gets the snapshot names of a storage volume.
func (*Cluster) ImageExists ¶
ImageExists returns whether an image with the given fingerprint exists.
func (*Cluster) ImageIsReferencedByOtherProjects ¶
func (c *Cluster) ImageIsReferencedByOtherProjects(project string, fingerprint string) (bool, error)
ImageIsReferencedByOtherProjects returns true if the image with the given fingerprint is referenced by projects other than the given one.
func (*Cluster) InitImageLastUseDate ¶
InitImageLastUseDate inits the last_use_date field of the image with the given fingerprint.
func (*Cluster) InstanceList ¶
func (c *Cluster) InstanceList(filter *InstanceFilter, instanceFunc func(inst Instance, project api.Project, profiles []api.Profile) error) error
InstanceList loads all instances across all projects and for each instance runs the instanceFunc passing in the instance and it's project and profiles. Accepts optional filter argument to specify a subset of instances.
func (*Cluster) IsRemoteStorage ¶
IsRemoteStorage return whether a given pool is backed by remote storage.
func (*Cluster) Kill ¶
func (c *Cluster) Kill()
Kill should be called upon shutdown, it will prevent retrying failed database queries.
func (*Cluster) LegacyContainersList ¶
LegacyContainersList returns the names of all the containers.
NOTE: this is a pre-projects legacy API that is used only by patches. Don't use it for new code.
func (*Cluster) LegacySnapshotsList ¶
LegacySnapshotsList returns the names of all the snapshots.
NOTE: this is a pre-projects legacy API that is used only by patches. Don't use it for new code.
func (*Cluster) LocateImage ¶
LocateImage returns the address of an online node that has a local copy of the given image, or an empty string if the image is already available on this node.
If the image is not available on any online node, an error is returned.
func (*Cluster) MoveImageAlias ¶
MoveImageAlias changes the image ID associated with an alias.
func (*Cluster) NetworkNodes ¶
func (c *Cluster) NetworkNodes(networkID int64) (map[int64]NetworkNode, error)
NetworkNodes returns the nodes keyed by node ID that the given network is defined on.
func (*Cluster) NodeID ¶
NodeID sets the the node NodeID associated with this cluster instance. It's used for backward-compatibility of all db-related APIs that were written before clustering and don't accept a node NodeID, so in those cases we automatically use this value as implicit node NodeID.
func (*Cluster) RemoveStoragePool ¶
func (c *Cluster) RemoveStoragePool(poolName string) (*api.StoragePool, error)
RemoveStoragePool deletes storage pool.
func (*Cluster) RemoveStoragePoolVolume ¶
func (c *Cluster) RemoveStoragePoolVolume(project, volumeName string, volumeType int, poolID int64) error
RemoveStoragePoolVolume deletes the storage volume attached to a given storage pool.
func (*Cluster) RemoveStorageVolumeImages ¶
RemoveStorageVolumeImages removes the volumes associated with the images with the given fingerprints.
func (*Cluster) RemoveUnreferencedProfiles ¶
RemoveUnreferencedProfiles removes unreferenced profiles.
func (*Cluster) RenameImageAlias ¶
RenameImageAlias renames the alias with the given ID.
func (*Cluster) RenameInstanceBackup ¶
RenameInstanceBackup renames an instance backup from the given current name to the new one.
func (*Cluster) RenameNetwork ¶
RenameNetwork renames a network.
func (*Cluster) RenameNetworkACL ¶
RenameNetworkACL renames a Network ACL.
func (*Cluster) RenameStoragePoolVolume ¶
func (c *Cluster) RenameStoragePoolVolume(project, oldVolumeName string, newVolumeName string, volumeType int, poolID int64) error
RenameStoragePoolVolume renames the storage volume attached to a given storage pool.
func (*Cluster) RenameVolumeBackup ¶
RenameVolumeBackup renames a volume backup from the given current name to the new one.
func (*Cluster) ResetInstancesPowerState ¶
ResetInstancesPowerState resets the power state of all instances.
func (*Cluster) Transaction ¶
Transaction creates a new ClusterTx object and transactionally executes the cluster database interactions invoked by the given function. If the function returns no error, all database changes are committed to the cluster database database, otherwise they are rolled back.
If EnterExclusive has been called before, calling Transaction will block until ExitExclusive has been called as well to release the lock.
func (*Cluster) UpdateCertificate ¶
func (c *Cluster) UpdateCertificate(fingerprint string, cert Certificate) error
UpdateCertificate updates a certificate in the db.
func (*Cluster) UpdateCertificateProjects ¶
UpdateCertificateProjects updates the list of projects on a certificate.
func (*Cluster) UpdateImage ¶
func (c *Cluster) UpdateImage(id int, fname string, sz int64, public bool, autoUpdate bool, architecture string, createdAt time.Time, expiresAt time.Time, properties map[string]string, project string, profileIds []int64) error
UpdateImage updates the image with the given ID.
func (*Cluster) UpdateImageAlias ¶
UpdateImageAlias updates the alias with the given ID.
func (*Cluster) UpdateImageLastUseDate ¶
UpdateImageLastUseDate updates the last_use_date field of the image with the given fingerprint.
func (*Cluster) UpdateImageUploadDate ¶
UpdateImageUploadDate updates the upload_date column and an image row.
func (*Cluster) UpdateInstancePowerState ¶
UpdateInstancePowerState sets the the power state of the instance with the given ID.
func (*Cluster) UpdateInstanceSnapshotCreationDate ¶
UpdateInstanceSnapshotCreationDate updates the creation_date field of the instance snapshot with ID.
func (*Cluster) UpdateInstanceStatefulFlag ¶
UpdateInstanceStatefulFlag toggles the stateful flag of the instance with the given ID.
func (*Cluster) UpdateNetwork ¶
func (c *Cluster) UpdateNetwork(project string, name, description string, config map[string]string) error
UpdateNetwork updates the network with the given name.
func (*Cluster) UpdateNetworkACL ¶
func (c *Cluster) UpdateNetworkACL(id int64, config *api.NetworkACLPut) error
UpdateNetworkACL updates the Network ACL with the given ID.
func (*Cluster) UpdateStoragePool ¶
func (c *Cluster) UpdateStoragePool(poolName, description string, poolConfig map[string]string) error
UpdateStoragePool updates a storage pool.
func (*Cluster) UpdateStoragePoolVolume ¶
func (c *Cluster) UpdateStoragePoolVolume(project, volumeName string, volumeType int, poolID int64, volumeDescription string, volumeConfig map[string]string) error
UpdateStoragePoolVolume updates the storage volume attached to a given storage pool.
func (*Cluster) UpdateStorageVolumeSnapshot ¶
func (c *Cluster) UpdateStorageVolumeSnapshot(project, volumeName string, volumeType int, poolID int64, volumeDescription string, volumeConfig map[string]string, expiryDate time.Time) error
UpdateStorageVolumeSnapshot updates the storage volume snapshot attached to a given storage pool.
func (*Cluster) UpgradeStorageVolumConfigToLVMThinPoolNameKey ¶
UpgradeStorageVolumConfigToLVMThinPoolNameKey upgrades the config keys of LVM volumes.
type ClusterRole ¶
type ClusterRole string
ClusterRole represents the role of a member in a cluster.
type ClusterTx ¶
type ClusterTx struct {
// contains filtered or unexported fields
}
ClusterTx models a single interaction with a LXD cluster database.
It wraps low-level sql.Tx objects and offers a high-level API to fetch and update data.
func NewTestClusterTx ¶
NewTestClusterTx returns a fresh ClusterTx object, along with a function that can be called to cleanup state when done with it.
func (*ClusterTx) CertificateExists ¶
CertificateExists checks if a certificate with the given key exists.
func (*ClusterTx) CertificateProjectsRef ¶
func (c *ClusterTx) CertificateProjectsRef(filter CertificateFilter) (map[string][]string, error)
CertificateProjectsRef returns entities used by certificates.
func (*ClusterTx) CreateCertificate ¶
func (c *ClusterTx) CreateCertificate(object Certificate) (int64, error)
CreateCertificate adds a new certificate to the database.
func (*ClusterTx) CreateInstance ¶
CreateInstance adds a new instance to the database.
func (*ClusterTx) CreateInstanceConfig ¶
CreateInstanceConfig inserts a new config for the container with the given ID.
func (*ClusterTx) CreateInstanceSnapshot ¶
func (c *ClusterTx) CreateInstanceSnapshot(object InstanceSnapshot) (int64, error)
CreateInstanceSnapshot adds a new instance_snapshot to the database.
func (*ClusterTx) CreateNetworkConfig ¶
CreateNetworkConfig adds a new entry in the networks_config table
func (*ClusterTx) CreateNode ¶
CreateNode adds a node to the current list of LXD nodes that are part of the cluster. The node's architecture will be the architecture of the machine the method is being run on. It returns the ID of the newly inserted row.
func (*ClusterTx) CreateNodeRole ¶
func (c *ClusterTx) CreateNodeRole(id int64, role ClusterRole) error
CreateNodeRole adds a role to the node.
func (*ClusterTx) CreateNodeWithArch ¶
CreateNodeWithArch is the same as NodeAdd, but lets setting the node architecture explicitly.
func (*ClusterTx) CreateOperation ¶
func (c *ClusterTx) CreateOperation(project, uuid string, typ OperationType) (int64, error)
CreateOperation adds a new operations to the table.
func (*ClusterTx) CreatePendingNetwork ¶
func (c *ClusterTx) CreatePendingNetwork(node string, projectName string, name string, netType NetworkType, conf map[string]string) error
CreatePendingNetwork creates a new pending network on the node with the given name.
func (*ClusterTx) CreatePendingStoragePool ¶
func (c *ClusterTx) CreatePendingStoragePool(node, name, driver string, conf map[string]string) error
CreatePendingStoragePool creates a new pending storage pool on the node with the given name.
func (*ClusterTx) CreateProfile ¶
CreateProfile adds a new profile to the database.
func (*ClusterTx) CreateProject ¶
func (c *ClusterTx) CreateProject(object api.ProjectsPost) (int64, error)
CreateProject adds a new project to the database.
func (*ClusterTx) CreateStoragePoolConfig ¶
CreateStoragePoolConfig adds a new entry in the storage_pools_config table
func (*ClusterTx) DeleteCertificate ¶
DeleteCertificate deletes the certificate matching the given key parameters.
func (*ClusterTx) DeleteInstance ¶
DeleteInstance deletes the instance matching the given key parameters.
func (*ClusterTx) DeleteInstanceConfigKey ¶
DeleteInstanceConfigKey removes the given key from the config of the instance with the given ID.
func (*ClusterTx) DeleteInstanceSnapshot ¶
DeleteInstanceSnapshot deletes the instance_snapshot matching the given key parameters.
func (*ClusterTx) DeleteProfile ¶
DeleteProfile deletes the profile matching the given key parameters.
func (*ClusterTx) DeleteProject ¶
DeleteProject deletes the project matching the given key parameters.
func (*ClusterTx) GetCertificate ¶
func (c *ClusterTx) GetCertificate(fingerprint string) (*Certificate, error)
GetCertificate returns the certificate with the given key.
func (*ClusterTx) GetCertificateID ¶
GetCertificateID return the ID of the certificate with the given key.
func (*ClusterTx) GetCertificates ¶
func (c *ClusterTx) GetCertificates(filter CertificateFilter) ([]Certificate, error)
GetCertificates returns all available certificates.
func (*ClusterTx) GetCreatedNetworks ¶
GetCreatedNetworks returns a map of api.Network associated to project and network ID. Only networks that have are in state networkCreated are returned.
func (*ClusterTx) GetCustomVolumesInProject ¶
func (c *ClusterTx) GetCustomVolumesInProject(project string) ([]StorageVolumeArgs, error)
GetCustomVolumesInProject returns all custom volumes in the given project.
func (*ClusterTx) GetFailureDomainsNames ¶
GetFailureDomainsNames return a map associating failure domain IDs to their names.
func (*ClusterTx) GetImageSource ¶
GetImageSource returns the image source with the given ID.
func (*ClusterTx) GetImages ¶
func (c *ClusterTx) GetImages(filter ImageFilter) ([]Image, error)
GetImages returns all available images.
func (*ClusterTx) GetInstance ¶
GetInstance returns the instance with the given key.
func (*ClusterTx) GetInstanceID ¶
GetInstanceID return the ID of the instance with the given key.
func (*ClusterTx) GetInstanceNames ¶
GetInstanceNames returns the names of all containers the given project.
func (*ClusterTx) GetInstanceNamesByNodeAddress ¶
func (c *ClusterTx) GetInstanceNamesByNodeAddress(project string, instanceType instancetype.Type) (map[string][]string, error)
GetInstanceNamesByNodeAddress returns the names of all containers grouped by cluster node address.
The node address of containers running on the local node is set to the empty string, to distinguish it from remote nodes.
Containers whose node is down are addeded to the special address "0.0.0.0".
func (*ClusterTx) GetInstancePool ¶
GetInstancePool returns the storage pool of a given instance (or snapshot).
func (*ClusterTx) GetInstanceSnapshot ¶
func (c *ClusterTx) GetInstanceSnapshot(project string, instance string, name string) (*InstanceSnapshot, error)
GetInstanceSnapshot returns the instance_snapshot with the given key.
func (*ClusterTx) GetInstanceSnapshotID ¶
func (c *ClusterTx) GetInstanceSnapshotID(project string, instance string, name string) (int64, error)
GetInstanceSnapshotID return the ID of the instance_snapshot with the given key.
func (*ClusterTx) GetInstanceSnapshots ¶
func (c *ClusterTx) GetInstanceSnapshots(filter InstanceSnapshotFilter) ([]InstanceSnapshot, error)
GetInstanceSnapshots returns all available instance_snapshots.
func (*ClusterTx) GetInstanceSnapshotsWithName ¶
GetInstanceSnapshotsWithName returns all snapshots of a given instance.
func (*ClusterTx) GetInstanceToNodeMap ¶
func (c *ClusterTx) GetInstanceToNodeMap(project string, instanceType instancetype.Type) (map[string]string, error)
GetInstanceToNodeMap returns a map associating the name of each instance in the given project to the name of the node hosting the instance.
func (*ClusterTx) GetInstances ¶
func (c *ClusterTx) GetInstances(filter InstanceFilter) ([]Instance, error)
GetInstances returns all available instances.
func (*ClusterTx) GetLocalImagesFingerprints ¶
GetLocalImagesFingerprints returns the fingerprints of all local images.
func (*ClusterTx) GetLocalInstancesInProject ¶
func (c *ClusterTx) GetLocalInstancesInProject(projectName string, instanceType instancetype.Type) ([]Instance, error)
GetLocalInstancesInProject retuurns all instances of the given type on the local node within the given project. If projectName is empty then all instances in all projects are returned.
func (*ClusterTx) GetLocalNodeAddress ¶
GetLocalNodeAddress returns the address of the node this method is invoked on.
func (*ClusterTx) GetLocalNodeName ¶
GetLocalNodeName returns the name of the node this method is invoked on.
func (*ClusterTx) GetLocalOperations ¶
GetLocalOperations returns all operations associated with this node.
func (*ClusterTx) GetLocalOperationsUUIDs ¶
GetLocalOperationsUUIDs returns the UUIDs of all operations associated with this node.
func (*ClusterTx) GetNetworkID ¶
GetNetworkID returns the ID of the network with the given name.
func (*ClusterTx) GetNetworksLocalConfig ¶
GetNetworksLocalConfig returns a map associating each network name to its node-specific config values on the local node (i.e. the ones where node_id equals the ID of the local node).
func (*ClusterTx) GetNodeAddressOfInstance ¶
func (c *ClusterTx) GetNodeAddressOfInstance(project string, name string, instanceType instancetype.Type) (string, error)
GetNodeAddressOfInstance returns the address of the node hosting the instance with the given name in the given project.
It returns the empty string if the container is hosted on this node.
func (*ClusterTx) GetNodeByAddress ¶
GetNodeByAddress returns the node with the given network address.
func (*ClusterTx) GetNodeByName ¶
GetNodeByName returns the node with the given name.
func (*ClusterTx) GetNodeFailureDomain ¶
GetNodeFailureDomain returns the failure domain associated with the node with the given ID.
func (*ClusterTx) GetNodeOfflineThreshold ¶
GetNodeOfflineThreshold returns the amount of time that needs to elapse after which a series of unsuccessful heartbeat will make the node be considered offline.
func (*ClusterTx) GetNodeWithLeastInstances ¶
GetNodeWithLeastInstances returns the name of the non-offline node with with the least number of containers (either already created or being created with an operation). If archs is not empty, then return only nodes with an architecture in that list.
func (*ClusterTx) GetNodes ¶
GetNodes returns all LXD nodes part of the cluster.
If this LXD instance is not clustered, a list with a single node whose address is 0.0.0.0 is returned.
func (*ClusterTx) GetNodesCount ¶
GetNodesCount returns the number of nodes in the LXD cluster.
Since there's always at least one node row, even when not-clustered, the return value is greater than zero
func (*ClusterTx) GetNodesFailureDomains ¶
GetNodesFailureDomains returns a map associating each node address with its failure domain code.
func (*ClusterTx) GetNodesWithRunningOperations ¶
GetNodesWithRunningOperations returns a list of nodes that have running operations
func (*ClusterTx) GetNonPendingNetworkIDs ¶
GetNonPendingNetworkIDs returns a map associating each network name to its ID.
Pending networks are skipped.
func (*ClusterTx) GetNonPendingStoragePoolsNamesToIDs ¶
GetNonPendingStoragePoolsNamesToIDs returns a map associating each storage pool name to its ID.
Pending storage pools are skipped.
func (*ClusterTx) GetOperationByUUID ¶
GetOperationByUUID returns the operation with the given UUID.
func (*ClusterTx) GetPendingNodeByAddress ¶
GetPendingNodeByAddress returns the pending node with the given network address.
func (*ClusterTx) GetProfile ¶
GetProfile returns the profile with the given key.
func (*ClusterTx) GetProfileID ¶
GetProfileID return the ID of the profile with the given key.
func (*ClusterTx) GetProfileURIs ¶
func (c *ClusterTx) GetProfileURIs(filter ProfileFilter) ([]string, error)
GetProfileURIs returns all available profile URIs.
func (*ClusterTx) GetProfiles ¶
func (c *ClusterTx) GetProfiles(filter ProfileFilter) ([]Profile, error)
GetProfiles returns all available profiles.
func (*ClusterTx) GetProject ¶
GetProject returns the project with the given key.
func (*ClusterTx) GetProjectID ¶
GetProjectID return the ID of the project with the given key.
func (*ClusterTx) GetProjectIDsToNames ¶
GetProjectIDsToNames returns a map associating each project ID to its project name.
func (*ClusterTx) GetProjectNames ¶
GetProjectNames returns the names of all available projects.
func (*ClusterTx) GetProjectURIs ¶
func (c *ClusterTx) GetProjectURIs(filter ProjectFilter) ([]string, error)
GetProjectURIs returns all available project URIs.
func (*ClusterTx) GetProjects ¶
func (c *ClusterTx) GetProjects(filter ProjectFilter) ([]api.Project, error)
GetProjects returns all available projects.
func (*ClusterTx) GetStoragePoolDriver ¶
GetStoragePoolDriver returns the driver of the pool with the given ID.
func (*ClusterTx) GetStoragePoolID ¶
GetStoragePoolID returns the ID of the pool with the given name.
func (*ClusterTx) GetStoragePoolNodeConfigs ¶
GetStoragePoolNodeConfigs returns the node-specific configuration of all nodes grouped by node name, for the given poolID.
If the storage pool is not defined on all nodes, an error is returned.
func (*ClusterTx) GetStoragePoolUsedBy ¶
GetStoragePoolUsedBy looks up all users of a storage pool.
func (*ClusterTx) GetStoragePoolsLocalConfig ¶
GetStoragePoolsLocalConfig returns a map associating each storage pool name to its node-specific config values (i.e. the ones where node_id is not NULL).
func (*ClusterTx) GetStorageVolumeNodes ¶
func (c *ClusterTx) GetStorageVolumeNodes(poolID int64, projectName string, volumeName string, volumeType int) ([]NodeInfo, error)
GetStorageVolumeNodes returns the node info of all nodes on which the volume with the given name is defined. The volume name can be either a regular name or a volume snapshot name. If the volume is defined, but without a specific node, then the ErrNoClusterMember error is returned. If the volume is not found then the ErrNoSuchObject error is returned.
func (*ClusterTx) InitProjectWithoutImages ¶
InitProjectWithoutImages updates populates the images_profiles table with all images from the default project when a project is created with features.images=false.
func (*ClusterTx) InstanceConfigRef ¶
func (c *ClusterTx) InstanceConfigRef(filter InstanceFilter) (map[string]map[string]map[string]string, error)
InstanceConfigRef returns entities used by instances.
func (*ClusterTx) InstanceDevicesRef ¶
func (c *ClusterTx) InstanceDevicesRef(filter InstanceFilter) (map[string]map[string]map[string]map[string]string, error)
InstanceDevicesRef returns entities used by instances.
func (*ClusterTx) InstanceExists ¶
InstanceExists checks if a instance with the given key exists.
func (*ClusterTx) InstanceProfilesRef ¶
func (c *ClusterTx) InstanceProfilesRef(filter InstanceFilter) (map[string]map[string][]string, error)
InstanceProfilesRef returns entities used by instances.
func (*ClusterTx) InstanceSnapshotConfigRef ¶
func (c *ClusterTx) InstanceSnapshotConfigRef(filter InstanceSnapshotFilter) (map[string]map[string]map[string]map[string]string, error)
InstanceSnapshotConfigRef returns entities used by instance_snapshots.
func (*ClusterTx) InstanceSnapshotDevicesRef ¶
func (c *ClusterTx) InstanceSnapshotDevicesRef(filter InstanceSnapshotFilter) (map[string]map[string]map[string]map[string]map[string]string, error)
InstanceSnapshotDevicesRef returns entities used by instance_snapshots.
func (*ClusterTx) InstanceSnapshotExists ¶
func (c *ClusterTx) InstanceSnapshotExists(project string, instance string, name string) (bool, error)
InstanceSnapshotExists checks if a instance_snapshot with the given key exists.
func (*ClusterTx) NetworkCreated ¶
NetworkCreated sets the state of the given network to networkCreated.
func (*ClusterTx) NetworkErrored ¶
NetworkErrored sets the state of the given network to networkErrored.
func (*ClusterTx) NetworkNodeConfigs ¶
NetworkNodeConfigs returns the node-specific configuration of all nodes grouped by node name, for the given networkID.
If the network is not defined on all nodes, an error is returned.
func (*ClusterTx) NetworkNodeCreated ¶
NetworkNodeCreated sets the state of the given network for the local member to networkCreated.
func (*ClusterTx) NetworkNodeJoin ¶
NetworkNodeJoin adds a new entry in the networks_nodes table.
It should only be used when a new node joins the cluster, when it's safe to assume that the relevant network has already been created on the joining node, and we just need to track it.
func (*ClusterTx) NetworkNodes ¶
func (c *ClusterTx) NetworkNodes(networkID int64) (map[int64]NetworkNode, error)
NetworkNodes returns the nodes keyed by node ID that the given network is defined on.
func (*ClusterTx) NodeID ¶
NodeID sets the the node NodeID associated with this cluster transaction.
func (*ClusterTx) NodeIsEmpty ¶
NodeIsEmpty returns an empty string if the node with the given ID has no containers or images associated with it. Otherwise, it returns a message say what's left.
func (*ClusterTx) NodeIsOutdated ¶
NodeIsOutdated returns true if there's some cluster node having an API or schema version greater than the node this method is invoked on.
func (*ClusterTx) ProfileConfigRef ¶
func (c *ClusterTx) ProfileConfigRef(filter ProfileFilter) (map[string]map[string]map[string]string, error)
ProfileConfigRef returns entities used by profiles.
func (*ClusterTx) ProfileDevicesRef ¶
func (c *ClusterTx) ProfileDevicesRef(filter ProfileFilter) (map[string]map[string]map[string]map[string]string, error)
ProfileDevicesRef returns entities used by profiles.
func (*ClusterTx) ProfileExists ¶
ProfileExists checks if a profile with the given key exists.
func (*ClusterTx) ProfileUsedByRef ¶
ProfileUsedByRef returns entities used by profiles.
func (*ClusterTx) ProjectConfigRef ¶
ProjectConfigRef returns entities used by projects.
func (*ClusterTx) ProjectExists ¶
ProjectExists checks if a project with the given key exists.
func (*ClusterTx) ProjectHasImages ¶
ProjectHasImages is a helper to check if a project has the images feature enabled.
func (*ClusterTx) ProjectHasProfiles ¶
ProjectHasProfiles is a helper to check if a project has the profiles feature enabled.
func (*ClusterTx) ProjectUsedByRef ¶
func (c *ClusterTx) ProjectUsedByRef(filter ProjectFilter) (map[string][]string, error)
ProjectUsedByRef returns entities used by projects.
func (*ClusterTx) RemoveNode ¶
RemoveNode removes the node with the given id.
func (*ClusterTx) RemoveNodeRole ¶
func (c *ClusterTx) RemoveNodeRole(id int64, role ClusterRole) error
RemoveNodeRole removes a role from the node.
func (*ClusterTx) RemoveOperation ¶
RemoveOperation removes the operation with the given UUID.
func (*ClusterTx) RenameInstance ¶
RenameInstance renames the instance matching the given key parameters.
func (*ClusterTx) RenameInstanceSnapshot ¶
func (c *ClusterTx) RenameInstanceSnapshot(project string, instance string, name string, to string) error
RenameInstanceSnapshot renames the instance_snapshot matching the given key parameters.
func (*ClusterTx) RenameNode ¶
RenameNode changes the name of an existing node.
Return an error if a node with the same name already exists.
func (*ClusterTx) RenameProfile ¶
RenameProfile renames the profile matching the given key parameters.
func (*ClusterTx) RenameProject ¶
RenameProject renames the project matching the given key parameters.
func (*ClusterTx) SetNodeHeartbeat ¶
SetNodeHeartbeat updates the heartbeat column of the node with the given address.
func (*ClusterTx) SetNodePendingFlag ¶
SetNodePendingFlag toggles the pending flag for the node. A node is pending when it's been accepted in the cluster, but has not yet actually joined it.
func (*ClusterTx) SetNodeVersion ¶
SetNodeVersion updates the schema and API version of the node with the given id. This is used only in tests.
func (*ClusterTx) StoragePoolCreated ¶
StoragePoolCreated sets the state of the given pool to storagePoolCreated.
func (*ClusterTx) StoragePoolErrored ¶
StoragePoolErrored sets the state of the given pool to storagePoolErrored.
func (*ClusterTx) StoragePoolNodeCreated ¶
StoragePoolNodeCreated sets the state of the given storage pool for the local member to storagePoolCreated.
func (*ClusterTx) UpdateCephStoragePoolAfterNodeJoin ¶
UpdateCephStoragePoolAfterNodeJoin updates internal state to reflect that nodeID is joining a cluster where poolID is a ceph pool.
func (*ClusterTx) UpdateCertificate ¶
func (c *ClusterTx) UpdateCertificate(fingerprint string, object Certificate) error
UpdateCertificate updates the certificate matching the given key parameters.
func (*ClusterTx) UpdateCertificateProjects ¶
UpdateCertificateProjects updates the list of projects on a certificate.
func (*ClusterTx) UpdateConfig ¶
UpdateConfig updates the given LXD cluster configuration keys in the config table. Config keys set to empty values will be deleted.
func (*ClusterTx) UpdateInstance ¶
UpdateInstance updates the instance matching the given key parameters.
func (*ClusterTx) UpdateInstanceConfig ¶
UpdateInstanceConfig inserts/updates/deletes the provided keys
func (*ClusterTx) UpdateInstanceLastUsedDate ¶
UpdateInstanceLastUsedDate updates the last_use_date field of the instance with the given ID.
func (*ClusterTx) UpdateInstanceNode ¶
UpdateInstanceNode changes the node hosting an instance.
It's meant to be used when moving a non-running instance backed by ceph from one cluster node to another.
func (*ClusterTx) UpdateInstancePowerState ¶
UpdateInstancePowerState sets the the power state of the container with the given ID.
func (*ClusterTx) UpdateInstanceSnapshot ¶
UpdateInstanceSnapshot updates the description and expiry date of the instance snapshot with the given ID.
func (*ClusterTx) UpdateInstanceSnapshotConfig ¶
UpdateInstanceSnapshotConfig inserts/updates/deletes the provided config keys.
func (*ClusterTx) UpdateNetwork ¶
UpdateNetwork updates the network with the given ID.
func (*ClusterTx) UpdateNode ¶
UpdateNode updates the name an address of a node.
func (*ClusterTx) UpdateNodeFailureDomain ¶
UpdateNodeFailureDomain changes the failure domain of a node.
func (*ClusterTx) UpdateNodeRoles ¶
func (c *ClusterTx) UpdateNodeRoles(id int64, roles []ClusterRole) error
UpdateNodeRoles changes the list of roles on a member.
func (*ClusterTx) UpdateProfile ¶
UpdateProfile updates the profile matching the given key parameters.
func (*ClusterTx) UpdateProject ¶
func (c *ClusterTx) UpdateProject(name string, object api.ProjectPut) error
UpdateProject updates the project matching the given key parameters.
func (*ClusterTx) UpdateStoragePoolAfterNodeJoin ¶
UpdateStoragePoolAfterNodeJoin adds a new entry in the storage_pools_nodes table.
It should only be used when a new node joins the cluster, when it's safe to assume that the relevant pool has already been created on the joining node, and we just need to track it.
type Dump ¶
type Dump struct { // Map table names to the names or their columns. Schema map[string][]string // Map a table name to all the rows it contains. Each row is a slice // of interfaces. Data map[string][][]interface{} }
Dump is a dump of all the user data in the local db prior the migration to the cluster db.
func LoadPreClusteringData ¶
LoadPreClusteringData loads all the data that before the introduction of LXD clustering used to live in the node-level database.
This is used for performing a one-off data migration when a LXD instance is upgraded from a version without clustering to a version that supports clustering, since in those version all data lives in the cluster database (regardless of whether clustering is actually on or off).
type Image ¶
type Image struct { ID int Project string `db:"primary=yes&join=projects.name"` Fingerprint string `db:"primary=yes&comparison=like"` Type int Filename string Size int64 Public bool Architecture int CreationDate time.Time ExpiryDate time.Time UploadDate time.Time Cached bool LastUseDate time.Time AutoUpdate bool }
Image is a value object holding db-related details about an image.
type ImageFilter ¶
type ImageFilter struct { Project string Fingerprint string // Matched with LIKE Public bool Cached bool }
ImageFilter can be used to filter results yielded by GetImages.
type Instance ¶
type Instance struct { ID int Project string `db:"primary=yes&join=projects.name"` Name string `db:"primary=yes"` Node string `db:"join=nodes.name"` Type instancetype.Type Snapshot bool `db:"ignore"` Architecture int Ephemeral bool CreationDate time.Time Stateful bool LastUseDate time.Time Description string `db:"coalesce=''"` Config map[string]string Devices map[string]map[string]string Profiles []string ExpiryDate time.Time }
Instance is a value object holding db-related details about an instance.
func InstanceSnapshotToInstance ¶
func InstanceSnapshotToInstance(instance *Instance, snapshot *InstanceSnapshot) Instance
InstanceSnapshotToInstance is a temporary convenience function to merge together an Instance struct and a SnapshotInstance struct into into a the legacy Instance struct for a snapshot.
type InstanceArgs ¶
type InstanceArgs struct { // Don't set manually ID int Node string Type instancetype.Type Snapshot bool // Creation only Project string BaseImage string CreationDate time.Time Architecture int Config map[string]string Description string Devices deviceConfig.Devices Ephemeral bool LastUsedDate time.Time Name string Profiles []string Stateful bool ExpiryDate time.Time }
InstanceArgs is a value object holding all db-related details about an instance.
func InstanceToArgs ¶
func InstanceToArgs(inst *Instance) InstanceArgs
InstanceToArgs is a convenience to convert an Instance db struct into the legacy InstanceArgs.
type InstanceBackup ¶
type InstanceBackup struct { ID int InstanceID int Name string CreationDate time.Time ExpiryDate time.Time InstanceOnly bool OptimizedStorage bool CompressionAlgorithm string }
InstanceBackup is a value object holding all db-related details about an instance backup.
type InstanceFilter ¶
type InstanceFilter struct { Project string Name string Node string Type instancetype.Type }
InstanceFilter can be used to filter results yielded by InstanceList.
type InstanceSnapshot ¶
type InstanceSnapshot struct { ID int Project string `db:"primary=yes&join=projects.name&via=instance"` Instance string `db:"primary=yes&join=instances.name"` Name string `db:"primary=yes"` CreationDate time.Time Stateful bool Description string `db:"coalesce=''"` Config map[string]string Devices map[string]map[string]string ExpiryDate time.Time }
InstanceSnapshot is a value object holding db-related details about a snapshot.
type InstanceSnapshotFilter ¶
InstanceSnapshotFilter can be used to filter results yielded by GetInstanceSnapshots.
type LegacyPatch ¶
LegacyPatch is a "database" update that performs non-database work. They are needed for historical reasons, since there was a time were db updates could do non-db work and depend on functionality external to the db package. See UpdatesApplyAll below.
type NetworkNode ¶
type NetworkNode struct { ID int64 Name string State NetworkState }
NetworkNode represents a network node.
type NetworkState ¶
type NetworkState int
NetworkState indicates the state of the network or network node.
type NetworkType ¶
type NetworkType int
NetworkType indicates type of network.
const ( NetworkTypeBridge NetworkType = iota // Network type bridge. NetworkTypeMacvlan // Network type macvlan. NetworkTypeSriov // Network type sriov. NetworkTypeOVN // Network type ovn. NetworkTypePhysical // Network type physical. )
Network types.
type Node ¶
type Node struct {
// contains filtered or unexported fields
}
Node mediates access to LXD's data stored in the node-local SQLite database.
func ForLegacyPatches ¶
ForLegacyPatches is a aid for the hack in initializeDbObject, which sets the db-related Deamon attributes upfront, to be backward compatible with the legacy patches that need to interact with the database.
func NewTestNode ¶
NewTestNode creates a new Node for testing purposes, along with a function that can be used to clean it up when done.
func (*Node) DB ¶
DB returns the low level database handle to the node-local SQLite database.
FIXME: this is used for compatibility with some legacy code, and should be
dropped once there are no call sites left.
func (*Node) GetAppliedPatches ¶
GetAppliedPatches returns the names of all patches currently applied on this node.
func (*Node) MarkPatchAsApplied ¶
MarkPatchAsApplied marks the patch with the given name as applied on this node.
func (*Node) Transaction ¶
Transaction creates a new NodeTx object and transactionally executes the node-level database interactions invoked by the given function. If the function returns no error, all database changes are committed to the node-level database, otherwise they are rolled back.
type NodeInfo ¶
type NodeInfo struct { ID int64 // Stable node identifier Name string // User-assigned name of the node Address string // Network address of the node Description string // Node description (optional) Schema int // Schema version of the LXD code running the node APIExtensions int // Number of API extensions of the LXD code running on the node Heartbeat time.Time // Timestamp of the last heartbeat Roles []string // List of cluster roles Architecture int // Node architecture }
NodeInfo holds information about a single LXD instance in a cluster.
type NodeTx ¶
type NodeTx struct {
// contains filtered or unexported fields
}
NodeTx models a single interaction with a LXD node-local database.
It wraps low-level sql.Tx objects and offers a high-level API to fetch and update data.
func NewTestNodeTx ¶
NewTestNodeTx returns a fresh NodeTx object, along with a function that can be called to cleanup state when done with it.
func (*NodeTx) CreateFirstRaftNode ¶
CreateFirstRaftNode adds a the first node of the cluster. It ensures that the database ID is 1, to match the server ID of the first raft log entry.
This method is supposed to be called when there are no rows in raft_nodes, and it will replace whatever existing row has ID 1.
func (*NodeTx) CreateRaftNode ¶
CreateRaftNode adds a node to the current list of LXD nodes that are part of the dqlite Raft cluster. It returns the ID of the newly inserted row.
func (*NodeTx) GetRaftNodeAddress ¶
GetRaftNodeAddress returns the address of the LXD raft node with the given ID, if any matching row exists.
func (*NodeTx) GetRaftNodeAddresses ¶
GetRaftNodeAddresses returns the addresses of all LXD nodes that are members of the dqlite Raft cluster (possibly including the local node). If this LXD instance is not running in clustered mode, an empty list is returned.
func (*NodeTx) GetRaftNodes ¶
GetRaftNodes returns information about all LXD nodes that are members of the dqlite Raft cluster (possibly including the local node). If this LXD instance is not running in clustered mode, an empty list is returned.
func (*NodeTx) RemoteRaftNode ¶
RemoteRaftNode removes a node from the current list of LXD nodes that are part of the dqlite Raft cluster.
func (*NodeTx) ReplaceRaftNodes ¶
ReplaceRaftNodes replaces the current list of raft nodes.
type Operation ¶
type Operation struct { ID int64 // Stable database identifier UUID string // User-visible identifier NodeAddress string // Address of the node the operation is running on Type OperationType // Type of the operation }
Operation holds information about a single LXD operation running on a node in the cluster.
type OperationType ¶
type OperationType int64
OperationType is a numeric code indentifying the type of an Operation.
const ( OperationUnknown OperationType = iota OperationClusterBootstrap OperationClusterJoin OperationBackupCreate OperationBackupRename OperationBackupRestore OperationBackupRemove OperationConsoleShow OperationInstanceCreate OperationInstanceUpdate OperationInstanceRename OperationInstanceMigrate OperationInstanceLiveMigrate OperationInstanceFreeze OperationInstanceUnfreeze OperationInstanceDelete OperationInstanceStart OperationInstanceStop OperationInstanceRestart OperationCommandExec OperationSnapshotCreate OperationSnapshotRename OperationSnapshotRestore OperationSnapshotTransfer OperationSnapshotUpdate OperationSnapshotDelete OperationImageDownload OperationImageDelete OperationImageToken OperationImageRefresh OperationVolumeCopy OperationVolumeCreate OperationVolumeMigrate OperationVolumeMove OperationVolumeSnapshotCreate OperationVolumeSnapshotDelete OperationVolumeSnapshotUpdate OperationProjectRename OperationImagesExpire OperationImagesPruneLeftover OperationImagesUpdate OperationImagesSynchronize OperationLogsExpire OperationInstanceTypesUpdate OperationBackupsExpire OperationSnapshotsExpire OperationCustomVolumeSnapshotsExpire OperationCustomVolumeBackupCreate OperationCustomVolumeBackupRemove OperationCustomVolumeBackupRename OperationCustomVolumeBackupRestore )
Possible values for OperationType
WARNING: The type codes are stored in the database, so this list of
definitions should be normally append-only. Any other change requires a database update.
func (OperationType) Description ¶
func (t OperationType) Description() string
Description return a human-readable description of the operation type.
func (OperationType) Permission ¶
func (t OperationType) Permission() string
Permission returns the needed RBAC permission to cancel the oepration
type Profile ¶
type Profile struct { ID int Project string `db:"primary=yes&join=projects.name"` Name string `db:"primary=yes"` Description string `db:"coalesce=''"` Config map[string]string Devices map[string]map[string]string UsedBy []string }
Profile is a value object holding db-related details about a profile.
type ProfileFilter ¶
ProfileFilter can be used to filter results yielded by ProfileList.
type ProjectFilter ¶
type ProjectFilter struct {
Name string // If non-empty, return only the project with this name.
}
ProjectFilter can be used to filter results yielded by ProjectList.
type RaftNode ¶
RaftNode holds information about a single node in the dqlite raft cluster.
This is just a convenience alias for the equivalent data structure in the dqlite client package.
type StoragePoolNode ¶
type StoragePoolNode struct { ID int64 Name string State StoragePoolState }
StoragePoolNode represents a storage pool node.
type StoragePoolState ¶
type StoragePoolState int
StoragePoolState indicates the state of the storage pool or storage pool node.
type StoragePoolVolumeBackup ¶
type StoragePoolVolumeBackup struct { ID int VolumeID int64 Name string CreationDate time.Time ExpiryDate time.Time VolumeOnly bool OptimizedStorage bool CompressionAlgorithm string }
StoragePoolVolumeBackup is a value object holding all db-related details about a storage volume backup.
type StorageVolumeArgs ¶
type StorageVolumeArgs struct { ID int64 Name string // At least one of Type or TypeName must be set. Type int TypeName string // At least one of PoolID or PoolName must be set. PoolID int64 PoolName string Snapshot bool Config map[string]string Description string CreationDate time.Time ExpiryDate time.Time // At least on of ProjectID or ProjectName must be set. ProjectID int64 ProjectName string ContentType string }
StorageVolumeArgs is a value object holding all db-related details about a storage volume.
Source Files
¶
- backups.go
- certificates.go
- certificates.mapper.go
- config.go
- db.go
- devices.go
- errors.go
- images.go
- images.mapper.go
- instances.go
- instances.mapper.go
- legacy.go
- migration.go
- network_acls.go
- networks.go
- node.go
- operations.go
- operations_types.go
- patches.go
- profiles.go
- profiles.mapper.go
- projects.go
- projects.mapper.go
- raft.go
- schema.go
- snapshots.go
- snapshots.mapper.go
- storage_pools.go
- storage_volume_snapshots.go
- storage_volumes.go
- testing.go
- transaction.go
Directories
¶
Path | Synopsis |
---|---|
file
Package file contains helpers to write auto-generated Go source files.
|
Package file contains helpers to write auto-generated Go source files. |
Package query implements helpers around database/sql to execute various kinds of very common SQL queries.
|
Package query implements helpers around database/sql to execute various kinds of very common SQL queries. |
Package schema offers utilities to create and maintain a database schema.
|
Package schema offers utilities to create and maintain a database schema. |