From 24b448cc8e28956b60e677d95b84753acb90f998 Mon Sep 17 00:00:00 2001 From: Aditya Choudhari Date: Thu, 29 Jan 2026 12:28:25 -0800 Subject: [PATCH] refactor: pull verification manager out to workspace level --- .../pkg/workspace/releasemanager/manager.go | 3 +-- .../workspace/releasemanager/manager_test.go | 4 +++- .../pkg/workspace/workspace.go | 24 ++++++++++++------- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/apps/workspace-engine/pkg/workspace/releasemanager/manager.go b/apps/workspace-engine/pkg/workspace/releasemanager/manager.go index f3544ce7a..c9634eaf7 100644 --- a/apps/workspace-engine/pkg/workspace/releasemanager/manager.go +++ b/apps/workspace-engine/pkg/workspace/releasemanager/manager.go @@ -39,12 +39,11 @@ type PersistenceStore = trace.PersistenceStore // New creates a new release manager for a workspace. // traceStore must not be nil - panics if not provided. -func New(store *store.Store, traceStore PersistenceStore) *Manager { +func New(store *store.Store, traceStore PersistenceStore, verificationManager *verification.Manager) *Manager { if traceStore == nil { panic("traceStore cannot be nil - deployment tracing is mandatory") } - verificationManager := verification.NewManager(store) deploymentOrch := NewDeploymentOrchestrator(store, verificationManager) stateCache := NewStateCache(store, deploymentOrch.Planner()) diff --git a/apps/workspace-engine/pkg/workspace/releasemanager/manager_test.go b/apps/workspace-engine/pkg/workspace/releasemanager/manager_test.go index ff72f79a7..766035eb9 100644 --- a/apps/workspace-engine/pkg/workspace/releasemanager/manager_test.go +++ b/apps/workspace-engine/pkg/workspace/releasemanager/manager_test.go @@ -7,6 +7,7 @@ import ( "workspace-engine/pkg/oapi" "workspace-engine/pkg/statechange" "workspace-engine/pkg/workspace/releasemanager/trace/spanstore" + "workspace-engine/pkg/workspace/releasemanager/verification" "workspace-engine/pkg/workspace/store" "github.com/google/uuid" @@ -20,7 +21,8 @@ func setupTestManager(t *testing.T) (*Manager, *store.Store) { cs := statechange.NewChangeSet[any]() testStore := store.New("test-workspace", cs) traceStore := spanstore.NewInMemoryStore() - manager := New(testStore, traceStore) + verificationManager := verification.NewManager(testStore) + manager := New(testStore, traceStore, verificationManager) return manager, testStore } diff --git a/apps/workspace-engine/pkg/workspace/workspace.go b/apps/workspace-engine/pkg/workspace/workspace.go index b5623c016..61edead2a 100644 --- a/apps/workspace-engine/pkg/workspace/workspace.go +++ b/apps/workspace-engine/pkg/workspace/workspace.go @@ -12,6 +12,7 @@ import ( "workspace-engine/pkg/workspace/releasemanager/policy/evaluator/environmentprogression" "workspace-engine/pkg/workspace/releasemanager/trace" "workspace-engine/pkg/workspace/releasemanager/trace/spanstore" + "workspace-engine/pkg/workspace/releasemanager/verification" "workspace-engine/pkg/workspace/store" ) @@ -31,8 +32,10 @@ func New(ctx context.Context, id string, options ...WorkspaceOption) *Workspace option(ws) } + ws.verificationManager = verification.NewManager(s) + // Create release manager with trace store (will panic if nil) - ws.releasemanager = releasemanager.New(s, ws.traceStore) + ws.releasemanager = releasemanager.New(s, ws.traceStore, ws.verificationManager) reconcileFn := func(ctx context.Context, targets []*oapi.ReleaseTarget) error { return ws.releasemanager.ReconcileTargets(ctx, targets, releasemanager.WithTrigger(trace.TriggerJobSuccess)) @@ -40,10 +43,10 @@ func New(ctx context.Context, id string, options ...WorkspaceOption) *Workspace ws.actionOrchestrator = action. NewOrchestrator(s). - RegisterAction(verificationaction.NewVerificationAction(ws.releasemanager.VerificationManager())). + RegisterAction(verificationaction.NewVerificationAction(ws.verificationManager)). RegisterAction(deploymentdependency.NewDeploymentDependencyAction(s, reconcileFn)). RegisterAction(environmentprogression.NewEnvironmentProgressionAction(s, reconcileFn)). - RegisterAction(rollback.NewRollbackAction(s, ws.releasemanager.VerificationManager())) + RegisterAction(rollback.NewRollbackAction(s, ws.verificationManager)) return ws } @@ -51,11 +54,12 @@ func New(ctx context.Context, id string, options ...WorkspaceOption) *Workspace type Workspace struct { ID string - changeset *statechange.ChangeSet[any] - store *store.Store - releasemanager *releasemanager.Manager - traceStore releasemanager.PersistenceStore - actionOrchestrator *action.Orchestrator + changeset *statechange.ChangeSet[any] + store *store.Store + verificationManager *verification.Manager + releasemanager *releasemanager.Manager + traceStore releasemanager.PersistenceStore + actionOrchestrator *action.Orchestrator } func (w *Workspace) ActionOrchestrator() *action.Orchestrator { @@ -74,6 +78,10 @@ func (w *Workspace) ReleaseManager() *releasemanager.Manager { return w.releasemanager } +func (w *Workspace) VerificationManager() *verification.Manager { + return w.verificationManager +} + func (w *Workspace) DeploymentVersions() *store.DeploymentVersions { return w.store.DeploymentVersions }