cluster

package
v6.8.0 Latest Latest
Warning

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

Go to latest
Published: Dec 13, 2024 License: Apache-2.0 Imports: 27 Imported by: 0

Documentation

Index

Constants

View Source
const (
	TypeNone        = DeviceType(0)
	TypeNIC         = DeviceType(1)
	TypeDisk        = DeviceType(2)
	TypeUnixChar    = DeviceType(3)
	TypeUnixBlock   = DeviceType(4)
	TypeUSB         = DeviceType(5)
	TypeGPU         = DeviceType(6)
	TypeInfiniband  = DeviceType(7)
	TypeProxy       = DeviceType(8)
	TypeUnixHotplug = DeviceType(9)
	TypeTPM         = DeviceType(10)
	TypePCI         = DeviceType(11)
)

Supported device types.

View Source
const (
	TypeContainer             = 0
	TypeImage                 = 1
	TypeProfile               = 2
	TypeProject               = 3
	TypeCertificate           = 4
	TypeInstance              = 5
	TypeInstanceBackup        = 6
	TypeInstanceSnapshot      = 7
	TypeNetwork               = 8
	TypeNetworkACL            = 9
	TypeNode                  = 10
	TypeOperation             = 11
	TypeStoragePool           = 12
	TypeStorageVolume         = 13
	TypeStorageVolumeBackup   = 14
	TypeStorageVolumeSnapshot = 15
	TypeWarning               = 16
	TypeClusterGroup          = 17
	TypeStorageBucket         = 18
)

Numeric type codes identifying different kind of entities.

View Source
const (
	// NetworkIntegrationTypeOVN represents an OVN network integration.
	NetworkIntegrationTypeOVN = iota
)

Variables

View Source
var EntityNames = map[int]string{
	TypeContainer:             "container",
	TypeImage:                 "image",
	TypeProfile:               "profile",
	TypeProject:               "project",
	TypeCertificate:           "certificate",
	TypeInstance:              "instance",
	TypeInstanceBackup:        "instance backup",
	TypeInstanceSnapshot:      "instance snapshot",
	TypeNetwork:               "network",
	TypeNetworkACL:            "network acl",
	TypeNode:                  "node",
	TypeOperation:             "operation",
	TypeStoragePool:           "storage pool",
	TypeStorageVolume:         "storage volume",
	TypeStorageVolumeBackup:   "storage volume backup",
	TypeStorageVolumeSnapshot: "storage volume snapshot",
	TypeStorageBucket:         "storage bucket",
	TypeWarning:               "warning",
	TypeClusterGroup:          "cluster group",
}

EntityNames associates an entity code to its name.

View Source
var EntityTypes = map[string]int{}

EntityTypes associates an entity name to its type code.

View Source
var EntityURIs = map[int]string{
	TypeContainer:             "/" + version.APIVersion + "/containers/%s?project=%s",
	TypeImage:                 "/" + version.APIVersion + "/images/%s?project=%s",
	TypeProfile:               "/" + version.APIVersion + "/profiles/%s?project=%s",
	TypeProject:               "/" + version.APIVersion + "/projects/%s",
	TypeCertificate:           "/" + version.APIVersion + "/certificates/%s",
	TypeInstance:              "/" + version.APIVersion + "/instances/%s?project=%s",
	TypeInstanceBackup:        "/" + version.APIVersion + "/instances/%s/backups/%s?project=%s",
	TypeInstanceSnapshot:      "/" + version.APIVersion + "/instances/%s/snapshots/%s?project=%s",
	TypeNetwork:               "/" + version.APIVersion + "/networks/%s?project=%s",
	TypeNetworkACL:            "/" + version.APIVersion + "/network-acls/%s?project=%s",
	TypeNode:                  "/" + version.APIVersion + "/cluster/members/%s",
	TypeOperation:             "/" + version.APIVersion + "/operations/%s",
	TypeStoragePool:           "/" + version.APIVersion + "/storage-pools/%s",
	TypeStorageVolume:         "/" + version.APIVersion + "/storage-pools/%s/volumes/%s/%s?project=%s",
	TypeStorageVolumeBackup:   "/" + version.APIVersion + "/storage-pools/%s/volumes/%s/%s/backups/%s?project=%s",
	TypeStorageVolumeSnapshot: "/" + version.APIVersion + "/storage-pools/%s/volumes/%s/%s/snapshots/%s?project=%s",
	TypeStorageBucket:         "/" + version.APIVersion + "/storage-pools/%s/buckets/%s?project=%s",
	TypeWarning:               "/" + version.APIVersion + "/warnings/%s",
	TypeClusterGroup:          "/" + version.APIVersion + "/cluster/groups/%s",
}

EntityURIs associates an entity code to its URI pattern.

View Source
var NetworkIntegrationTypeNames = map[int]string{
	NetworkIntegrationTypeOVN: "ovn",
}

NetworkIntegrationTypeNames is a map between DB type to their string representation.

View Source
var PreparedStmts = map[int]*sql.Stmt{}

PreparedStmts is a placeholder for transitioning to package-scoped transaction functions.

View Source
var ProjectFeatures = map[string]ProjectFeature{
	"features.images": {
		DefaultEnabled: true,
	},
	"features.profiles": {
		DefaultEnabled: true,
	},
	"features.storage.volumes": {
		DefaultEnabled: true,
	},
	"features.storage.buckets": {
		DefaultEnabled: true,
	},
	"features.networks": {},
	"features.networks.zones": {
		CanEnableNonEmpty: true,
	},
}

ProjectFeatures lists available project features and their behaviours.

View Source
var SchemaVersion = len(updates)

SchemaVersion is the current version of the cluster database schema.

Functions

func APIToDevices

func APIToDevices(apiDevices map[string]map[string]string) (map[string]Device, error)

APIToDevices takes an API format devices map and converts it to a map of db.Device.

func CertificateExists

func CertificateExists(ctx context.Context, tx *sql.Tx, fingerprint string) (bool, error)

CertificateExists checks if a certificate with the given key exists. generator: certificate Exists

func ClusterGroupExists

func ClusterGroupExists(ctx context.Context, tx *sql.Tx, name string) (bool, error)

ClusterGroupExists checks if a cluster_group with the given key exists. generator: cluster_group Exists

func CreateCertificate

func CreateCertificate(ctx context.Context, tx *sql.Tx, object Certificate) (int64, error)

CreateCertificate adds a new certificate to the database. generator: certificate Create

func CreateCertificateProjects

func CreateCertificateProjects(ctx context.Context, tx *sql.Tx, objects []CertificateProject) error

CreateCertificateProjects adds a new certificate_project to the database. generator: certificate_project Create

func CreateCertificateWithProjects

func CreateCertificateWithProjects(ctx context.Context, tx *sql.Tx, cert Certificate, projectNames []string) (int64, error)

CreateCertificateWithProjects stores a CertInfo object in the db, and associates it to a list of project names. It will ignore the ID field from the CertInfo.

func CreateClusterGroup

func CreateClusterGroup(ctx context.Context, tx *sql.Tx, object ClusterGroup) (int64, error)

CreateClusterGroup adds a new cluster_group to the database. generator: cluster_group Create

func CreateClusterGroupConfig added in v6.4.0

func CreateClusterGroupConfig(ctx context.Context, tx *sql.Tx, clusterGroupID int64, config map[string]string) error

CreateClusterGroupConfig adds new cluster_group Config to the database. generator: cluster_group Create

func CreateConfig

func CreateConfig(ctx context.Context, tx *sql.Tx, parent string, object Config) error

CreateConfig adds a new config to the database. generator: config Create

func CreateDevices

func CreateDevices(ctx context.Context, tx *sql.Tx, parent string, objects map[string]Device) error

CreateDevices adds a new device to the database. generator: device Create

func CreateInstance

func CreateInstance(ctx context.Context, tx *sql.Tx, object Instance) (int64, error)

CreateInstance adds a new instance to the database. generator: instance Create

func CreateInstanceConfig

func CreateInstanceConfig(ctx context.Context, tx *sql.Tx, instanceID int64, config map[string]string) error

CreateInstanceConfig adds new instance Config to the database. generator: instance Create

func CreateInstanceDevices

func CreateInstanceDevices(ctx context.Context, tx *sql.Tx, instanceID int64, devices map[string]Device) error

CreateInstanceDevices adds new instance Devices to the database. generator: instance Create

func CreateInstanceProfiles

func CreateInstanceProfiles(ctx context.Context, tx *sql.Tx, objects []InstanceProfile) error

CreateInstanceProfiles adds a new instance_profile to the database. generator: instance_profile Create

func CreateInstanceSnapshot

