forked from toolshed/coop-cloud-backend
48 lines
1.2 KiB
Go
48 lines
1.2 KiB
Go
package cli
|
|
import (
|
|
"os/exec"
|
|
"log"
|
|
"sort"
|
|
"net/http"
|
|
"encoding/json"
|
|
)
|
|
func (h *abraHandler) handleGetAppServices (w http.ResponseWriter, r *http.Request, appName string) {
|
|
var tmpMsg map[string]map[string]string
|
|
cmd := exec.Command("abra", "app", "ps", appName, "-m")
|
|
output, err := cmd.CombinedOutput()
|
|
if err != nil {
|
|
log.Printf("Error: ", err)
|
|
InternalServerErrorHandler(w, r)
|
|
return
|
|
}
|
|
if err = json.Unmarshal(output, &tmpMsg); err != nil {
|
|
log.Printf("Error: ", err)
|
|
InternalServerErrorHandler(w, r)
|
|
return
|
|
}
|
|
var services []AbraAppService
|
|
for _,v := range tmpMsg {
|
|
services = append(services, AbraAppService{
|
|
Service: v["service"],
|
|
Chaos: v["chaos"] == "true",
|
|
Created: v["created"],
|
|
Image: v["image"],
|
|
Ports: v["ports"],
|
|
State: v["state"],
|
|
Status: v["status"],
|
|
Version: v["version"],
|
|
})
|
|
}
|
|
sort.Slice(services, func(i, j int) bool {
|
|
return services[i].Service < services[j].Service
|
|
})
|
|
jsonBytes, err := json.Marshal(services)
|
|
if err != nil {
|
|
log.Printf("JSON conversion failed: %s\n", err)
|
|
InternalServerErrorHandler(w, r)
|
|
return
|
|
}
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(http.StatusOK)
|
|
w.Write(jsonBytes)
|
|
} |