feat(agent): amélioration UI étudiante - instances, statut et lien site
This commit is contained in:
+18
-9
@@ -5,8 +5,6 @@ import (
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/gorilla/websocket"
|
||||
)
|
||||
@@ -81,17 +79,28 @@ func startUI(dataDir, nodeID, serverAddr string) {
|
||||
}
|
||||
|
||||
func listInstances(dataDir string, conn *websocket.Conn) {
|
||||
dir := filepath.Join(dataDir, "instances")
|
||||
entries, err := os.ReadDir(dir)
|
||||
instances, err := loadInstances(dataDir)
|
||||
if err != nil {
|
||||
log.Printf("loadInstances error: %v", err)
|
||||
conn.WriteJSON(map[string]interface{}{"action": "instances_list", "instances": []interface{}{}})
|
||||
return
|
||||
}
|
||||
var instances []map[string]interface{}
|
||||
for _, e := range entries {
|
||||
if e.IsDir() {
|
||||
instances = append(instances, map[string]interface{}{"id": e.Name()})
|
||||
|
||||
var list []map[string]interface{}
|
||||
for _, inst := range instances {
|
||||
status := getInstanceStatus(dataDir, inst.ID)
|
||||
if status != inst.Status {
|
||||
inst.Status = status
|
||||
_ = upsertInstance(dataDir, inst)
|
||||
}
|
||||
list = append(list, map[string]interface{}{
|
||||
"id": inst.ID,
|
||||
"templateName": inst.TemplateName,
|
||||
"port": inst.Port,
|
||||
"status": inst.Status,
|
||||
"url": instanceURL(inst),
|
||||
})
|
||||
}
|
||||
conn.WriteJSON(map[string]interface{}{"action": "instances_list", "instances": instances})
|
||||
|
||||
conn.WriteJSON(map[string]interface{}{"action": "instances_list", "instances": list})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user