Skip to content

refactor(tablegroup): make shard reconciliation observed-state truthful#537

Open
Verolop wants to merge 3 commits into
multigres:mainfrom
Verolop:refactor/tablegroup-reconcile
Open

refactor(tablegroup): make shard reconciliation observed-state truthful#537
Verolop wants to merge 3 commits into
multigres:mainfrom
Verolop:refactor/tablegroup-reconcile

Conversation

@Verolop

@Verolop Verolop commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Description

this PR refactors the TableGroup reconciler around the lifecycle it owns: applying desired child Shards, retiring removed or replaced children through the existing drain handshake, and publishing aggregate status from observed child state.

The previous implementation kept child apply, orphan cleanup, child re-listing, status aggregation, event emission, and requeue decisions in one long reconcile flow. That made the controller’s state transitions implicit, especially around removed children and same-reconcile child updates. In those cases, TableGroup could leave stale parent status visible or count child state that no longer represented the current desired generation.

The new structure keeps TableGroup’s responsibility unchanged. It still applies owned Shard specs with Server-Side Apply and it still preserves the PendingDeletion / ReadyForDeletion cleanup flow. The refactor makes the lifecycle boundaries explicit in code and tightens status aggregation so the parent reports convergence honestly while children are draining, terminating or catching up.

Main Changes

Main Changes

  • Split the TableGroup reconcile flow into package-local phases for parent lifecycle handling, child apply/cleanup, status aggregation, status patching, and cleanup requeue decisions.

  • Replaced the previous normal-path child re-list with one observed child snapshot, so status is computed from child state the controller actually saw.

  • Preserved the existing PendingDeletion / ReadyForDeletion cleanup handshake while preventing removed, replaced, or terminating children from being applied over or counted active.

  • Counted readiness only from desired child Shards whose observed status has caught up to the generation applied by this reconcile.

  • Added focused unit and envtest coverage for child cleanup, same-name replacement, terminating-child handling, generation-gated readiness, and stable convergence.

Testing

  • Added coverage around the lifecycle and status invariants that make this refactor risky.

  • Status aggregation is tested directly: total comes from spec, readiness and degradation come from observed desired children, cleanup children do not make the parent look ready, pending cleanup forces Progressing, and readiness is gated on observed generation.

  • Child cleanup is tested at the lifecycle boundaries: removed Shards are annotated once, existing annotations are preserved, children are not deleted before ReadyForDeletion, same-name replacements do not apply over children already in cleanup, and terminating children are waited on rather than restamped.

  • Full reconcile tests verify the controller lists child Shards once on the normal path, publishes cleanup status before requeueing, requeues while parent cleanup is waiting on a terminating child, and does not flap an already-Healthy TableGroup.

  • Envtest coverage exercises convergence against a real apiserver/cache, including initial child creation, stable terminal status, add/remove reconciliation, retained child cleanup, same-name replacement after deletion, and reconvergence after the replacement child reports Healthy.

@Verolop Verolop self-assigned this Jun 29, 2026
@Verolop Verolop requested a review from a team as a code owner June 29, 2026 14:39
- Split the TableGroup reconcile path along the lifecycle boundaries called out by the remediation spec, so parent fetch/deletion, child apply/prune, status aggregation, and cleanup requeue decisions are reviewable as separate local phases.

- Replace the old apply/list/prune/re-list/status flow with one normal child snapshot plus explicit post-write status semantics, reducing the cache/resourceVersion hazard without pretending that “one read” is sufficient by itself.

- Retain the existing PendingDeletion/ReadyForDeletion handshake as the spec’s transitional compatibility path, while ensuring in-flight cleanup publishes current Progressing status before the controller requeues.

- Treat TableGroup status as an observed-state API promise: desired-only children count, stale or orphaned child status does not, and a just-applied child is not ready until its own observed generation catches up.

Signed-off-by: Verónica López <gveronicalg@gmail.com>
@Verolop Verolop force-pushed the refactor/tablegroup-reconcile branch from e313dbb to f474d19 Compare June 29, 2026 14:40
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

Signed-off-by: Verónica López <gveronicalg@gmail.com>
@github-actions

This comment has been minimized.

// generations produced by the apiserver. Later status aggregation uses those
// generations to avoid treating a just-updated child as ready before the child
// controller observes its new spec.
func stepApplyDesiredShards(ctx context.Context, rc *reconcileContext) (stepResult, error) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there any chance we end up trying to re-add a shard that has been previously annotated with PendingDeletion ?

@niconosenzo

Copy link
Copy Markdown
Contributor

Awesome work! Left a small comment, will stamp it after knowing your thoughts.