func CreateInstanceSnapshot(ctx context.Context, tx *sql.Tx, object InstanceSnapshot) (int64, error)

CreateInstanceSnapshot adds a new instance_snapshot to the database. generator: instance_snapshot Create

func CreateInstanceSnapshotConfig

func CreateInstanceSnapshotConfig(ctx context.Context, tx *sql.Tx, instanceSnapshotID int64, config map[string]string) error

CreateInstanceSnapshotConfig adds new instance_snapshot Config to the database. generator: instance_snapshot Create

func CreateInstanceSnapshotDevices

func CreateInstanceSnapshotDevices(ctx context.Context, tx *sql.Tx, instanceSnapshotID int64, devices map[string]Device) error

CreateInstanceSnapshotDevices adds new instance_snapshot Devices to the database. generator: instance_snapshot Create

func CreateNetworkIntegration

func CreateNetworkIntegration(ctx context.Context, tx *sql.Tx, object NetworkIntegration) (int64, error)

CreateNetworkIntegration adds a new network_integration to the database. generator: network_integration Create

func CreateNetworkIntegrationConfig

func CreateNetworkIntegrationConfig(ctx context.Context, tx *sql.Tx, networkIntegrationID int64, config map[string]string) error

CreateNetworkIntegrationConfig adds new network_integration Config to the database. generator: network_integration Create

func CreateNodeClusterGroup

func CreateNodeClusterGroup(ctx context.Context, tx *sql.Tx, object NodeClusterGroup) (int64, error)

CreateNodeClusterGroup adds a new node_cluster_group to the database. generator: node_cluster_group Create

func CreateOrReplaceOperation

func CreateOrReplaceOperation(ctx context.Context, tx *sql.Tx, object Operation) (int64, error)

CreateOrReplaceOperation adds a new operation to the database. generator: operation CreateOrReplace

func CreateProfile

func CreateProfile(ctx context.Context, tx *sql.Tx, object Profile) (int64, error)

CreateProfile adds a new profile to the database. generator: profile Create

func CreateProfileConfig

func CreateProfileConfig(ctx context.Context, tx *sql.Tx, profileID int64, config map[string]string) error

CreateProfileConfig adds new profile Config to the database. generator: profile Create

func CreateProfileDevices

func CreateProfileDevices(ctx context.Context, tx *sql.Tx, profileID int64, devices map[string]Device) error

CreateProfileDevices adds new profile Devices to the database. generator: profile Create

func CreateProject

func CreateProject(ctx context.Context, tx *sql.Tx, object Project) (int64, error)

CreateProject adds a new project to the database. generator: project Create

func CreateProjectConfig

func CreateProjectConfig(ctx context.Context, tx *sql.Tx, projectID int64, config map[string]string) error

CreateProjectConfig adds new project Config to the database. generator: project Create

func DeleteCertificate

func DeleteCertificate(ctx context.Context, tx *sql.Tx, fingerprint string) error

DeleteCertificate deletes the certificate matching the given key parameters. generator: certificate DeleteOne-by-Fingerprint

func DeleteCertificateProjects

func DeleteCertificateProjects(ctx context.Context, tx *sql.Tx, certificateID int) error

DeleteCertificateProjects deletes the certificate_project matching the given key parameters. generator: certificate_project DeleteMany

func DeleteCertificates

func DeleteCertificates(ctx context.Context, tx *sql.Tx, name string, certificateType certificate.Type) error

DeleteCertificates deletes the certificate matching the given key parameters. generator: certificate DeleteMany-by-Name-and-Type

func DeleteClusterGroup

func DeleteClusterGroup(ctx context.Context, tx *sql.Tx, name string) error

DeleteClusterGroup deletes the cluster_group matching the given key parameters. generator: cluster_group DeleteOne-by-Name

func DeleteConfig

func DeleteConfig(ctx context.Context, tx *sql.Tx, parent string, referenceID int) error

DeleteConfig deletes the config matching the given key parameters. generator: config DeleteMany

func DeleteDevices

func DeleteDevices(ctx context.Context, tx *sql.Tx, parent string, referenceID int) error

DeleteDevices deletes the device matching the given key parameters. generator: device DeleteMany

func DeleteInstance

func DeleteInstance(ctx context.Context, tx *sql.Tx, project string, name string) error

DeleteInstance deletes the instance matching the given key parameters. generator: instance DeleteOne-by-Project-and-Name

func DeleteInstanceProfiles

func DeleteInstanceProfiles(ctx context.Context, tx *sql.Tx, instanceID int) error

DeleteInstanceProfiles deletes the instance_profile matching the given key parameters. generator: instance_profile DeleteMany

func DeleteInstanceSnapshot

func DeleteInstanceSnapshot(ctx context.Context, tx *sql.Tx, project string, instance string, name string) error

DeleteInstanceSnapshot deletes the instance_snapshot matching the given key parameters. generator: instance_snapshot DeleteOne-by-Project-and-Instance-and-Name

func DeleteNetworkIntegration

func DeleteNetworkIntegration(ctx context.Context, tx *sql.Tx, name string) error

DeleteNetworkIntegration deletes the network_integration matching the given key parameters. generator: network_integration DeleteOne-by-Name

func DeleteNodeClusterGroup

func DeleteNodeClusterGroup(ctx context.Context, tx *sql.Tx, groupID int) error

DeleteNodeClusterGroup deletes the node_cluster_group matching the given key parameters. generator: node_cluster_group DeleteOne-by-GroupID

func DeleteOperation

func DeleteOperation(ctx context.Context, tx *sql.Tx, uuid string) error

DeleteOperation deletes the operation matching the given key parameters. generator: operation DeleteOne-by-UUID

func DeleteOperations

func DeleteOperations(ctx context.Context, tx *sql.Tx, nodeID int64) error

DeleteOperations deletes the operation matching the given key parameters. generator: operation DeleteMany-by-NodeID

func DeleteProfile

func DeleteProfile(ctx context.Context, tx *sql.Tx, project string, name string) error

DeleteProfile deletes the profile matching the given key parameters. generator: profile DeleteOne-by-Project-and-Name

func DeleteProject

func DeleteProject(ctx context.Context, tx *sql.Tx, name string) error

DeleteProject deletes the project matching the given key parameters. generator: project DeleteOne-by-Name

func DeleteWarning

func DeleteWarning(ctx context.Context, tx *sql.Tx, uuid string) error

DeleteWarning deletes the warning matching the given key parameters. generator: warning DeleteOne-by-UUID

func DeleteWarnings

func DeleteWarnings(ctx context.Context, tx *sql.Tx, entityTypeCode int, entityID int) error

DeleteWarnings deletes the warning matching the given key parameters. generator: warning DeleteMany-by-EntityTypeCode-and-EntityID

func DevicesToAPI

func DevicesToAPI(devices map[string]Device) map[string]map[string]string

DevicesToAPI takes a map of devices and converts them to API format.

func EnsureSchema

func EnsureSchema(db *sql.DB, address string, dir string) (bool, error)

EnsureSchema applies all relevant schema updates to the cluster database.

Before actually doing anything, this function will make sure that all nodes in the cluster have a schema version and a number of API extensions that match our one. If it's not the case, we either return an error (if some nodes have version greater than us and we need to be upgraded), or return false and no error (if some nodes have a lower version, and we need to wait till they get upgraded and restarted).

func ExpandInstanceConfig

func ExpandInstanceConfig(config map[string]string, profiles []api.Profile) map[string]string

ExpandInstanceConfig expands the given instance config with the config values of the given profiles.

func ExpandInstanceDevices

func ExpandInstanceDevices(devices config.Devices, profiles []api.Profile) config.Devices

ExpandInstanceDevices expands the given instance devices with the devices defined in the given profiles.

func FreshSchema

func FreshSchema() string

FreshSchema returns the fresh schema definition of the global database.

func GetCertificateID

func GetCertificateID(ctx context.Context, tx *sql.Tx, fingerprint string) (int64, error)

GetCertificateID return the ID of the certificate with the given key. generator: certificate ID

func GetClusterGroupConfig added in v6.4.0

func GetClusterGroupConfig(ctx context.Context, tx *sql.Tx, clusterGroupID int, filters ...ConfigFilter) (map[string]string, error)

GetClusterGroupConfig returns all available ClusterGroup Config generator: cluster_group GetMany

func GetClusterGroupID

func GetClusterGroupID(ctx context.Context, tx *sql.Tx, name string) (int64, error)

GetClusterGroupID return the ID of the cluster_group with the given key. generator: cluster_group ID

func GetConfig

func GetConfig(ctx context.Context, tx *sql.Tx, parent string, filters ...ConfigFilter) (map[int]map[string]string, error)

GetConfig returns all available config. generator: config GetMany

func GetDevices

func GetDevices(ctx context.Context, tx *sql.Tx, parent string, filters ...DeviceFilter) (map[int][]Device, error)

GetDevices returns all available devices for the parent entity. generator: device GetMany

func GetInstanceConfig

func GetInstanceConfig(ctx context.Context, tx *sql.Tx, instanceID int, filters ...ConfigFilter) (map[string]string, error)

GetInstanceConfig returns all available Instance Config generator: instance GetMany

func GetInstanceDevices

func GetInstanceDevices(ctx context.Context, tx *sql.Tx, instanceID int, filters ...DeviceFilter) (map[string]Device, error)

GetInstanceDevices returns all available Instance Devices generator: instance GetMany

func GetInstanceID

func GetInstanceID(ctx context.Context, tx *sql.Tx, project string, name string) (int64, error)

GetInstanceID return the ID of the instance with the given key. generator: instance ID

func GetInstanceSnapshotConfig

func GetInstanceSnapshotConfig(ctx context.Context, tx *sql.Tx, instanceSnapshotID int, filters ...ConfigFilter) (map[string]string, error)

GetInstanceSnapshotConfig returns all available InstanceSnapshot Config generator: instance_snapshot GetMany

func GetInstanceSnapshotDevices

func GetInstanceSnapshotDevices(ctx context.Context, tx *sql.Tx, instanceSnapshotID int, filters ...DeviceFilter) (map[string]Device, error)

GetInstanceSnapshotDevices returns all available InstanceSnapshot Devices generator: instance_snapshot GetMany

func GetInstanceSnapshotID

func GetInstanceSnapshotID(ctx context.Context, tx *sql.Tx, project string, instance string, name string) (int64, error)

GetInstanceSnapshotID return the ID of the instance_snapshot with the given key. generator: instance_snapshot ID

func GetNetworkIntegrationConfig

func GetNetworkIntegrationConfig(ctx context.Context, tx *sql.Tx, networkIntegrationID int, filters ...ConfigFilter) (map[string]string, error)

GetNetworkIntegrationConfig returns all available NetworkIntegration Config generator: network_integration GetMany

func GetNetworkIntegrationID

func GetNetworkIntegrationID(ctx context.Context, tx *sql.Tx, name string) (int64, error)

GetNetworkIntegrationID return the ID of the network_integration with the given key. generator: network_integration ID

func GetNodeClusterGroupID

func GetNodeClusterGroupID(ctx context.Context, tx *sql.Tx, groupID int) (int64, error)

GetNodeClusterGroupID return the ID of the node_cluster_group with the given key. generator: node_cluster_group ID

func GetNodeID

func GetNodeID(ctx context.Context, tx *sql.Tx, name string) (int64, error)

GetNodeID return the ID of the node with the given key. generator: node ID

func GetProfileConfig

func GetProfileConfig(ctx context.Context, tx *sql.Tx, profileID int, filters ...ConfigFilter) (map[string]string, error)

GetProfileConfig returns all available Profile Config generator: profile GetMany

func GetProfileDevices

func GetProfileDevices(ctx context.Context, tx *sql.Tx, profileID int, filters ...DeviceFilter) (map[string]Device, error)

GetProfileDevices returns all available Profile Devices generator: profile GetMany

func GetProfileID

func GetProfileID(ctx context.Context, tx *sql.Tx, project string, name string) (int64, error)

GetProfileID return the ID of the profile with the given key. generator: profile ID

func GetProjectConfig

func GetProjectConfig(ctx context.Context, tx *sql.Tx, projectID int, filters ...ConfigFilter) (map[string]string, error)

GetProjectConfig returns all available Project Config generator: project GetMany

func GetProjectID

func GetProjectID(ctx context.Context, tx *sql.Tx, name string) (int64, error)

GetProjectID return the ID of the project with the given key. generator: project ID

func GetProjectIDsToNames

func GetProjectIDsToNames(ctx context.Context, tx *sql.Tx) (map[int64]string, error)

GetProjectIDsToNames returns a map associating each prect ID to its project name.

func GetProjectNames

func GetProjectNames(ctx context.Context, tx *sql.Tx) ([]string, error)

GetProjectNames returns the names of all availablprojects.

func GetWarningID

func GetWarningID(ctx context.Context, tx *sql.Tx, uuid string) (int64, error)

GetWarningID return the ID of the warning with the given key. generator: warning ID

func InitProjectWithoutImages

func InitProjectWithoutImages(ctx context.Context, tx *sql.Tx, project string) error

InitProjectWithoutImages populates the images_profiles table with all images from the default project when a project is created with features.images=false.

func InstanceExists

func InstanceExists(ctx context.Context, tx *sql.Tx, project string, name string) (bool, error)

InstanceExists checks if a instance with the given key exists. generator: instance Exists

func InstanceSnapshotExists

func InstanceSnapshotExists(ctx context.Context, tx *sql.Tx, project string, instance string, name string) (bool, error)

InstanceSnapshotExists checks if a instance_snapshot with the given key exists. generator: instance_snapshot Exists

func NetworkIntegrationExists

func NetworkIntegrationExists(ctx context.Context, tx *sql.Tx, name string) (bool, error)

NetworkIntegrationExists checks if a network_integration with the given key exists. generator: network_integration Exists

func NodeClusterGroupExists

func NodeClusterGroupExists(ctx context.Context, tx *sql.Tx, groupID int) (bool, error)

NodeClusterGroupExists checks if a node_cluster_group with the given key exists. generator: node_cluster_group Exists

func Open

func Open(name string, store driver.NodeStore, options ...driver.Option) (*sql.DB, error)

Open the cluster database object.

The name argument is the name of the cluster database. It defaults to 'db.bin', but can be overwritten for testing.

The dialer argument is a function that returns a gRPC dialer that can be used to connect to a database node using the gRPC SQL package.

func PrepareStmts

func PrepareStmts(db *sql.DB, skipErrors bool) (map[int]*sql.Stmt, error)

PrepareStmts prepares all registered statements and returns an index from statement code to prepared statement object.

func ProfileExists

func ProfileExists(ctx context.Context, tx *sql.Tx, project string, name string) (bool, error)

ProfileExists checks if a profile with the given key exists. generator: profile Exists

func ProjectExists

func ProjectExists(ctx context.Context, tx *sql.Tx, name string) (bool, error)

ProjectExists checks if a project with the given key exists. generator: project Exists

func ProjectHasImages

func ProjectHasImages(ctx context.Context, tx *sql.Tx, name string) (bool, error)

ProjectHasImages is a helper to check if a project has the images feature enabled.

func ProjectHasProfiles

func ProjectHasProfiles(ctx context.Context, tx *sql.Tx, name string) (bool, error)

ProjectHasProfiles is a helper to check if a project has the profiles feature enabled.

func RegisterStmt

func RegisterStmt(sql string) int

RegisterStmt register a SQL statement.

Registered statements will be prepared upfront and re-used, to speed up execution.

Return a unique registration code.

func RenameClusterGroup

func RenameClusterGroup(ctx context.Context, tx *sql.Tx, name string, to string) error

RenameClusterGroup renames the cluster_group matching the given key parameters. generator: cluster_group Rename

func RenameInstance

func RenameInstance(ctx context.Context, tx *sql.Tx, project string, name string, to string) error

RenameInstance renames the instance matching the given key parameters. generator: instance Rename

func RenameInstanceSnapshot

func RenameInstanceSnapshot(ctx context.Context, tx *sql.Tx, project string, instance string, name string, to string) error

RenameInstanceSnapshot renames the instance_snapshot matching the given key parameters. generator: instance_snapshot Rename

func RenameNetworkIntegration

func RenameNetworkIntegration(ctx context.Context, tx *sql.Tx, name string, to string) error

RenameNetworkIntegration renames the network_integration matching the given key parameters. generator: network_integration Rename

func RenameProfile

func RenameProfile(ctx context.Context, tx *sql.Tx, project string, name string, to string) error

RenameProfile renames the profile matching the given key parameters. generator: profile Rename

func RenameProject

func RenameProject(ctx context.Context, tx *sql.Tx, name string, to string) error

RenameProject renames the project matching the given key parameters. generator: project Rename

func Schema

func Schema() *schema.Schema

Schema for the cluster database.

func SchemaDotGo

func SchemaDotGo() error

SchemaDotGo refreshes the schema.go file in this package, using the updates defined here.

func Stmt

func Stmt(tx *sql.Tx, code int) (*sql.Stmt, error)

Stmt prepares the in-memory prepared statement for the transaction.

func StmtString

func StmtString(code int) (string, error)

StmtString returns the in-memory query string with the given code.

func URLToEntityType

func URLToEntityType(rawURL string) (int, string, string, []string, error)

