weldr: add filtering to compose route
When requesting the compose status, a user may want to filter the list of composes by blueprint name, compose status, and/or compose type. These filters can now be set in the /compose/status route's url as the queries blueprint, status, and type.
This commit is contained in:
parent
c312f40d27
commit
238d2b562e
2 changed files with 32 additions and 0 deletions
|
|
@ -1436,6 +1436,35 @@ func (api *API) composeStatusHandler(writer http.ResponseWriter, request *http.R
|
|||
}
|
||||
}
|
||||
composes := api.store.GetAllComposes()
|
||||
|
||||
q, err := url.ParseQuery(request.URL.RawQuery)
|
||||
if err != nil {
|
||||
errors := responseError{
|
||||
ID: "InvalidChars",
|
||||
Msg: fmt.Sprintf("invalid query string: %v", err),
|
||||
}
|
||||
statusResponseError(writer, http.StatusBadRequest, errors)
|
||||
return
|
||||
}
|
||||
|
||||
filterBlueprint := q.Get("blueprint")
|
||||
filterStatus := q.Get("status")
|
||||
filterImageType := q.Get("type")
|
||||
|
||||
if filterBlueprint != "" || filterStatus != "" || filterImageType != "" {
|
||||
for uuid, compose := range composes {
|
||||
filterImageType, found := common.ImageTypeFromCompatString(filterImageType)
|
||||
|
||||
if filterBlueprint != "" && compose.Blueprint.Name != filterBlueprint {
|
||||
delete(composes, uuid)
|
||||
} else if filterStatus != "" && compose.ImageBuilds[0].QueueStatus.ToString() != filterStatus {
|
||||
delete(composes, uuid)
|
||||
} else if found && compose.ImageBuilds[0].ImageType != filterImageType {
|
||||
delete(composes, uuid)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
reply.UUIDs = composesToComposeEntries(composes, uuids, isRequestVersionAtLeast(params, 1))
|
||||
|
||||
json.NewEncoder(writer).Encode(reply)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue