morffix/server/index.go

35 lines
1.2 KiB
Go

package server
import (
"fmt"
"log/slog"
"net/http"
"git.lastassault.de/speatzle/morffix/types"
)
func handleIndex(w http.ResponseWriter, r *http.Request) {
data := "Connections:\n"
func() {
WorkersMutex.Lock()
defer WorkersMutex.Unlock()
for i := range Workers {
if Workers[i].Connected {
var status types.WorkerStatus
_, err := rpcServer.Call(r.Context(), Workers[i].Conn, "status", nil, &status)
if err != nil {
w.Write([]byte(err.Error()))
slog.ErrorContext(r.Context(), "Error Getting Worker Status", "err", err)
return
}
slog.InfoContext(r.Context(), "Got Worker Status", "id", i, "status", status)
data = data + fmt.Sprintf("ID: %v, Name: %v, Address: %v Connected %v\n", i, Workers[i].Name, Workers[i].Address, Workers[i].Connected)
data = data + fmt.Sprintf("### CPU Cores: %v, CPU Usage: %v, Memory Total: %v Memory Usage %v\n", status.CPUCount, status.CPUUsage, status.MemoryTotal, status.MemoryUsage)
} else {
data = data + fmt.Sprintf("ID: %v, Name: %v, Address: %v Connected %v\n", i, Workers[i].Name, Workers[i].Address, Workers[i].Connected)
}
}
}()
w.Write([]byte("Morffix\n" + data))
}