URLToEntityType parses a raw URL string and returns the entity type, the project, the location and the path arguments. The returned project is set to "default" if it is not present (unless the entity type is TypeProject, in which case it is set to the value of the path parameter). An error is returned if the URL is not recognised.

func UpdateCertificate

func UpdateCertificate(ctx context.Context, tx *sql.Tx, fingerprint string, object Certificate) error

UpdateCertificate updates the certificate matching the given key parameters. generator: certificate Update

func UpdateCertificateProjects

func UpdateCertificateProjects(ctx context.Context, tx *sql.Tx, certificateID int, projectNames []string) error

UpdateCertificateProjects updates the certificate_project matching the given key parameters. generator: certificate_project Update

func UpdateClusterGroup

func UpdateClusterGroup(ctx context.Context, tx *sql.Tx, name string, object ClusterGroup) error

UpdateClusterGroup updates the cluster_group matching the given key parameters. generator: cluster_group Update

func UpdateClusterGroupConfig added in v6.4.0

func UpdateClusterGroupConfig(ctx context.Context, tx *sql.Tx, clusterGroupID int64, config map[string]string) error

UpdateClusterGroupConfig updates the cluster_group Config matching the given key parameters. generator: cluster_group Update

func UpdateConfig

func UpdateConfig(ctx context.Context, tx *sql.Tx, parent string, referenceID int, config map[string]string) error

UpdateConfig updates the config matching the given key parameters. generator: config Update

func UpdateDevices

func UpdateDevices(ctx context.Context, tx *sql.Tx, parent string, referenceID int, devices map[string]Device) error

UpdateDevices updates the device matching the given key parameters. generator: device Update

func UpdateInstance

func UpdateInstance(ctx context.Context, tx *sql.Tx, project string, name string, object Instance) error

UpdateInstance updates the instance matching the given key parameters. generator: instance Update

func UpdateInstanceConfig

func UpdateInstanceConfig(ctx context.Context, tx *sql.Tx, instanceID int64, config map[string]string) error

UpdateInstanceConfig updates the instance Config matching the given key parameters. generator: instance Update

func UpdateInstanceDevices

func UpdateInstanceDevices(ctx context.Context, tx *sql.Tx, instanceID int64, devices map[string]Device) error

UpdateInstanceDevices updates the instance Device matching the given key parameters. generator: instance Update

func UpdateInstanceProfiles

func UpdateInstanceProfiles(ctx context.Context, tx *sql.Tx, instanceID int, projectName string, profiles []string) error

UpdateInstanceProfiles updates the profiles of an instance in the order they are given.

func UpdateNetworkIntegration

func UpdateNetworkIntegration(ctx context.Context, tx *sql.Tx, name string, object NetworkIntegration) error

UpdateNetworkIntegration updates the network_integration matching the given key parameters. generator: network_integration Update

func UpdateNetworkIntegrationConfig

func UpdateNetworkIntegrationConfig(ctx context.Context, tx *sql.Tx, networkIntegrationID int64, config map[string]string) error

UpdateNetworkIntegrationConfig updates the network_integration Config matching the given key parameters. generator: network_integration Update

func UpdateProfile

func UpdateProfile(ctx context.Context, tx *sql.Tx, project string, name string, object Profile) error

UpdateProfile updates the profile matching the given key parameters. generator: profile Update

func UpdateProfileConfig

func UpdateProfileConfig(ctx context.Context, tx *sql.Tx, profileID int64, config map[string]string) error

UpdateProfileConfig updates the profile Config matching the given key parameters. generator: profile Update

func UpdateProfileDevices

func UpdateProfileDevices(ctx context.Context, tx *sql.Tx, profileID int64, devices map[string]Device) error

UpdateProfileDevices updates the profile Device matching the given key parameters. generator: profile Update

func UpdateProject

func UpdateProject(ctx context.Context, tx *sql.Tx, name string, object api.ProjectPut) error

UpdateProject updates the project matching the given key parameters.

func WarningExists

func WarningExists(ctx context.Context, tx *sql.Tx, uuid string) (bool, error)

WarningExists checks if a warning with the given key exists. generator: warning Exists

Types

type Certificate

type Certificate struct {
	ID          int
	Fingerprint string `db:"primary=yes"`
	Type        certificate.Type
	Name        string
	Certificate string
	Restricted  bool
	Description string
}

Certificate is here to pass the certificates content from the database around.

func GetCertificate

func GetCertificate(ctx context.Context, tx *sql.Tx, fingerprint string) (*Certificate, error)

GetCertificate returns the certificate with the given key. generator: certificate GetOne

func GetCertificateByFingerprintPrefix

func GetCertificateByFingerprintPrefix(ctx context.Context, tx *sql.Tx, fingerprintPrefix string) (*Certificate, error)

GetCertificateByFingerprintPrefix 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 GetCertificates

func GetCertificates(ctx context.Context, tx *sql.Tx, filters ...CertificateFilter) ([]Certificate, error)

GetCertificates returns all available certificates. generator: certificate GetMany

func (*Certificate) ToAPI

func (cert *Certificate) ToAPI(ctx context.Context, tx *sql.Tx) (*api.Certificate, error)

ToAPI converts the database Certificate struct to an api.Certificate entry filling fields from the database as necessary.

func (*Certificate) ToAPIType

func (cert *Certificate) ToAPIType() string

ToAPIType returns the API equivalent type.

type CertificateFilter

type CertificateFilter struct {
	ID          *int
	Fingerprint *string
	Name        *string
	Type        *certificate.Type
}

CertificateFilter specifies potential query parameter fields.

type CertificateGenerated

type CertificateGenerated interface {
	// GetCertificates returns all available certificates.
	// generator: certificate GetMany
	GetCertificates(ctx context.Context, tx *sql.Tx, filters ...CertificateFilter) ([]Certificate, error)

	// GetCertificate returns the certificate with the given key.
	// generator: certificate GetOne
	GetCertificate(ctx context.Context, tx *sql.Tx, fingerprint string) (*Certificate, error)

	// GetCertificateID return the ID of the certificate with the given key.
	// generator: certificate ID
	GetCertificateID(ctx context.Context, tx *sql.Tx, fingerprint string) (int64, error)

	// CertificateExists checks if a certificate with the given key exists.
	// generator: certificate Exists
	CertificateExists(ctx context.Context, tx *sql.Tx, fingerprint string) (bool, error)

	// CreateCertificate adds a new certificate to the database.
	// generator: certificate Create
	CreateCertificate(ctx context.Context, tx *sql.Tx, object Certificate) (int64, error)

	// DeleteCertificate deletes the certificate matching the given key parameters.
	// generator: certificate DeleteOne-by-Fingerprint
	DeleteCertificate(ctx context.Context, tx *sql.Tx, fingerprint string) error

	// DeleteCertificates deletes the certificate matching the given key parameters.
	// generator: certificate DeleteMany-by-Name-and-Type
	DeleteCertificates(ctx context.Context, tx *sql.Tx, name string, certificateType certificate.Type) error

	// UpdateCertificate updates the certificate matching the given key parameters.
	// generator: certificate Update
	UpdateCertificate(ctx context.Context, tx *sql.Tx, fingerprint string, object Certificate) error
}

CertificateGenerated is an interface of generated methods for Certificate.

type CertificateProject

type CertificateProject struct {
	CertificateID int `db:"primary=yes"`
	ProjectID     int
}

CertificateProject is an association table struct that associates Certificates to Projects.

type CertificateProjectFilter

type CertificateProjectFilter struct {
	CertificateID *int
	ProjectID     *int
}

CertificateProjectFilter specifies potential query parameter fields.

type CertificateProjectGenerated

type CertificateProjectGenerated interface {
	// GetCertificateProjects returns all available Projects for the Certificate.
	// generator: certificate_project GetMany
	GetCertificateProjects(ctx context.Context, tx *sql.Tx, certificateID int) ([]Project, error)

	// DeleteCertificateProjects deletes the certificate_project matching the given key parameters.
	// generator: certificate_project DeleteMany
	DeleteCertificateProjects(ctx context.Context, tx *sql.Tx, certificateID int) error

	// CreateCertificateProjects adds a new certificate_project to the database.
	// generator: certificate_project Create
	CreateCertificateProjects(ctx context.Context, tx *sql.Tx, objects []CertificateProject) error

	// UpdateCertificateProjects updates the certificate_project matching the given key parameters.
	// generator: certificate_project Update
	UpdateCertificateProjects(ctx context.Context, tx *sql.Tx, certificateID int, projectNames []string) error
}

CertificateProjectGenerated is an interface of generated methods for CertificateProject.

type ClusterGroup

type ClusterGroup struct {
	ID          int
	Name        string
	Description string   `db:"coalesce=''"`
	Nodes       []string `db:"ignore"`
}

ClusterGroup is a value object holding db-related details about a cluster group.

func GetClusterGroup

func GetClusterGroup(ctx context.Context, tx *sql.Tx, name string) (*ClusterGroup, error)

GetClusterGroup returns the cluster_group with the given key. generator: cluster_group GetOne

func GetClusterGroups

func GetClusterGroups(ctx context.Context, tx *sql.Tx, filters ...ClusterGroupFilter) ([]ClusterGroup, error)

GetClusterGroups returns all available cluster_groups. generator: cluster_group GetMany

func (*ClusterGroup) ToAPI

func (c *ClusterGroup) ToAPI(ctx context.Context, tx *sql.Tx) (*api.ClusterGroup, error)

ToAPI returns an API entry.

type ClusterGroupFilter

type ClusterGroupFilter struct {
	ID   *int
	Name *string
}

ClusterGroupFilter specifies potential query parameter fields.

type ClusterGroupGenerated

type ClusterGroupGenerated interface {
	// GetClusterGroupConfig returns all available ClusterGroup Config
	// generator: cluster_group GetMany
	GetClusterGroupConfig(ctx context.Context, tx *sql.Tx, clusterGroupID int, filters ...ConfigFilter) (map[string]string, error)

	// GetClusterGroups returns all available cluster_groups.
	// generator: cluster_group GetMany
	GetClusterGroups(ctx context.Context, tx *sql.Tx, filters ...ClusterGroupFilter) ([]ClusterGroup, error)

	// GetClusterGroup returns the cluster_group with the given key.
	// generator: cluster_group GetOne
	GetClusterGroup(ctx context.Context, tx *sql.Tx, name string) (*ClusterGroup, error)

	// GetClusterGroupID return the ID of the cluster_group with the given key.
	// generator: cluster_group ID
	GetClusterGroupID(ctx context.Context, tx *sql.Tx, name string) (int64, error)

	// ClusterGroupExists checks if a cluster_group with the given key exists.
	// generator: cluster_group Exists
	ClusterGroupExists(ctx context.Context, tx *sql.Tx, name string) (bool, error)

	// RenameClusterGroup renames the cluster_group matching the given key parameters.
	// generator: cluster_group Rename
	RenameClusterGroup(ctx context.Context, tx *sql.Tx, name string, to string) error

	// CreateClusterGroupConfig adds new cluster_group Config to the database.
	// generator: cluster_group Create
	CreateClusterGroupConfig(ctx context.Context, tx *sql.Tx, clusterGroupID int64, config map[string]string) error

	// CreateClusterGroup adds a new cluster_group to the database.
	// generator: cluster_group Create
	CreateClusterGroup(ctx context.Context, tx *sql.Tx, object ClusterGroup) (int64, error)

	// UpdateClusterGroupConfig updates the cluster_group Config matching the given key parameters.
	// generator: cluster_group Update
	UpdateClusterGroupConfig(ctx context.Context, tx *sql.Tx, clusterGroupID int64, config map[string]string) error

	// UpdateClusterGroup updates the cluster_group matching the given key parameters.
	// generator: cluster_group Update
	UpdateClusterGroup(ctx context.Context, tx *sql.Tx, name string, object ClusterGroup) error

	// DeleteClusterGroup deletes the cluster_group matching the given key parameters.
	// generator: cluster_group DeleteOne-by-Name
	DeleteClusterGroup(ctx context.Context, tx *sql.Tx, name string) error
}

ClusterGroupGenerated is an interface of generated methods for ClusterGroup.

type Config

type Config struct {
	ID          int `db:"primary=yes"`
	ReferenceID int
	Key         string
	Value       string
}

Config is a reference struct representing one configuration entry of another entity.

type ConfigFilter

type ConfigFilter struct {
	Key   *string
	Value *string
}

ConfigFilter specifies potential query parameter fields.

type ConfigGenerated

type ConfigGenerated interface {
	// GetConfig returns all available config.
	// generator: config GetMany
	GetConfig(ctx context.Context, tx *sql.Tx, parent string, filters ...ConfigFilter) (map[int]map[string]string, error)

	// CreateConfig adds a new config to the database.
	// generator: config Create
	CreateConfig(ctx context.Context, tx *sql.Tx, parent string, object Config) error

	// UpdateConfig updates the config matching the given key parameters.
	// generator: config Update
	UpdateConfig(ctx context.Context, tx *sql.Tx, parent string, referenceID int, config map[string]string) error

	// DeleteConfig deletes the config matching the given key parameters.
	// generator: config DeleteMany
	DeleteConfig(ctx context.Context, tx *sql.Tx, parent string, referenceID int) error
}

ConfigGenerated is an interface of generated methods for Config.

type Device

type Device struct {
	ID          int
	ReferenceID int
	Name        string
	Type        DeviceType
	Config      map[string]string
}

Device is a reference struct representing another entity's device.

type DeviceFilter

type DeviceFilter struct {
	Name   *string
	Type   *DeviceType
	Config *ConfigFilter
}

DeviceFilter specifies potential query parameter fields.

type DeviceGenerated

type DeviceGenerated interface {
	// GetDevices returns all available devices for the parent entity.
	// generator: device GetMany
	GetDevices(ctx context.Context, tx *sql.Tx, parent string, filters ...DeviceFilter) (map[int][]Device, error)

	// CreateDevices adds a new device to the database.
	// generator: device Create
	CreateDevices(ctx context.Context, tx *sql.Tx, parent string, objects map[string]Device) error

	// UpdateDevices updates the device matching the given key parameters.
	// generator: device Update
	UpdateDevices(ctx context.Context, tx *sql.Tx, parent string, referenceID int, devices map[string]Device) error

	// DeleteDevices deletes the device matching the given key parameters.
	// generator: device DeleteMany
	DeleteDevices(ctx context.Context, tx *sql.Tx, parent string, referenceID int) error
}

DeviceGenerated is an interface of generated methods for Device.

type DeviceType

type DeviceType int

DeviceType represents the types of supported devices.

func NewDeviceType

func NewDeviceType(t string) (DeviceType, error)

NewDeviceType determines the device type from the given string, if supported.

func (DeviceType) String

func (t DeviceType) String() string

type Image

type Image struct {
	ID           int
	Project      string `db:"primary=yes&join=projects.name"`
	Fingerprint  string `db:"primary=yes"`
	Type         int
	Filename     string
	Size         int64
	Public       bool
	Architecture int
	CreationDate sql.NullTime
	ExpiryDate   sql.NullTime
	UploadDate   time.Time
	Cached       bool
	LastUseDate  sql.NullTime
	AutoUpdate   bool
}

Image is a value object holding db-related details about an image.

func GetImage

func GetImage(ctx context.Context, tx *sql.Tx, project string, fingerprint string) (*Image, error)

GetImage returns the image with the given key. generator: image GetOne

func GetImages

func GetImages(ctx context.Context, tx *sql.Tx, filters ...ImageFilter) ([]Image, error)

GetImages returns all available images. generator: image GetMany

type ImageFilter

type ImageFilter struct {
	ID          *int
	Project     *string
	Fingerprint *string
	Public      *bool
	Cached      *bool
	AutoUpdate  *bool
}

ImageFilter can be used to filter results yielded by GetImages.

type ImageGenerated

type ImageGenerated interface {
	// GetImages returns all available images.
	// generator: image GetMany
	GetImages(ctx context.Context, tx *sql.Tx, filters ...ImageFilter) ([]Image, error)

	// GetImage returns the image with the given key.
	// generator: image GetOne
	GetImage(ctx context.Context, tx *sql.Tx, project string, fingerprint string) (*Image, error)
}

ImageGenerated is an interface of generated methods for Image.

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  sql.NullTime
	Description  string `db:"coalesce=''"`
	ExpiryDate   sql.NullTime
}

Instance is a value object holding db-related details about an instance.

func GetInstance

func GetInstance(ctx context.Context, tx *sql.Tx, project string, name string) (*Instance, error)

GetInstance returns the instance with the given key. generator: instance GetOne

func GetInstances

func GetInstances(ctx context.Context, tx *sql.Tx, filters ...InstanceFilter) ([]Instance, error)

GetInstances returns all available instances. generator: instance GetMany

func GetProfileInstances

func GetProfileInstances(ctx context.Context, tx *sql.Tx, profileID int) ([]Instance, error)

GetProfileInstances returns all available Instances for the Profile. generator: instance_profile GetMany

func (*Instance) ToAPI

func (i *Instance) ToAPI(ctx context.Context, tx *sql.Tx, instanceDevices map[int][]Device, profileConfigs map[int]map[string]string, profileDevices map[int][]Device) (*api.Instance, error)

ToAPI converts the database Instance to API type.

type InstanceFilter

type InstanceFilter struct {
	ID      *int
	Project *string
	Name    *string
	Node    *string
	Type    *instancetype.Type
}

InstanceFilter specifies potential query parameter fields.

type InstanceGenerated

type InstanceGenerated interface {
	// GetInstanceConfig returns all available Instance Config
	// generator: instance GetMany
	GetInstanceConfig(ctx context.Context, tx *sql.Tx, instanceID int, filters ...ConfigFilter) (map[string]string, error)

	// GetInstanceDevices returns all available Instance Devices
	// generator: instance GetMany
	GetInstanceDevices(ctx context.Context, tx *sql.Tx, instanceID int, filters ...DeviceFilter) (map[string]Device, error)

	// GetInstances returns all available instances.
	// generator: instance GetMany
	GetInstances(ctx context.Context, tx *sql.Tx, filters ...InstanceFilter) ([]Instance, error)

	// GetInstance returns the instance with the given key.
	// generator: instance GetOne
	GetInstance(ctx context.Context, tx *sql.Tx, project string, name string) (*Instance, error)

	// GetInstanceID return the ID of the instance with the given key.
	// generator: instance ID
	GetInstanceID(ctx context.Context, tx *sql.Tx, project string, name string) (int64, error)

	// InstanceExists checks if a instance with the given key exists.
	// generator: instance Exists
	InstanceExists(ctx context.Context, tx *sql.Tx, project string, name string) (bool, error)

	// CreateInstanceConfig adds new instance Config to the database.
	// generator: instance Create
	CreateInstanceConfig(ctx context.Context, tx *sql.Tx, instanceID int64, config map[string]string) error

	// CreateInstanceDevices adds new instance Devices to the database.
	// generator: instance Create
	CreateInstanceDevices(ctx context.Context, tx *sql.Tx, instanceID int64, devices map[string]Device) error

	// CreateInstance adds a new instance to the database.
	// generator: instance Create
	CreateInstance(ctx context.Context, tx *sql.Tx, object Instance) (int64, error)

	// RenameInstance renames the instance matching the given key parameters.
	// generator: instance Rename
	RenameInstance(ctx context.Context, tx *sql.Tx, project string, name string, to string) error

	// DeleteInstance deletes the instance matching the given key parameters.
	// generator: instance DeleteOne-by-Project-and-Name
	DeleteInstance(ctx context.Context, tx *sql.Tx, project string, name string) error

	// UpdateInstanceConfig updates the instance Config matching the given key parameters.
	// generator: instance Update
	UpdateInstanceConfig(ctx context.Context, tx *sql.Tx, instanceID int64, config map[string]string) error

	// UpdateInstanceDevices updates the instance Device matching the given key parameters.
	// generator: instance Update
	UpdateInstanceDevices(ctx context.Context, tx *sql.Tx, instanceID int64, devices map[string]Device) error

	// UpdateInstance updates the instance matching the given key parameters.
	// generator: instance Update
	UpdateInstance(ctx context.Context, tx *sql.Tx, project string, name string, object Instance) error
}

InstanceGenerated is an interface of generated methods for Instance.

type InstanceProfile

type InstanceProfile struct {
	InstanceID int `db:"primary=yes&order=yes"`
	ProfileID  int
	ApplyOrder int `db:"order=yes"`
}

InstanceProfile is an association table struct that associates Instances to Profiles.

type InstanceProfileFilter

type InstanceProfileFilter struct {
	InstanceID *int
	ProfileID  *int
}

InstanceProfileFilter specifies potential query parameter fields.

type InstanceProfileGenerated

type InstanceProfileGenerated interface {
	// GetProfileInstances returns all available Instances for the Profile.
	// generator: instance_profile GetMany
	GetProfileInstances(ctx context.Context, tx *sql.Tx, profileID int) ([]Instance, error)

	// GetInstanceProfiles returns all available Profiles for the Instance.
	// generator: instance_profile GetMany
	GetInstanceProfiles(ctx context.Context, tx *sql.Tx, instanceID int) ([]Profile, error)

	// CreateInstanceProfiles adds a new instance_profile to the database.
	// generator: instance_profile Create
	CreateInstanceProfiles(ctx context.Context, tx *sql.Tx, objects []InstanceProfile) error

	// DeleteInstanceProfiles deletes the instance_profile matching the given key parameters.
	// generator: instance_profile DeleteMany
	DeleteInstanceProfiles(ctx context.Context, tx *sql.Tx, instanceID int) error
}

InstanceProfileGenerated is an interface of generated methods for InstanceProfile.

type InstanceSnapshot

type InstanceSnapshot struct {
	ID           int
	Project      string `db:"primary=yes&join=projects.name&joinon=instances.project_id"`
	Instance     string `db:"primary=yes&join=instances.name"`
	Name         string `db:"primary=yes"`
	CreationDate time.Time
	Stateful     bool
	Description  string `db:"coalesce=''"`
	ExpiryDate   sql.NullTime
}

InstanceSnapshot is a value object holding db-related details about a snapshot.

func GetInstanceSnapshot

func GetInstanceSnapshot(ctx context.Context, tx *sql.Tx, project string, instance string, name string) (*InstanceSnapshot, error)

GetInstanceSnapshot returns the instance_snapshot with the given key. generator: instance_snapshot GetOne

func GetInstanceSnapshots

func GetInstanceSnapshots(ctx context.Context, tx *sql.Tx, filters ...InstanceSnapshotFilter) ([]InstanceSnapshot, error)

GetInstanceSnapshots returns all available instance_snapshots. generator: instance_snapshot GetMany

func (*InstanceSnapshot) ToInstance

func (s *InstanceSnapshot) ToInstance(parentName string, parentNode string, parentType instancetype.Type, parentArch int) Instance

ToInstance converts an instance snapshot to a database Instance, filling in extra fields from the parent instance.

type InstanceSnapshotFilter

type InstanceSnapshotFilter struct {
	ID       *int
	Project  *string
	Instance *string
	Name     *string
}

InstanceSnapshotFilter specifies potential query parameter fields.

type InstanceSnapshotGenerated

type InstanceSnapshotGenerated interface {
	// GetInstanceSnapshotConfig returns all available InstanceSnapshot Config
	// generator: instance_snapshot GetMany
	GetInstanceSnapshotConfig(ctx context.Context, tx *sql.Tx, instanceSnapshotID int, filters ...ConfigFilter) (map[string]string, error)

	// GetInstanceSnapshotDevices returns all available InstanceSnapshot Devices
	// generator: instance_snapshot GetMany
	GetInstanceSnapshotDevices(ctx context.Context, tx *sql.Tx, instanceSnapshotID int, filters ...DeviceFilter) (map[string]Device, error)

	// GetInstanceSnapshots returns all available instance_snapshots.
	// generator: instance_snapshot GetMany
	GetInstanceSnapshots(ctx context.Context, tx *sql.Tx, filters ...InstanceSnapshotFilter) ([]InstanceSnapshot, error)

	// GetInstanceSnapshot returns the instance_snapshot with the given key.
	// generator: instance_snapshot GetOne
	GetInstanceSnapshot(ctx context.Context, tx *sql.Tx, project string, instance string, name string) (*InstanceSnapshot, error)

	// GetInstanceSnapshotID return the ID of the instance_snapshot with the given key.
	// generator: instance_snapshot ID
	GetInstanceSnapshotID(ctx context.Context, tx *sql.Tx, project string, instance string, name string) (int64, error)

	// InstanceSnapshotExists checks if a instance_snapshot with the given key exists.
	// generator: instance_snapshot Exists
	InstanceSnapshotExists(ctx context.Context, tx *sql.Tx, project string, instance string, name string) (bool, error)

	// CreateInstanceSnapshotConfig adds new instance_snapshot Config to the database.
	// generator: instance_snapshot Create
	CreateInstanceSnapshotConfig(ctx context.Context, tx *sql.Tx, instanceSnapshotID int64, config map[string]string) error

	// CreateInstanceSnapshotDevices adds new instance_snapshot Devices to the database.
	// generator: instance_snapshot Create
	CreateInstanceSnapshotDevices(ctx context.Context, tx *sql.Tx, instanceSnapshotID int64, devices map[string]Device) error

	// CreateInstanceSnapshot adds a new instance_snapshot to the database.
	// generator: instance_snapshot Create
	CreateInstanceSnapshot(ctx context.Context, tx *sql.Tx, object InstanceSnapshot) (int64, error)

	// RenameInstanceSnapshot renames the instance_snapshot matching the given key parameters.
	// generator: instance_snapshot Rename
	RenameInstanceSnapshot(ctx context.Context, tx *sql.Tx, project string, instance string, name string, to string) error

	// DeleteInstanceSnapshot deletes the instance_snapshot matching the given key parameters.
	// generator: instance_snapshot DeleteOne-by-Project-and-Instance-and-Name
	DeleteInstanceSnapshot(ctx context.Context, tx *sql.Tx, project string, instance string, name string) error
}

