diff --git a/admin/config.yaml b/admin/config.yaml index 382d74a7..faa685a2 100644 --- a/admin/config.yaml +++ b/admin/config.yaml @@ -1065,13 +1065,18 @@ workflows: config: status: 200 body_from: "steps.get-versions.rows" - # Deploy: update workflow status to 'active' + # Deploy: update status to 'active', return the updated workflow record - method: POST path: "/api/v1/admin/workflows/{id}/deploy" handler: admin-commands middlewares: [admin-cors, admin-auth-middleware] pipeline: steps: + - name: set-target-status + type: step.set + config: + values: + target_status: "active" - name: parse-request type: step.request_parse config: @@ -1095,15 +1100,16 @@ workflows: config: values: now: "{{ now }}" - - name: activate + - name: update-status type: step.db_exec config: database: admin-db - query: "UPDATE workflows SET status='active', updated_at=? WHERE id=?" + query: "UPDATE workflows SET status = ?, updated_at = ? WHERE id = ?" params: + - "{{index .steps \"set-target-status\" \"target_status\"}}" - "{{index .steps \"set-now\" \"now\"}}" - "{{index .steps \"parse-request\" \"path_params\" \"id\"}}" - - name: get-workflow + - name: get-updated type: step.db_query config: database: admin-db @@ -1114,20 +1120,25 @@ workflows: type: step.json_response config: status: 200 - body_from: "steps.get-workflow.row" + body_from: "steps.get-updated.row" - name: not-found type: step.json_response config: status: 404 body: error: "workflow not found" - # Stop: update workflow status to 'stopped' + # Stop: update status to 'stopped', return the updated workflow record - method: POST path: "/api/v1/admin/workflows/{id}/stop" handler: admin-commands middlewares: [admin-cors, admin-auth-middleware] pipeline: steps: + - name: set-target-status + type: step.set + config: + values: + target_status: "stopped" - name: parse-request type: step.request_parse config: @@ -1151,15 +1162,16 @@ workflows: config: values: now: "{{ now }}" - - name: deactivate + - name: update-status type: step.db_exec config: database: admin-db - query: "UPDATE workflows SET status='stopped', updated_at=? WHERE id=?" + query: "UPDATE workflows SET status = ?, updated_at = ? WHERE id = ?" params: + - "{{index .steps \"set-target-status\" \"target_status\"}}" - "{{index .steps \"set-now\" \"now\"}}" - "{{index .steps \"parse-request\" \"path_params\" \"id\"}}" - - name: get-workflow + - name: get-updated type: step.db_query config: database: admin-db @@ -1170,7 +1182,7 @@ workflows: type: step.json_response config: status: 200 - body_from: "steps.get-workflow.row" + body_from: "steps.get-updated.row" - name: not-found type: step.json_response config: diff --git a/cmd/server/main.go b/cmd/server/main.go index 8d7537ae..04858923 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -1561,7 +1561,7 @@ func runMultiWorkflow(logger *slog.Logger) error { })) srv := &http.Server{ - Addr: *addr, + Addr: *multiWorkflowAddr, Handler: mux, ReadHeaderTimeout: 10 * time.Second, } @@ -1581,7 +1581,7 @@ func runMultiWorkflow(logger *slog.Logger) error { // Start API server; propagate failures back so we can initiate shutdown. srvErrCh := make(chan error, 1) go func() { - logger.Info("Multi-workflow API listening", "addr", *addr) + logger.Info("Multi-workflow API listening", "addr", *multiWorkflowAddr) if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed { logger.Error("API server error", "error", err) srvErrCh <- err @@ -1589,8 +1589,8 @@ func runMultiWorkflow(logger *slog.Logger) error { }() // Build display address: if the host part is empty or 0.0.0.0/::/[::], use "localhost". - displayAddr := *addr - if host, port, splitErr := net.SplitHostPort(*addr); splitErr == nil && + displayAddr := *multiWorkflowAddr + if host, port, splitErr := net.SplitHostPort(*multiWorkflowAddr); splitErr == nil && (host == "" || host == "0.0.0.0" || host == "::" || host == "[::]") { displayAddr = ":" + port }