fix: reconcile instance status with Docker on list, add IsContainerRunning
This commit is contained in:
@@ -33,6 +33,27 @@ func (s *Server) listInstances(w http.ResponseWriter, r *http.Request) {
|
||||
respondError(w, http.StatusInternalServerError, "internal server error")
|
||||
return
|
||||
}
|
||||
|
||||
// Reconcile instance statuses with Docker's actual state.
|
||||
ctx := r.Context()
|
||||
for i, inst := range instances {
|
||||
if inst.ContainerID == "" || inst.Status == "removing" {
|
||||
continue
|
||||
}
|
||||
running, err := s.docker.IsContainerRunning(ctx, inst.ContainerID)
|
||||
if err != nil {
|
||||
continue // Docker unreachable, keep stored status.
|
||||
}
|
||||
actualStatus := "stopped"
|
||||
if running {
|
||||
actualStatus = "running"
|
||||
}
|
||||
if inst.Status != actualStatus {
|
||||
instances[i].Status = actualStatus
|
||||
_ = s.store.UpdateInstanceStatus(inst.ID, actualStatus)
|
||||
}
|
||||
}
|
||||
|
||||
respondJSON(w, http.StatusOK, instances)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user