InstanceSnapshotGenerated is an interface of generated methods for InstanceSnapshot.

type NetworkIntegration

type NetworkIntegration struct {
	ID          int
	Name        string
	Description string
	Type        int
}

NetworkIntegration is a value object holding db-related details about a network integration.

func GetNetworkIntegration

func GetNetworkIntegration(ctx context.Context, tx *sql.Tx, name string) (*NetworkIntegration, error)

GetNetworkIntegration returns the network_integration with the given key. generator: network_integration GetOne

func GetNetworkIntegrations

func GetNetworkIntegrations(ctx context.Context, tx *sql.Tx, filters ...NetworkIntegrationFilter) ([]NetworkIntegration, error)

GetNetworkIntegrations returns all available network_integrations. generator: network_integration GetMany

func (*NetworkIntegration) ToAPI

ToAPI converts the DB records to an API record.

type NetworkIntegrationFilter

type NetworkIntegrationFilter struct {
	ID   *int
	Name *string
}

NetworkIntegrationFilter specifies potential query parameter fields.

type NetworkIntegrationGenerated

type NetworkIntegrationGenerated interface {
	// GetNetworkIntegrationConfig returns all available NetworkIntegration Config
	// generator: network_integration GetMany
	GetNetworkIntegrationConfig(ctx context.Context, tx *sql.Tx, networkIntegrationID int, filters ...ConfigFilter) (map[string]string, error)

	// GetNetworkIntegrations returns all available network_integrations.
	// generator: network_integration GetMany
	GetNetworkIntegrations(ctx context.Context, tx *sql.Tx, filters ...NetworkIntegrationFilter) ([]NetworkIntegration, error)

	// GetNetworkIntegration returns the network_integration with the given key.
	// generator: network_integration GetOne
	GetNetworkIntegration(ctx context.Context, tx *sql.Tx, name string) (*NetworkIntegration, error)

	// NetworkIntegrationExists checks if a network_integration with the given key exists.
	// generator: network_integration Exists
	NetworkIntegrationExists(ctx context.Context, tx *sql.Tx, name string) (bool, error)

	// CreateNetworkIntegrationConfig adds new network_integration Config to the database.
	// generator: network_integration Create
	CreateNetworkIntegrationConfig(ctx context.Context, tx *sql.Tx, networkIntegrationID int64, config map[string]string) error

	// CreateNetworkIntegration adds a new network_integration to the database.
	// generator: network_integration Create
	CreateNetworkIntegration(ctx context.Context, tx *sql.Tx, object NetworkIntegration) (int64, error)

	// GetNetworkIntegrationID return the ID of the network_integration with the given key.
	// generator: network_integration ID
	GetNetworkIntegrationID(ctx context.Context, tx *sql.Tx, name string) (int64, error)

	// RenameNetworkIntegration renames the network_integration matching the given key parameters.
	// generator: network_integration Rename
	RenameNetworkIntegration(ctx context.Context, tx *sql.Tx, name string, to string) error

	// DeleteNetworkIntegration deletes the network_integration matching the given key parameters.
	// generator: network_integration DeleteOne-by-Name
	DeleteNetworkIntegration(ctx context.Context, tx *sql.Tx, name string) error

	// UpdateNetworkIntegrationConfig updates the network_integration Config matching the given key parameters.
	// generator: network_integration Update
	UpdateNetworkIntegrationConfig(ctx context.Context, tx *sql.Tx, networkIntegrationID int64, config map[string]string) error

	// UpdateNetworkIntegration updates the network_integration matching the given key parameters.
	// generator: network_integration Update
	UpdateNetworkIntegration(ctx context.Context, tx *sql.Tx, name string, object NetworkIntegration) error
}

NetworkIntegrationGenerated is an interface of generated methods for NetworkIntegration.

type Node

type Node struct {
	ID   int
	Name string
}

Node represents a cluster member.

type NodeClusterGroup

type NodeClusterGroup struct {
	GroupID int    `db:"primary=yes"`
	Node    string `db:"join=nodes.name"`
	NodeID  int    `db:"omit=create,objects,objects-by-GroupID"`
}

NodeClusterGroup associates a node to a cluster group.

func GetNodeClusterGroups

func GetNodeClusterGroups(ctx context.Context, tx *sql.Tx, filters ...NodeClusterGroupFilter) ([]NodeClusterGroup, error)

GetNodeClusterGroups returns all available node_cluster_groups. generator: node_cluster_group GetMany

type NodeClusterGroupFilter

type NodeClusterGroupFilter struct {
	GroupID *int
}

NodeClusterGroupFilter specifies potential query parameter fields.

type NodeFilter

type NodeFilter struct {
	Name *string
}

NodeFilter specifies potential query parameter fields.

type NodeGenerated

type NodeGenerated interface {
	// GetNodeID return the ID of the node with the given key.
	// generator: node ID
	GetNodeID(ctx context.Context, tx *sql.Tx, name string) (int64, error)
}

NodeGenerated is an interface of generated methods for Node.

type Operation

type Operation struct {
	ID          int64              `db:"primary=yes"`                               // Stable database identifier
	UUID        string             `db:"primary=yes"`                               // User-visible identifier
	NodeAddress string             `db:"join=nodes.address&omit=create-or-replace"` // Address of the node the operation is running on
	ProjectID   *int64             // ID of the project for the operation.
	NodeID      int64              // ID of the node the operation is running on
	Type        operationtype.Type // Type of the operation
}

Operation holds information about a single operation running on a member in the cluster.

func GetOperations

func GetOperations(ctx context.Context, tx *sql.Tx, filters ...OperationFilter) ([]Operation, error)

GetOperations returns all available operations. generator: operation GetMany

type OperationFilter

type OperationFilter struct {
	ID     *int64
	NodeID *int64
	UUID   *string
}

OperationFilter specifies potential query parameter fields.

type OperationGenerated

type OperationGenerated interface {
	// GetOperations returns all available operations.
	// generator: operation GetMany
	GetOperations(ctx context.Context, tx *sql.Tx, filters ...OperationFilter) ([]Operation, error)

	// CreateOrReplaceOperation adds a new operation to the database.
	// generator: operation CreateOrReplace
	CreateOrReplaceOperation(ctx context.Context, tx *sql.Tx, object Operation) (int64, error)

	// DeleteOperation deletes the operation matching the given key parameters.
	// generator: operation DeleteOne-by-UUID
	DeleteOperation(ctx context.Context, tx *sql.Tx, uuid string) error

	// DeleteOperations deletes the operation matching the given key parameters.
	// generator: operation DeleteMany-by-NodeID
	DeleteOperations(ctx context.Context, tx *sql.Tx, nodeID int64) error
}

OperationGenerated is an interface of generated methods for Operation.

type Profile

type Profile struct {
	ID          int
	ProjectID   int    `db:"omit=create,update"`
	Project     string `db:"primary=yes&join=projects.name"`
	Name        string `db:"primary=yes"`
	Description string `db:"coalesce=''"`
}

Profile is a value object holding db-related details about a profile.

func GetInstanceProfiles

func GetInstanceProfiles(ctx context.Context, tx *sql.Tx, instanceID int) ([]Profile, error)

GetInstanceProfiles returns all available Profiles for the Instance. generator: instance_profile GetMany

func GetProfile

func GetProfile(ctx context.Context, tx *sql.Tx, project string, name string) (*Profile, error)

GetProfile returns the profile with the given key. generator: profile GetOne

func GetProfiles

func GetProfiles(ctx context.Context, tx *sql.Tx, filters ...ProfileFilter) ([]Profile, error)

GetProfiles returns all available profiles. generator: profile GetMany

func GetProfilesIfEnabled

func GetProfilesIfEnabled(ctx context.Context, tx *sql.Tx, projectName string, names []string) ([]Profile, error)

GetProfilesIfEnabled returns the profiles from the given project, or the default project if "features.profiles" is not set.

func (*Profile) ToAPI

func (p *Profile) ToAPI(ctx context.Context, tx *sql.Tx, profileConfigs map[int]map[string]string, profileDevices map[int][]Device) (*api.Profile, error)

ToAPI returns a cluster Profile as an API struct.

type ProfileFilter

type ProfileFilter struct {
	ID      *int
	Project *string
	Name    *string
}

ProfileFilter specifies potential query parameter fields.

type ProfileGenerated

type ProfileGenerated interface {
	// GetProfileID return the ID of the profile with the given key.
	// generator: profile ID
	GetProfileID(ctx context.Context, tx *sql.Tx, project string, name string) (int64, error)

	// ProfileExists checks if a profile with the given key exists.
	// generator: profile Exists
	ProfileExists(ctx context.Context, tx *sql.Tx, project string, name string) (bool, error)

	// GetProfileConfig returns all available Profile Config
	// generator: profile GetMany
	GetProfileConfig(ctx context.Context, tx *sql.Tx, profileID int, filters ...ConfigFilter) (map[string]string, error)

	// GetProfileDevices returns all available Profile Devices
	// generator: profile GetMany
	GetProfileDevices(ctx context.Context, tx *sql.Tx, profileID int, filters ...DeviceFilter) (map[string]Device, error)

	// GetProfiles returns all available profiles.
	// generator: profile GetMany
	GetProfiles(ctx context.Context, tx *sql.Tx, filters ...ProfileFilter) ([]Profile, error)

	// GetProfile returns the profile with the given key.
	// generator: profile GetOne
	GetProfile(ctx context.Context, tx *sql.Tx, project string, name string) (*Profile, error)

	// CreateProfileConfig adds new profile Config to the database.
	// generator: profile Create
	CreateProfileConfig(ctx context.Context, tx *sql.Tx, profileID int64, config map[string]string) error

	// CreateProfileDevices adds new profile Devices to the database.
	// generator: profile Create
	CreateProfileDevices(ctx context.Context, tx *sql.Tx, profileID int64, devices map[string]Device) error

	// CreateProfile adds a new profile to the database.
	// generator: profile Create
	CreateProfile(ctx context.Context, tx *sql.Tx, object Profile) (int64, error)

	// RenameProfile renames the profile matching the given key parameters.
	// generator: profile Rename
	RenameProfile(ctx context.Context, tx *sql.Tx, project string, name string, to string) error

	// UpdateProfileConfig updates the profile Config matching the given key parameters.
	// generator: profile Update
	UpdateProfileConfig(ctx context.Context, tx *sql.Tx, profileID int64, config map[string]string) error

	// UpdateProfileDevices updates the profile Device matching the given key parameters.
	// generator: profile Update
	UpdateProfileDevices(ctx context.Context, tx *sql.Tx, profileID int64, devices map[string]Device) error

	// UpdateProfile updates the profile matching the given key parameters.
	// generator: profile Update
	UpdateProfile(ctx context.Context, tx *sql.Tx, project string, name string, object Profile) error

	// DeleteProfile deletes the profile matching the given key parameters.
	// generator: profile DeleteOne-by-Project-and-Name
	DeleteProfile(ctx context.Context, tx *sql.Tx, project string, name string) error
}

ProfileGenerated is an interface of generated methods for Profile.

type Project

type Project struct {
	ID          int
	Description string
	Name        string `db:"omit=update"`
}

Project represents a project.

func GetCertificateProjects

func GetCertificateProjects(ctx context.Context, tx *sql.Tx, certificateID int) ([]Project, error)

GetCertificateProjects returns all available Projects for the Certificate. generator: certificate_project GetMany

func GetProject

func GetProject(ctx context.Context, tx *sql.Tx, name string) (*Project, error)

GetProject returns the project with the given key. generator: project GetOne

func GetProjects

func GetProjects(ctx context.Context, tx *sql.Tx, filters ...ProjectFilter) ([]Project, error)

GetProjects returns all available projects. generator: project GetMany

func (*Project) ToAPI

func (p *Project) ToAPI(ctx context.Context, tx *sql.Tx) (*api.Project, error)

ToAPI converts the database Project struct to an api.Project entry.

type ProjectFeature

type ProjectFeature struct {
	// DefaultEnabled
	// Whether the feature should be enabled by default on new projects.
	DefaultEnabled bool

	// CanEnableNonEmpty
	// Whether or not the feature can be changed to enabled on a non-empty project.
	CanEnableNonEmpty bool
}

ProjectFeature indicates the behaviour of a project feature.

type ProjectFilter

type ProjectFilter struct {
	ID   *int
	Name *string `db:"omit=update"` // If non-empty, return only the project with this name.
}

ProjectFilter specifies potential query parameter fields.

type ProjectGenerated

type ProjectGenerated interface {
	// GetProjectConfig returns all available Project Config
	// generator: project GetMany
	GetProjectConfig(ctx context.Context, tx *sql.Tx, projectID int, filters ...ConfigFilter) (map[string]string, error)

	// GetProjects returns all available projects.
	// generator: project GetMany
	GetProjects(ctx context.Context, tx *sql.Tx, filters ...ProjectFilter) ([]Project, error)

	// GetProject returns the project with the given key.
	// generator: project GetOne
	GetProject(ctx context.Context, tx *sql.Tx, name string) (*Project, error)

	// ProjectExists checks if a project with the given key exists.
	// generator: project Exists
	ProjectExists(ctx context.Context, tx *sql.Tx, name string) (bool, error)

	// CreateProjectConfig adds new project Config to the database.
	// generator: project Create
	CreateProjectConfig(ctx context.Context, tx *sql.Tx, projectID int64, config map[string]string) error

	// CreateProject adds a new project to the database.
	// generator: project Create
	CreateProject(ctx context.Context, tx *sql.Tx, object Project) (int64, error)

	// GetProjectID return the ID of the project with the given key.
	// generator: project ID
	GetProjectID(ctx context.Context, tx *sql.Tx, name string) (int64, error)

	// RenameProject renames the project matching the given key parameters.
	// generator: project Rename
	RenameProject(ctx context.Context, tx *sql.Tx, name string, to string) error

	// DeleteProject deletes the project matching the given key parameters.
	// generator: project DeleteOne-by-Name
	DeleteProject(ctx context.Context, tx *sql.Tx, name string) error
}

ProjectGenerated is an interface of generated methods for Project.

type Warning

type Warning struct {
	ID             int
	Node           string `db:"coalesce=''&leftjoin=nodes.name"`
	Project        string `db:"coalesce=''&leftjoin=projects.name"`
	EntityTypeCode int    `db:"coalesce=-1"`
	EntityID       int    `db:"coalesce=-1"`
	UUID           string `db:"primary=yes"`
	TypeCode       warningtype.Type
	Status         warningtype.Status
	FirstSeenDate  time.Time
	LastSeenDate   time.Time
	UpdatedDate    time.Time
	LastMessage    string
	Count          int
}

Warning is a value object holding db-related details about a warning.

func GetWarning

func GetWarning(ctx context.Context, tx *sql.Tx, uuid string) (*Warning, error)

GetWarning returns the warning with the given key. generator: warning GetOne-by-UUID

func GetWarnings

func GetWarnings(ctx context.Context, tx *sql.Tx, filters ...WarningFilter) ([]Warning, error)

GetWarnings returns all available warnings. generator: warning GetMany

func (Warning) ToAPI

func (w Warning) ToAPI() api.Warning

ToAPI returns an API entry.

type WarningFilter

type WarningFilter struct {
	ID             *int
	UUID           *string
	Project        *string
	Node           *string
	TypeCode       *warningtype.Type
	EntityTypeCode *int
	EntityID       *int
	Status         *warningtype.Status
}

WarningFilter specifies potential query parameter fields.

type WarningGenerated

type WarningGenerated interface {
	// GetWarnings returns all available warnings.
	// generator: warning GetMany
	GetWarnings(ctx context.Context, tx *sql.Tx, filters ...WarningFilter) ([]Warning, error)

	// GetWarning returns the warning with the given key.
	// generator: warning GetOne-by-UUID
	GetWarning(ctx context.Context, tx *sql.Tx, uuid string) (*Warning, error)

	// DeleteWarning deletes the warning matching the given key parameters.
	// generator: warning DeleteOne-by-UUID
	DeleteWarning(ctx context.Context, tx *sql.Tx, uuid string) error

	// DeleteWarnings deletes the warning matching the given key parameters.
	// generator: warning DeleteMany-by-EntityTypeCode-and-EntityID
	DeleteWarnings(ctx context.Context, tx *sql.Tx, entityTypeCode int, entityID int) error

	// GetWarningID return the ID of the warning with the given key.
	// generator: warning ID
	GetWarningID(ctx context.Context, tx *sql.Tx, uuid string) (int64, error)

	// WarningExists checks if a warning with the given key exists.
	// generator: warning Exists
	WarningExists(ctx context.Context, tx *sql.Tx, uuid string) (bool, error)
}

WarningGenerated is an interface of generated methods for Warning.

Jump to

Keyboard shortcuts

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