// parent deletion before normal work, read the child snapshot once, apply the
// desired children, retire orphans through their drain handshake, then publish
// parent status from the observed child state.
rawSteps := []step{

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is great. Should we make this list of steps a contract that every controller will eventually implement ?

- Keep TableGroup readiness tied to child state the operator has actually observed, rather than desired intent or freshly applied specs.
- Preserve the Shard cleanup lifecycle before same-name replacement so draining or terminating children are not overwritten or counted as active.
- Make cleanup waiting explicit and testable so future changes do not regress Kubernetes deletion semantics.

Signed-off-by: Verónica López <gveronicalg@gmail.com>
@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown

🔬 Go Test Coverage Report

Summary

Coverage Type Result
Threshold 70%
Previous Test Coverage 76.6%
New Test Coverage 76.9%

Status

✅ PASS

Detail

Show New Coverage
github.com/multigres/multigres-operator/api/v1alpha1/cell_types.go:189:								init					100.0%
github.com/multigres/multigres-operator/api/v1alpha1/celltemplate_types.go:67:							init					100.0%
github.com/multigres/multigres-operator/api/v1alpha1/common_types.go:393:							MergePVCDeletionPolicy			0.0%
github.com/multigres/multigres-operator/api/v1alpha1/common_types.go:424:							MergeDurabilityPolicy			0.0%
github.com/multigres/multigres-operator/api/v1alpha1/common_types.go:433:							MergeBackupConfig			83.3%
github.com/multigres/multigres-operator/api/v1alpha1/coretemplate_types.go:68:							init					100.0%
github.com/multigres/multigres-operator/api/v1alpha1/multigrescluster_types.go:645:						init					100.0%
github.com/multigres/multigres-operator/api/v1alpha1/observability_helpers.go:37:						BuildOTELEnvVars			100.0%
github.com/multigres/multigres-operator/api/v1alpha1/observability_helpers.go:43:						BuildOTELEnvVarsWithResourceAttributes	91.1%
github.com/multigres/multigres-operator/api/v1alpha1/observability_helpers.go:132:						buildOTELResourceAttributes		92.9%
github.com/multigres/multigres-operator/api/v1alpha1/observability_helpers.go:161:						filterOTELResourceAttributes		85.7%
github.com/multigres/multigres-operator/api/v1alpha1/observability_helpers.go:183:						splitOTELResourceAttributes		100.0%
github.com/multigres/multigres-operator/api/v1alpha1/observability_helpers.go:206:						BuildOTELSamplingVolume			0.0%
github.com/multigres/multigres-operator/api/v1alpha1/observability_helpers.go:231:						envOrCRD				100.0%
github.com/multigres/multigres-operator/api/v1alpha1/shard_types.go:317:							init					100.0%
github.com/multigres/multigres-operator/api/v1alpha1/shardtemplate_types.go:83:							init					100.0%
github.com/multigres/multigres-operator/api/v1alpha1/tablegroup_types.go:199:							init					100.0%
github.com/multigres/multigres-operator/api/v1alpha1/toposerver_types.go:245:							init					100.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:14:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:19:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:29:						DeepCopyInto				76.9%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:49:						DeepCopy				80.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:59:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:68:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:78:						DeepCopyObject				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:86:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:101:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:111:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:121:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:131:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:147:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:157:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:171:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:181:						DeepCopyObject				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:189:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:204:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:214:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:244:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:254:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:266:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:276:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:281:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:291:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:299:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:309:						DeepCopyObject				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:317:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:331:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:341:						DeepCopyObject				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:349:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:369:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:379:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:389:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:399:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:404:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:414:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:420:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:430:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:438:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:448:						DeepCopyObject				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:456:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:470:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:480:						DeepCopyObject				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:488:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:508:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:518:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:535:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:545:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:550:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:560:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:577:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:587:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:604:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:614:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:631:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:641:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:651:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:661:						DeepCopyInto				100.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:667:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:677:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:682:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:692:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:697:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:707:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:727:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:737:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:752:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:762:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:772:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:782:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:792:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:802:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:818:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:828:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:837:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:847:						DeepCopyObject				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:855:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:869:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:879:						DeepCopyObject				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:887:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:955:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:965:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1006:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1016:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1026:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1036:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1041:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1051:						DeepCopyInto				100.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1056:						DeepCopy				80.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1066:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1078:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1088:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1128:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1138:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1143:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1153:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1158:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1168:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1188:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1198:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1203:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1213:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1218:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1228:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1237:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1247:						DeepCopyObject				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1255:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1275:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1285:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1295:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1305:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1328:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1338:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1352:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1362:						DeepCopyObject				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1370:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1392:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1402:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1430:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1440:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1505:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1515:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1543:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1553:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1561:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1571:						DeepCopyObject				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1579:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1593:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1603:						DeepCopyObject				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1611:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1638:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1648:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1678:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1688:						DeepCopyInto				40.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1698:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1708:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1717:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1727:						DeepCopyObject				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1735:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1757:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1767:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1781:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1791:						DeepCopyObject				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1799:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1853:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1863:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1875:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1885:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1890:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1900:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1909:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1919:						DeepCopyObject				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1927:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1941:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1951:						DeepCopyObject				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1959:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1974:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1984:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1996:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2006:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2016:						DeepCopy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2026:						DeepCopyInto				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2031:						DeepCopy				0.0%
github.com/multigres/multigres-operator/cmd/multigres-gc/main.go:39:								init					0.0%
github.com/multigres/multigres-operator/cmd/multigres-gc/main.go:43:								main					0.0%
github.com/multigres/multigres-operator/cmd/multigres-gc/main.go:125:								registerCleankeepers			0.0%
github.com/multigres/multigres-operator/cmd/multigres-gc/main.go:131:								namespaceOrAll				0.0%
github.com/multigres/multigres-operator/cmd/multigres-operator/main.go:78:							init					0.0%
github.com/multigres/multigres-operator/cmd/multigres-operator/main.go:84:							main					0.0%
github.com/multigres/multigres-operator/cmd/multigres-operator/main.go:498:							certsExist				0.0%
github.com/multigres/multigres-operator/pkg/cert/generator.go:51:								WithExtKeyUsages			100.0%
github.com/multigres/multigres-operator/pkg/cert/generator.go:58:								WithOrganization			100.0%
github.com/multigres/multigres-operator/pkg/cert/generator.go:72:								GenerateCA				100.0%
github.com/multigres/multigres-operator/pkg/cert/generator.go:134:								GenerateServerCert			100.0%
github.com/multigres/multigres-operator/pkg/cert/generator.go:205:								ParseCA					100.0%
github.com/multigres/multigres-operator/pkg/cert/manager.go:94:									componentName				100.0%
github.com/multigres/multigres-operator/pkg/cert/manager.go:101:								organization				100.0%
github.com/multigres/multigres-operator/pkg/cert/manager.go:108:								extKeyUsages				100.0%
github.com/multigres/multigres-operator/pkg/cert/manager.go:125:								NewManager				100.0%
github.com/multigres/multigres-operator/pkg/cert/manager.go:136:								Bootstrap				100.0%
github.com/multigres/multigres-operator/pkg/cert/manager.go:151:								Start					100.0%
github.com/multigres/multigres-operator/pkg/cert/manager.go:179:								reconcilePKI				100.0%
github.com/multigres/multigres-operator/pkg/cert/manager.go:203:								ensureCA				100.0%
github.com/multigres/multigres-operator/pkg/cert/manager.go:283:								ensureServerCert			100.0%
github.com/multigres/multigres-operator/pkg/cert/manager.go:403:								waitForProjection			100.0%
github.com/multigres/multigres-operator/pkg/cert/manager.go:428:								setOwner				100.0%
github.com/multigres/multigres-operator/pkg/cert/manager.go:443:								emitEvent				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/builders_cell.go:14:			BuildCell				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/builders_global.go:27:			BuildGlobalTopoServer			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/builders_global.go:88:			BuildMultiAdminDeployment		100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/builders_global.go:205:			BuildMultiAdminService			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/builders_global.go:246:			BuildMultiAdminWebDeployment		100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/builders_global.go:359:			BuildMultiAdminWebService		100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/builders_global.go:417:			BuildMultiGatewayGlobalService		100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/builders_global.go:481:			BuildMultiGatewayGlobalReplicaService	100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/builders_global.go:522:			postgresSuperuserOrDefault		100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/builders_tablegroup.go:14:		BuildTableGroup				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/builders_tablegroup.go:93:		buildCellTopologyLabels			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/certificate.go:44:			buildCertificate			91.7%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/certificate.go:94:			reconcileCertificate			70.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/certificate.go:135:			deleteOwnedCertificates			88.2%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/certificate.go:183:			isOwnedBy				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/certificate.go:197:			isNoMatchError				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/multigrescluster_controller.go:53:	Reconcile				96.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/multigrescluster_controller.go:317:	handleDeletion				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/multigrescluster_controller.go:367:	SetupWithManager			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/multigrescluster_controller.go:405:	projectRefOrGenerationChangedPredicate	72.7%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/multigrescluster_controller.go:435:	enqueueRequestsFromTemplate		100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/multigrescluster_controller.go:462:	templateKindFromObject			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/multigrescluster_controller.go:478:	referencesTemplate			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/multigrescluster_controller.go:495:	collectResolvedTemplates		100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/multigrescluster_controller.go:559:	collectTrackingLabels			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_cells.go:17:			reconcileCells				85.4%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_databases.go:17:		reconcileDatabases			87.5%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_global.go:26:			reconcileGlobalComponents		100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_global.go:44:			reconcileGlobalTopoServer		81.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_global.go:105:		reconcileMultiAdmin			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_global.go:162:		globalTopoRef				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_global.go:199:		reconcileMultiAdminWeb			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_topology.go:47:		reconcileTopology			76.9%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_topology.go:182:		specCellNames				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_topology.go:190:		cellNamesToKeepInTopology		87.5%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_topology.go:222:		managedLocalTopoServerReady		73.3%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_topology.go:263:		openTopoStore				66.7%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_topology.go:276:		isPruningEnabled			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_topology.go:287:		handleTopoUnavailable			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/status.go:22:				extractExternalEndpoint			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/status.go:42:				computeGatewayCondition			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/status.go:79:				computeAdminWebCondition		100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/status.go:113:				updateStatus				98.3%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/builders.go:14:				BuildShard				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/builders.go:83:				calculateTotalReplicas			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/reconcile_shards.go:20:			stepListChildShards			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/reconcile_shards.go:38:			stepApplyDesiredShards			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/reconcile_shards.go:89:			observedCleanupInProgress		85.7%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/reconcile_shards.go:106:			stepReconcileUndesired			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/reconcile_shards.go:166:			stepRequeueIfPending			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/status.go:19:					stepComputeStatus			97.8%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/status.go:112:				stepPatchStatus				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/steps.go:48:					Error					100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/steps.go:52:					Unwrap					100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/steps.go:56:					newStepError				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/steps.go:65:					continueStep				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/steps.go:69:					doneStep				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/steps.go:76:					runSteps				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/steps.go:93:					stepFetchTableGroup			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/steps.go:107:					stepHandlePendingDeletion		100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/steps.go:119:					stepShortCircuitDeletion		100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/tablegroup_controller.go:39:			Reconcile				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/tablegroup_controller.go:91:			withStepErrorHandling			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/tablegroup_controller.go:113:			handlePendingDeletion			96.3%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/tablegroup_controller.go:188:			setShardPendingDeletion			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/tablegroup_controller.go:203:			childShardSelector			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/tablegroup_controller.go:215:			SetupWithManager			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/tablegroup_controller.go:237:			projectRefOrGenerationChangedPredicate	72.7%
github.com/multigres/multigres-operator/pkg/data-handler/backuphealth/backuphealth.go:48:					Evaluate				92.9%
github.com/multigres/multigres-operator/pkg/data-handler/backuphealth/backuphealth.go:82:					EvaluateBackups				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/backuphealth/backuphealth.go:147:					ParseTime				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/backuphealth/backuphealth.go:160:					Apply					100.0%
github.com/multigres/multigres-operator/pkg/data-handler/drain/drain.go:37:							ExecuteDrainStateMachine		100.0%
github.com/multigres/multigres-operator/pkg/data-handler/drain/drain.go:255:							UpdateDrainState			100.0%
github.com/multigres/multigres-operator/pkg/data-handler/drain/drain.go:274:							IsPrimaryTerminatingOrMissing		100.0%
github.com/multigres/multigres-operator/pkg/data-handler/drain/drain.go:298:							IsPrimaryDraining			100.0%
github.com/multigres/multigres-operator/pkg/data-handler/drain/drain.go:325:							IsPrimaryNotReady			100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/cell.go:18:							RegisterCell				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/cell.go:63:							cellMetadataFromTopoRefs		90.9%
github.com/multigres/multigres-operator/pkg/data-handler/topo/cell.go:99:							createOrUpdateCell			91.7%
github.com/multigres/multigres-operator/pkg/data-handler/topo/cell.go:129:							ManagedLocalTopoServerName		100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/cell.go:135:							ManagedLocalTopoServerAddress		100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/cell.go:140:							UnregisterCell				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/database.go:18:							RegisterDatabase			91.7%
github.com/multigres/multigres-operator/pkg/data-handler/topo/database.go:88:							UnregisterDatabase			100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/database.go:129:							GetBackupLocation			100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/database.go:165:							GetDurabilityPolicy			100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/database.go:176:							buildDurabilityPolicy			100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/pooler.go:34:							GetPoolerStatus				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/pooler.go:77:							matchPoolerToPod			100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/pooler.go:90:							FindPrimaryPooler			100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/pooler.go:121:							CollectCells				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/pooler.go:137:							ShardFilter				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/pooler.go:148:							PodMatchesPooler			100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/pooler.go:157:							ForceUnregisterPod			100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/pooler.go:193:							MarkDeadPoolers				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/pooler.go:259:							isLifecycleShutdown			100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/pooler.go:267:							poolerMatchesAnyActivePod		100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/store.go:18:							NewStoreFromShard			100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/store.go:37:							NewStoreFromCell			100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/store.go:57:							NewStoreFromRef				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/store.go:76:							IsTopoUnavailable			100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/topology.go:21:							RegisterDatabaseFromSpec		96.7%
github.com/multigres/multigres-operator/pkg/data-handler/topo/topology.go:113:							RegisterCellFromSpec			100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/topology.go:156:							PruneDatabases				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/topology.go:203:							PruneCells				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/topology.go:249:							isNodeExists				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/topology.go:257:							isNoNode				100.0%
github.com/multigres/multigres-operator/pkg/gc/gc.go:28:									WithDefaults				0.0%
github.com/multigres/multigres-operator/pkg/gc/pvc/pvc.go:38:									New					100.0%
github.com/multigres/multigres-operator/pkg/gc/pvc/pvc.go:46:									Kind					0.0%
github.com/multigres/multigres-operator/pkg/gc/pvc/pvc.go:48:									Clean					84.6%
github.com/multigres/multigres-operator/pkg/gc/pvc/pvc.go:82:									processPVC				89.7%
github.com/multigres/multigres-operator/pkg/gc/pvc/pvc.go:135:									buildSelector				71.4%
github.com/multigres/multigres-operator/pkg/monitoring/metrics.go:112:								init					100.0%
github.com/multigres/multigres-operator/pkg/monitoring/metrics.go:131:								Collectors				100.0%
github.com/multigres/multigres-operator/pkg/monitoring/recorder.go:7:								SetClusterInfo				100.0%
github.com/multigres/multigres-operator/pkg/monitoring/recorder.go:16:								SetClusterTopology			100.0%
github.com/multigres/multigres-operator/pkg/monitoring/recorder.go:22:								SetCellGatewayReplicas			100.0%
github.com/multigres/multigres-operator/pkg/monitoring/recorder.go:28:								SetShardPoolReplicas			100.0%
github.com/multigres/multigres-operator/pkg/monitoring/recorder.go:36:								SetPoolPodsDrifted			100.0%
github.com/multigres/multigres-operator/pkg/monitoring/recorder.go:41:								SetTopoServerReplicas			100.0%
github.com/multigres/multigres-operator/pkg/monitoring/recorder.go:47:								RecordWebhookRequest			100.0%
github.com/multigres/multigres-operator/pkg/monitoring/recorder.go:57:								SetLastBackupAge			100.0%
github.com/multigres/multigres-operator/pkg/monitoring/recorder.go:62:								IncrementDrainOperations		100.0%
github.com/multigres/multigres-operator/pkg/monitoring/recorder.go:67:								SetRollingUpdateInProgress		100.0%
github.com/multigres/multigres-operator/pkg/monitoring/tracing.go:50:								InitTracing				100.0%
github.com/multigres/multigres-operator/pkg/monitoring/tracing.go:92:								StartReconcileSpan			100.0%
github.com/multigres/multigres-operator/pkg/monitoring/tracing.go:108:								StartChildSpan				100.0%
github.com/multigres/multigres-operator/pkg/monitoring/tracing.go:114:								RecordSpanError				100.0%
github.com/multigres/multigres-operator/pkg/monitoring/tracing.go:125:								InjectTraceContext			100.0%
github.com/multigres/multigres-operator/pkg/monitoring/tracing.go:154:								ExtractTraceContext			100.0%
github.com/multigres/multigres-operator/pkg/monitoring/tracing.go:187:								EnrichLoggerWithTrace			100.0%
github.com/multigres/multigres-operator/pkg/resolver/cell.go:15:								ResolveCell				100.0%
github.com/multigres/multigres-operator/pkg/resolver/cell.go:47:								ResolveCellTemplate			100.0%
github.com/multigres/multigres-operator/pkg/resolver/cell.go:87:								mergeCellConfig				100.0%
github.com/multigres/multigres-operator/pkg/resolver/cluster.go:15:								PopulateClusterDefaults			100.0%
github.com/multigres/multigres-operator/pkg/resolver/cluster.go:179:								ResolveGlobalTopo			100.0%
github.com/multigres/multigres-operator/pkg/resolver/cluster.go:242:								ResolveMultiAdmin			100.0%
github.com/multigres/multigres-operator/pkg/resolver/cluster.go:280:								ResolveMultiAdminWeb			100.0%
github.com/multigres/multigres-operator/pkg/resolver/cluster.go:318:								ResolveCoreTemplate			100.0%
github.com/multigres/multigres-operator/pkg/resolver/cluster.go:354:								mergeEtcdSpec				100.0%
github.com/multigres/multigres-operator/pkg/resolver/defaults.go:78:								DefaultResourcesAdmin			100.0%
github.com/multigres/multigres-operator/pkg/resolver/defaults.go:91:								DefaultResourcesEtcd			100.0%
github.com/multigres/multigres-operator/pkg/resolver/defaults.go:104:								DefaultResourcesGateway			100.0%
github.com/multigres/multigres-operator/pkg/resolver/defaults.go:117:								DefaultResourcesOrch			100.0%
github.com/multigres/multigres-operator/pkg/resolver/defaults.go:130:								DefaultResourcesPostgres		100.0%
github.com/multigres/multigres-operator/pkg/resolver/defaults.go:143:								DefaultResourcesPooler			100.0%
github.com/multigres/multigres-operator/pkg/resolver/defaults.go:156:								DefaultResourcesAdminWeb		100.0%
github.com/multigres/multigres-operator/pkg/resolver/resolver.go:21:								NewResolver				100.0%
github.com/multigres/multigres-operator/pkg/resolver/resolver.go:38:								mergeStatelessSpec			100.0%
github.com/multigres/multigres-operator/pkg/resolver/resolver.go:70:								mergePodPlacementSpec			100.0%
github.com/multigres/multigres-operator/pkg/resolver/resolver.go:83:								isResourcesZero				100.0%
github.com/multigres/multigres-operator/pkg/resolver/resolver.go:92:								defaultEtcdSpec				100.0%
github.com/multigres/multigres-operator/pkg/resolver/resolver.go:114:								defaultExternalTopoSpec			100.0%
github.com/multigres/multigres-operator/pkg/resolver/resolver.go:127:								defaultStatelessSpec			100.0%
github.com/multigres/multigres-operator/pkg/resolver/shard.go:23:								ResolveShard				100.0%
github.com/multigres/multigres-operator/pkg/resolver/shard.go:110:								ResolveShardTemplate			100.0%
github.com/multigres/multigres-operator/pkg/resolver/shard.go:145:								mergeShardConfig			100.0%
github.com/multigres/multigres-operator/pkg/resolver/shard.go:236:								mergeMultiOrchSpec			100.0%
github.com/multigres/multigres-operator/pkg/resolver/shard.go:247:								mergePoolSpec				96.2%
github.com/multigres/multigres-operator/pkg/resolver/shard.go:292:								defaultPoolSpec				100.0%
github.com/multigres/multigres-operator/pkg/resolver/shard.go:307:								defaultBackupConfig			100.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:30:								ValidateCoreTemplateReference		100.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:53:								CoreTemplateExists			100.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:73:								ValidateCellTemplateReference		100.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:96:								CellTemplateExists			100.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:116:								ValidateShardTemplateReference		100.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:139:								ShardTemplateExists			100.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:165:								ValidateClusterIntegrity		100.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:238:								ValidateClusterLogic			98.5%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:649:								hasDefaultStorageClass			100.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:666:								getEffectiveEtcdReplicas		100.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:678:								effectiveDatabaseDurabilityPolicy	100.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:697:								ValidatePoolName			100.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:719:								validateResourceRequirements		100.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:740:								validateCellTopology			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:49:				Reconcile				95.2%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:177:				reconcileMultiGatewayDeployment		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:211:				reconcileMultiGatewayService		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:245:				reconcileLocalTopoServer		85.7%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:301:				localTopoServerReady			80.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:333:				handlePendingDeletion			88.2%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:381:				ensureLocalTopoServerDeleted		75.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:392:				deleteOwnedLocalTopoServerIfExists	75.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:418:				deleteLocalTopoServerIfExists		66.7%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:450:				patchReadyForDeletionCondition		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:474:				patchLocalTopoServerWaitingStatus	88.9%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:515:				updateStatus				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:613:				setConditions				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:663:				SetupWithManager			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:684:				projectRefOrGenerationChangedPredicate	63.6%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/local_toposerver.go:16:				BuildLocalTopoServerName		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/local_toposerver.go:20:				hasManagedLocalTopoServer		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/local_toposerver.go:24:				isControlledByCell			83.3%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/local_toposerver.go:39:				BuildLocalTopoServer			90.9%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/multigateway.go:48:				BuildMultiGatewayDeploymentName		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/multigateway.go:60:				BuildMultiGatewayServiceName		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/multigateway.go:71:				BuildMultiGatewayDeployment		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/multigateway.go:262:				BuildMultiGatewayService		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/multigateway.go:319:				buildCellNodeSelector			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/placement.go:9:					tolerationsFromPlacement		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/configmap.go:24:					BuildPgHbaConfigMap			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:96:					PgHbaConfigMapName			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:100:				postgresPasswordSecretRef		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:105:				buildSocketDirVolume			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:115:				buildPgHbaVolume			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:128:				buildPostgresPasswordVolume		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:150:				postgresPasswordVolumeMount		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:170:				buildPgctldSidecar			95.5%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:308:				buildPostgresExporterContainer		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:346:				BuildPoolServiceID			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:354:				buildMultiPoolerContainer		94.4%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:483:				buildMultiOrchContainer			90.9%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:549:				buildRuntimeOTELEnvVars			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:569:				buildPostgresConfigVolume		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:585:				buildPoolVolumes			87.5%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:609:				buildSharedBackupVolume			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:651:				buildPgBackRestCertVolume		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:725:				pgPasswordFileEnvVar			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:734:				pgUserEnvVar				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:740:				postgresSuperuserOrDefault		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:749:				s3EnvVars				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/drain_helpers.go:19:				resolvePodRole				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/drain_helpers.go:35:				countDrainedPods			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/drain_helpers.go:47:				clearDrainAnnotations			0.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/drain_helpers.go:60:				initiateDrain				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/labels.go:10:					buildPoolLabelsWithCell			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/multiorch.go:26:					BuildMultiOrchDeployment		94.7%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/multiorch.go:96:					BuildMultiOrchService			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/multiorch.go:127:					buildMultiOrchNameWithCell		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/multiorch.go:147:					buildMultiOrchLabelsWithCell		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/placement.go:9:					tolerationsFromPlacement		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pdb.go:19:					BuildPoolPodDisruptionBudget		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pod.go:34:					BuildPoolPodName			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pod.go:52:					BuildPoolPod				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pod.go:136:					buildPoolPodSecurityContext		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pod.go:159:					buildContainerSecurityContext		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pod.go:173:					buildHeadlessServiceName		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pod.go:196:					ComputeSpecHash				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pod.go:249:					hashContainers				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pod.go:288:					sortedKeys				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pvc.go:23:					BuildPoolDataPVCName			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pvc.go:45:					BuildPoolDataPVC			95.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pvc.go:103:					BuildSharedBackupPVCName		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pvc.go:120:					BuildSharedBackupPVC			96.4%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_service.go:23:				BuildPoolHeadlessService		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_service.go:58:				buildPoolHeadlessServiceName		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/ports.go:33:					buildMultiPoolerContainerPorts		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/ports.go:55:					buildPoolHeadlessServicePorts		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/ports.go:86:					buildMultiOrchContainerPorts		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/ports.go:102:					buildPostgresExporterContainerPorts	100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/ports.go:114:					buildMultiOrchServicePorts		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_data_plane.go:25:			reconcileDataPlane			45.1%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_data_plane.go:127:			reconcilePodRoles			61.5%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_data_plane.go:189:			reconcileDrainState			45.8%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_data_plane.go:250:			isDrainStale				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_data_plane.go:302:			topoStore				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_data_plane.go:314:			reconcilePoolerPrune			75.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_data_plane.go:358:			hasPrimary				0.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_data_plane.go:370:			isPoolerPruningEnabled			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_deletion.go:40:				handleDeletion				76.9%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_deletion.go:152:			cleanupShardPVCs			73.3%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_deletion.go:217:			shardPVCShouldBeCleaned			42.9%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_deletion.go:237:			handlePendingDeletion			75.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_multiorch.go:15:			reconcileMultiOrchDeployment		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_multiorch.go:50:			reconcileMultiOrchService		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:29:			reconcilePoolPods			97.2%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:138:			createMissingResources			82.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:307:			isPodReady				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:324:			isPoolHealthy				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:348:			handleExternalDeletion			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:389:			handleScaleDown				97.8%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:511:			handleRollingUpdates			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:624:			selectPodToDrain			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:681:			syncDrainedLabels			55.6%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:714:			cleanupDrainedPod			95.5%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:790:			cleanupPodPVC				81.5%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:845:			countPoolCellPVCs			81.8%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:880:			podNeedsUpdate				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:913:			expandPVCIfNeeded			95.5%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:963:			pvcNeedsFilesystemResize		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:978:			resolvePodIndex				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_shared_infra.go:20:			reconcilePgHbaConfigMap			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_shared_infra.go:45:			reconcilePostgresPasswordSecret		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_shared_infra.go:53:			postgresPasswordSecretData		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_shared_infra.go:61:			postgresPasswordSecret			84.6%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_shared_infra.go:105:			reconcilePgBackRestCerts		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_shared_infra.go:158:			reconcileSharedBackupPVC		91.7%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_shared_infra.go:207:			reconcilePoolPDB			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_shared_infra.go:234:			reconcilePoolHeadlessService		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/shard_controller.go:60:				orphanByRemainingCount			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/shard_controller.go:81:				Reconcile				80.6%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/shard_controller.go:390:				reconcilePool				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/shard_controller.go:440:				getMultiOrchCells			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/shard_controller.go:476:				getPoolCells				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/shard_controller.go:496:				ShouldDeletePVCOnShardRemoval		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/shard_controller.go:510:				ShouldDeleteShardLevelPVCOnRemoval	100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/shard_controller.go:519:				reconcilePVCOwnerRefs			55.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/shard_controller.go:606:				SetupWithManager			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/shard_controller.go:635:				computePostgresConfigHash		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/shard_controller.go:660:				enqueueFromPostgresConfigMap		87.5%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/status.go:23:					updateStatus				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/status.go:141:					updatePoolsStatus			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/status.go:235:					updateMultiOrchStatus			96.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/status.go:294:					cellSetToSlice				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/status.go:304:					setConditions				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/storage_class_guard.go:31:			Error					0.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/storage_class_guard.go:35:			isMissingStorageClassDependency		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/storage_class_guard.go:40:			backupFilesystemStorageClassName	80.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/storage_class_guard.go:51:			validateStorageClassExists		77.8%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/storage_class_guard.go:70:			validateBackupStorageClassDependency	76.9%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/storage_class_guard.go:113:			validatePoolStorageClassDependencies	90.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/storage_class_guard.go:170:			setStorageClassCondition		84.6%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/storage/pvc.go:17:					BuildPVCTemplate			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/container_env.go:13:				buildContainerEnv			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/container_env.go:41:				buildPodIdentityEnv			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/container_env.go:66:				buildEtcdConfigEnv			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/container_env.go:120:			buildEtcdClusterPeerList		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/ports.go:23:					buildContainerPorts			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/ports.go:56:					buildHeadlessServicePorts		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/ports.go:86:					buildClientServicePorts			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/service.go:17:				BuildHeadlessService			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/service.go:53:				BuildClientService			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/statefulset.go:38:				BuildStatefulSet			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/statefulset.go:149:				buildVolumeClaimTemplates		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/storage_class_guard.go:33:			Error					0.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/storage_class_guard.go:38:			isMissingStorageClassDependency		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/storage_class_guard.go:44:			validateStorageClassExists		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/storage_class_guard.go:61:			validateEtcdStorageClassDependency	93.3%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/storage_class_guard.go:114:			setStorageClassCondition		84.6%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/toposerver_controller.go:43:			Reconcile				96.7%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/toposerver_controller.go:176:		reconcileStatefulSet			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/toposerver_controller.go:210:		reconcileHeadlessService		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/toposerver_controller.go:244:		reconcileClientService			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/toposerver_controller.go:278:		updateStatus				97.1%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/toposerver_controller.go:393:		setConditions				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/toposerver_controller.go:424:		SetupWithManager			100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:17:								IgnoreMetaRuntimeFields			100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:55:								IgnoreServiceRuntimeFields		100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:75:								IgnoreStatefulSetRuntimeFields		100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:97:								IgnoreDeploymentRuntimeFields		100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:116:								IgnorePodSpecDefaults			100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:148:								IgnorePodSpecDefaultsExceptPullPolicy	100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:179:								IgnoreStatefulSetSpecDefaults		100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:191:								IgnoreDeploymentSpecDefaults		100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:204:								IgnoreProbeDefaults			100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:219:								filterByFieldName			100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:235:								IgnoreObjectMetaCompletely		100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:243:								IgnoreStatus				100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:249:								IgnorePVCRuntimeFields			100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:258:								CompareOptions				100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:267:								CompareSpecOnly				100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:29:								WithKubeconfig				100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:36:								WithCRDPaths				100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:57:								AddUser					100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:62:								getKubeconfigFromUserAdder		100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:87:								SetUpEnvtest				100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:148:								SetUpClient				100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:175:								SetUpManager				100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:206:								StartManager				100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:216:								startManager				100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:256:								SetUpEnvtestManager			100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:272:								createEnvtestEnvironment		100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:287:								startEnvtest				100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:302:								cleanEnvtest				100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:319:								createEnvtestDir			100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:333:								writeKubeconfigFile			100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:343:								generateKubeconfigFile			100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:51:								NewFakeClientWithFailures		100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:61:								Get					100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:75:								List					100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:88:								Create					100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:101:							Update					100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:114:							Patch					100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:128:							Delete					100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:141:							DeleteAllOf				100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:154:							Status					100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:166:							Update					100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:179:							Patch					100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:196:							FailOnObjectName			100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:210:							FailOnKeyName				100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:220:							FailOnNamespacedKeyName			100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:230:							FailOnNamespace				100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:244:							AlwaysFail				100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:252:							FailKeyAfterNCalls			100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:265:							FailObjAfterNCalls			100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:278:							FailObjListAfterNCalls			100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:34:							Error					100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:84:							WithExtraResource			100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:92:							WithTimeout				100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:100:							WithCmpOpts				100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:108:							NewResourceWatcher			100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:146:							SetTimeout				100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:152:							ResetTimeout				100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:159:							SetCmpOpts				100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:165:							ResetCmpOpts				100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:175:							Events					100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:188:							EventCh					100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:198:							ForKind					100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:218:							ForName					100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:234:							Count					100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:243:							subscribe				100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:257:							unsubscribe				100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:278:							extractKind				100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher_cache.go:16:						findLatestEvent				100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher_cache.go:34:						findLatestEventFor			100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher_cache.go:57:						checkLatestEventMatches			100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher_deletion.go:22:						Obj					100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher_deletion.go:51:						WaitForDeletion				100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher_deletion.go:70:						waitForSingleDeletion			100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher_listener.go:19:						collectEvents				100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher_listener.go:55:						sendEvent				100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher_match.go:46:						WaitForMatch				100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher_match.go:88:						waitForSingleMatch			100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher_match.go:178:						waitForEvent				100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher_match.go:213:						WaitForEventType			100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher_match.go:261:						addEventHandlerToInformer		100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher_match.go:285:						watchResource				100.0%
github.com/multigres/multigres-operator/pkg/util/metadata/labels.go:164:							BuildStandardLabels			100.0%
github.com/multigres/multigres-operator/pkg/util/metadata/labels.go:175:							AddCellLabel				100.0%
github.com/multigres/multigres-operator/pkg/util/metadata/labels.go:181:							AddClusterLabel				100.0%
github.com/multigres/multigres-operator/pkg/util/metadata/labels.go:187:							AddShardLabel				100.0%
github.com/multigres/multigres-operator/pkg/util/metadata/labels.go:196:							AddDatabaseLabel			100.0%
github.com/multigres/multigres-operator/pkg/util/metadata/labels.go:205:							AddTableGroupLabel			100.0%
github.com/multigres/multigres-operator/pkg/util/metadata/labels.go:214:							AddPoolLabel				100.0%
github.com/multigres/multigres-operator/pkg/util/metadata/labels.go:223:							AddZoneIDLabel				100.0%
github.com/multigres/multigres-operator/pkg/util/metadata/labels.go:232:							AddRegionLabel				100.0%
github.com/multigres/multigres-operator/pkg/util/metadata/labels.go:259:							GetSelectorLabels			100.0%
github.com/multigres/multigres-operator/pkg/util/metadata/labels.go:273:							MergeLabels				100.0%
github.com/multigres/multigres-operator/pkg/util/metadata/project_ref.go:16:							ResolveProjectRef			100.0%
github.com/multigres/multigres-operator/pkg/util/name/name.go:103:								Hash					100.0%
github.com/multigres/multigres-operator/pkg/util/name/name.go:146:								JoinWithConstraints			100.0%
github.com/multigres/multigres-operator/pkg/util/name/name.go:209:								isLowercaseLetter			100.0%
github.com/multigres/multigres-operator/pkg/util/name/name.go:213:								isUppercaseLetter			100.0%
github.com/multigres/multigres-operator/pkg/util/name/name.go:217:								isDigit					100.0%
github.com/multigres/multigres-operator/pkg/util/name/name.go:221:								isLowercaseAlphanumeric			100.0%
github.com/multigres/multigres-operator/pkg/util/pvc/orphan.go:27:								MarkOrphan				95.5%
github.com/multigres/multigres-operator/pkg/util/pvc/orphan.go:78:								ClearOrphan				87.5%
github.com/multigres/multigres-operator/pkg/util/pvc/orphan.go:98:								HasOrphanLabel				100.0%
github.com/multigres/multigres-operator/pkg/util/pvc/retention.go:12:								BuildRetentionPolicy			100.0%
github.com/multigres/multigres-operator/pkg/util/status/conditions.go:9:							SetCondition				100.0%
github.com/multigres/multigres-operator/pkg/util/status/conditions.go:25:							IsConditionTrue				100.0%
github.com/multigres/multigres-operator/pkg/util/status/phase.go:30:								ComputePhase				100.0%
github.com/multigres/multigres-operator/pkg/util/status/phase.go:51:								IsCrashLooping				100.0%
github.com/multigres/multigres-operator/pkg/util/status/phase.go:56:								isContainerCrashLooping			100.0%
github.com/multigres/multigres-operator/pkg/util/status/phase.go:68:								AnyCrashLooping				100.0%
github.com/multigres/multigres-operator/pkg/util/status/phase.go:98:								ComputeWorkloadPhase			100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/defaulter.go:27:							NewMultigresClusterDefaulter		100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/defaulter.go:34:							Default					100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:36:							NewMultigresClusterValidator		100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:41:							ValidateCreate				100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:49:							ValidateUpdate				100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:68:							ValidateDelete				100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:75:							validate				100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:127:							validateTemplatesExist			100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:137:							validateLogic				100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:148:							validateNoStorageShrink			90.5%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:191:							collectPoolStorageSizes			100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:219:							validateEtcdReplicasImmutable		100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:255:							effectiveEtcdReplicas			100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:284:							NewTemplateValidator			100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:289:							ValidateCreate				100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:297:							ValidateUpdate				100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:306:							validatePoolNames			100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:323:							ValidateDelete				100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:368:							isTemplateInUse				100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:432:							NewChildResourceValidator		100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:439:							ValidateCreate				100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:447:							ValidateUpdate				100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:455:							ValidateDelete				100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:462:							validate				100.0%
github.com/multigres/multigres-operator/pkg/webhook/pki.go:44:									PatchWebhookCABundle			100.0%
github.com/multigres/multigres-operator/pkg/webhook/pki.go:51:									patchMutatingWebhook			100.0%
github.com/multigres/multigres-operator/pkg/webhook/pki.go:97:									patchValidatingWebhook			100.0%
github.com/multigres/multigres-operator/pkg/webhook/pki.go:147:									HasCertAnnotation			100.0%
github.com/multigres/multigres-operator/pkg/webhook/pki.go:173:									FindOperatorDeployment			100.0%
github.com/multigres/multigres-operator/pkg/webhook/setup.go:21:								Setup					100.0%
total:																(statements)				76.9%

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants