98 lines
2.5 KiB
Go
98 lines
2.5 KiB
Go
package api
|
|
|
|
// ProjectsPost represents the fields of a new LXD project
|
|
//
|
|
// swagger:model
|
|
//
|
|
// API extension: projects.
|
|
type ProjectsPost struct {
|
|
ProjectPut `yaml:",inline"`
|
|
|
|
// The name of the new project
|
|
// Example: foo
|
|
Name string `json:"name" yaml:"name"`
|
|
}
|
|
|
|
// ProjectPost represents the fields required to rename a LXD project
|
|
//
|
|
// swagger:model
|
|
//
|
|
// API extension: projects.
|
|
type ProjectPost struct {
|
|
// The new name for the project
|
|
// Example: bar
|
|
Name string `json:"name" yaml:"name"`
|
|
}
|
|
|
|
// ProjectPut represents the modifiable fields of a LXD project
|
|
//
|
|
// swagger:model
|
|
//
|
|
// API extension: projects.
|
|
type ProjectPut struct {
|
|
// Project configuration map (refer to doc/projects.md)
|
|
// Example: {"features.profiles": "true", "features.networks": "false"}
|
|
Config map[string]string `json:"config" yaml:"config"`
|
|
|
|
// Description of the project
|
|
// Example: My new project
|
|
Description string `json:"description" yaml:"description"`
|
|
}
|
|
|
|
// Project represents a LXD project
|
|
//
|
|
// swagger:model
|
|
//
|
|
// API extension: projects.
|
|
type Project struct {
|
|
ProjectPut `yaml:",inline"`
|
|
|
|
// The project name
|
|
// Read only: true
|
|
// Example: foo
|
|
Name string `json:"name" yaml:"name"`
|
|
|
|
// List of URLs of objects using this project
|
|
// Read only: true
|
|
// Example: ["/1.0/images/0e60015346f06627f10580d56ac7fffd9ea775f6d4f25987217d5eed94910a20", "/1.0/instances/c1", "/1.0/networks/lxdbr0", "/1.0/profiles/default", "/1.0/storage-pools/default/volumes/custom/blah"]
|
|
UsedBy []string `json:"used_by" yaml:"used_by"`
|
|
}
|
|
|
|
// Writable converts a full Project struct into a ProjectPut struct (filters read-only fields)
|
|
//
|
|
// API extension: projects.
|
|
func (project *Project) Writable() ProjectPut {
|
|
return project.ProjectPut
|
|
}
|
|
|
|
// URL returns the URL for the project.
|
|
func (project *Project) URL(apiVersion string) *URL {
|
|
return NewURL().Path(apiVersion, "projects", project.Name)
|
|
}
|
|
|
|
// ProjectState represents the current running state of a LXD project
|
|
//
|
|
// swagger:model
|
|
//
|
|
// API extension: project_usage.
|
|
type ProjectState struct {
|
|
// Allocated and used resources
|
|
// Read only: true
|
|
// Example: {"containers": {"limit": 10, "usage": 4}, "cpu": {"limit": 20, "usage": 16}}
|
|
Resources map[string]ProjectStateResource `json:"resources" yaml:"resources"`
|
|
}
|
|
|
|
// ProjectStateResource represents the state of a particular resource in a LXD project
|
|
//
|
|
// swagger:model
|
|
//
|
|
// API extension: project_usage.
|
|
type ProjectStateResource struct {
|
|
// Limit for the resource (-1 if none)
|
|
// Example: 10
|
|
Limit int64
|
|
|
|
// Current usage for the resource
|
|
// Example: 4
|
|
Usage int64
|
|
}
|