Documentation ¶
Index ¶
- Constants
- Variables
- func AllowInstanceCreation(tx *db.ClusterTx, projectName string, req api.InstancesPost) error
- func AllowInstanceUpdate(tx *db.ClusterTx, projectName, instanceName string, req api.InstancePut, ...) error
- func AllowProfileUpdate(tx *db.ClusterTx, projectName, profileName string, req api.ProfilePut) error
- func AllowProjectUpdate(tx *db.ClusterTx, projectName string, config map[string]string, ...) error
- func AllowVolumeCreation(tx *db.ClusterTx, projectName string, req api.StorageVolumesPost) error
- func AllowVolumeUpdate(tx *db.ClusterTx, projectName, volumeName string, req api.StorageVolumePut, ...) error
- func DNS(projectName string, instanceName string) string
- func FilterUsedBy(r *http.Request, entries []string) []string
- func GetImageSpaceBudget(tx *db.ClusterTx, projectName string) (int64, error)
- func Instance(projectName string, instanceName string) string
- func InstanceParts(projectInstanceName string) (string, string)
- func NetworkProject(c *db.Cluster, projectName string) (string, map[string]string, error)
- func NetworkProjectFromRecord(p *api.Project) string
- func ProfileProject(c *db.Cluster, projectName string) (string, map[string]string, error)
- func ProfileProjectFromRecord(p *api.Project) string
- func StorageVolume(projectName string, storageVolumeName string) string
- func StorageVolumeParts(projectStorageVolumeName string) (string, string)
- func StorageVolumeProject(c *db.Cluster, projectName string, volumeType int) (string, error)
- func StorageVolumeProjectFromRecord(p *api.Project, volumeType int) string
Examples ¶
Constants ¶
const Default = "default"
Default is the string used for a default project.
Variables ¶
var AllRestrictions = []string{
"restricted.containers.nesting",
"restricted.containers.lowlevel",
"restricted.containers.privilege",
"restricted.virtual-machines.lowlevel",
"restricted.devices.unix-char",
"restricted.devices.unix-block",
"restricted.devices.unix-hotplug",
"restricted.devices.infiniband",
"restricted.devices.gpu",
"restricted.devices.usb",
"restricted.devices.nic",
"restricted.devices.disk",
}
AllRestrictions lists all available 'restrict.*' config keys.
Functions ¶
func AllowInstanceCreation ¶
AllowInstanceCreation returns an error if any project-specific limit or restriction is violated when creating a new instance.
func AllowInstanceUpdate ¶
func AllowInstanceUpdate(tx *db.ClusterTx, projectName, instanceName string, req api.InstancePut, currentConfig map[string]string) error
AllowInstanceUpdate returns an error if any project-specific limit or restriction is violated when updating an existing instance.
func AllowProfileUpdate ¶
func AllowProfileUpdate(tx *db.ClusterTx, projectName, profileName string, req api.ProfilePut) error
AllowProfileUpdate checks that project limits and restrictions are not violated when changing a profile.
func AllowProjectUpdate ¶
func AllowProjectUpdate(tx *db.ClusterTx, projectName string, config map[string]string, changed []string) error
AllowProjectUpdate checks the new config to be set on a project is valid.
func AllowVolumeCreation ¶
AllowVolumeCreation returns an error if any project-specific limit or restriction is violated when creating a new custom volume in a project.
func AllowVolumeUpdate ¶
func AllowVolumeUpdate(tx *db.ClusterTx, projectName, volumeName string, req api.StorageVolumePut, currentConfig map[string]string) error
AllowVolumeUpdate returns an error if any project-specific limit or restriction is violated when updating an existing custom volume.
func DNS ¶
DNS adds ".<project>" as a suffix to instance name when the given project name is not "default".
func FilterUsedBy ¶
FilterUsedBy filters a UsedBy list based on project access
func GetImageSpaceBudget ¶
GetImageSpaceBudget returns how much disk space is left in the given project for writing images.
If no limit is in place, return -1.
func Instance ¶
Instance adds the "<project>_" prefix to instance name when the given project name is not "default".
Example ¶
package main import ( "fmt" "github.com/lxc/lxd/lxd/project" ) func main() { prefixed := project.Instance(project.Default, "test") fmt.Println(prefixed) prefixed = project.Instance("project_name", "test1") fmt.Println(prefixed) }
Output: test project_name_test1
func InstanceParts ¶
InstanceParts takes a project prefixed Instance name string and returns the project and instance name. If a non-project prefixed Instance name is supplied, then the project is returned as "default" and the instance name is returned unmodified in the 2nd return value. This is suitable for passing back into Prefix(). Note: This should only be used with Instance names (because they cannot contain the project separator) and this function relies on this rule as project names can contain the project separator.
Example ¶
package main import ( "fmt" "github.com/lxc/lxd/lxd/project" ) func main() { projectName, name := project.InstanceParts("unprefixed") fmt.Println(projectName, name) projectName, name = project.InstanceParts(project.Instance(project.Default, "test")) fmt.Println(projectName, name) projectName, name = project.InstanceParts("project_name_test") fmt.Println(projectName, name) projectName, name = project.InstanceParts(project.Instance("proj", "test1")) fmt.Println(projectName, name) }
Output: default unprefixed default test project_name test proj test1
func NetworkProject ¶
NetworkProject returns the project name to use for the network based on the requested project. If the project specified has the "features.networks" flag enabled then the project name is returned, otherwise the default project name is returned. The second return value is the project's config if non-default project is being returned, nil if not.
func NetworkProjectFromRecord ¶
NetworkProjectFromRecord returns the project name to use for the network based on the supplied project. If the project supplied has the "features.networks" flag enabled then the project name is returned, otherwise the default project name is returned.
func ProfileProject ¶
ProfileProject returns the project name to use for the profile based on the requested project. If the project specified has the "features.profiles" flag enabled then the project name is returned, otherwise the default project name is returned. The second return value is the project's config if non-default project is being returned, nil if not.
func ProfileProjectFromRecord ¶
ProfileProjectFromRecord returns the project name to use for the profile based on the supplied project. If the project supplied has the "features.profiles" flag enabled then the project name is returned, otherwise the default project name is returned.
func StorageVolume ¶
StorageVolume adds the "<project>_prefix" to the storage volume name. Even if the project name is "default".
Example ¶
package main import ( "fmt" "github.com/lxc/lxd/lxd/project" ) func main() { prefixed := project.StorageVolume(project.Default, "test") fmt.Println(prefixed) prefixed = project.StorageVolume("project_name", "test1") fmt.Println(prefixed) }
Output: default_test project_name_test1
func StorageVolumeParts ¶
StorageVolumeParts takes a project prefixed storage volume name and returns the project and storage volume name as separate variables.
func StorageVolumeProject ¶
StorageVolumeProject returns the project name to use to for the volume based on the requested project. For custom volume type, if the project specified has the "features.storage.volumes" flag enabled then the project name is returned, otherwise the default project name is returned. For all other volume types the supplied project name is returned.
func StorageVolumeProjectFromRecord ¶
StorageVolumeProjectFromRecord returns the project name to use to for the volume based on the supplied project. For custom volume type, if the project supplied has the "features.storage.volumes" flag enabled then the project name is returned, otherwise the default project name is returned. For all other volume types the supplied project's name is returned.
Types ¶
This section is empty.