Skip to content

Consolidate PR controller's 3 field managers into 1 #952

@efiacor

Description

@efiacor

Status: Not started
Related: GH #1115, GH #1124

The PR controller uses 3 SSA field managers (packagerev-controller, packagerev-controller-render, packagerev-controller-kptfile) because updateStatus, updateRenderStatus, and updateKptfileFields apply disjoint field sets at different points in the reconcile loop. With SSA, a single field manager would release ownership of fields not included in a partial apply.

However, multiple field managers within one controller is unusual — it obscures ownership, increases etcd writes, and complicates the ownership table.

Fix: build a complete apply object containing all PR-controller-owned fields in every status patch, enabling a single field manager. Merge updateStatus + updateRenderStatus + updateKptfileFields (status portion) into one unified apply. The spec patch (readinessGates, packageMetadata) can also use the same manager.

Risk: fake clients don't implement managed fields tracking — regressions won't be caught by unit tests. Requires e2e integration tests that assert on managedFields entries, specifically validating the handoff from repository-controller-seed to packagerev-controller via ForceOwnership.

Acceptance Criteria:

PR controller uses a single field manager for all its writes

No SSA ownership conflicts with repo controller

Seeded fields correctly taken over on first render

e2e integration tests validate managedFields entries

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions