in pkg/webservice/handlers.go [950:1002]
func getQueueApplicationsByState(w http.ResponseWriter, r *http.Request) {
writeHeaders(w, r.Method)
vars := httprouter.ParamsFromContext(r.Context())
if vars == nil {
buildJSONErrorResponse(w, MissingParamsName, http.StatusBadRequest)
return
}
partition := vars.ByName("partition")
queueName := vars.ByName("queue")
appState := strings.ToLower(vars.ByName("state"))
status := strings.ToLower(r.URL.Query().Get("status"))
partitionContext := schedulerContext.Load().GetPartitionWithoutClusterID(partition)
if partitionContext == nil {
buildJSONErrorResponse(w, PartitionDoesNotExists, http.StatusNotFound)
return
}
unescapedQueueName, err := url.QueryUnescape(queueName)
if err != nil {
buildJSONErrorResponse(w, err.Error(), http.StatusBadRequest)
return
}
queueErr := validateQueue(unescapedQueueName)
if queueErr != nil {
buildJSONErrorResponse(w, queueErr.Error(), http.StatusBadRequest)
return
}
queue := partitionContext.GetQueue(unescapedQueueName)
if queue == nil {
buildJSONErrorResponse(w, QueueDoesNotExists, http.StatusNotFound)
return
}
if appState != AppStateActive {
buildJSONErrorResponse(w, fmt.Sprintf("Only following application states are allowed: %s", AppStateActive), http.StatusBadRequest)
return
}
if status != "" && !allowedAppActiveStatuses[status] {
buildJSONErrorResponse(w, allowedActiveStatusMsg, http.StatusBadRequest)
return
}
appsDao := make([]*dao.ApplicationDAOInfo, 0)
for _, app := range queue.GetCopyOfApps() {
if status == "" || strings.ToLower(app.CurrentState()) == status {
appsDao = append(appsDao, getApplicationDAO(app))
}
}
if err := json.NewEncoder(w).Encode(appsDao); err != nil {
buildJSONErrorResponse(w, err.Error(), http.StatusInternalServerError)
}
}