mirror of
https://github.com/lxc/incus.git
synced 2026-02-05 09:46:19 +01:00
Merge pull request #2015 from rahafjrw/filter_incus_project_list
Add server-side filtering for `incus project list`
This commit is contained in:
@@ -44,6 +44,26 @@ func (r *ProtocolIncus) GetProjects() ([]api.Project, error) {
|
||||
return projects, nil
|
||||
}
|
||||
|
||||
// GetProjectsWithFilter returns a filtered list of projects as Project structs.
|
||||
func (r *ProtocolIncus) GetProjectsWithFilter(filters []string) ([]api.Project, error) {
|
||||
if !r.HasExtension("projects") {
|
||||
return nil, fmt.Errorf("The server is missing the required \"projects\" API extension")
|
||||
}
|
||||
|
||||
projects := []api.Project{}
|
||||
|
||||
v := url.Values{}
|
||||
v.Set("recursion", "1")
|
||||
v.Set("filter", parseFilters(filters))
|
||||
|
||||
_, err := r.queryStruct("GET", fmt.Sprintf("/projects?%s", v.Encode()), nil, "", &projects)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return projects, nil
|
||||
}
|
||||
|
||||
// GetProject returns a Project entry for the provided name.
|
||||
func (r *ProtocolIncus) GetProject(name string) (*api.Project, string, error) {
|
||||
if !r.HasExtension("projects") {
|
||||
|
||||
@@ -305,6 +305,7 @@ type InstanceServer interface {
|
||||
// Project functions
|
||||
GetProjectNames() (names []string, err error)
|
||||
GetProjects() (projects []api.Project, err error)
|
||||
GetProjectsWithFilter(filters []string) (projects []api.Project, err error)
|
||||
GetProject(name string) (project *api.Project, ETag string, err error)
|
||||
GetProjectState(name string) (project *api.ProjectState, err error)
|
||||
GetProjectAccess(name string) (access api.Access, err error)
|
||||
|
||||
Reference in New Issue
Block a user