feat(auth): integrate authentication with installation lifecycle
This commit is contained in:
@@ -293,15 +293,18 @@ func authenticationCheck(ctx context.Context, installation config.Installation,
|
||||
}
|
||||
|
||||
func workflowCheck(ctx context.Context, installation config.Installation, runner Runner, secrets []string, add func(string, string, string)) {
|
||||
result, err := runner.Run(ctx, installation.ComposeArgs("exec", "-T", "core", "tht", "doctor", "--json"), nil)
|
||||
result, err := runner.Run(ctx, installation.ComposeArgs(
|
||||
"exec", "-T", "core", "node", "dist/operator-command.js", "workflow-doctor",
|
||||
), nil)
|
||||
if err != nil {
|
||||
add("workflow", StatusFailed, commandDetail("container-local workflow doctor", result, err, secrets))
|
||||
return
|
||||
}
|
||||
var payload struct {
|
||||
OK bool `json:"ok"`
|
||||
Ready bool `json:"ready"`
|
||||
Workspaces int `json:"workspaces"`
|
||||
}
|
||||
if json.Unmarshal([]byte(result.Stdout), &payload) != nil || !payload.OK {
|
||||
if json.Unmarshal([]byte(result.Stdout), &payload) != nil || !payload.Ready || payload.Workspaces < 1 {
|
||||
add("workflow", StatusFailed, "container-local workflow doctor returned an invalid or failing report")
|
||||
return
|
||||
}
|
||||
|
||||
@@ -125,8 +125,8 @@ func TestRunUsesOnlyContainerLocalWorkflowAndPiDiagnosticsWhenCoreRuns(t *testin
|
||||
if !strings.Contains(calls, "exec -T core node dist/auth/diagnostic-command.js --json") {
|
||||
t.Fatalf("Run() calls = %s, want core-local authentication diagnostic", calls)
|
||||
}
|
||||
if !strings.Contains(calls, "exec -T core tht doctor --json") {
|
||||
t.Fatalf("Run() calls = %s, want core-local workflow doctor", calls)
|
||||
if !strings.Contains(calls, "exec -T core node dist/operator-command.js workflow-doctor") {
|
||||
t.Fatalf("Run() calls = %s, want registry-bound core-local workflow doctor", calls)
|
||||
}
|
||||
if strings.Contains(calls, ".venv") || strings.Contains(calls, "python") {
|
||||
t.Fatalf("Run() calls = %s, must not require host Python", calls)
|
||||
@@ -271,11 +271,11 @@ func (r *doctorRunner) Run(_ context.Context, args []string, _ io.Reader) (compo
|
||||
return compose.Result{Stdout: healthyServices}, nil
|
||||
}
|
||||
return compose.Result{Stdout: r.services}, nil
|
||||
case strings.Contains(call, "tht doctor --json"):
|
||||
case strings.Contains(call, "operator-command.js workflow-doctor"):
|
||||
if r.workflowFailure != "" {
|
||||
return compose.Result{Stderr: r.workflowFailure, ExitCode: 23}, errors.New("workflow failed")
|
||||
}
|
||||
return compose.Result{Stdout: `{"ok":true,"checks":[]}`}, nil
|
||||
return compose.Result{Stdout: `{"ready":true,"workspaces":1}`}, nil
|
||||
case strings.Contains(call, "dist/auth/diagnostic-command.js --json"):
|
||||
return compose.Result{Stdout: `{"ready":true,"mode":"oidc","checks":[{"level":"info","code":"auth_ready","message":"Authentication is ready."}]}`}, nil
|
||||
case strings.Contains(call, "workspace-registry/state/active.json"):
|
||||
@@ -287,7 +287,7 @@ func (r *doctorRunner) Run(_ context.Context, args []string, _ io.Reader) (compo
|
||||
return compose.Result{Stdout: "0.80.3\n"}, nil
|
||||
case strings.Contains(call, "test -w /home/thoth/.pi") || strings.Contains(call, "test -r /home/thoth/.pi/agent/auth.json") || strings.Contains(call, "/health"):
|
||||
return compose.Result{Stdout: `{"ready":true}`}, nil
|
||||
case strings.Contains(call, "/pi-management/test"):
|
||||
case strings.Contains(call, "operator-command.js pi-test"):
|
||||
return compose.Result{Stdout: `{"ready":true}`}, nil
|
||||
case strings.Contains(call, "ps -q core"):
|
||||
return compose.Result{Stdout: "core-id\n"}, nil
|
||||
|
||||
Reference in New Issue
Block a user