rename: /v1/media-server/* -> /v1/edge-server/*
This commit is contained in:
parent
b3e816e028
commit
fe7ff6719d
@ -140,10 +140,10 @@ func main() {
|
||||
r.Get("/devices/{id}/logs", h.ProxyAgent)
|
||||
r.Post("/devices/{id}/config/apply", h.ProxyAgent)
|
||||
r.Get("/devices/{id}/models", h.ProxyAgent)
|
||||
r.Post("/devices/{id}/media-server/start", h.ProxyAgent)
|
||||
r.Post("/devices/{id}/media-server/restart", h.ProxyAgent)
|
||||
r.Post("/devices/{id}/media-server/stop", h.ProxyAgent)
|
||||
r.Get("/devices/{id}/media-server/status", h.ProxyAgent)
|
||||
r.Post("/devices/{id}/edge-server/start", h.ProxyAgent)
|
||||
r.Post("/devices/{id}/edge-server/restart", h.ProxyAgent)
|
||||
r.Post("/devices/{id}/edge-server/stop", h.ProxyAgent)
|
||||
r.Get("/devices/{id}/edge-server/status", h.ProxyAgent)
|
||||
|
||||
// Generic passthrough for device agent /v1/* (covers config/ui/*, face-gallery, etc.)
|
||||
r.Handle("/devices/{id}/v1/*", http.HandlerFunc(h.ProxyAgentV1))
|
||||
|
||||
@ -170,22 +170,22 @@ func (h *Handler) ProxyAgent(w http.ResponseWriter, r *http.Request) {
|
||||
agentPath = "/v1/config/candidate/apply"
|
||||
method = "POST"
|
||||
case r.URL.Path == fmt.Sprintf("/api/devices/%s/reload", id):
|
||||
agentPath = "/v1/media-server/reload"
|
||||
agentPath = "/v1/edge-server/reload"
|
||||
method = "POST"
|
||||
case r.URL.Path == fmt.Sprintf("/api/devices/%s/rollback", id):
|
||||
agentPath = "/v1/media-server/rollback"
|
||||
agentPath = "/v1/edge-server/rollback"
|
||||
method = "POST"
|
||||
case r.URL.Path == fmt.Sprintf("/api/devices/%s/media-server/start", id):
|
||||
agentPath = "/v1/media-server/start"
|
||||
case r.URL.Path == fmt.Sprintf("/api/devices/%s/edge-server/start", id):
|
||||
agentPath = "/v1/edge-server/start"
|
||||
method = "POST"
|
||||
case r.URL.Path == fmt.Sprintf("/api/devices/%s/media-server/restart", id):
|
||||
agentPath = "/v1/media-server/restart"
|
||||
case r.URL.Path == fmt.Sprintf("/api/devices/%s/edge-server/restart", id):
|
||||
agentPath = "/v1/edge-server/restart"
|
||||
method = "POST"
|
||||
case r.URL.Path == fmt.Sprintf("/api/devices/%s/media-server/stop", id):
|
||||
agentPath = "/v1/media-server/stop"
|
||||
case r.URL.Path == fmt.Sprintf("/api/devices/%s/edge-server/stop", id):
|
||||
agentPath = "/v1/edge-server/stop"
|
||||
method = "POST"
|
||||
case r.URL.Path == fmt.Sprintf("/api/devices/%s/media-server/status", id):
|
||||
agentPath = "/v1/media-server/status"
|
||||
case r.URL.Path == fmt.Sprintf("/api/devices/%s/edge-server/status", id):
|
||||
agentPath = "/v1/edge-server/status"
|
||||
case r.URL.Path == fmt.Sprintf("/api/devices/%s/graphs", id):
|
||||
agentPath = "/v1/graphs"
|
||||
case name != "" && r.URL.Path == fmt.Sprintf("/api/devices/%s/graphs/%s", id, name):
|
||||
|
||||
@ -274,8 +274,8 @@ func TestHandler_ProxyAgentMapsLongRunningRollback(t *testing.T) {
|
||||
if r.Method != http.MethodPost {
|
||||
t.Fatalf("expected POST, got %s", r.Method)
|
||||
}
|
||||
if r.URL.Path != "/v1/media-server/rollback" {
|
||||
t.Fatalf("expected /v1/media-server/rollback, got %s", r.URL.Path)
|
||||
if r.URL.Path != "/v1/edge-server/rollback" {
|
||||
t.Fatalf("expected /v1/edge-server/rollback, got %s", r.URL.Path)
|
||||
}
|
||||
time.Sleep(3500 * time.Millisecond)
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
|
||||
@ -99,25 +99,25 @@ func OpenAPI(w http.ResponseWriter, r *http.Request) {
|
||||
"responses": map[string]any{"200": map[string]any{"description": "ok"}},
|
||||
},
|
||||
},
|
||||
"/api/devices/{id}/media-server/start": map[string]any{
|
||||
"/api/devices/{id}/edge-server/start": map[string]any{
|
||||
"post": map[string]any{
|
||||
"parameters": []any{map[string]any{"name": "id", "in": "path", "required": true, "schema": map[string]any{"type": "string"}}},
|
||||
"responses": map[string]any{"200": map[string]any{"description": "ok"}},
|
||||
},
|
||||
},
|
||||
"/api/devices/{id}/media-server/restart": map[string]any{
|
||||
"/api/devices/{id}/edge-server/restart": map[string]any{
|
||||
"post": map[string]any{
|
||||
"parameters": []any{map[string]any{"name": "id", "in": "path", "required": true, "schema": map[string]any{"type": "string"}}},
|
||||
"responses": map[string]any{"200": map[string]any{"description": "ok"}},
|
||||
},
|
||||
},
|
||||
"/api/devices/{id}/media-server/stop": map[string]any{
|
||||
"/api/devices/{id}/edge-server/stop": map[string]any{
|
||||
"post": map[string]any{
|
||||
"parameters": []any{map[string]any{"name": "id", "in": "path", "required": true, "schema": map[string]any{"type": "string"}}},
|
||||
"responses": map[string]any{"200": map[string]any{"description": "ok"}},
|
||||
},
|
||||
},
|
||||
"/api/devices/{id}/media-server/status": map[string]any{
|
||||
"/api/devices/{id}/edge-server/status": map[string]any{
|
||||
"get": map[string]any{
|
||||
"parameters": []any{map[string]any{"name": "id", "in": "path", "required": true, "schema": map[string]any{"type": "string"}}},
|
||||
"responses": map[string]any{"200": map[string]any{"description": "status", "content": map[string]any{"application/json": map[string]any{"schema": map[string]any{"type": "object"}}}}},
|
||||
|
||||
@ -106,7 +106,7 @@ func isLongOp(method, path string) bool {
|
||||
if method == http.MethodPost && path == "/v1/config/candidate/apply" {
|
||||
return true
|
||||
}
|
||||
if method == http.MethodPost && path == "/v1/media-server/rollback" {
|
||||
if method == http.MethodPost && path == "/v1/edge-server/rollback" {
|
||||
return true
|
||||
}
|
||||
if strings.HasPrefix(path, "/v1/config/ui/") {
|
||||
|
||||
@ -323,7 +323,7 @@ func (s *TaskService) executeOnDevice(task *models.Task, did string) {
|
||||
s.appendAuditLog(task, did, models.TaskSuccess, "")
|
||||
|
||||
case "reload":
|
||||
_, code, err := s.agent.DoStream("POST", dev.IP, dev.AgentPort, "/v1/media-server/reload", nil, "", 0)
|
||||
_, code, err := s.agent.DoStream("POST", dev.IP, dev.AgentPort, "/v1/edge-server/reload", nil, "", 0)
|
||||
if err != nil {
|
||||
s.updateDeviceStatus(task.ID, did, models.TaskFailed, 0, err.Error())
|
||||
return
|
||||
@ -336,7 +336,7 @@ func (s *TaskService) executeOnDevice(task *models.Task, did string) {
|
||||
s.appendAuditLog(task, did, models.TaskSuccess, "")
|
||||
|
||||
case "rollback":
|
||||
_, code, err := s.agent.DoStream("POST", dev.IP, dev.AgentPort, "/v1/media-server/rollback", nil, "", 0)
|
||||
_, code, err := s.agent.DoStream("POST", dev.IP, dev.AgentPort, "/v1/edge-server/rollback", nil, "", 0)
|
||||
if err != nil {
|
||||
s.updateDeviceStatus(task.ID, did, models.TaskFailed, 0, err.Error())
|
||||
return
|
||||
@ -354,7 +354,7 @@ func (s *TaskService) executeOnDevice(task *models.Task, did string) {
|
||||
s.updateDeviceStatus(task.ID, did, models.TaskFailed, 0, err.Error())
|
||||
return
|
||||
}
|
||||
_, code, err := s.agent.DoStream("POST", dev.IP, dev.AgentPort, "/v1/media-server/start", bodyR, "", bodyLen)
|
||||
_, code, err := s.agent.DoStream("POST", dev.IP, dev.AgentPort, "/v1/edge-server/start", bodyR, "", bodyLen)
|
||||
if err != nil {
|
||||
s.updateDeviceStatus(task.ID, did, models.TaskFailed, 0, err.Error())
|
||||
return
|
||||
@ -372,7 +372,7 @@ func (s *TaskService) executeOnDevice(task *models.Task, did string) {
|
||||
s.updateDeviceStatus(task.ID, did, models.TaskFailed, 0, err.Error())
|
||||
return
|
||||
}
|
||||
_, code, err := s.agent.DoStream("POST", dev.IP, dev.AgentPort, "/v1/media-server/restart", bodyR, "", bodyLen)
|
||||
_, code, err := s.agent.DoStream("POST", dev.IP, dev.AgentPort, "/v1/edge-server/restart", bodyR, "", bodyLen)
|
||||
if err != nil {
|
||||
s.updateDeviceStatus(task.ID, did, models.TaskFailed, 0, err.Error())
|
||||
return
|
||||
@ -385,7 +385,7 @@ func (s *TaskService) executeOnDevice(task *models.Task, did string) {
|
||||
s.appendAuditLog(task, did, models.TaskSuccess, "")
|
||||
|
||||
case "media_stop":
|
||||
_, code, err := s.agent.DoStream("POST", dev.IP, dev.AgentPort, "/v1/media-server/stop", nil, "", 0)
|
||||
_, code, err := s.agent.DoStream("POST", dev.IP, dev.AgentPort, "/v1/edge-server/stop", nil, "", 0)
|
||||
if err != nil {
|
||||
s.updateDeviceStatus(task.ID, did, models.TaskFailed, 0, err.Error())
|
||||
return
|
||||
|
||||
@ -147,8 +147,8 @@ func TestTaskService_MediaStart_IgnoresInvalidConfigShape(t *testing.T) {
|
||||
if r.Method != http.MethodPost {
|
||||
t.Fatalf("expected POST, got %s", r.Method)
|
||||
}
|
||||
if r.URL.Path != "/v1/media-server/start" {
|
||||
t.Fatalf("expected path /v1/media-server/start, got %s", r.URL.Path)
|
||||
if r.URL.Path != "/v1/edge-server/start" {
|
||||
t.Fatalf("expected path /v1/edge-server/start, got %s", r.URL.Path)
|
||||
}
|
||||
bodyBytes, _ = io.ReadAll(r.Body)
|
||||
w.WriteHeader(http.StatusOK)
|
||||
|
||||
@ -819,8 +819,8 @@ func (u *UI) Routes() (chi.Router, error) {
|
||||
r.Post("/devices/{id}/face-gallery/upload", u.actionDeviceFaceGalleryUpload)
|
||||
r.Post("/devices/{id}/face-gallery/reload", u.actionDeviceFaceGalleryReload)
|
||||
r.Post("/devices/{id}/models/upload", u.actionDeviceModelUpload)
|
||||
r.Post("/devices/{id}/media-server/configs/upload", u.actionDeviceMediaServerConfigUpload)
|
||||
r.Post("/devices/{id}/media-server/configs/upload-batch", u.actionDeviceMediaServerConfigUploadBatch)
|
||||
r.Post("/devices/{id}/edge-server/configs/upload", u.actionDeviceMediaServerConfigUpload)
|
||||
r.Post("/devices/{id}/edge-server/configs/upload-batch", u.actionDeviceMediaServerConfigUploadBatch)
|
||||
|
||||
r.Get("/tasks", u.pageTasks)
|
||||
r.Post("/tasks", u.actionCreateTask)
|
||||
@ -1773,18 +1773,18 @@ func (u *UI) actionDeviceAction(w http.ResponseWriter, r *http.Request) {
|
||||
path := ""
|
||||
switch action {
|
||||
case "reload":
|
||||
path = "/v1/media-server/reload"
|
||||
path = "/v1/edge-server/reload"
|
||||
case "rollback":
|
||||
path = "/v1/media-server/rollback"
|
||||
path = "/v1/edge-server/rollback"
|
||||
case "media_start":
|
||||
path = "/v1/media-server/start"
|
||||
path = "/v1/edge-server/start"
|
||||
case "media_restart":
|
||||
path = "/v1/media-server/restart"
|
||||
path = "/v1/edge-server/restart"
|
||||
case "media_stop":
|
||||
path = "/v1/media-server/stop"
|
||||
path = "/v1/edge-server/stop"
|
||||
case "media_status":
|
||||
method = "GET"
|
||||
path = "/v1/media-server/status"
|
||||
path = "/v1/edge-server/status"
|
||||
case "info":
|
||||
method = "GET"
|
||||
path = "/v1/info"
|
||||
@ -1980,7 +1980,7 @@ func (u *UI) actionDeviceMediaServerConfigUpload(w http.ResponseWriter, r *http.
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
path := "/v1/media-server/configs/" + url.PathEscape(name)
|
||||
path := "/v1/edge-server/configs/" + url.PathEscape(name)
|
||||
resp, code, derr := u.agent.DoStream("PUT", dev.IP, dev.AgentPort, path, file, "application/json", hdr.Size)
|
||||
data := PageData{Title: "设备详情", Device: dev, Message: fmt.Sprintf("PUT %s -> %d", path, code), RawText: string(resp)}
|
||||
if derr != nil {
|
||||
@ -2026,7 +2026,7 @@ func (u *UI) actionDeviceMediaServerConfigUploadBatch(w http.ResponseWriter, r *
|
||||
sb.WriteString(fmt.Sprintf("%s -> open failed: %v\n", name, err))
|
||||
continue
|
||||
}
|
||||
path := "/v1/media-server/configs/" + url.PathEscape(name)
|
||||
path := "/v1/edge-server/configs/" + url.PathEscape(name)
|
||||
resp, code, derr := u.agent.DoStream("PUT", dev.IP, dev.AgentPort, path, file, "application/json", hdr.Size)
|
||||
_ = file.Close()
|
||||
if derr != nil {
|
||||
|
||||
@ -365,7 +365,7 @@
|
||||
overlay.style.cssText = 'position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.5);z-index:9999;display:flex;align-items:center;justify-content:center';
|
||||
overlay.innerHTML = '<div style="background:var(--surface);border-radius:8px;padding:24px;min-width:360px;max-width:500px" onclick="event.stopPropagation()">' +
|
||||
'<div style="font-size:16px;font-weight:600;margin-bottom:4px">确认下发配置</div>' +
|
||||
'<div style="font-size:12px;color:var(--muted);margin-bottom:16px">以下配置将被渲染并下发到设备,media-server 将热更新。</div>' +
|
||||
'<div style="font-size:12px;color:var(--muted);margin-bottom:16px">以下配置将被渲染并下发到设备,edge-server 将热更新。</div>' +
|
||||
summary +
|
||||
'<div style="margin-top:16px;display:flex;gap:8px;justify-content:flex-end">' +
|
||||
'<button class="btn secondary" style="font-size:12px" onclick="this.closest(\'.confirm-overlay\').remove()">取消</button>' +
|
||||
|
||||
@ -2162,7 +2162,7 @@ func TestUI_DeviceControlPageShowsLiveActions(t *testing.T) {
|
||||
func TestUI_ActionDeviceActionCanRenderControlPage(t *testing.T) {
|
||||
agentServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
switch {
|
||||
case r.Method == http.MethodPost && r.URL.Path == "/v1/media-server/reload":
|
||||
case r.Method == http.MethodPost && r.URL.Path == "/v1/edge-server/reload":
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
_, _ = w.Write([]byte(`{"ok":true}`))
|
||||
case r.Method == http.MethodGet && r.URL.Path == "/v1/config/status":
|
||||
@ -2211,7 +2211,7 @@ func TestUI_ActionDeviceActionCanRenderControlPage(t *testing.T) {
|
||||
ui.actionDeviceAction(rr, req)
|
||||
|
||||
body := rr.Body.String()
|
||||
for _, want := range []string{"设备工作台", "运行与服务", "POST /v1/media-server/reload", "执行结果摘要"} {
|
||||
for _, want := range []string{"设备工作台", "运行与服务", "POST /v1/edge-server/reload", "执行结果摘要"} {
|
||||
if !strings.Contains(body, want) {
|
||||
t.Fatalf("expected control page result HTML to contain %q, got:\n%s", want, body)
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user