Repository navigation
feat(workspaces): add team-backed multi-workspace GPU quotas - #361
Kevin Cho (chokevin) wants to merge 24 commits into
Conversation
…ace-quotas # Conflicts: # cli/README.md # cli/internal/cli/run_connection.go # cli/internal/projectcatalog/catalog.go
Signed-off-by: chokevin <chokevin@users.noreply.github.com>
Signed-off-by: chokevin <chokevin@users.noreply.github.com>
| } | ||
| refreshed.Spec.Queue = resolved | ||
| } | ||
| *workspace = refreshed |
There was a problem hiding this comment.
This replaces the whole workspace after syncWorkspace has already reconciled its namespace and RBAC. If target or workload identity changes while waiting for the lock, the remaining steps install the new identity in the old namespace and can acknowledge the new generation using the refreshed resourceVersion. Restart the full sync on relevant spec changes, or refresh before resolving namespace/RBAC; cover the waiting-lock case through syncWorkspace.
| *workspace = refreshed | ||
|
|
||
| var team tauv1alpha1.TauTeam | ||
| if err := r.Get(ctx, client.ObjectKey{Name: workspace.Spec.TeamRef.Name, Namespace: workspace.Namespace}, &team); err != nil { |
There was a problem hiding this comment.
This typed Get still reads the manager cache; quota locks do not make it authoritative. If the Workspace informer observes a guarantee reduction from 12 to 4 before the Team informer observes allocation 16 to 8, this pass can reduce the live queue to 4 then expand the Cohort pool to 12 using the stale Team. The live unstructured update has a current resourceVersion, and both accounting checks reuse that stale allocation. Use authoritative reads for locked quota accounting, including the nested Team reconciler, and cover independently lagging Team/Workspace caches.
Summary
TauGrid previously treated one primary workspace and its same-name queue as the cluster-wide project boundary. Operators can now define
TauTeamallocations, attach multipleTauWorkspaceresources to a team, and give each workspace an explicit GPU guarantee while Kueue manages the residual team pool through a Cohort.workspace, and show workspace plus Team quota in the CLI and Portal.Related issue
N/A
Validation
Compatibility and operational impact
teams.tau.azure.comCRD and new optional Team/quota fields toTauWorkspaceandTauClusterAPIs.teamsandworkspacesvalues default to empty, so existing installs do not create new resources automatically.teamRefretain the legacy external/same-name ClusterQueue contract.workspace; conflicting catalog, run-policy, and flag values fail closed./api/portal/quota.Checklist