From 607f2268e4b0b9324443291aac8caf94552dd719 Mon Sep 17 00:00:00 2001 From: Baylem Date: Wed, 21 Oct 2026 11:51:46 -0400 Subject: [PATCH 01/17] feat: record backup consistency and captured volume coverage Signed-off-by: Baylem --- .../crds/gameplane.local_backups.yaml | 71 ++++++- .../crds/gameplane.local_backupschedules.yaml | 2 +- .../crds/gameplane.local_clusters.yaml | 2 +- .../crds/gameplane.local_gameservers.yaml | 12 +- .../crds/gameplane.local_gametemplates.yaml | 12 +- .../crds/gameplane.local_modules.yaml | 2 +- .../crds/gameplane.local_modulesources.yaml | 2 +- .../crds/gameplane.local_networkcaptures.yaml | 2 +- .../crds/gameplane.local_restores.yaml | 2 +- .../gameplane.local_backups.yaml | 71 ++++++- .../gameplane.local_backupschedules.yaml | 2 +- .../gameplane.local_clusters.yaml | 2 +- .../gameplane.local_gameservers.yaml | 12 +- .../gameplane.local_gametemplates.yaml | 12 +- .../gameplane.local_modules.yaml | 2 +- .../gameplane.local_modulesources.yaml | 2 +- .../gameplane.local_networkcaptures.yaml | 2 +- .../gameplane.local_restores.yaml | 2 +- docs/module-authoring.md | 30 ++- docs/operator-operations.md | 35 ++++ i18n/locales/en/app.json | 72 ++++++++ operator/api/v1alpha1/backup_types.go | 47 +++++ operator/api/v1alpha1/gametemplate_types.go | 8 + .../api/v1alpha1/zz_generated.deepcopy.go | 51 +++++ .../config/crd/gameplane.local_backups.yaml | 69 +++++++ .../crd/gameplane.local_gameservers.yaml | 10 + .../crd/gameplane.local_gametemplates.yaml | 10 + operator/hack/condition-ids/main.go | 10 + .../internal/controller/backup_controller.go | 7 + operator/internal/controller/backup_guard.go | 11 +- .../internal/controller/backup_guard_test.go | 11 ++ .../internal/controller/backup_manifest.go | 174 ++++++++++++++++++ .../controller/backup_manifest_test.go | 142 ++++++++++++++ .../controller/backup_volumesnapshot.go | 2 + operator/specs.md | 2 + .../backups/BackupDetailDrawer.test.tsx | 28 +++ .../components/backups/BackupDetailDrawer.tsx | 27 +++ web/src/types.ts | 19 ++ 38 files changed, 959 insertions(+), 20 deletions(-) create mode 100644 operator/internal/controller/backup_manifest.go create mode 100644 operator/internal/controller/backup_manifest_test.go diff --git a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_backups.yaml b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_backups.yaml index d902ea995..8ed053a13 100644 --- a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_backups.yaml +++ b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_backups.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: a5d6a07efa14a630faad8db163c57508b2f28d6d95d7b6ff67c0c1033865f9f2 controller-gen.kubebuilder.io/version: v0.20.1 name: backups.gameplane.local spec: @@ -129,6 +129,75 @@ spec: status: description: BackupStatus is the observed state of a Backup. properties: + captureManifest: + description: |- + CaptureManifest is recorded once, before the first capture worker starts. + It describes persistent-volume coverage independently of copy success. + Missing on pre-upgrade backups; never reconstruct it from current layout. + properties: + layoutSource: + description: LayoutSource identifies the frozen workload used + for mount paths. + type: string + quiesceOutcome: + description: |- + QuiesceOutcome is confirmed, unsupported, not-requested, agent-unavailable, + or unknown. It is independent of whether the copy subsequently succeeds. + type: string + recordedAt: + format: date-time + type: string + serverUID: + type: string + state: + description: |- + State is Recorded for new captures, LegacyUnknown for an existing worker + whose original layout was never recorded. + enum: + - Recorded + - LegacyUnknown + type: string + strategy: + type: string + volumes: + items: + description: |- + BackupVolumeCoverage describes one persistent claim. Extra and loader/mod + claims remain uncovered even when mounted beneath the primary data directory. + properties: + claimName: + type: string + claimUID: + description: ClaimUID is empty if the claim did not yet + exist at admission. + type: string + classification: + description: |- + Classification records the module/server declaration at admission; + it does not prove that the volume can actually be reconstructed. + enum: + - data + - rebuildable + - unclassified + type: string + included: + type: boolean + mountPaths: + items: + type: string + type: array + reason: + type: string + required: + - claimName + - classification + - included + - reason + type: object + type: array + required: + - state + type: object completionTime: format: date-time type: string diff --git a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_backupschedules.yaml b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_backupschedules.yaml index d85406090..46d9d0662 100644 --- a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_backupschedules.yaml +++ b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_backupschedules.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: a5d6a07efa14a630faad8db163c57508b2f28d6d95d7b6ff67c0c1033865f9f2 controller-gen.kubebuilder.io/version: v0.20.1 name: backupschedules.gameplane.local spec: diff --git a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_clusters.yaml b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_clusters.yaml index 4d6aadcbb..071bb7e81 100644 --- a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_clusters.yaml +++ b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_clusters.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: a5d6a07efa14a630faad8db163c57508b2f28d6d95d7b6ff67c0c1033865f9f2 controller-gen.kubebuilder.io/version: v0.20.1 name: clusters.gameplane.local spec: diff --git a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_gameservers.yaml b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_gameservers.yaml index 95178e56e..cb95932de 100644 --- a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_gameservers.yaml +++ b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_gameservers.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: a5d6a07efa14a630faad8db163c57508b2f28d6d95d7b6ff67c0c1033865f9f2 controller-gen.kubebuilder.io/version: v0.20.1 name: gameservers.gameplane.local spec: @@ -2215,6 +2215,16 @@ spec: primary Storage.MountPath, since these exist precisely for directories that share no safe common parent with it. properties: + backupRole: + description: |- + BackupRole describes recovery requirements without adding this volume + to a backup. "data" needs a separate copy; "rebuildable" may be recreated. + Unset remains unclassified and not covered. Both backup strategies still + capture only the primary data claim. + enum: + - data + - rebuildable + type: string mountPath: description: MountPath is the absolute in-container path this volume is mounted at. diff --git a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_gametemplates.yaml b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_gametemplates.yaml index e5e3e1e3b..ae9c5f219 100644 --- a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_gametemplates.yaml +++ b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_gametemplates.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: a5d6a07efa14a630faad8db163c57508b2f28d6d95d7b6ff67c0c1033865f9f2 controller-gen.kubebuilder.io/version: v0.20.1 name: gametemplates.gameplane.local spec: @@ -2166,6 +2166,16 @@ spec: primary Storage.MountPath, since these exist precisely for directories that share no safe common parent with it. properties: + backupRole: + description: |- + BackupRole describes recovery requirements without adding this volume + to a backup. "data" needs a separate copy; "rebuildable" may be recreated. + Unset remains unclassified and not covered. Both backup strategies still + capture only the primary data claim. + enum: + - data + - rebuildable + type: string mountPath: description: MountPath is the absolute in-container path this volume is mounted at. diff --git a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_modules.yaml b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_modules.yaml index 5ade28cee..80f22873d 100644 --- a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_modules.yaml +++ b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_modules.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: a5d6a07efa14a630faad8db163c57508b2f28d6d95d7b6ff67c0c1033865f9f2 controller-gen.kubebuilder.io/version: v0.20.1 name: modules.gameplane.local spec: diff --git a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_modulesources.yaml b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_modulesources.yaml index 6c5dcbf36..e0949929b 100644 --- a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_modulesources.yaml +++ b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_modulesources.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: a5d6a07efa14a630faad8db163c57508b2f28d6d95d7b6ff67c0c1033865f9f2 controller-gen.kubebuilder.io/version: v0.20.1 name: modulesources.gameplane.local spec: diff --git a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_networkcaptures.yaml b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_networkcaptures.yaml index cc113e7e8..66f1158f6 100644 --- a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_networkcaptures.yaml +++ b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_networkcaptures.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: a5d6a07efa14a630faad8db163c57508b2f28d6d95d7b6ff67c0c1033865f9f2 controller-gen.kubebuilder.io/version: v0.20.1 name: networkcaptures.gameplane.local spec: diff --git a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_restores.yaml b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_restores.yaml index b77cd5c25..3979fda58 100644 --- a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_restores.yaml +++ b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_restores.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: a5d6a07efa14a630faad8db163c57508b2f28d6d95d7b6ff67c0c1033865f9f2 controller-gen.kubebuilder.io/version: v0.20.1 name: restores.gameplane.local spec: diff --git a/charts/gameplane/crd-manifests/gameplane.local_backups.yaml b/charts/gameplane/crd-manifests/gameplane.local_backups.yaml index d902ea995..8ed053a13 100644 --- a/charts/gameplane/crd-manifests/gameplane.local_backups.yaml +++ b/charts/gameplane/crd-manifests/gameplane.local_backups.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: a5d6a07efa14a630faad8db163c57508b2f28d6d95d7b6ff67c0c1033865f9f2 controller-gen.kubebuilder.io/version: v0.20.1 name: backups.gameplane.local spec: @@ -129,6 +129,75 @@ spec: status: description: BackupStatus is the observed state of a Backup. properties: + captureManifest: + description: |- + CaptureManifest is recorded once, before the first capture worker starts. + It describes persistent-volume coverage independently of copy success. + Missing on pre-upgrade backups; never reconstruct it from current layout. + properties: + layoutSource: + description: LayoutSource identifies the frozen workload used + for mount paths. + type: string + quiesceOutcome: + description: |- + QuiesceOutcome is confirmed, unsupported, not-requested, agent-unavailable, + or unknown. It is independent of whether the copy subsequently succeeds. + type: string + recordedAt: + format: date-time + type: string + serverUID: + type: string + state: + description: |- + State is Recorded for new captures, LegacyUnknown for an existing worker + whose original layout was never recorded. + enum: + - Recorded + - LegacyUnknown + type: string + strategy: + type: string + volumes: + items: + description: |- + BackupVolumeCoverage describes one persistent claim. Extra and loader/mod + claims remain uncovered even when mounted beneath the primary data directory. + properties: + claimName: + type: string + claimUID: + description: ClaimUID is empty if the claim did not yet + exist at admission. + type: string + classification: + description: |- + Classification records the module/server declaration at admission; + it does not prove that the volume can actually be reconstructed. + enum: + - data + - rebuildable + - unclassified + type: string + included: + type: boolean + mountPaths: + items: + type: string + type: array + reason: + type: string + required: + - claimName + - classification + - included + - reason + type: object + type: array + required: + - state + type: object completionTime: format: date-time type: string diff --git a/charts/gameplane/crd-manifests/gameplane.local_backupschedules.yaml b/charts/gameplane/crd-manifests/gameplane.local_backupschedules.yaml index d85406090..46d9d0662 100644 --- a/charts/gameplane/crd-manifests/gameplane.local_backupschedules.yaml +++ b/charts/gameplane/crd-manifests/gameplane.local_backupschedules.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: a5d6a07efa14a630faad8db163c57508b2f28d6d95d7b6ff67c0c1033865f9f2 controller-gen.kubebuilder.io/version: v0.20.1 name: backupschedules.gameplane.local spec: diff --git a/charts/gameplane/crd-manifests/gameplane.local_clusters.yaml b/charts/gameplane/crd-manifests/gameplane.local_clusters.yaml index 4d6aadcbb..071bb7e81 100644 --- a/charts/gameplane/crd-manifests/gameplane.local_clusters.yaml +++ b/charts/gameplane/crd-manifests/gameplane.local_clusters.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: a5d6a07efa14a630faad8db163c57508b2f28d6d95d7b6ff67c0c1033865f9f2 controller-gen.kubebuilder.io/version: v0.20.1 name: clusters.gameplane.local spec: diff --git a/charts/gameplane/crd-manifests/gameplane.local_gameservers.yaml b/charts/gameplane/crd-manifests/gameplane.local_gameservers.yaml index 95178e56e..cb95932de 100644 --- a/charts/gameplane/crd-manifests/gameplane.local_gameservers.yaml +++ b/charts/gameplane/crd-manifests/gameplane.local_gameservers.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: a5d6a07efa14a630faad8db163c57508b2f28d6d95d7b6ff67c0c1033865f9f2 controller-gen.kubebuilder.io/version: v0.20.1 name: gameservers.gameplane.local spec: @@ -2215,6 +2215,16 @@ spec: primary Storage.MountPath, since these exist precisely for directories that share no safe common parent with it. properties: + backupRole: + description: |- + BackupRole describes recovery requirements without adding this volume + to a backup. "data" needs a separate copy; "rebuildable" may be recreated. + Unset remains unclassified and not covered. Both backup strategies still + capture only the primary data claim. + enum: + - data + - rebuildable + type: string mountPath: description: MountPath is the absolute in-container path this volume is mounted at. diff --git a/charts/gameplane/crd-manifests/gameplane.local_gametemplates.yaml b/charts/gameplane/crd-manifests/gameplane.local_gametemplates.yaml index e5e3e1e3b..ae9c5f219 100644 --- a/charts/gameplane/crd-manifests/gameplane.local_gametemplates.yaml +++ b/charts/gameplane/crd-manifests/gameplane.local_gametemplates.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: a5d6a07efa14a630faad8db163c57508b2f28d6d95d7b6ff67c0c1033865f9f2 controller-gen.kubebuilder.io/version: v0.20.1 name: gametemplates.gameplane.local spec: @@ -2166,6 +2166,16 @@ spec: primary Storage.MountPath, since these exist precisely for directories that share no safe common parent with it. properties: + backupRole: + description: |- + BackupRole describes recovery requirements without adding this volume + to a backup. "data" needs a separate copy; "rebuildable" may be recreated. + Unset remains unclassified and not covered. Both backup strategies still + capture only the primary data claim. + enum: + - data + - rebuildable + type: string mountPath: description: MountPath is the absolute in-container path this volume is mounted at. diff --git a/charts/gameplane/crd-manifests/gameplane.local_modules.yaml b/charts/gameplane/crd-manifests/gameplane.local_modules.yaml index 5ade28cee..80f22873d 100644 --- a/charts/gameplane/crd-manifests/gameplane.local_modules.yaml +++ b/charts/gameplane/crd-manifests/gameplane.local_modules.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: a5d6a07efa14a630faad8db163c57508b2f28d6d95d7b6ff67c0c1033865f9f2 controller-gen.kubebuilder.io/version: v0.20.1 name: modules.gameplane.local spec: diff --git a/charts/gameplane/crd-manifests/gameplane.local_modulesources.yaml b/charts/gameplane/crd-manifests/gameplane.local_modulesources.yaml index 6c5dcbf36..e0949929b 100644 --- a/charts/gameplane/crd-manifests/gameplane.local_modulesources.yaml +++ b/charts/gameplane/crd-manifests/gameplane.local_modulesources.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: a5d6a07efa14a630faad8db163c57508b2f28d6d95d7b6ff67c0c1033865f9f2 controller-gen.kubebuilder.io/version: v0.20.1 name: modulesources.gameplane.local spec: diff --git a/charts/gameplane/crd-manifests/gameplane.local_networkcaptures.yaml b/charts/gameplane/crd-manifests/gameplane.local_networkcaptures.yaml index cc113e7e8..66f1158f6 100644 --- a/charts/gameplane/crd-manifests/gameplane.local_networkcaptures.yaml +++ b/charts/gameplane/crd-manifests/gameplane.local_networkcaptures.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: a5d6a07efa14a630faad8db163c57508b2f28d6d95d7b6ff67c0c1033865f9f2 controller-gen.kubebuilder.io/version: v0.20.1 name: networkcaptures.gameplane.local spec: diff --git a/charts/gameplane/crd-manifests/gameplane.local_restores.yaml b/charts/gameplane/crd-manifests/gameplane.local_restores.yaml index b77cd5c25..3979fda58 100644 --- a/charts/gameplane/crd-manifests/gameplane.local_restores.yaml +++ b/charts/gameplane/crd-manifests/gameplane.local_restores.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: a5d6a07efa14a630faad8db163c57508b2f28d6d95d7b6ff67c0c1033865f9f2 controller-gen.kubebuilder.io/version: v0.20.1 name: restores.gameplane.local spec: diff --git a/docs/module-authoring.md b/docs/module-authoring.md index 1141965bb..dbd6a28fb 100644 --- a/docs/module-authoring.md +++ b/docs/module-authoring.md @@ -1636,7 +1636,35 @@ useful, so readiness falls back to TCP on the game port. `spec.storage.mountPath` is where the PVC is mounted inside the game container. Pick the path the game writes its world/config files to — -backups snapshot this whole directory. +backups copy the primary claim mounted here. Separate PVCs mounted beneath +that directory are not included. + +Extra persistent volumes can declare their recovery role: + +```yaml +spec: + storage: + extra: + - name: serverfiles + mountPath: /serverfiles + size: 10Gi + backupRole: rebuildable # or data +``` + +`backupRole: data` identifies recovery data; `rebuildable` declares that the +contents can be downloaded or reconstructed. Neither includes the extra claim +in today's single-volume backup. Omission remains valid and appears as +unclassified/not covered. Do not mark an installation volume rebuildable if it +also contains unique configuration or mods that cannot be reconstructed. +The GameServer's existing `spec.storage.extra` override can supply the same field. + +The Backup pins its volume list, claim UIDs, observed game-container mount paths +and these declarations before copying. Template changes do not rewrite that +record. Nested loader/mod claims and retained server-owned claims remain +explicitly uncovered. See [backup coverage](operator-operations.md#backup-consistency-and-volume-coverage). +The module editor schema is derived from the GameTemplate CRD by +`make module-schema`; publish its regenerated copy in the module repository +when opting modules into this field. ## Testing a new module locally diff --git a/docs/operator-operations.md b/docs/operator-operations.md index 35a0753d5..3f1406c9d 100644 --- a/docs/operator-operations.md +++ b/docs/operator-operations.md @@ -1,5 +1,40 @@ # Backup, restore and wipe ownership +## Backup consistency and volume coverage + +A successful copy is not necessarily a complete server recovery point. +`status.conditions[type=Consistency]` reports the achieved result separately +from `Completed`: Quiesced means the agent confirmed the module's quiesce +commands before the completed copy; it does not prove those commands flush all +application state. UnsupportedRawCopy, RawCopy and AgentUnavailableRawCopy +describe restic copies without confirmed quiesce. CSI without confirmed +quiesce reports CrashConsistentSnapshot. Failed or unfinished copies cannot +report achieved quiesce. + +`status.captureManifest` is recorded once before the first copy worker is +created, after lifecycle ownership and quiesce preparation. It lists the primary +`-data` claim as included and every other observed persistent claim as +uncovered, including extra volumes, nested mod/loader mounts and retained +server-owned claims. It records claim UIDs, observed mount paths, source layout +and optional `data`/`rebuildable` declarations. Included describes copy scope; +check the Backup's phase and snapshot ID for copy success. A declaration that +an uncovered claim is rebuildable is not a recovery guarantee. + +The API returns this status and the backup details drawer displays consistency +and coverage. Capture metadata is immutable through ordinary reconciliation: +editing a template later never changes the historical list. This release does +not add multi-volume restic, automatic game stopping or a stricter consistency +request policy. + +Pre-upgrade captures have missing metadata or `state: LegacyUnknown`; their +Consistency condition is Unknown. The operator never reconstructs their history +from the current template. Before recovery, inspect the original restic snapshot +or CSI source claim, recover the original module/server configuration and arrange +separate recovery of extra/mod volumes. Use an isolated recovery server to +verify those prerequisites before replacing a live world. + +## Shared operation ownership + Gameplane serializes these operations per GameServer. All backups participate, including backups with `quiesce: false` and CSI VolumeSnapshots. A held operation also defers idle sleep/wake, restart, and pod-template rollout. Requests remain diff --git a/i18n/locales/en/app.json b/i18n/locales/en/app.json index 059470fd2..b0cab7d95 100644 --- a/i18n/locales/en/app.json +++ b/i18n/locales/en/app.json @@ -175,6 +175,38 @@ "defaultMessage": "The backup or restore completed successfully.", "description": "Completed condition on a Backup or Restore that finished." }, + "condition.consistency.agentunavailablerawcopy": { + "defaultMessage": "No agent quiesce capability was configured. The primary volume was copied without pausing game writes.", + "description": "Backup achieved consistency: AgentUnavailableRawCopy." + }, + "condition.consistency.capturefailed": { + "defaultMessage": "The capture failed; no usable consistency guarantee was achieved.", + "description": "Backup achieved consistency: CaptureFailed." + }, + "condition.consistency.capturepending": { + "defaultMessage": "The capture has not completed; its achieved consistency is not yet known.", + "description": "Backup achieved consistency: CapturePending." + }, + "condition.consistency.crashconsistentsnapshot": { + "defaultMessage": "The primary CSI snapshot is crash-consistent; application quiesce was not confirmed.", + "description": "Backup achieved consistency: CrashConsistentSnapshot." + }, + "condition.consistency.legacymetadataunknown": { + "defaultMessage": "Capture-time metadata is unavailable. Do not infer consistency or volume coverage from the current template.", + "description": "Backup achieved consistency: LegacyMetadataUnknown." + }, + "condition.consistency.quiesced": { + "defaultMessage": "The primary volume copy completed after the agent confirmed quiesce. This depends on the module's quiesce commands; other volumes remain outside this backup.", + "description": "Backup achieved consistency: Quiesced." + }, + "condition.consistency.rawcopy": { + "defaultMessage": "The primary volume was copied without confirmed application quiesce.", + "description": "Backup achieved consistency: RawCopy." + }, + "condition.consistency.unsupportedrawcopy": { + "defaultMessage": "The game does not support quiesce. The primary volume was copied while it could still change.", + "description": "Backup achieved consistency: UnsupportedRawCopy." + }, "condition.datawipe.jobfailed": { "defaultMessage": "The data wipe job did not complete. The volume may not be fully cleared.", "description": "DataWipe condition when the wipe job fails." @@ -1131,10 +1163,34 @@ "defaultMessage": "Backup details", "description": "Backup details drawer: heading at the top of the side panel for one backup; the backup name is shown below it" }, + "web.components.backups.backup_detail_drawer.classification": { + "defaultMessage": "{role, select, data {Data} rebuildable {Rebuildable} other {Unclassified}}", + "description": "Backup volume: optional declaration from the module or server at capture time" + }, "web.components.backups.backup_detail_drawer.completed": { "defaultMessage": "Completed", "description": "Backup details drawer: field label above the time the backup completed, shown in relative time" }, + "web.components.backups.backup_detail_drawer.consistency": { + "defaultMessage": "Achieved consistency", + "description": "Backup details: actual consistency reported by the controller, independent of successful copying" + }, + "web.components.backups.backup_detail_drawer.consistency_unknown": { + "defaultMessage": "Consistency has not been reported.", + "description": "Backup details: no achieved-consistency condition is available" + }, + "web.components.backups.backup_detail_drawer.coverage": { + "defaultMessage": "Volume coverage", + "description": "Backup details: persistent claims recorded before the backup copy began" + }, + "web.components.backups.backup_detail_drawer.coverage_recorded": { + "defaultMessage": "Recorded: {time}", + "description": "Backup details: timestamp of the immutable capture manifest" + }, + "web.components.backups.backup_detail_drawer.coverage_scope": { + "defaultMessage": "Only the primary data claim is copied. Rebuildable is a declaration, not proof that recovery can reconstruct its contents.", + "description": "Backup details: explains the current single-volume backup scope and rebuildable declarations" + }, "web.components.backups.backup_detail_drawer.delete": { "defaultMessage": "Delete", "description": "Backup detail drawer: delete button label" @@ -1143,6 +1199,18 @@ "defaultMessage": "Deleting…", "description": "Backup detail drawer: delete button label while the delete request is pending" }, + "web.components.backups.backup_detail_drawer.included": { + "defaultMessage": "Included", + "description": "Backup volume: this claim is selected for copying; success is reported separately" + }, + "web.components.backups.backup_detail_drawer.legacy_coverage": { + "defaultMessage": "Capture-time volume metadata is unavailable. Inspect the original backup and module configuration before recovery.", + "description": "Backup details: older backups have no reliable volume manifest, so the current template is not used to invent coverage" + }, + "web.components.backups.backup_detail_drawer.not_covered": { + "defaultMessage": "Not covered", + "description": "Backup volume: contents of this claim are not included" + }, "web.components.backups.backup_detail_drawer.phase": { "defaultMessage": "Phase", "description": "Backup details drawer: field label above the backup's current phase, shown as a status chip" @@ -1155,6 +1223,10 @@ "defaultMessage": "Restore backup", "description": "Backup details drawer: screen-reader name of the restore button in the drawer header, read instead of its visible word Restore; not visible on screen" }, + "web.components.backups.backup_detail_drawer.retained_unmounted": { + "defaultMessage": "Retained claim; not mounted in the captured workload.", + "description": "Backup volume: an older server-owned claim was retained but was not part of the observed pod layout" + }, "web.components.backups.backup_detail_drawer.server": { "defaultMessage": "Server", "description": "Backup details drawer: field label above the name of the server the backup belongs to" diff --git a/operator/api/v1alpha1/backup_types.go b/operator/api/v1alpha1/backup_types.go index 0caeed81a..ea5e1ce29 100644 --- a/operator/api/v1alpha1/backup_types.go +++ b/operator/api/v1alpha1/backup_types.go @@ -88,6 +88,12 @@ type LocalObjectRef struct { // BackupStatus is the observed state of a Backup. type BackupStatus struct { + // CaptureManifest is recorded once, before the first capture worker starts. + // It describes persistent-volume coverage independently of copy success. + // Missing on pre-upgrade backups; never reconstruct it from current layout. + // +optional + CaptureManifest *BackupCaptureManifest `json:"captureManifest,omitempty"` + // +optional Phase BackupPhase `json:"phase,omitempty"` @@ -128,6 +134,47 @@ type BackupStatus struct { Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"` } +// BackupCaptureManifest pins the layout and quiesce result at capture admission. +// Recorded coverage does not imply a successful or complete server backup. +type BackupCaptureManifest struct { + // State is Recorded for new captures, LegacyUnknown for an existing worker + // whose original layout was never recorded. + // +kubebuilder:validation:Enum=Recorded;LegacyUnknown + State string `json:"state"` + // +optional + RecordedAt *metav1.Time `json:"recordedAt,omitempty"` + // +optional + ServerUID string `json:"serverUID,omitempty"` + // +optional + Strategy string `json:"strategy,omitempty"` + // LayoutSource identifies the frozen workload used for mount paths. + // +optional + LayoutSource string `json:"layoutSource,omitempty"` + // QuiesceOutcome is confirmed, unsupported, not-requested, agent-unavailable, + // or unknown. It is independent of whether the copy subsequently succeeds. + // +optional + QuiesceOutcome string `json:"quiesceOutcome,omitempty"` + // +optional + Volumes []BackupVolumeCoverage `json:"volumes,omitempty"` +} + +// BackupVolumeCoverage describes one persistent claim. Extra and loader/mod +// claims remain uncovered even when mounted beneath the primary data directory. +type BackupVolumeCoverage struct { + ClaimName string `json:"claimName"` + // ClaimUID is empty if the claim did not yet exist at admission. + // +optional + ClaimUID string `json:"claimUID,omitempty"` + // +optional + MountPaths []string `json:"mountPaths,omitempty"` + Included bool `json:"included"` + // Classification records the module/server declaration at admission; + // it does not prove that the volume can actually be reconstructed. + // +kubebuilder:validation:Enum=data;rebuildable;unclassified + Classification string `json:"classification"` + CoverageReason string `json:"reason"` +} + // +kubebuilder:object:root=true // +kubebuilder:resource:shortName=bk // +kubebuilder:printcolumn:name="Server",type=string,JSONPath=`.spec.serverRef.name` diff --git a/operator/api/v1alpha1/gametemplate_types.go b/operator/api/v1alpha1/gametemplate_types.go index bea234aea..8001a2b27 100644 --- a/operator/api/v1alpha1/gametemplate_types.go +++ b/operator/api/v1alpha1/gametemplate_types.go @@ -946,6 +946,14 @@ type GameStorageSpec struct { // primary Storage.MountPath, since these exist precisely for directories // that share no safe common parent with it. type ExtraVolumeSpec struct { + // BackupRole describes recovery requirements without adding this volume + // to a backup. "data" needs a separate copy; "rebuildable" may be recreated. + // Unset remains unclassified and not covered. Both backup strategies still + // capture only the primary data claim. + // +kubebuilder:validation:Enum=data;rebuildable + // +optional + BackupRole string `json:"backupRole,omitempty"` + // Name identifies the volume and forms part of its PVC name. Must be a // DNS-1123 label. // +kubebuilder:validation:Pattern=`^[a-z0-9]([-a-z0-9]*[a-z0-9])?$` diff --git a/operator/api/v1alpha1/zz_generated.deepcopy.go b/operator/api/v1alpha1/zz_generated.deepcopy.go index 05926fd58..f7a291f7d 100644 --- a/operator/api/v1alpha1/zz_generated.deepcopy.go +++ b/operator/api/v1alpha1/zz_generated.deepcopy.go @@ -178,6 +178,32 @@ func (in *Backup) DeepCopyObject() runtime.Object { return nil } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BackupCaptureManifest) DeepCopyInto(out *BackupCaptureManifest) { + *out = *in + if in.RecordedAt != nil { + in, out := &in.RecordedAt, &out.RecordedAt + *out = (*in).DeepCopy() + } + if in.Volumes != nil { + in, out := &in.Volumes, &out.Volumes + *out = make([]BackupVolumeCoverage, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BackupCaptureManifest. +func (in *BackupCaptureManifest) DeepCopy() *BackupCaptureManifest { + if in == nil { + return nil + } + out := new(BackupCaptureManifest) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *BackupList) DeepCopyInto(out *BackupList) { *out = *in @@ -388,6 +414,11 @@ func (in *BackupSpec) DeepCopy() *BackupSpec { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *BackupStatus) DeepCopyInto(out *BackupStatus) { *out = *in + if in.CaptureManifest != nil { + in, out := &in.CaptureManifest, &out.CaptureManifest + *out = new(BackupCaptureManifest) + (*in).DeepCopyInto(*out) + } if in.StartTime != nil { in, out := &in.StartTime, &out.StartTime *out = (*in).DeepCopy() @@ -420,6 +451,26 @@ func (in *BackupStatus) DeepCopy() *BackupStatus { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BackupVolumeCoverage) DeepCopyInto(out *BackupVolumeCoverage) { + *out = *in + if in.MountPaths != nil { + in, out := &in.MountPaths, &out.MountPaths + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BackupVolumeCoverage. +func (in *BackupVolumeCoverage) DeepCopy() *BackupVolumeCoverage { + if in == nil { + return nil + } + out := new(BackupVolumeCoverage) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *BanListSpec) DeepCopyInto(out *BanListSpec) { *out = *in diff --git a/operator/config/crd/gameplane.local_backups.yaml b/operator/config/crd/gameplane.local_backups.yaml index f96731731..29fad27a8 100644 --- a/operator/config/crd/gameplane.local_backups.yaml +++ b/operator/config/crd/gameplane.local_backups.yaml @@ -128,6 +128,75 @@ spec: status: description: BackupStatus is the observed state of a Backup. properties: + captureManifest: + description: |- + CaptureManifest is recorded once, before the first capture worker starts. + It describes persistent-volume coverage independently of copy success. + Missing on pre-upgrade backups; never reconstruct it from current layout. + properties: + layoutSource: + description: LayoutSource identifies the frozen workload used + for mount paths. + type: string + quiesceOutcome: + description: |- + QuiesceOutcome is confirmed, unsupported, not-requested, agent-unavailable, + or unknown. It is independent of whether the copy subsequently succeeds. + type: string + recordedAt: + format: date-time + type: string + serverUID: + type: string + state: + description: |- + State is Recorded for new captures, LegacyUnknown for an existing worker + whose original layout was never recorded. + enum: + - Recorded + - LegacyUnknown + type: string + strategy: + type: string + volumes: + items: + description: |- + BackupVolumeCoverage describes one persistent claim. Extra and loader/mod + claims remain uncovered even when mounted beneath the primary data directory. + properties: + claimName: + type: string + claimUID: + description: ClaimUID is empty if the claim did not yet + exist at admission. + type: string + classification: + description: |- + Classification records the module/server declaration at admission; + it does not prove that the volume can actually be reconstructed. + enum: + - data + - rebuildable + - unclassified + type: string + included: + type: boolean + mountPaths: + items: + type: string + type: array + reason: + type: string + required: + - claimName + - classification + - included + - reason + type: object + type: array + required: + - state + type: object completionTime: format: date-time type: string diff --git a/operator/config/crd/gameplane.local_gameservers.yaml b/operator/config/crd/gameplane.local_gameservers.yaml index 4be670ebc..f4ab3ceb1 100644 --- a/operator/config/crd/gameplane.local_gameservers.yaml +++ b/operator/config/crd/gameplane.local_gameservers.yaml @@ -2214,6 +2214,16 @@ spec: primary Storage.MountPath, since these exist precisely for directories that share no safe common parent with it. properties: + backupRole: + description: |- + BackupRole describes recovery requirements without adding this volume + to a backup. "data" needs a separate copy; "rebuildable" may be recreated. + Unset remains unclassified and not covered. Both backup strategies still + capture only the primary data claim. + enum: + - data + - rebuildable + type: string mountPath: description: MountPath is the absolute in-container path this volume is mounted at. diff --git a/operator/config/crd/gameplane.local_gametemplates.yaml b/operator/config/crd/gameplane.local_gametemplates.yaml index 13d8a1fa5..ce25ffca9 100644 --- a/operator/config/crd/gameplane.local_gametemplates.yaml +++ b/operator/config/crd/gameplane.local_gametemplates.yaml @@ -2165,6 +2165,16 @@ spec: primary Storage.MountPath, since these exist precisely for directories that share no safe common parent with it. properties: + backupRole: + description: |- + BackupRole describes recovery requirements without adding this volume + to a backup. "data" needs a separate copy; "rebuildable" may be recreated. + Unset remains unclassified and not covered. Both backup strategies still + capture only the primary data claim. + enum: + - data + - rebuildable + type: string mountPath: description: MountPath is the absolute in-container path this volume is mounted at. diff --git a/operator/hack/condition-ids/main.go b/operator/hack/condition-ids/main.go index e644cf041..2a339318f 100644 --- a/operator/hack/condition-ids/main.go +++ b/operator/hack/condition-ids/main.go @@ -144,6 +144,16 @@ var rows = []row{ {types: []string{"SnapshotForgotten"}, reason: "Forgotten", english: "The snapshot was removed from the backup repository.", description: "SnapshotForgotten condition after a deleted Backup's snapshot was forgotten."}, {types: []string{"SnapshotForgotten"}, reason: "ForgetAbandoned", english: "The snapshot was not removed from the backup repository when the backup was deleted.", description: "SnapshotForgotten condition when the forget step was abandoned."}, + // Consistency is separate from copy completion and volume coverage. + {types: []string{"Consistency"}, reason: "CaptureFailed", english: "The capture failed; no usable consistency guarantee was achieved.", description: "Backup achieved consistency: CaptureFailed."}, + {types: []string{"Consistency"}, reason: "LegacyMetadataUnknown", english: "Capture-time metadata is unavailable. Do not infer consistency or volume coverage from the current template.", description: "Backup achieved consistency: LegacyMetadataUnknown."}, + {types: []string{"Consistency"}, reason: "CapturePending", english: "The capture has not completed; its achieved consistency is not yet known.", description: "Backup achieved consistency: CapturePending."}, + {types: []string{"Consistency"}, reason: "Quiesced", english: "The primary volume copy completed after the agent confirmed quiesce. This depends on the module's quiesce commands; other volumes remain outside this backup.", description: "Backup achieved consistency: Quiesced."}, + {types: []string{"Consistency"}, reason: "CrashConsistentSnapshot", english: "The primary CSI snapshot is crash-consistent; application quiesce was not confirmed.", description: "Backup achieved consistency: CrashConsistentSnapshot."}, + {types: []string{"Consistency"}, reason: "UnsupportedRawCopy", english: "The game does not support quiesce. The primary volume was copied while it could still change.", description: "Backup achieved consistency: UnsupportedRawCopy."}, + {types: []string{"Consistency"}, reason: "AgentUnavailableRawCopy", english: "No agent quiesce capability was configured. The primary volume was copied without pausing game writes.", description: "Backup achieved consistency: AgentUnavailableRawCopy."}, + {types: []string{"Consistency"}, reason: "RawCopy", english: "The primary volume was copied without confirmed application quiesce.", description: "Backup achieved consistency: RawCopy."}, + // BackupSchedule {types: []string{"ScheduleValid"}, reason: "CronParseError", english: "The schedule is not a valid cron expression.", description: "ScheduleValid condition for an unparseable schedule."}, {types: []string{"ScheduleValid"}, reason: "CronValid", english: "The schedule is a valid cron expression.", description: "ScheduleValid condition for a good schedule."}, diff --git a/operator/internal/controller/backup_controller.go b/operator/internal/controller/backup_controller.go index c579713d9..6245b3cb9 100644 --- a/operator/internal/controller/backup_controller.go +++ b/operator/internal/controller/backup_controller.go @@ -273,6 +273,11 @@ func (r *BackupReconciler) reconcile(ctx context.Context, req ctrl.Request) (ctr // Re-entering the full pipeline would re-validate the GameServer and repo // Secret (flipping an already-Succeeded Backup to Failed if either was since // deleted) and would re-create a cleaned-up Job, running a second backup. + if b.Status.Phase == gameplanev1alpha1.BackupPhaseSucceeded || b.Status.Phase == gameplanev1alpha1.BackupPhaseFailed { + if err := r.syncBackupConsistency(ctx, &b); err != nil { + return ctrl.Result{}, err + } + } if b.Status.Phase == gameplanev1alpha1.BackupPhaseSucceeded && b.Status.SnapshotID == "" { return r.retrySnapshotScrape(ctx, &b) } @@ -537,6 +542,7 @@ func (r *BackupReconciler) mirrorJobStatus( cond.Reason = string(phase) } newConds := upsertCondition(b.Status.Conditions, cond) + newConds = upsertCondition(newConds, backupConsistencyCondition(b)) if !sameConditions(b.Status.Conditions, newConds) { b.Status.Conditions = newConds dirty = true @@ -918,6 +924,7 @@ func (r *BackupReconciler) fail(ctx context.Context, b *gameplanev1alpha1.Backup Message: msg, ObservedGeneration: b.Generation, }) + b.Status.Conditions = upsertCondition(b.Status.Conditions, backupConsistencyCondition(b)) if err := r.Status().Update(ctx, b); err != nil { return ctrl.Result{}, err } diff --git a/operator/internal/controller/backup_guard.go b/operator/internal/controller/backup_guard.go index cee37734e..4cf6ab506 100644 --- a/operator/internal/controller/backup_guard.go +++ b/operator/internal/controller/backup_guard.go @@ -267,7 +267,16 @@ func (r *BackupReconciler) prepareBackupQuiesce(ctx context.Context, b *gameplan if err != nil || !fenced { return ctrl.Result{RequeueAfter: 5 * time.Second}, err } - return ctrl.Result{}, r.maybeQuiesce(ctx, b) + if err := r.maybeQuiesce(ctx, b); err != nil { + return ctrl.Result{}, err + } + if err := r.recordBackupManifest(ctx, b, gs); err != nil { + // Metadata must be durable before capture. Do not leave saving paused + // indefinitely when a lookup/status write prevents the copy starting. + _, failErr := r.fail(ctx, b, "cannot record capture metadata: "+err.Error()) + return ctrl.Result{RequeueAfter: time.Second}, failErr + } + return ctrl.Result{}, nil } // Return only the originally bound GameServer. A foreign owner means this diff --git a/operator/internal/controller/backup_guard_test.go b/operator/internal/controller/backup_guard_test.go index 8b40e1104..28d022da8 100644 --- a/operator/internal/controller/backup_guard_test.go +++ b/operator/internal/controller/backup_guard_test.go @@ -91,12 +91,23 @@ func TestBackupGuardSerializesAcrossBackupsAndRestart(t *testing.T) { if len(jobs.Items) != 1 || q.quiesced != 1 || q.unquiesced != 0 { t.Fatalf("overlapping protected copies: jobs=%d, agent=%+v", len(jobs.Items), q) } + first := guardGetBackup(t, r, "first") + if first.Status.CaptureManifest == nil || first.Status.CaptureManifest.QuiesceOutcome != "confirmed" { + t.Fatalf("worker started without confirmed capture-time metadata: %+v", first.Status) + } + if second := guardGetBackup(t, r, "second"); second.Status.CaptureManifest != nil { + t.Fatalf("queued copy recorded metadata before admission: %+v", second.Status.CaptureManifest) + } job := &jobs.Items[0] job.Status.Succeeded = 1 if err := r.Status().Update(context.Background(), job); err != nil { t.Fatal(err) } guardPass(t, r, "first") + first = guardGetBackup(t, r, "first") + if condition := meta.FindStatusCondition(first.Status.Conditions, "Consistency"); condition == nil || condition.Status != metav1.ConditionTrue || condition.Reason != "Quiesced" { + t.Fatalf("completed copy did not expose achieved quiesce: %+v", first.Status) + } guardPass(t, r, "second") if q.quiesced != 2 || q.unquiesced != 1 { t.Fatalf("second did not acquire after first cleanup: %+v", q) diff --git a/operator/internal/controller/backup_manifest.go b/operator/internal/controller/backup_manifest.go new file mode 100644 index 000000000..76cf36803 --- /dev/null +++ b/operator/internal/controller/backup_manifest.go @@ -0,0 +1,174 @@ +package controller + +import ( + "context" + "sort" + + snapshotv1 "github.com/kubernetes-csi/external-snapshotter/client/v8/apis/volumesnapshot/v1" + appsv1 "k8s.io/api/apps/v1" + batchv1 "k8s.io/api/batch/v1" + corev1 "k8s.io/api/core/v1" + apierrors "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "sigs.k8s.io/controller-runtime/pkg/client" + + gameplanev1alpha1 "github.com/GameplanePanel/gameplane/operator/api/v1alpha1" +) + +// Called after lifecycle ownership and the workload fence, before creating the +// copy worker. Requeues and later template edits never rewrite this manifest. +func (r *BackupReconciler) recordBackupManifest(ctx context.Context, b *gameplanev1alpha1.Backup, gs *gameplanev1alpha1.GameServer) error { + if b.Status.CaptureManifest != nil { + return nil + } + reader := r.backupAPIReader() + var worker client.Object = &batchv1.Job{} + if b.Spec.Strategy == "volume-snapshot" { + worker = &snapshotv1.VolumeSnapshot{} + } + if err := reader.Get(ctx, client.ObjectKeyFromObject(b), worker); err == nil { + // Existing workers predate this metadata. Current layout cannot prove + // what they captured, even if their requested quiesce was successful. + b.Status.CaptureManifest = &gameplanev1alpha1.BackupCaptureManifest{State: "LegacyUnknown"} + return r.Status().Update(ctx, b) + } else if !apierrors.IsNotFound(err) { + return err + } + var ss appsv1.StatefulSet + err := reader.Get(ctx, client.ObjectKeyFromObject(gs), &ss) + if err != nil && !apierrors.IsNotFound(err) { + return err + } + var layout corev1.PodSpec + source := "Unavailable" + if err == nil && metav1.IsControlledBy(&ss, gs) { + layout, source = ss.Spec.Template.Spec, "StatefulSet" + var pod corev1.Pod + err := reader.Get(ctx, client.ObjectKey{Namespace: gs.Namespace, Name: gs.Name + "-0"}, &pod) + if err != nil && !apierrors.IsNotFound(err) { + return err + } + if err == nil && metav1.IsControlledBy(&pod, &ss) { + layout, source = pod.Spec, "Pod" + } + } + var tmpl gameplanev1alpha1.GameTemplate + if err := reader.Get(ctx, client.ObjectKey{Name: gs.Spec.TemplateRef.Name}, &tmpl); err != nil && !apierrors.IsNotFound(err) { + return err + } + primary := gs.Name + "-data" + volumes := map[string]*gameplanev1alpha1.BackupVolumeCoverage{ + primary: {ClaimName: primary, Included: true, Classification: "data", CoverageReason: "PrimaryDataClaim"}, + } + podNames := map[string]string{} + for _, volume := range layout.Volumes { + if volume.PersistentVolumeClaim == nil { + continue + } + name := volume.PersistentVolumeClaim.ClaimName + podNames[volume.Name] = name + if volumes[name] == nil { + volumes[name] = &gameplanev1alpha1.BackupVolumeCoverage{ClaimName: name, Classification: "unclassified", CoverageReason: "NotCovered"} + } + } + for _, container := range layout.Containers { + if container.Name != "game" { + continue + } + for _, mount := range container.VolumeMounts { + if volume := volumes[podNames[mount.Name]]; volume != nil { + volume.MountPaths = append(volume.MountPaths, mount.MountPath) + } + } + } + var claims corev1.PersistentVolumeClaimList + if err := reader.List(ctx, &claims, client.InNamespace(gs.Namespace)); err != nil { + return err + } + for _, claim := range claims.Items { + volume := volumes[claim.Name] + if volume == nil && metav1.IsControlledBy(&claim, gs) { + volume = &gameplanev1alpha1.BackupVolumeCoverage{ClaimName: claim.Name, Classification: "unclassified", CoverageReason: "RetainedUnmountedClaim"} + volumes[claim.Name] = volume + } + if volume != nil { + volume.ClaimUID = string(claim.UID) + } + } + for _, extra := range effectiveExtraVolumes(gs, &tmpl) { + volume := volumes[extraPVCName(gs, extra.Name)] + if volume == nil { + continue + } + // A newer declaration for a different mount must not classify the + // frozen workload's volume as safely rebuildable. + for _, mount := range volume.MountPaths { + if mount == extra.MountPath && extra.BackupRole != "" { + volume.Classification = extra.BackupRole + } + } + } + now := metav1.Now() + manifest := &gameplanev1alpha1.BackupCaptureManifest{State: "Recorded", RecordedAt: &now, + ServerUID: string(gs.UID), Strategy: b.Spec.Strategy, LayoutSource: source, QuiesceOutcome: backupQuiesceOutcome(b)} + if manifest.Strategy == "" { + manifest.Strategy = "restic-snapshot" + } + for _, volume := range volumes { + sort.Strings(volume.MountPaths) + manifest.Volumes = append(manifest.Volumes, *volume) + } + sort.Slice(manifest.Volumes, func(i, j int) bool { return manifest.Volumes[i].ClaimName < manifest.Volumes[j].ClaimName }) + b.Status.CaptureManifest = manifest + return r.Status().Update(ctx, b) +} + +func backupQuiesceOutcome(b *gameplanev1alpha1.Backup) string { + switch b.Annotations[annoQuiesceAttempted] { + case "true": + return "confirmed" + case "unsupported": + return "unsupported" + case "pending": + return "unknown" + default: + if !b.Spec.Quiesce { + return "not-requested" + } + return "agent-unavailable" + } +} + +// Consistency=True means the copy completed after the agent confirmed quiesce. +// False is an explicit weaker guarantee, not a synonym for copy failure. +func backupConsistencyCondition(b *gameplanev1alpha1.Backup) metav1.Condition { + condition := metav1.Condition{Type: "Consistency", ObservedGeneration: b.Generation, Status: metav1.ConditionUnknown} + switch { + case b.Status.Phase == gameplanev1alpha1.BackupPhaseFailed: + condition.Status, condition.Reason, condition.Message = metav1.ConditionFalse, "CaptureFailed", "The capture failed; no usable consistency guarantee was achieved." + case b.Status.CaptureManifest == nil || b.Status.CaptureManifest.State != "Recorded": + condition.Reason, condition.Message = "LegacyMetadataUnknown", "Capture-time metadata is unavailable. Do not infer consistency or volume coverage from the current template." + case b.Status.Phase != gameplanev1alpha1.BackupPhaseSucceeded || b.Status.SnapshotID == "": + condition.Reason, condition.Message = "CapturePending", "The capture has not completed; its achieved consistency is not yet known." + case b.Status.CaptureManifest.QuiesceOutcome == "confirmed": + condition.Status, condition.Reason, condition.Message = metav1.ConditionTrue, "Quiesced", "The primary volume copy completed after the agent confirmed quiesce. This depends on the module's quiesce commands; other volumes remain outside this backup." + case b.Status.CaptureManifest.Strategy == "volume-snapshot": + condition.Status, condition.Reason, condition.Message = metav1.ConditionFalse, "CrashConsistentSnapshot", "The primary CSI snapshot is crash-consistent; application quiesce was not confirmed ("+b.Status.CaptureManifest.QuiesceOutcome+")." + case b.Status.CaptureManifest.QuiesceOutcome == "unsupported": + condition.Status, condition.Reason, condition.Message = metav1.ConditionFalse, "UnsupportedRawCopy", "The game does not support quiesce. The primary volume was copied while it could still change." + case b.Status.CaptureManifest.QuiesceOutcome == "agent-unavailable": + condition.Status, condition.Reason, condition.Message = metav1.ConditionFalse, "AgentUnavailableRawCopy", "No agent quiesce capability was configured. The primary volume was copied without pausing game writes." + default: + condition.Status, condition.Reason, condition.Message = metav1.ConditionFalse, "RawCopy", "The primary volume was copied without confirmed application quiesce." + } + return condition +} + +func (r *BackupReconciler) syncBackupConsistency(ctx context.Context, b *gameplanev1alpha1.Backup) error { + conditions := upsertCondition(b.Status.Conditions, backupConsistencyCondition(b)) + if sameConditions(b.Status.Conditions, conditions) { + return nil + } + b.Status.Conditions = conditions + return r.Status().Update(ctx, b) +} diff --git a/operator/internal/controller/backup_manifest_test.go b/operator/internal/controller/backup_manifest_test.go new file mode 100644 index 000000000..e8f9099db --- /dev/null +++ b/operator/internal/controller/backup_manifest_test.go @@ -0,0 +1,142 @@ +package controller + +import ( + "reflect" + "testing" + + snapshotv1 "github.com/kubernetes-csi/external-snapshotter/client/v8/apis/volumesnapshot/v1" + + appsv1 "k8s.io/api/apps/v1" + batchv1 "k8s.io/api/batch/v1" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/types" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/client/fake" + + gameplanev1alpha1 "github.com/GameplanePanel/gameplane/operator/api/v1alpha1" +) + +func TestBackupManifestPinsCoverageAndClassification(t *testing.T) { + scheme := runtime.NewScheme() + _ = corev1.AddToScheme(scheme) + _ = appsv1.AddToScheme(scheme) + _ = batchv1.AddToScheme(scheme) + _ = gameplanev1alpha1.AddToScheme(scheme) + gs := &gameplanev1alpha1.GameServer{ObjectMeta: metav1.ObjectMeta{Name: "game", Namespace: "games", UID: "game-uid"}, Spec: gameplanev1alpha1.GameServerSpec{TemplateRef: gameplanev1alpha1.GameTemplateRef{Name: "template"}}} + tmpl := &gameplanev1alpha1.GameTemplate{ObjectMeta: metav1.ObjectMeta{Name: "template"}, Spec: gameplanev1alpha1.GameTemplateSpec{Storage: gameplanev1alpha1.GameStorageSpec{ + Extra: []gameplanev1alpha1.ExtraVolumeSpec{{Name: "install", MountPath: "/serverfiles", BackupRole: "rebuildable"}}, + }}} + b := &gameplanev1alpha1.Backup{ObjectMeta: metav1.ObjectMeta{Name: "copy", Namespace: "games", UID: "backup-uid", Annotations: map[string]string{annoQuiesceAttempted: "unsupported"}}, Spec: gameplanev1alpha1.BackupSpec{ServerRef: gameplanev1alpha1.LocalObjectRef{Name: gs.Name}, Quiesce: true}} + owner := *metav1.NewControllerRef(gs, gameplanev1alpha1.GroupVersion.WithKind("GameServer")) + ss := &appsv1.StatefulSet{ObjectMeta: metav1.ObjectMeta{Name: gs.Name, Namespace: gs.Namespace, OwnerReferences: []metav1.OwnerReference{owner}}, + Spec: appsv1.StatefulSetSpec{Template: corev1.PodTemplateSpec{Spec: corev1.PodSpec{ + Containers: []corev1.Container{{Name: "game", VolumeMounts: []corev1.VolumeMount{{Name: "data", MountPath: "/world"}, {Name: "extra-install", MountPath: "/serverfiles"}, {Name: "mods", MountPath: "/world/mods"}}}}, + Volumes: []corev1.Volume{ + {Name: "data", VolumeSource: corev1.VolumeSource{PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ClaimName: "game-data"}}}, + {Name: "extra-install", VolumeSource: corev1.VolumeSource{PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ClaimName: "game-extra-install"}}}, + {Name: "mods", VolumeSource: corev1.VolumeSource{PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ClaimName: "game-mods-active"}}}, + }, + }}}, + } + objects := []client.Object{gs, tmpl, b, ss} + for _, name := range []string{"game-data", "game-extra-install", "game-mods-active", "game-mods-old"} { + objects = append(objects, &corev1.PersistentVolumeClaim{ObjectMeta: metav1.ObjectMeta{Name: name, Namespace: gs.Namespace, UID: types.UID("uid-" + name), OwnerReferences: []metav1.OwnerReference{owner}}}) + } + c := fake.NewClientBuilder().WithScheme(scheme).WithStatusSubresource(b).WithObjects(objects...).Build() + r := &BackupReconciler{Client: c, APIReader: c, Scheme: scheme} + if err := r.recordBackupManifest(t.Context(), b, gs); err != nil { + t.Fatal(err) + } + manifest := b.Status.CaptureManifest + if manifest == nil || manifest.State != "Recorded" || manifest.QuiesceOutcome != "unsupported" || len(manifest.Volumes) != 4 { + t.Fatalf("incomplete manifest: %+v", manifest) + } + byName := map[string]gameplanev1alpha1.BackupVolumeCoverage{} + for _, volume := range manifest.Volumes { + byName[volume.ClaimName] = volume + } + if !byName["game-data"].Included || byName["game-data"].ClaimUID != "uid-game-data" || !reflect.DeepEqual(byName["game-data"].MountPaths, []string{"/world"}) { + t.Fatalf("primary coverage: %+v", byName["game-data"]) + } + if byName["game-extra-install"].Included || byName["game-extra-install"].Classification != "rebuildable" || byName["game-mods-active"].Included || byName["game-mods-old"].Included { + t.Fatalf("extra or nested mod volume incorrectly covered: %+v", manifest.Volumes) + } + before := manifest.DeepCopy() + tmpl.Spec.Storage.Extra[0].BackupRole = "data" + if err := c.Update(t.Context(), tmpl); err != nil { + t.Fatal(err) + } + if err := r.recordBackupManifest(t.Context(), b, gs); err != nil { + t.Fatal(err) + } + if !reflect.DeepEqual(before, b.Status.CaptureManifest) { + t.Fatal("template change rewrote capture manifest") + } +} + +func TestBackupManifestDoesNotInventHistoryForExistingWorker(t *testing.T) { + for _, strategy := range []string{"restic-snapshot", "volume-snapshot"} { + t.Run(strategy, func(t *testing.T) { + scheme := runtime.NewScheme() + _ = corev1.AddToScheme(scheme) + _ = batchv1.AddToScheme(scheme) + _ = snapshotv1.AddToScheme(scheme) + _ = gameplanev1alpha1.AddToScheme(scheme) + b := &gameplanev1alpha1.Backup{ObjectMeta: metav1.ObjectMeta{Name: "legacy", Namespace: "games"}, Spec: gameplanev1alpha1.BackupSpec{Strategy: strategy}} + var worker client.Object = &batchv1.Job{ObjectMeta: b.ObjectMeta} + if strategy == "volume-snapshot" { + worker = &snapshotv1.VolumeSnapshot{ObjectMeta: b.ObjectMeta} + } + c := fake.NewClientBuilder().WithScheme(scheme).WithStatusSubresource(b).WithObjects(b, worker).Build() + r := &BackupReconciler{Client: c, APIReader: c, Scheme: scheme} + if err := r.recordBackupManifest(t.Context(), b, &gameplanev1alpha1.GameServer{}); err != nil { + t.Fatal(err) + } + if b.Status.CaptureManifest.State != "LegacyUnknown" || len(b.Status.CaptureManifest.Volumes) != 0 { + t.Fatalf("invented history: %+v", b.Status.CaptureManifest) + } + }) + } +} + +func TestBackupConsistencyDescribesAchievedResult(t *testing.T) { + for _, tc := range []struct { + strategy, outcome, reason string + status metav1.ConditionStatus + }{ + {"restic-snapshot", "confirmed", "Quiesced", metav1.ConditionTrue}, + {"restic-snapshot", "unsupported", "UnsupportedRawCopy", metav1.ConditionFalse}, + {"restic-snapshot", "not-requested", "RawCopy", metav1.ConditionFalse}, + {"restic-snapshot", "agent-unavailable", "AgentUnavailableRawCopy", metav1.ConditionFalse}, + {"volume-snapshot", "unsupported", "CrashConsistentSnapshot", metav1.ConditionFalse}, + {"volume-snapshot", "confirmed", "Quiesced", metav1.ConditionTrue}, + } { + t.Run(tc.strategy+"/"+tc.outcome, func(t *testing.T) { + b := &gameplanev1alpha1.Backup{Status: gameplanev1alpha1.BackupStatus{Phase: gameplanev1alpha1.BackupPhaseSucceeded, SnapshotID: "snapshot-id", + CaptureManifest: &gameplanev1alpha1.BackupCaptureManifest{State: "Recorded", Strategy: tc.strategy, QuiesceOutcome: tc.outcome}}} + condition := backupConsistencyCondition(b) + if condition.Reason != tc.reason || condition.Status != tc.status { + t.Fatalf("got %+v", condition) + } + b.Status.SnapshotID = "" + if condition := backupConsistencyCondition(b); condition.Reason != "CapturePending" || condition.Status != metav1.ConditionUnknown { + t.Fatalf("copy without restorable identity claims achieved consistency: %+v", condition) + } + b.Status.SnapshotID = "snapshot-id" + b.Status.Phase = gameplanev1alpha1.BackupPhaseRunning + if condition := backupConsistencyCondition(b); condition.Status != metav1.ConditionUnknown { + t.Fatalf("unfinished copy claims achieved consistency: %+v", condition) + } + b.Status.Phase = gameplanev1alpha1.BackupPhaseFailed + if condition := backupConsistencyCondition(b); condition.Reason != "CaptureFailed" || condition.Status != metav1.ConditionFalse { + t.Fatalf("failed copy claims usable result: %+v", condition) + } + }) + } + b := &gameplanev1alpha1.Backup{Status: gameplanev1alpha1.BackupStatus{Phase: gameplanev1alpha1.BackupPhaseSucceeded}} + if condition := backupConsistencyCondition(b); condition.Status != metav1.ConditionUnknown || condition.Reason != "LegacyMetadataUnknown" { + t.Fatalf("legacy backup guarantee invented: %+v", condition) + } +} diff --git a/operator/internal/controller/backup_volumesnapshot.go b/operator/internal/controller/backup_volumesnapshot.go index d9df66b0e..e90a0b6c9 100644 --- a/operator/internal/controller/backup_volumesnapshot.go +++ b/operator/internal/controller/backup_volumesnapshot.go @@ -119,6 +119,7 @@ func (r *BackupReconciler) markVolumeSnapshotRunning( Reason: string(gameplanev1alpha1.BackupPhaseRunning), ObservedGeneration: b.Generation, }) + b.Status.Conditions = upsertCondition(b.Status.Conditions, backupConsistencyCondition(b)) if err := r.Status().Update(ctx, b); err != nil { return ctrl.Result{}, err } @@ -159,6 +160,7 @@ func (r *BackupReconciler) completeVolumeSnapshot( Reason: "Succeeded", ObservedGeneration: b.Generation, }) + b.Status.Conditions = upsertCondition(b.Status.Conditions, backupConsistencyCondition(b)) if err := r.Status().Update(ctx, b); err != nil { return ctrl.Result{}, err } diff --git a/operator/specs.md b/operator/specs.md index d0e1fceea..06156281b 100644 --- a/operator/specs.md +++ b/operator/specs.md @@ -223,6 +223,8 @@ Primary reconcilers register with the manager in `cmd/main.go` and handle CRD li - VolumeSnapshot API availability is checked before quiescing. Snapshot creation errors fail the Backup and run unquiesce cleanup immediately instead of retrying creation indefinitely with saving disabled. API/creation failures persist `backup.gameplane.local/snapshot-aborted` to allow cleanup without waiting for a failed/nonrestorable capture. Failed unquiesce remains visible and retried. A transport failure can leave a CSI snapshot object despite a Failed Backup; this does not make that Backup restorable. - Restic Job: mount data PVC, run restic backup to configured destination (S3, B2, rest-server, local fs). Job carries BackoffLimit and ActiveDeadlineSeconds from the reconciler's JobBackoffLimit / JobActiveDeadlineSeconds fields (operator flags --backup-job-backoff-limit / --backup-job-active-deadline-seconds, Helm operator.backupJobBackoffLimit / operator.backupJobActiveDeadlineSeconds; defaults 2 and 86400, applied when unset; spec 018 OD-027); only a Failed=True Job condition (set by jobPermanentlyFailed check) marks the Backup Failed. Pod SecurityContext takes FSGroup from the target GameTemplate's spec.security.fsGroup (fallback 65532 if template missing). - Snapshot tracking: parse restic JSON output from container logs to extract snapshot ID. + - Capture metadata: after ownership, workload fencing and quiesce admission, record `status.captureManifest` once before creating the first copy worker. It pins the GameServer UID, strategy, observed Pod/StatefulSet mount layout, PVC names/UIDs, included primary claim and excluded extra/mod/retained claims. `storage.extra[].backupRole` optionally declares `data` or `rebuildable`; absent declarations remain unclassified and excluded. Later template edits never rewrite the manifest. Existing workers and old terminal Backups have unknown historical coverage, never reconstructed from the current template. + - Achieved consistency: the `Consistency` condition is separate from copy phase and volume coverage. It stays Unknown until a usable snapshot identity is recorded; failed copies report `CaptureFailed`. Agent-confirmed quiesce, unsupported/no-agent raw copy and unquiesced CSI snapshots have distinct reasons. Quiesce depends on the module commands and does not imply that excluded volumes were captured. The API exposes the stored status and the backup drawer shows consistency and included/excluded claims. This does not add a stop/copy/restart policy or multi-volume backup. - Snapshot cleanup on delete (`backup_forget.go`): restic-strategy Backups carry `BackupSnapshotFinalizer` (`gameplane.local/backup-snapshot-finalizer`, added on first reconcile, also for pre-existing non-Failed Backups; not added for volume-snapshot or Failed Backups). `finalizeDelete` runs the unquiesce stage (`BackupFinalizer`) first, then `finalizeSnapshot`: it deletes the Backup's own still-running Job (foreground, awaited), waits while a non-terminal Restore pins the Backup or its snapshot id, then runs Job `-forget` (`restic unlock || true; restic forget --prune --retry-lock 10m`, backoff 3, deadline 1800s, 50m/128Mi requests and 512Mi memory limit, no PVC; the snapshot id is passed through env `FORGET_SNAPSHOT_ID` and must match `^[0-9a-f]{8,64}$`). Success sets `SnapshotForgotten=True` and a Normal `SnapshotForgotten` event; a Failed Job, a missing/incomplete repo Secret, a terminating namespace, or `maxSnapshotForgetWait` (45m, from annotation `backup.gameplane.local/forget-started-at`) sets `SnapshotForgotten=False` with a Warning `SnapshotForgetAbandoned` event and releases the Backup, leaving the snapshot in the repository. A Backup with no recorded snapshot id is released with `SnapshotForgetSkipped` when it may have written one. Backup Jobs run `restic backup /data --json --retry-lock 10m ...`. RBAC markers on `backup_controller.go` grant `backups` update/patch, `backups/status`, `backups/finalizers` and `jobs` create/update/patch/delete. Tests: `backup_forget_test.go`, `backup_forget_envtest_test.go`, `retention_terminating_test.go`; e2e `TestBackup_DeleteForgetsSnapshot` and the extended `TestBackupSchedule_RetentionTrimsPast`. Spec: `specs/done_020-backup-snapshot-forget/`. - Status: report phase (Pending/Running/Succeeded/Failed), error details. - **Integrations:** Agent client (quiesce), Kubernetes Pod logs (restic output), VolumeSnapshot API (CSI backups). diff --git a/web/src/components/backups/BackupDetailDrawer.test.tsx b/web/src/components/backups/BackupDetailDrawer.test.tsx index 8e5056db3..835470dd7 100644 --- a/web/src/components/backups/BackupDetailDrawer.test.tsx +++ b/web/src/components/backups/BackupDetailDrawer.test.tsx @@ -8,6 +8,34 @@ import { makeBackup } from "@/test/factories"; import { BackupDetailDrawer } from "./BackupDetailDrawer"; describe("BackupDetailDrawer", () => { + it("shows captured and excluded claims independently of copy success", async () => { + server.use(http.get("/backups/coverage", () => HttpResponse.json(makeBackup({ + metadata: { name: "coverage" }, + status: { + phase: "Succeeded", snapshotID: "copy", + conditions: [{ type: "Consistency", status: "False", reason: "UnsupportedRawCopy", message: "The game does not support quiesce." }], + captureManifest: { state: "Recorded", recordedAt: "2026-10-21T12:00:00Z", volumes: [ + { claimName: "game-data", claimUID: "world-uid", mountPaths: ["/world"], included: true, classification: "data", reason: "PrimaryDataClaim" }, + { claimName: "game-extra-install", mountPaths: ["/serverfiles"], included: false, classification: "rebuildable", reason: "NotCovered" }, + { claimName: "game-mods", mountPaths: ["/world/mods"], included: false, classification: "unclassified", reason: "NotCovered" }, + ] }, + }, + })))); + renderWithQuery( {}} onRestore={() => {}} />); + expect(await screen.findByText("The game does not support quiesce.")).toBeInTheDocument(); + expect(screen.getByText("game-data")).toBeInTheDocument(); + expect(screen.getByText("/world/mods")).toBeInTheDocument(); + expect(screen.getAllByText("Not covered")).toHaveLength(2); + expect(screen.getByText("Rebuildable")).toBeInTheDocument(); + }); + + it("shows legacy coverage as unknown without inventing a current layout", async () => { + server.use(http.get("/backups/legacy", () => HttpResponse.json(makeBackup({ metadata: { name: "legacy" }, status: { phase: "Succeeded" } })))); + renderWithQuery( {}} onRestore={() => {}} />); + expect(await screen.findByText(/Capture-time volume metadata is unavailable/)).toBeInTheDocument(); + expect(screen.queryByText("Included")).not.toBeInTheDocument(); + }); + it("does not render content when name is null", () => { renderWithQuery( {}} onRestore={() => {}} />); expect(screen.queryByText(/Backup details/i)).not.toBeInTheDocument(); diff --git a/web/src/components/backups/BackupDetailDrawer.tsx b/web/src/components/backups/BackupDetailDrawer.tsx index 7e9422231..eff9875e1 100644 --- a/web/src/components/backups/BackupDetailDrawer.tsx +++ b/web/src/components/backups/BackupDetailDrawer.tsx @@ -9,6 +9,7 @@ import type { Backup } from "@/types"; import { PhaseChip } from "@/components/ui/PhaseChip"; import { ErrorBanner } from "./ErrorBanner"; import { useOptionalIntl } from "@/lib/i18n/format"; +import { useConditionMessage } from "@/lib/i18n/conditionMessage"; interface Props { target?: ResourceTarget; @@ -44,6 +45,8 @@ export function BackupDetailDrawer({ name, ns, onClose, onRestore, target: expli const restorable = backup?.status?.phase === "Succeeded" && Boolean(backup.status.snapshotID); + const consistency = useConditionMessage(backup?.status?.conditions?.find((c) => c.type === "Consistency")); + const manifest = backup?.status?.captureManifest; return ( {backup.spec.serverRef.name} + + {consistency ?? intl.formatMessage({ id: "web.components.backups.backup_detail_drawer.consistency_unknown", defaultMessage: "Consistency has not been reported.", description: "Backup details: no achieved-consistency condition is available" })} + + + {manifest?.state === "Recorded" ? ( +
+ {manifest.recordedAt &&
{intl.formatMessage({ id: "web.components.backups.backup_detail_drawer.coverage_recorded", defaultMessage: "Recorded: {time}", description: "Backup details: timestamp of the immutable capture manifest" }, { time: manifest.recordedAt })}
} +

{intl.formatMessage({ id: "web.components.backups.backup_detail_drawer.coverage_scope", defaultMessage: "Only the primary data claim is copied. Rebuildable is a declaration, not proof that recovery can reconstruct its contents.", description: "Backup details: explains the current single-volume backup scope and rebuildable declarations" })}

+
    + {manifest.volumes?.map((volume) => ( +
  • +
    {volume.claimName}
    +
    {volume.included + ? intl.formatMessage({ id: "web.components.backups.backup_detail_drawer.included", defaultMessage: "Included", description: "Backup volume: this claim is selected for copying; success is reported separately" }) + : intl.formatMessage({ id: "web.components.backups.backup_detail_drawer.not_covered", defaultMessage: "Not covered", description: "Backup volume: contents of this claim are not included" })}
    +
    {intl.formatMessage({ id: "web.components.backups.backup_detail_drawer.classification", defaultMessage: "{role, select, data {Data} rebuildable {Rebuildable} other {Unclassified}}", description: "Backup volume: optional declaration from the module or server at capture time" }, { role: volume.classification })}
    + {volume.mountPaths?.map((path) =>
    {path}
    )} + {volume.reason === "RetainedUnmountedClaim" &&
    {intl.formatMessage({ id: "web.components.backups.backup_detail_drawer.retained_unmounted", defaultMessage: "Retained claim; not mounted in the captured workload.", description: "Backup volume: an older server-owned claim was retained but was not part of the observed pod layout" })}
    } +
  • + ))} +
+
+ ) : intl.formatMessage({ id: "web.components.backups.backup_detail_drawer.legacy_coverage", defaultMessage: "Capture-time volume metadata is unavailable. Inspect the original backup and module configuration before recovery.", description: "Backup details: older backups have no reliable volume manifest, so the current template is not used to invent coverage" })} +
{backup.status?.snapshotID ?? intl.formatMessage({ id: "web.common.empty_value", defaultMessage: "—", description: "Shown in place of a value that is not set" })} diff --git a/web/src/types.ts b/web/src/types.ts index 880c2b72c..fa5aa686a 100644 --- a/web/src/types.ts +++ b/web/src/types.ts @@ -644,6 +644,23 @@ export interface ServerEvent { count: number; } +export interface BackupCaptureManifest { + state: "Recorded" | "LegacyUnknown"; + recordedAt?: string; + serverUID?: string; + strategy?: string; + layoutSource?: string; + quiesceOutcome?: string; + volumes?: Array<{ + claimName: string; + claimUID?: string; + mountPaths?: string[]; + included: boolean; + classification: "data" | "rebuildable" | "unclassified"; + reason: string; + }>; +} + export interface Backup { metadata: ObjectMeta; // strategy: restic-snapshot writes to a restic repo; volume-snapshot takes a @@ -655,6 +672,8 @@ export interface Backup { completionTime?: string; snapshotID?: string; size?: string; + captureManifest?: BackupCaptureManifest; + conditions?: Array<{ type: string; status: string; reason?: string; message?: string }>; }; } From 4ef2b27f6a6baa7fac37eb6c91bbf34b8ee630f5 Mon Sep 17 00:00:00 2001 From: Baylem Date: Wed, 21 Oct 2026 12:16:40 -0400 Subject: [PATCH 02/17] feat(operator): stage immutable template revisions per server Signed-off-by: Baylem --- .../crds/gameplane.local_backups.yaml | 2 +- .../crds/gameplane.local_backupschedules.yaml | 2 +- .../crds/gameplane.local_clusters.yaml | 2 +- .../crds/gameplane.local_gameservers.yaml | 42 +- .../crds/gameplane.local_gametemplates.yaml | 2 +- .../crds/gameplane.local_modules.yaml | 2 +- .../crds/gameplane.local_modulesources.yaml | 2 +- .../crds/gameplane.local_networkcaptures.yaml | 2 +- .../crds/gameplane.local_restores.yaml | 2 +- .../gameplane.local_backups.yaml | 2 +- .../gameplane.local_backupschedules.yaml | 2 +- .../gameplane.local_clusters.yaml | 2 +- .../gameplane.local_gameservers.yaml | 42 +- .../gameplane.local_gametemplates.yaml | 2 +- .../gameplane.local_modules.yaml | 2 +- .../gameplane.local_modulesources.yaml | 2 +- .../gameplane.local_networkcaptures.yaml | 2 +- .../gameplane.local_restores.yaml | 2 +- docs/module-authoring.md | 7 + docs/template-rollouts.md | 103 +++ i18n/locales/en/app.json | 20 + operator/api/v1alpha1/gameserver_types.go | 38 + .../api/v1alpha1/zz_generated.deepcopy.go | 40 + .../crd/gameplane.local_gameservers.yaml | 40 + operator/hack/condition-ids/main.go | 6 + .../internal/controller/backup_controller.go | 22 +- .../controller/backup_envtest_test.go | 1 + .../controller/gameserver_controller.go | 49 +- .../gameserver_template_revision.go | 431 +++++++++++ .../gameserver_template_revision_test.go | 701 ++++++++++++++++++ .../gameserver_wipe_inventory_test.go | 16 + .../controller/helpers_envtest_test.go | 6 + .../controller/lifecycle_operation.go | 14 +- .../lifecycle_operation_envtest_test.go | 3 +- .../controller/networkcapture_filter.go | 7 +- .../internal/controller/restore_controller.go | 14 +- .../internal/controller/restore_template.go | 84 +++ .../controller/restore_volumesnapshot.go | 12 + .../restore_volumesnapshot_dispatch_test.go | 81 ++ operator/specs.md | 35 + test/e2e/buckets.sh | 1 + test/e2e/specs.md | 8 + test/e2e/template_rollout_e2e_test.go | 120 +++ web/specs.md | 4 + web/src/types.ts | 2 + 45 files changed, 1931 insertions(+), 50 deletions(-) create mode 100644 docs/template-rollouts.md create mode 100644 operator/internal/controller/gameserver_template_revision.go create mode 100644 operator/internal/controller/gameserver_template_revision_test.go create mode 100644 operator/internal/controller/restore_template.go create mode 100644 operator/internal/controller/restore_volumesnapshot_dispatch_test.go create mode 100644 test/e2e/template_rollout_e2e_test.go diff --git a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_backups.yaml b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_backups.yaml index d902ea995..7e42ac7ec 100644 --- a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_backups.yaml +++ b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_backups.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: dc97592403dfad6f34cf82bb9d549b7dded3077a5e67bad7a7319d1836af3cac controller-gen.kubebuilder.io/version: v0.20.1 name: backups.gameplane.local spec: diff --git a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_backupschedules.yaml b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_backupschedules.yaml index d85406090..0f86fb56d 100644 --- a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_backupschedules.yaml +++ b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_backupschedules.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: dc97592403dfad6f34cf82bb9d549b7dded3077a5e67bad7a7319d1836af3cac controller-gen.kubebuilder.io/version: v0.20.1 name: backupschedules.gameplane.local spec: diff --git a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_clusters.yaml b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_clusters.yaml index 4d6aadcbb..ab600d64e 100644 --- a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_clusters.yaml +++ b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_clusters.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: dc97592403dfad6f34cf82bb9d549b7dded3077a5e67bad7a7319d1836af3cac controller-gen.kubebuilder.io/version: v0.20.1 name: clusters.gameplane.local spec: diff --git a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_gameservers.yaml b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_gameservers.yaml index 95178e56e..f15e78072 100644 --- a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_gameservers.yaml +++ b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_gameservers.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: dc97592403dfad6f34cf82bb9d549b7dded3077a5e67bad7a7319d1836af3cac controller-gen.kubebuilder.io/version: v0.20.1 name: gameservers.gameplane.local spec: @@ -2286,6 +2286,27 @@ spec: - message: templateRef is immutable; delete and recreate the GameServer to switch templates rule: self == oldSelf + templateRollout: + description: |- + TemplateRollout controls adoption of changes to the shared GameTemplate. + Omitted preserves Automatic adoption. Per-server overrides remain live. + properties: + policy: + default: Automatic + description: Policy defaults to Automatic. OnRequest requires + the exact desired digest. + enum: + - Automatic + - OnRequest + type: string + requestedRevision: + description: |- + RequestedRevision authorizes this SHA256 only, never future revisions. + Read status.templateRevision.desired and copy it here to admit an update. + Initial provisioning always adopts the installed template. + pattern: ^[a-f0-9]{64}$ + type: string + type: object tolerations: items: description: |- @@ -2621,6 +2642,25 @@ spec: observed as Ready. format: date-time type: string + templateRevision: + description: |- + TemplateRevision is a read model; operator-owned annotations and immutable + ConfigMaps retain admission state across status resets and leader changes. + properties: + desired: + description: Desired is the installed template's SHA256; empty + if it is unavailable. + type: string + effective: + description: Effective is the immutable content used for all derived + resources. + type: string + running: + description: |- + Running comes from an owned Pod with a running game container. Empty + means no running revision is known, including pre-upgrade legacy Pods. + type: string + type: object tunnelEndpoints: description: |- TunnelEndpoints are the per-port addresses reported by the tunnel pod. diff --git a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_gametemplates.yaml b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_gametemplates.yaml index e5e3e1e3b..b8156a951 100644 --- a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_gametemplates.yaml +++ b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_gametemplates.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: dc97592403dfad6f34cf82bb9d549b7dded3077a5e67bad7a7319d1836af3cac controller-gen.kubebuilder.io/version: v0.20.1 name: gametemplates.gameplane.local spec: diff --git a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_modules.yaml b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_modules.yaml index 5ade28cee..1e4413338 100644 --- a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_modules.yaml +++ b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_modules.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: dc97592403dfad6f34cf82bb9d549b7dded3077a5e67bad7a7319d1836af3cac controller-gen.kubebuilder.io/version: v0.20.1 name: modules.gameplane.local spec: diff --git a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_modulesources.yaml b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_modulesources.yaml index 6c5dcbf36..296b4dc87 100644 --- a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_modulesources.yaml +++ b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_modulesources.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: dc97592403dfad6f34cf82bb9d549b7dded3077a5e67bad7a7319d1836af3cac controller-gen.kubebuilder.io/version: v0.20.1 name: modulesources.gameplane.local spec: diff --git a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_networkcaptures.yaml b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_networkcaptures.yaml index cc113e7e8..92050b0c3 100644 --- a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_networkcaptures.yaml +++ b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_networkcaptures.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: dc97592403dfad6f34cf82bb9d549b7dded3077a5e67bad7a7319d1836af3cac controller-gen.kubebuilder.io/version: v0.20.1 name: networkcaptures.gameplane.local spec: diff --git a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_restores.yaml b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_restores.yaml index b77cd5c25..b42d3b215 100644 --- a/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_restores.yaml +++ b/charts/gameplane/charts/gameplane-crds/crds/gameplane.local_restores.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: dc97592403dfad6f34cf82bb9d549b7dded3077a5e67bad7a7319d1836af3cac controller-gen.kubebuilder.io/version: v0.20.1 name: restores.gameplane.local spec: diff --git a/charts/gameplane/crd-manifests/gameplane.local_backups.yaml b/charts/gameplane/crd-manifests/gameplane.local_backups.yaml index d902ea995..7e42ac7ec 100644 --- a/charts/gameplane/crd-manifests/gameplane.local_backups.yaml +++ b/charts/gameplane/crd-manifests/gameplane.local_backups.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: dc97592403dfad6f34cf82bb9d549b7dded3077a5e67bad7a7319d1836af3cac controller-gen.kubebuilder.io/version: v0.20.1 name: backups.gameplane.local spec: diff --git a/charts/gameplane/crd-manifests/gameplane.local_backupschedules.yaml b/charts/gameplane/crd-manifests/gameplane.local_backupschedules.yaml index d85406090..0f86fb56d 100644 --- a/charts/gameplane/crd-manifests/gameplane.local_backupschedules.yaml +++ b/charts/gameplane/crd-manifests/gameplane.local_backupschedules.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: dc97592403dfad6f34cf82bb9d549b7dded3077a5e67bad7a7319d1836af3cac controller-gen.kubebuilder.io/version: v0.20.1 name: backupschedules.gameplane.local spec: diff --git a/charts/gameplane/crd-manifests/gameplane.local_clusters.yaml b/charts/gameplane/crd-manifests/gameplane.local_clusters.yaml index 4d6aadcbb..ab600d64e 100644 --- a/charts/gameplane/crd-manifests/gameplane.local_clusters.yaml +++ b/charts/gameplane/crd-manifests/gameplane.local_clusters.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: dc97592403dfad6f34cf82bb9d549b7dded3077a5e67bad7a7319d1836af3cac controller-gen.kubebuilder.io/version: v0.20.1 name: clusters.gameplane.local spec: diff --git a/charts/gameplane/crd-manifests/gameplane.local_gameservers.yaml b/charts/gameplane/crd-manifests/gameplane.local_gameservers.yaml index 95178e56e..f15e78072 100644 --- a/charts/gameplane/crd-manifests/gameplane.local_gameservers.yaml +++ b/charts/gameplane/crd-manifests/gameplane.local_gameservers.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: dc97592403dfad6f34cf82bb9d549b7dded3077a5e67bad7a7319d1836af3cac controller-gen.kubebuilder.io/version: v0.20.1 name: gameservers.gameplane.local spec: @@ -2286,6 +2286,27 @@ spec: - message: templateRef is immutable; delete and recreate the GameServer to switch templates rule: self == oldSelf + templateRollout: + description: |- + TemplateRollout controls adoption of changes to the shared GameTemplate. + Omitted preserves Automatic adoption. Per-server overrides remain live. + properties: + policy: + default: Automatic + description: Policy defaults to Automatic. OnRequest requires + the exact desired digest. + enum: + - Automatic + - OnRequest + type: string + requestedRevision: + description: |- + RequestedRevision authorizes this SHA256 only, never future revisions. + Read status.templateRevision.desired and copy it here to admit an update. + Initial provisioning always adopts the installed template. + pattern: ^[a-f0-9]{64}$ + type: string + type: object tolerations: items: description: |- @@ -2621,6 +2642,25 @@ spec: observed as Ready. format: date-time type: string + templateRevision: + description: |- + TemplateRevision is a read model; operator-owned annotations and immutable + ConfigMaps retain admission state across status resets and leader changes. + properties: + desired: + description: Desired is the installed template's SHA256; empty + if it is unavailable. + type: string + effective: + description: Effective is the immutable content used for all derived + resources. + type: string + running: + description: |- + Running comes from an owned Pod with a running game container. Empty + means no running revision is known, including pre-upgrade legacy Pods. + type: string + type: object tunnelEndpoints: description: |- TunnelEndpoints are the per-port addresses reported by the tunnel pod. diff --git a/charts/gameplane/crd-manifests/gameplane.local_gametemplates.yaml b/charts/gameplane/crd-manifests/gameplane.local_gametemplates.yaml index e5e3e1e3b..b8156a951 100644 --- a/charts/gameplane/crd-manifests/gameplane.local_gametemplates.yaml +++ b/charts/gameplane/crd-manifests/gameplane.local_gametemplates.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: dc97592403dfad6f34cf82bb9d549b7dded3077a5e67bad7a7319d1836af3cac controller-gen.kubebuilder.io/version: v0.20.1 name: gametemplates.gameplane.local spec: diff --git a/charts/gameplane/crd-manifests/gameplane.local_modules.yaml b/charts/gameplane/crd-manifests/gameplane.local_modules.yaml index 5ade28cee..1e4413338 100644 --- a/charts/gameplane/crd-manifests/gameplane.local_modules.yaml +++ b/charts/gameplane/crd-manifests/gameplane.local_modules.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: dc97592403dfad6f34cf82bb9d549b7dded3077a5e67bad7a7319d1836af3cac controller-gen.kubebuilder.io/version: v0.20.1 name: modules.gameplane.local spec: diff --git a/charts/gameplane/crd-manifests/gameplane.local_modulesources.yaml b/charts/gameplane/crd-manifests/gameplane.local_modulesources.yaml index 6c5dcbf36..296b4dc87 100644 --- a/charts/gameplane/crd-manifests/gameplane.local_modulesources.yaml +++ b/charts/gameplane/crd-manifests/gameplane.local_modulesources.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: dc97592403dfad6f34cf82bb9d549b7dded3077a5e67bad7a7319d1836af3cac controller-gen.kubebuilder.io/version: v0.20.1 name: modulesources.gameplane.local spec: diff --git a/charts/gameplane/crd-manifests/gameplane.local_networkcaptures.yaml b/charts/gameplane/crd-manifests/gameplane.local_networkcaptures.yaml index cc113e7e8..92050b0c3 100644 --- a/charts/gameplane/crd-manifests/gameplane.local_networkcaptures.yaml +++ b/charts/gameplane/crd-manifests/gameplane.local_networkcaptures.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: dc97592403dfad6f34cf82bb9d549b7dded3077a5e67bad7a7319d1836af3cac controller-gen.kubebuilder.io/version: v0.20.1 name: networkcaptures.gameplane.local spec: diff --git a/charts/gameplane/crd-manifests/gameplane.local_restores.yaml b/charts/gameplane/crd-manifests/gameplane.local_restores.yaml index b77cd5c25..b42d3b215 100644 --- a/charts/gameplane/crd-manifests/gameplane.local_restores.yaml +++ b/charts/gameplane/crd-manifests/gameplane.local_restores.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - gameplane.local/crd-bundle-sha256: 181aeee1d52a9cb178b0f8a8a862dc5959e772facf11817d5e70e5196574cd4c + gameplane.local/crd-bundle-sha256: dc97592403dfad6f34cf82bb9d549b7dded3077a5e67bad7a7319d1836af3cac controller-gen.kubebuilder.io/version: v0.20.1 name: restores.gameplane.local spec: diff --git a/docs/module-authoring.md b/docs/module-authoring.md index 1141965bb..2cc328602 100644 --- a/docs/module-authoring.md +++ b/docs/module-authoring.md @@ -375,6 +375,13 @@ re-pinning `spec.version`. ### Verifying and pinning bundles +Pin production `Module.spec.version` to avoid following catalog updates across +the fleet. Servers default to automatic template adoption; opt into +`GameServer.spec.templateRollout.policy: OnRequest` before installing a new +version to admit each server separately. See [template adoption and rollback](template-rollouts.md) +for baseline upgrade behavior, exact revision requests, retained PVCs and the +difference between reverting a runtime and restoring application data. + Two independent, opt-in controls harden the supply chain for OCI modules: **Digest pin** (`Module.spec.digest`) refuses to install unless the resolved diff --git a/docs/template-rollouts.md b/docs/template-rollouts.md new file mode 100644 index 000000000..7f79220a9 --- /dev/null +++ b/docs/template-rollouts.md @@ -0,0 +1,103 @@ +# Adopting template updates + +Installing a Module updates its shared GameTemplate. Each GameServer now retains +an immutable copy of the template content it has admitted. The default +`Automatic` policy adopts installed changes as before, with lifecycle exclusion +and a graceful stop before replacement. To choose the time for a server, set: + +```yaml +spec: + templateRollout: + policy: OnRequest +``` + +Enable this before updating the Module. A new server always provisions from the +currently installed template. Existing servers without a recorded snapshot get +a baseline snapshot without a workload restart. The operator preserves their +existing Pod template, including API defaults and admission additions, until +workload inputs change or the workload has stopped and drained. Their `running` +revision stays unknown until a replacement Pod actually carries a revision. + +The baseline records currently installed content; it cannot recover historical +template contents from an old Pod or prove that the old Pod used that content. +Pin `Module.spec.version` before upgrading and enable staging before a later +catalog change. A pre-upgrade backup, restore or wipe already in progress finishes +before baseline initialization. A new server gets its pin before first startup. + +Inspect the three digests: + +```sh +kubectl get gameserver my-server -n gameplane-games \ + -o jsonpath='{.status.templateRevision}' +``` + +- `desired` identifies the installed template contents. It is empty when the + installed template is unavailable. +- `effective` identifies the immutable template used for images, versions, + config files and init containers, storage, ports, probes, agent configuration + and other derived resources. During baseline initialization, the existing + unknown Pod template is retained until a real workload change or stopped drain. +- `running` is observed on an owned Pod with a running game container. It is + empty while stopped, while the game container is not running, or when the + pre-upgrade Pod has no revision annotation. It is not a health assertion. + +`TemplateUpdatePending=True` explains whether a revision is available, waiting +for another operation, or being adopted. `Unknown/TemplateUnavailable` preserves +an existing effective snapshot if the installed template disappears. A missing, +mutable, corrupt or foreign effective snapshot fails closed and requires repair; +it never silently switches the server to the latest catalog content. + +To admit an update, copy the exact 64-character `desired` digest into the request: + +```sh +revision=$(kubectl get gameserver my-server -n gameplane-games \ + -o jsonpath='{.status.templateRevision.desired}') +kubectl patch gameserver my-server -n gameplane-games --type=merge \ + -p "{\"spec\":{\"templateRollout\":{\"policy\":\"OnRequest\",\"requestedRevision\":\"$revision\"}}}" +``` + +An old request never approves a newer digest. Requests can be made one server at +a time or by an administrator's batch process. There is no built-in canary, +maintenance-window or fleet concurrency scheduler. Once admitted, an update +finishes using that exact snapshot even if another catalog update arrives or +the policy changes during shutdown. + +Admission uses the same durable owner as backups, restores and wipes. It waits +for their cleanup, runs the previous effective template's graceful stop contract, +waits for the old Pod to disappear, then switches the effective pin and creates +the replacement. Ownership is released when the new Pod is observed, or when a +suspended workload is confirmed stopped with the new template. A bad image may +still fail startup; check ordinary readiness and health conditions separately. +Suspend and idle intent remain in effect. User changes to per-server overrides, +including `spec.version`, `spec.image` and `spec.config`, remain immediate and are +not controlled by the shared-template adoption policy. + +Snapshots are immutable, GameServer-owned ConfigMaps, bounded to 900 KiB each. +The current and admitted revisions are retained during adoption; obsolete copies +are removed afterwards. Do not edit or delete them or the operator-owned revision +and operation annotations. A snapshot pins template contents, including image +references; use immutable image digests to prevent a mutable image tag changing +its registry content independently. + +## Pinning and rollback + +Set `Module.spec.version` to a known version to prevent tracking the catalog's +latest entry, including on installations that do not yet support staged adoption. +Use `Module.spec.digest` as well when the source supports OCI digest verification; +version tags alone may move. See [module installation](module-authoring.md#installing-a-module). + +Adoption retains existing primary, extra and mod PVC identities and their data; +it does not recreate them to apply new template storage defaults. Removed extra +or mod volumes remain retained. Deleting the GameServer is different: its owned +claims can be garbage-collected. Keep an independently verified backup before +changing a game's runtime or save format. + +Reinstalling an older Module version produces a desired template that can be +admitted with the same process. Reverting a runtime does not reverse save-format +changes. Restoring data may be necessary, and compatibility is game-specific. +Backups remain data backups, not automatic runtime rollback bundles. Record the +effective digest, immutable image reference and server configuration with your +backup procedure. Restic restores use the target's current effective layout; CSI +restores copy the source server's effective template at restore planning time, +not necessarily its template at backup time. Select a compatible Module version +and `OnRequest` policy before recovery if automatic adoption would be unsafe. diff --git a/i18n/locales/en/app.json b/i18n/locales/en/app.json index 059470fd2..781b2c504 100644 --- a/i18n/locales/en/app.json +++ b/i18n/locales/en/app.json @@ -559,6 +559,26 @@ "defaultMessage": "Indexing the module source failed.", "description": "Synced condition after a failed index." }, + "condition.templateupdatepending.adoptingrevision": { + "defaultMessage": "The admitted template revision is being adopted.", + "description": "Template rollout owns the server lifecycle while draining and replacing its workload." + }, + "condition.templateupdatepending.operationinprogress": { + "defaultMessage": "Template adoption waits for the active lifecycle operation to finish.", + "description": "A backup, restore or wipe prevents admitting an available template revision." + }, + "condition.templateupdatepending.revisionavailable": { + "defaultMessage": "An installed template revision is waiting for admission.", + "description": "An installed template differs from the server's immutable effective revision." + }, + "condition.templateupdatepending.revisioncurrent": { + "defaultMessage": "The installed template revision is effective.", + "description": "No newer template revision is waiting for adoption. Running revision is observed separately." + }, + "condition.templateupdatepending.templateunavailable": { + "defaultMessage": "The installed template is unavailable; the effective snapshot is retained.", + "description": "Template availability is unknown but the server retains its immutable effective content." + }, "condition.tunneladdressinvalid.validationfailed": { "defaultMessage": "Some tunnel endpoints were rejected: {details}", "description": "Condition when endpoints reported by the playit tunnel pod fail validation. details is the English validation text." diff --git a/operator/api/v1alpha1/gameserver_types.go b/operator/api/v1alpha1/gameserver_types.go index 654cba6ed..84e35dbee 100644 --- a/operator/api/v1alpha1/gameserver_types.go +++ b/operator/api/v1alpha1/gameserver_types.go @@ -49,6 +49,11 @@ type GameServerSpec struct { // +kubebuilder:validation:XValidation:rule="self == oldSelf",message="templateRef is immutable; delete and recreate the GameServer to switch templates" TemplateRef GameTemplateRef `json:"templateRef"` + // TemplateRollout controls adoption of changes to the shared GameTemplate. + // Omitted preserves Automatic adoption. Per-server overrides remain live. + // +optional + TemplateRollout *TemplateRolloutSpec `json:"templateRollout,omitempty"` + // Suspend, when true, scales the underlying StatefulSet to zero. // Data is preserved. Transitions the GameServer to Suspended. // +kubebuilder:default=false @@ -508,8 +513,41 @@ type InlineBackupPolicy struct { Suspend bool `json:"suspend,omitempty"` } +// TemplateRolloutSpec controls when installed template content is adopted. +type TemplateRolloutSpec struct { + // Policy defaults to Automatic. OnRequest requires the exact desired digest. + // +kubebuilder:validation:Enum=Automatic;OnRequest + // +kubebuilder:default=Automatic + // +optional + Policy string `json:"policy,omitempty"` + // RequestedRevision authorizes this SHA256 only, never future revisions. + // Read status.templateRevision.desired and copy it here to admit an update. + // Initial provisioning always adopts the installed template. + // +kubebuilder:validation:Pattern=`^[a-f0-9]{64}$` + // +optional + RequestedRevision string `json:"requestedRevision,omitempty"` +} + +// TemplateRevisionStatus distinguishes installed, admitted and observed content. +type TemplateRevisionStatus struct { + // Desired is the installed template's SHA256; empty if it is unavailable. + // +optional + Desired string `json:"desired,omitempty"` + // Effective is the immutable content used for all derived resources. + // +optional + Effective string `json:"effective,omitempty"` + // Running comes from an owned Pod with a running game container. Empty + // means no running revision is known, including pre-upgrade legacy Pods. + // +optional + Running string `json:"running,omitempty"` +} + // GameServerStatus is the observed state of a GameServer. type GameServerStatus struct { + // TemplateRevision is a read model; operator-owned annotations and immutable + // ConfigMaps retain admission state across status resets and leader changes. + // +optional + TemplateRevision *TemplateRevisionStatus `json:"templateRevision,omitempty"` // +optional Phase GameServerPhase `json:"phase,omitempty"` diff --git a/operator/api/v1alpha1/zz_generated.deepcopy.go b/operator/api/v1alpha1/zz_generated.deepcopy.go index 05926fd58..e36ed3c5b 100644 --- a/operator/api/v1alpha1/zz_generated.deepcopy.go +++ b/operator/api/v1alpha1/zz_generated.deepcopy.go @@ -953,6 +953,11 @@ func (in *GameServerNetworking) DeepCopy() *GameServerNetworking { func (in *GameServerSpec) DeepCopyInto(out *GameServerSpec) { *out = *in out.TemplateRef = in.TemplateRef + if in.TemplateRollout != nil { + in, out := &in.TemplateRollout, &out.TemplateRollout + *out = new(TemplateRolloutSpec) + **out = **in + } if in.StopGracePeriodSeconds != nil { in, out := &in.StopGracePeriodSeconds, &out.StopGracePeriodSeconds *out = new(int32) @@ -1042,6 +1047,11 @@ func (in *GameServerSpec) DeepCopy() *GameServerSpec { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *GameServerStatus) DeepCopyInto(out *GameServerStatus) { *out = *in + if in.TemplateRevision != nil { + in, out := &in.TemplateRevision, &out.TemplateRevision + *out = new(TemplateRevisionStatus) + **out = **in + } if in.Conditions != nil { in, out := &in.Conditions, &out.Conditions *out = make([]v1.Condition, len(*in)) @@ -2573,6 +2583,36 @@ func (in *TailscaleTunnelSpec) DeepCopy() *TailscaleTunnelSpec { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TemplateRevisionStatus) DeepCopyInto(out *TemplateRevisionStatus) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TemplateRevisionStatus. +func (in *TemplateRevisionStatus) DeepCopy() *TemplateRevisionStatus { + if in == nil { + return nil + } + out := new(TemplateRevisionStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TemplateRolloutSpec) DeepCopyInto(out *TemplateRolloutSpec) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TemplateRolloutSpec. +func (in *TemplateRolloutSpec) DeepCopy() *TemplateRolloutSpec { + if in == nil { + return nil + } + out := new(TemplateRolloutSpec) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *VerifySpec) DeepCopyInto(out *VerifySpec) { *out = *in diff --git a/operator/config/crd/gameplane.local_gameservers.yaml b/operator/config/crd/gameplane.local_gameservers.yaml index 4be670ebc..18822cde3 100644 --- a/operator/config/crd/gameplane.local_gameservers.yaml +++ b/operator/config/crd/gameplane.local_gameservers.yaml @@ -2285,6 +2285,27 @@ spec: - message: templateRef is immutable; delete and recreate the GameServer to switch templates rule: self == oldSelf + templateRollout: + description: |- + TemplateRollout controls adoption of changes to the shared GameTemplate. + Omitted preserves Automatic adoption. Per-server overrides remain live. + properties: + policy: + default: Automatic + description: Policy defaults to Automatic. OnRequest requires + the exact desired digest. + enum: + - Automatic + - OnRequest + type: string + requestedRevision: + description: |- + RequestedRevision authorizes this SHA256 only, never future revisions. + Read status.templateRevision.desired and copy it here to admit an update. + Initial provisioning always adopts the installed template. + pattern: ^[a-f0-9]{64}$ + type: string + type: object tolerations: items: description: |- @@ -2620,6 +2641,25 @@ spec: observed as Ready. format: date-time type: string + templateRevision: + description: |- + TemplateRevision is a read model; operator-owned annotations and immutable + ConfigMaps retain admission state across status resets and leader changes. + properties: + desired: + description: Desired is the installed template's SHA256; empty + if it is unavailable. + type: string + effective: + description: Effective is the immutable content used for all derived + resources. + type: string + running: + description: |- + Running comes from an owned Pod with a running game container. Empty + means no running revision is known, including pre-upgrade legacy Pods. + type: string + type: object tunnelEndpoints: description: |- TunnelEndpoints are the per-port addresses reported by the tunnel pod. diff --git a/operator/hack/condition-ids/main.go b/operator/hack/condition-ids/main.go index e644cf041..8c5f3b8f5 100644 --- a/operator/hack/condition-ids/main.go +++ b/operator/hack/condition-ids/main.go @@ -46,6 +46,7 @@ type row struct { // guardCalls maps a helper that takes a condition reason as a string literal // to the index of that argument. var guardCalls = map[string]int{ + "setTemplateCondition": 2, "markUnhealthy": 2, "markFailed": 2, "markPending": 2, @@ -67,6 +68,11 @@ var guardSkipFiles = map[string]bool{ // rows is the English reference for every condition reason. var rows = []row{ + {types: []string{"TemplateUpdatePending"}, reason: "AdoptingRevision", english: "The admitted template revision is being adopted.", description: "Template rollout owns the server lifecycle while draining and replacing its workload."}, + {types: []string{"TemplateUpdatePending"}, reason: "TemplateUnavailable", english: "The installed template is unavailable; the effective snapshot is retained.", description: "Template availability is unknown but the server retains its immutable effective content."}, + {types: []string{"TemplateUpdatePending"}, reason: "RevisionCurrent", english: "The installed template revision is effective.", description: "No newer template revision is waiting for adoption. Running revision is observed separately."}, + {types: []string{"TemplateUpdatePending"}, reason: "OperationInProgress", english: "Template adoption waits for the active lifecycle operation to finish.", description: "A backup, restore or wipe prevents admitting an available template revision."}, + {types: []string{"TemplateUpdatePending"}, reason: "RevisionAvailable", english: "An installed template revision is waiting for admission.", description: "An installed template differs from the server's immutable effective revision."}, // GameServer: Ready {types: []string{"Ready"}, reason: "Running", english: "The server is running and the agent is reporting heartbeats.", description: "Ready condition while the game server is up."}, {types: []string{"Ready"}, reason: "Pending", english: "The server is waiting to start.", description: "Ready condition while the game server is being created."}, diff --git a/operator/internal/controller/backup_controller.go b/operator/internal/controller/backup_controller.go index c579713d9..af2752c1b 100644 --- a/operator/internal/controller/backup_controller.go +++ b/operator/internal/controller/backup_controller.go @@ -314,13 +314,6 @@ func (r *BackupReconciler) reconcile(ctx context.Context, req ctrl.Request) (ctr return ctrl.Result{}, err } - // A missing template is not fatal: it only refines the FSGroup, and - // buildBackupPodSecurityContext falls back to 65532 for a zero template. - var tmpl gameplanev1alpha1.GameTemplate - if err := r.Get(ctx, types.NamespacedName{Name: gs.Spec.TemplateRef.Name}, &tmpl); err != nil && !apierrors.IsNotFound(err) { - return ctrl.Result{}, err - } - // Volume-snapshot backups take a CSI snapshot of the data PVC rather // than running restic, so they branch off here — before the restic // repo Secret checks, which don't apply to them. @@ -359,6 +352,19 @@ func (r *BackupReconciler) reconcile(ctx context.Context, req ctrl.Request) (ctr if res, err := r.prepareBackupQuiesce(ctx, &b); err != nil || res.RequeueAfter > 0 { return res, err } + // Admission refreshes the target. Resolve the pin only after owning the + // lifecycle fence, so a concurrent rollout cannot change the copy layout. + bound, err := r.ownedBackupTarget(ctx, &b) + if err != nil { + return ctrl.Result{}, err + } + if bound == nil { + return ctrl.Result{RequeueAfter: 5 * time.Second}, nil + } + tmpl, err := effectiveGameTemplate(ctx, r.backupAPIReader(), bound) + if err != nil && (bound.Annotations[effectiveTemplateAnnotation] != "" || !apierrors.IsNotFound(err)) { + return ctrl.Result{}, err + } backoff, deadline := resolveJobLimits(r.JobBackoffLimit, r.JobActiveDeadlineSeconds) job := &batchv1.Job{ObjectMeta: metav1.ObjectMeta{Name: b.Name, Namespace: b.Namespace}} @@ -367,7 +373,7 @@ func (r *BackupReconciler) reconcile(ctx context.Context, req ctrl.Request) (ctr job.Spec.BackoffLimit = &backoff job.Spec.ActiveDeadlineSeconds = &deadline job.Spec.Template.Labels = map[string]string{backupRestoreJobLabel: backupRestoreJobValue, backupUIDLabel: string(b.UID)} - job.Spec.Template.Spec = r.buildBackupPodSpec(&b, &tmpl) + job.Spec.Template.Spec = r.buildBackupPodSpec(&b, tmpl) job.Spec.Template.Spec.RestartPolicy = corev1.RestartPolicyNever } return controllerutil.SetControllerReference(&b, job, r.Scheme) diff --git a/operator/internal/controller/backup_envtest_test.go b/operator/internal/controller/backup_envtest_test.go index 87ce6cc7e..9b037564a 100644 --- a/operator/internal/controller/backup_envtest_test.go +++ b/operator/internal/controller/backup_envtest_test.go @@ -577,6 +577,7 @@ func TestBackup_UsesTemplateSecurityContext(t *testing.T) { if err := k8sClient.Create(context.Background(), gs); err != nil { t.Fatalf("create gameserver: %v", err) } + seedBackupWorkload(t, gs) if err := k8sClient.Create(context.Background(), buildResticRepoSecret(ns, "repo-secret")); err != nil { t.Fatalf("create secret: %v", err) } diff --git a/operator/internal/controller/gameserver_controller.go b/operator/internal/controller/gameserver_controller.go index c5a70a9d9..7df1aea22 100644 --- a/operator/internal/controller/gameserver_controller.go +++ b/operator/internal/controller/gameserver_controller.go @@ -251,16 +251,19 @@ func (r *GameServerReconciler) Reconcile(ctx context.Context, req ctrl.Request) return ctrl.Result{Requeue: true}, nil } - // Resolve the template this GameServer points at. Templates are - // cluster-scoped so no namespace is needed. - var tmpl gameplanev1alpha1.GameTemplate - if err := r.Get(ctx, types.NamespacedName{Name: gs.Spec.TemplateRef.Name}, &tmpl); err != nil { - if apierrors.IsNotFound(err) { - return ctrl.Result{RequeueAfter: 15 * time.Second}, r.setPhase(ctx, &gs, - fmt.Sprintf("GameTemplate %q not found", gs.Spec.TemplateRef.Name)) + // Snapshot resolution precedes config, images, init containers, storage, + // services and every other template-derived resource. + effective, changed, err := r.reconcileTemplateRevision(ctx, &gs) + if err != nil { + if apierrors.IsConflict(err) { + return requeueOnConflict(ctrl.Result{}, err) } - return ctrl.Result{}, err + return ctrl.Result{RequeueAfter: 15 * time.Second}, r.setPhase(ctx, &gs, err.Error()) + } + if changed { + return ctrl.Result{RequeueAfter: time.Second}, nil } + tmpl := *effective // Resolve spec.config against the template's configSchema before // touching any children: invalid config must fail loudly (mirroring @@ -454,6 +457,9 @@ func (r *GameServerReconciler) Reconcile(ctx context.Context, req ctrl.Request) // or nothing fires the transition until an unrelated event happens to // wake the reconciler. hints := []time.Duration{stopRequeue, idleRequeue} + if _, held, _ := lifecycleOwner(&gs); held { + hints = append(hints, 5*time.Second) + } if plan.wantSentinel { // Bounded backstop for planSentinel's wait on the sentinel or the // game pod. Both are owned (Owns(&appsv1.Deployment{}), @@ -484,6 +490,7 @@ func (r *GameServerReconciler) SetupWithManager(mgr ctrl.Manager) error { Owns(&networkingv1.NetworkPolicy{}). Owns(&gameplanev1alpha1.BackupSchedule{}). Owns(&corev1.Secret{}). + Owns(&corev1.ConfigMap{}). Owns(&corev1.ServiceAccount{}). Owns(&rbacv1.Role{}). Owns(&rbacv1.RoleBinding{}). @@ -1208,12 +1215,18 @@ func (r *GameServerReconciler) desiredReplicas( } if op, held, err := lifecycleOwner(&live); err != nil { return 0, 0, err + } else if held && op.Kind == "Rollout" && !op.Baseline && len(op.Recovery) == 0 && op.Token != live.Annotations[effectiveTemplateAnnotation] { + replicas, poll, err := r.softStop(ctx, gs, tmpl) + if poll == 0 { + poll = restartDrainPoll + } + return replicas, poll, err } else if held && op.InitialStartup && len(op.Recovery) == 0 { if live.Spec.Suspend { return 0, 5 * time.Second, nil } return 1, 5 * time.Second, nil - } else if held && (op.Kind == "Backup" || len(op.Recovery) != 0) { + } else if held && (op.Kind == "Backup" || op.Baseline || len(op.Recovery) != 0) { var ss appsv1.StatefulSet err := r.wipeReader().Get(ctx, client.ObjectKeyFromObject(gs), &ss) if apierrors.IsNotFound(err) { @@ -1494,6 +1507,9 @@ func (r *GameServerReconciler) reconcileStatefulSet( if live.UID != gs.UID { return fmt.Errorf("GameServer changed identity before StatefulSet mutation") } + if live.Annotations[effectiveTemplateAnnotation] != gs.Annotations[effectiveTemplateAnnotation] { + return fmt.Errorf("effective template changed before StatefulSet mutation") + } if owner := metav1.GetControllerOf(ss); owner != nil && owner.UID != live.UID { return fmt.Errorf("StatefulSet belongs to a different GameServer identity") } @@ -1562,18 +1578,31 @@ func (r *GameServerReconciler) reconcileStatefulSet( } } } + preserveBaseline, err := r.preserveBaselinePodTemplate(ctx, &live, ss) + if err != nil { + return err + } ss.Spec.Replicas = &actualReplicas - if held && (!ss.CreationTimestamp.IsZero() || ss.ResourceVersion != "") { + if held && (op.Kind != "Rollout" || op.Token != live.Annotations[effectiveTemplateAnnotation] || len(op.Recovery) != 0) && (!ss.CreationTimestamp.IsZero() || ss.ResourceVersion != "") { // Restore and wipe may stop the existing workload, but rollout // waits until the operation and its worker cleanup have finished. return nil } + if preserveBaseline { + return nil + } ss.Spec.ServiceName = gs.Name ss.Spec.Selector = &metav1.LabelSelector{MatchLabels: labels} ss.Spec.Template.Labels = labels // Stamp (or clear) the config fingerprint without touching // annotations other actors may have set on the pod template. ann := ss.Spec.Template.Annotations + if revision := gs.Annotations[effectiveTemplateAnnotation]; revision != "" { + if ann == nil { + ann = map[string]string{} + } + ann[templateRevisionAnnotation] = revision + } if mc.hash != "" { if ann == nil { ann = map[string]string{} diff --git a/operator/internal/controller/gameserver_template_revision.go b/operator/internal/controller/gameserver_template_revision.go new file mode 100644 index 000000000..fee9644c2 --- /dev/null +++ b/operator/internal/controller/gameserver_template_revision.go @@ -0,0 +1,431 @@ +package controller + +import ( + "context" + "crypto/sha256" + "encoding/hex" + "encoding/json" + "fmt" + "reflect" + + appsv1 "k8s.io/api/apps/v1" + corev1 "k8s.io/api/core/v1" + apierrors "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/api/meta" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" + + gameplanev1alpha1 "github.com/GameplanePanel/gameplane/operator/api/v1alpha1" +) + +const ( + effectiveTemplateAnnotation = "gameplane.local/effective-template-revision" + templateRevisionAnnotation = "gameplane.local/template-revision" + templateSnapshotLabel = "gameplane.local/template-snapshot" + templateSnapshotKey = "template.json" + baselineTemplateAnnotation = "gameplane.local/template-baseline" + baselineWorkloadAnnotation = "gameplane.local/template-baseline-workload" + baselineInputsAnnotation = "gameplane.local/template-baseline-inputs" +) + +// Hash and persist content, not resourceVersion: status/metadata-only updates +// must not restart games. Name and the complete spec are all rendering inputs. +func templateSnapshot(tmpl *gameplanev1alpha1.GameTemplate) ([]byte, string, error) { + content := gameplanev1alpha1.GameTemplate{ObjectMeta: metav1.ObjectMeta{Name: tmpl.Name}, Spec: *tmpl.Spec.DeepCopy()} + data, err := json.Marshal(content) + if err != nil { + return nil, "", err + } + if len(data) > 900*1024 { + return nil, "", fmt.Errorf("template snapshot exceeds 900 KiB") + } + sum := sha256.Sum256(data) + return data, hex.EncodeToString(sum[:]), nil +} + +func validTemplateRevision(revision string) bool { + decoded, err := hex.DecodeString(revision) + return err == nil && len(decoded) == sha256.Size && hex.EncodeToString(decoded) == revision +} + +func templateSnapshotName(gs *gameplanev1alpha1.GameServer, revision string) string { + identity := sha256.Sum256([]byte(string(gs.UID) + "/" + gs.Namespace + "/" + gs.Name)) + return fmt.Sprintf("gpt-%x-%s", identity[:8], revision[:32]) +} + +func loadTemplateSnapshot(ctx context.Context, reader client.Reader, gs *gameplanev1alpha1.GameServer, revision string) (*gameplanev1alpha1.GameTemplate, error) { + if !validTemplateRevision(revision) { + return nil, fmt.Errorf("invalid effective template revision") + } + var cm corev1.ConfigMap + if err := reader.Get(ctx, client.ObjectKey{Namespace: gs.Namespace, Name: templateSnapshotName(gs, revision)}, &cm); err != nil { + return nil, fmt.Errorf("read pinned template snapshot: %w", err) + } + if !metav1.IsControlledBy(&cm, gs) || cm.Immutable == nil || !*cm.Immutable || !cm.DeletionTimestamp.IsZero() { + return nil, fmt.Errorf("template snapshot is foreign, mutable or deleting") + } + var tmpl gameplanev1alpha1.GameTemplate + if err := json.Unmarshal([]byte(cm.Data[templateSnapshotKey]), &tmpl); err != nil { + return nil, fmt.Errorf("decode template snapshot: %w", err) + } + _, digest, err := templateSnapshot(&tmpl) + if err != nil { + return nil, err + } + if digest != revision || tmpl.Name != gs.Spec.TemplateRef.Name { + return nil, fmt.Errorf("template snapshot content does not match pinned revision") + } + return &tmpl, nil +} + +// Existing pre-upgrade operations may not have a pin yet. Once a pin exists, +// absence/corruption must fail closed rather than silently reading latest. +func effectiveGameTemplate(ctx context.Context, reader client.Reader, gs *gameplanev1alpha1.GameServer) (*gameplanev1alpha1.GameTemplate, error) { + if revision := gs.Annotations[effectiveTemplateAnnotation]; revision != "" { + return loadTemplateSnapshot(ctx, reader, gs, revision) + } + var tmpl gameplanev1alpha1.GameTemplate + err := reader.Get(ctx, client.ObjectKey{Name: gs.Spec.TemplateRef.Name}, &tmpl) + return &tmpl, err +} + +func (r *GameServerReconciler) saveTemplateSnapshot(ctx context.Context, gs *gameplanev1alpha1.GameServer, tmpl *gameplanev1alpha1.GameTemplate) (string, error) { + data, revision, err := templateSnapshot(tmpl) + if err != nil { + return "", err + } + immutable := true + cm := &corev1.ConfigMap{ObjectMeta: metav1.ObjectMeta{Name: templateSnapshotName(gs, revision), Namespace: gs.Namespace, Labels: map[string]string{templateSnapshotLabel: string(gs.UID)}}, Immutable: &immutable, Data: map[string]string{templateSnapshotKey: string(data)}} + if err := controllerutil.SetControllerReference(gs, cm, r.Scheme); err != nil { + return "", err + } + if err := r.Create(ctx, cm); err != nil && !apierrors.IsAlreadyExists(err) { + return "", err + } + _, err = loadTemplateSnapshot(ctx, r.wipeReader(), gs, revision) + return revision, err +} + +// reconcileTemplateRevision runs before every template-dependent calculation. +// A true second result asks the caller to re-read admission state next pass. +func (r *GameServerReconciler) reconcileTemplateRevision(ctx context.Context, gs *gameplanev1alpha1.GameServer) (*gameplanev1alpha1.GameTemplate, bool, error) { + var installed gameplanev1alpha1.GameTemplate + err := r.wipeReader().Get(ctx, client.ObjectKey{Name: gs.Spec.TemplateRef.Name}, &installed) + if err != nil && !apierrors.IsNotFound(err) { + return nil, false, err + } + desired := "" + if err == nil { + _, desired, err = templateSnapshot(&installed) + if err != nil { + return nil, false, err + } + } + pin := gs.Annotations[effectiveTemplateAnnotation] + var effective *gameplanev1alpha1.GameTemplate + if pin != "" { + effective, err = loadTemplateSnapshot(ctx, r.wipeReader(), gs, pin) + if err != nil { + return nil, false, err + } + } else if desired != "" { + effective = &installed + } + op, held, err := lifecycleOwner(gs) + if err != nil { + return nil, false, err + } + if pin == "" && held && op.Kind == "Rollout" { + effective, err = loadTemplateSnapshot(ctx, r.wipeReader(), gs, op.Token) + if err != nil { + return nil, false, err + } + } + if effective == nil { + return nil, false, fmt.Errorf("GameTemplate %q not found", gs.Spec.TemplateRef.Name) + } + if err := r.reportTemplateRevision(ctx, gs, desired, op, held); err != nil { + return nil, false, err + } + if pin == "" && gs.Annotations[restoreTemplateAnnotation] != "" { + // The Restore must copy its durable source snapshot before even a + // stopped StatefulSet is rendered, otherwise InitialStartup could + // preserve a workload derived from the newest catalog template. + return effective, true, nil + } + if held && op.Kind == "Rollout" { + ready, err := recoverLifecycleOperation(ctx, r.Client, r.wipeReader(), gs, op, r.OperationQuiescer) + if err != nil || !ready { + return effective, true, err + } + if op.Baseline { + return effective, true, r.initializeTemplateBaseline(ctx, gs, op) + } + if op.Token != pin { + // The admitted target survives a subsequent catalog update. + target, err := loadTemplateSnapshot(ctx, r.wipeReader(), gs, op.Token) + if err != nil { + return nil, false, err + } + if _, err := materializeConfig(gs, target); err != nil { + return nil, false, err + } + if _, err := resolveVersion(gs, target); err != nil { + return nil, false, err + } + drained, err := r.templateWorkloadDrained(ctx, gs) + if err != nil || !drained { + return effective, false, err + } + gs.Annotations[effectiveTemplateAnnotation] = op.Token + delete(gs.Annotations, stopRequestedAtAnnotation) + return effective, true, r.Update(ctx, gs) + } + observed, err := r.templateWorkloadAdopted(ctx, gs, pin) + if err != nil || !observed { + return effective, false, err + } + // Clean obsolete content before releasing, including when Automatic + // already has another catalog revision queued for the next pass. + if err := r.pruneTemplateSnapshots(ctx, gs); err != nil { + return nil, false, err + } + if err := clearLifecycleOperation(ctx, r.Client, r.wipeReader(), gs, op.lifecycleIdentity); err != nil { + return nil, false, err + } + return effective, true, r.Update(ctx, gs) + } + // Existing owners continue rendering the old pin; initial startup of a + // restore may proceed even before the first post-upgrade pin is recorded. + if held { + return effective, false, nil + } + if desired != "" && desired != pin { + policy := gs.Spec.TemplateRollout + admit := pin == "" || policy == nil || policy.Policy == "" || policy.Policy == "Automatic" || policy.RequestedRevision == desired + if admit { + if _, err := materializeConfig(gs, &installed); err != nil { + return nil, false, err + } + if _, err := resolveVersion(gs, &installed); err != nil { + return nil, false, err + } + // Do not replace an unrelated restart or already-issued stop. + pending, err := backupLifecycleTransitionPending(ctx, r.wipeReader(), gs) + if err != nil || pending { + return effective, false, err + } + revision, err := r.saveTemplateSnapshot(ctx, gs, &installed) + if err != nil { + return nil, false, err + } + want := lifecycleIdentity{Kind: "Rollout", Name: gs.Name, UID: gs.UID, TargetUID: gs.UID, Generation: gs.Generation, Token: revision, Baseline: pin == ""} + claimed, err := claimLifecycleOperation(ctx, r.Client, r.wipeReader(), gs, want, r.OperationQuiescer) + return effective, claimed, err + } + } + return effective, false, r.pruneTemplateSnapshots(ctx, gs) +} + +// Baseline captures render inputs rather than comparing reconstructed PodSpecs: +// API defaults/admission fields must not turn feature installation into a fleet +// rollout. These fields deliberately exclude power intent, service-only config, +// capture opt-in, scheduling backups and the rollout policy itself. +func (r *GameServerReconciler) baselineRenderInputs(gs *gameplanev1alpha1.GameServer, revision string) (string, error) { + spec := gs.Spec.DeepCopy() + spec.Suspend = false + spec.StopGracePeriodSeconds, spec.TemplateRollout, spec.BackupPolicy, spec.Idle, spec.Capture = nil, nil, nil, nil, nil + if spec.Networking.Expose == "Hostport" { + spec.Networking = gameplanev1alpha1.GameServerNetworking{Expose: "Hostport"} + } else { + spec.Networking = gameplanev1alpha1.GameServerNetworking{} + } + data, err := json.Marshal(struct { + Spec *gameplanev1alpha1.GameServerSpec + Revision, AgentImage, AgentLogLevel, ConfigInitImage string + AgentImagePullPolicy string + }{spec, revision, r.AgentImage, r.AgentLogLevel, r.ConfigInitImage, r.AgentImagePullPolicy}) + if err != nil { + return "", err + } + sum := sha256.Sum256(data) + return hex.EncodeToString(sum[:]), nil +} + +func (r *GameServerReconciler) initializeTemplateBaseline(ctx context.Context, gs *gameplanev1alpha1.GameServer, op lifecycleOperation) error { + if _, err := loadTemplateSnapshot(ctx, r.wipeReader(), gs, op.Token); err != nil { + return err + } + var ss appsv1.StatefulSet + err := r.wipeReader().Get(ctx, client.ObjectKeyFromObject(gs), &ss) + if err != nil && !apierrors.IsNotFound(err) { + return err + } + if err == nil { + if !metav1.IsControlledBy(&ss, gs) { + return fmt.Errorf("baseline workload belongs to another server") + } + // A real spec edit after admission must render normally. Recording + // its new inputs against the old workload would silently swallow it. + if gs.Generation == op.Generation { + inputs, err := r.baselineRenderInputs(gs, op.Token) + if err != nil { + return err + } + gs.Annotations[baselineTemplateAnnotation] = op.Token + gs.Annotations[baselineWorkloadAnnotation] = string(ss.UID) + gs.Annotations[baselineInputsAnnotation] = inputs + } + } + gs.Annotations[effectiveTemplateAnnotation] = op.Token + if err := clearLifecycleOperation(ctx, r.Client, r.wipeReader(), gs, op.lifecycleIdentity); err != nil { + return err + } + return r.Update(ctx, gs) +} + +func (r *GameServerReconciler) preserveBaselinePodTemplate(ctx context.Context, gs *gameplanev1alpha1.GameServer, ss *appsv1.StatefulSet) (bool, error) { + pin := gs.Annotations[effectiveTemplateAnnotation] + if pin == "" || gs.Annotations[baselineTemplateAnnotation] != pin || string(ss.UID) != gs.Annotations[baselineWorkloadAnnotation] || ss.Spec.Template.Annotations[templateRevisionAnnotation] != "" { + return false, nil + } + inputs, err := r.baselineRenderInputs(gs, pin) + if err != nil || inputs != gs.Annotations[baselineInputsAnnotation] { + return false, err + } + // Stamp while already drained, before resume; never stamp an existing + // unannotated Pod or use its name as evidence of a known running revision. + if ss.Spec.Replicas != nil && *ss.Spec.Replicas == 0 && ss.Status.Replicas == 0 && ss.Status.ObservedGeneration >= ss.Generation { + var pod corev1.Pod + err := r.wipeReader().Get(ctx, client.ObjectKey{Namespace: gs.Namespace, Name: gs.Name + "-0"}, &pod) + if apierrors.IsNotFound(err) { + return false, nil + } + if err != nil { + return false, err + } + } + return true, nil +} + +func (r *GameServerReconciler) reportTemplateRevision(ctx context.Context, gs *gameplanev1alpha1.GameServer, desired string, op lifecycleOperation, held bool) error { + running, err := observedTemplateRevision(ctx, r.wipeReader(), gs) + if err != nil { + return err + } + base := gs.DeepCopy() + gs.Status.TemplateRevision = &gameplanev1alpha1.TemplateRevisionStatus{Desired: desired, Effective: gs.Annotations[effectiveTemplateAnnotation], Running: running} + switch { + case held && op.Kind == "Rollout": + setTemplateCondition(gs, metav1.ConditionTrue, "AdoptingRevision", "The admitted template revision is being adopted.") + case desired == "": + setTemplateCondition(gs, metav1.ConditionUnknown, "TemplateUnavailable", "The installed template is unavailable; the effective snapshot is retained.") + case desired == gs.Annotations[effectiveTemplateAnnotation]: + setTemplateCondition(gs, metav1.ConditionFalse, "RevisionCurrent", "The installed template revision is effective.") + case held: + setTemplateCondition(gs, metav1.ConditionTrue, "OperationInProgress", "Template adoption waits for the active lifecycle operation to finish.") + default: + setTemplateCondition(gs, metav1.ConditionTrue, "RevisionAvailable", "An installed template revision is waiting for admission.") + } + if reflect.DeepEqual(base.Status, gs.Status) { + return nil + } + return r.Status().Patch(ctx, gs, client.MergeFromWithOptions(base, client.MergeFromWithOptimisticLock{})) +} + +func setTemplateCondition(gs *gameplanev1alpha1.GameServer, status metav1.ConditionStatus, reason, message string) { + meta.SetStatusCondition(&gs.Status.Conditions, metav1.Condition{Type: "TemplateUpdatePending", Status: status, Reason: reason, Message: message, ObservedGeneration: gs.Generation}) +} + +func ownedTemplatePod(ctx context.Context, reader client.Reader, gs *gameplanev1alpha1.GameServer) (*corev1.Pod, error) { + var ss appsv1.StatefulSet + if err := reader.Get(ctx, client.ObjectKeyFromObject(gs), &ss); err != nil { + return nil, client.IgnoreNotFound(err) + } + if !metav1.IsControlledBy(&ss, gs) { + return nil, nil + } + var pod corev1.Pod + if err := reader.Get(ctx, client.ObjectKey{Namespace: gs.Namespace, Name: gs.Name + "-0"}, &pod); err != nil { + return nil, client.IgnoreNotFound(err) + } + if !metav1.IsControlledBy(&pod, &ss) || !pod.DeletionTimestamp.IsZero() { + return nil, nil + } + return &pod, nil +} + +func observedTemplateRevision(ctx context.Context, reader client.Reader, gs *gameplanev1alpha1.GameServer) (string, error) { + pod, err := ownedTemplatePod(ctx, reader, gs) + if err != nil || pod == nil { + return "", err + } + revision := pod.Annotations[templateRevisionAnnotation] + if !validTemplateRevision(revision) { + return "", nil + } + for _, container := range pod.Status.ContainerStatuses { + if container.Name == "game" && container.State.Running != nil { + return revision, nil + } + } + return "", nil +} + +func (r *GameServerReconciler) templateWorkloadDrained(ctx context.Context, gs *gameplanev1alpha1.GameServer) (bool, error) { + var ss appsv1.StatefulSet + if err := r.wipeReader().Get(ctx, client.ObjectKeyFromObject(gs), &ss); err != nil { + return false, client.IgnoreNotFound(err) + } + if !metav1.IsControlledBy(&ss, gs) { + return false, fmt.Errorf("template rollout workload belongs to another server") + } + if ss.Annotations[lifecycleOperationAnnotation] != gs.Annotations[lifecycleOperationAnnotation] || ss.Spec.Replicas == nil || *ss.Spec.Replicas != 0 || ss.Status.Replicas != 0 || ss.Status.ObservedGeneration < ss.Generation { + return false, nil + } + var pods corev1.PodList + if err := r.wipeReader().List(ctx, &pods, client.InNamespace(gs.Namespace)); err != nil { + return false, err + } + for i := range pods.Items { + pod := &pods.Items[i] + if pod.Name == gs.Name+"-0" || metav1.IsControlledBy(pod, &ss) || (liveRestorePod(pod) && podMountsRestoreTarget(pod, gs.Name)) { + return false, nil + } + } + return true, nil +} + +func (r *GameServerReconciler) templateWorkloadAdopted(ctx context.Context, gs *gameplanev1alpha1.GameServer, revision string) (bool, error) { + var ss appsv1.StatefulSet + if err := r.wipeReader().Get(ctx, client.ObjectKeyFromObject(gs), &ss); err != nil { + return false, client.IgnoreNotFound(err) + } + if !metav1.IsControlledBy(&ss, gs) || ss.Spec.Template.Annotations[templateRevisionAnnotation] != revision || ss.Status.ObservedGeneration < ss.Generation { + return false, nil + } + if ss.Spec.Replicas != nil && *ss.Spec.Replicas == 0 { + return r.templateWorkloadDrained(ctx, gs) + } + pod, err := ownedTemplatePod(ctx, r.wipeReader(), gs) + return pod != nil && pod.Annotations[templateRevisionAnnotation] == revision, err +} + +func (r *GameServerReconciler) pruneTemplateSnapshots(ctx context.Context, gs *gameplanev1alpha1.GameServer) error { + var snapshots corev1.ConfigMapList + if err := r.wipeReader().List(ctx, &snapshots, client.InNamespace(gs.Namespace), client.MatchingLabels{templateSnapshotLabel: string(gs.UID)}); err != nil { + return err + } + pin := gs.Annotations[effectiveTemplateAnnotation] + for i := range snapshots.Items { + cm := &snapshots.Items[i] + if !metav1.IsControlledBy(cm, gs) || (validTemplateRevision(pin) && cm.Name == templateSnapshotName(gs, pin)) { + continue + } + if err := r.Delete(ctx, cm, client.Preconditions{UID: &cm.UID, ResourceVersion: &cm.ResourceVersion}); client.IgnoreNotFound(err) != nil { + return err + } + } + return nil +} diff --git a/operator/internal/controller/gameserver_template_revision_test.go b/operator/internal/controller/gameserver_template_revision_test.go new file mode 100644 index 000000000..6d87eab8f --- /dev/null +++ b/operator/internal/controller/gameserver_template_revision_test.go @@ -0,0 +1,701 @@ +package controller + +import ( + "context" + "encoding/json" + "testing" + + appsv1 "k8s.io/api/apps/v1" + batchv1 "k8s.io/api/batch/v1" + corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/api/meta" + "k8s.io/apimachinery/pkg/api/resource" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/types" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/client/fake" + + gameplanev1alpha1 "github.com/GameplanePanel/gameplane/operator/api/v1alpha1" +) + +func revisionFixture(t *testing.T) (*GameServerReconciler, *gameplanev1alpha1.GameServer, *gameplanev1alpha1.GameTemplate) { + t.Helper() + s := testScheme(t) + if err := batchv1.AddToScheme(s); err != nil { + t.Fatal(err) + } + gs := &gameplanev1alpha1.GameServer{ObjectMeta: metav1.ObjectMeta{Name: "game", Namespace: "games", UID: "server-uid"}, Spec: gameplanev1alpha1.GameServerSpec{TemplateRef: gameplanev1alpha1.GameTemplateRef{Name: "template"}, TemplateRollout: &gameplanev1alpha1.TemplateRolloutSpec{Policy: "OnRequest"}}} + tmpl := &gameplanev1alpha1.GameTemplate{ObjectMeta: metav1.ObjectMeta{Name: "template"}, Spec: gameplanev1alpha1.GameTemplateSpec{Image: "example.invalid/game:old", Env: []corev1.EnvVar{{Name: "REVISION", Value: "old"}}}} + c := fake.NewClientBuilder().WithScheme(s).WithObjects(gs, tmpl).WithStatusSubresource(gs, &appsv1.StatefulSet{}).Build() + r := &GameServerReconciler{Client: c, APIReader: c, Scheme: s} + digest, err := r.saveTemplateSnapshot(t.Context(), gs, tmpl) + if err != nil { + t.Fatal(err) + } + gs.Annotations = map[string]string{effectiveTemplateAnnotation: digest} + if err := c.Update(t.Context(), gs); err != nil { + t.Fatal(err) + } + return r, gs, tmpl +} + +func TestTemplateOnRequestRetainsCompleteContents(t *testing.T) { + r, gs, installed := revisionFixture(t) + old := gs.Annotations[effectiveTemplateAnnotation] + installed.Spec.Image, installed.Spec.Env[0].Value = "example.invalid/game:new", "new" + if err := r.Update(t.Context(), installed); err != nil { + t.Fatal(err) + } + effective, _, err := r.reconcileTemplateRevision(t.Context(), gs) + if err != nil { + t.Fatal(err) + } + if effective.Spec.Image != "example.invalid/game:old" || effective.Spec.Env[0].Value != "old" { + t.Fatalf("render escaped snapshot: %#v", effective.Spec) + } + if gs.Status.TemplateRevision.Effective != old || gs.Status.TemplateRevision.Desired == old { + t.Fatalf("untruthful revisions: %#v", gs.Status.TemplateRevision) + } + if c := meta.FindStatusCondition(gs.Status.Conditions, "TemplateUpdatePending"); c == nil || c.Status != metav1.ConditionTrue { + t.Fatalf("missing pending condition: %v", c) + } + // Recreating the reconciler and clearing status must not discard the pin. + gs.Status = gameplanev1alpha1.GameServerStatus{} + if err := r.Status().Update(t.Context(), gs); err != nil { + t.Fatal(err) + } + r = &GameServerReconciler{Client: r.Client, APIReader: r.Client, Scheme: r.Scheme} + effective, _, err = r.reconcileTemplateRevision(t.Context(), gs) + if err != nil || effective.Spec.Image != "example.invalid/game:old" { + t.Fatalf("restart lost snapshot: %v, %v", effective, err) + } +} + +func TestTemplateSnapshotRejectsMissingCorruptAndForeign(t *testing.T) { + for _, mode := range []string{"missing", "corrupt", "foreign"} { + t.Run(mode, func(t *testing.T) { + r, gs, _ := revisionFixture(t) + var cm corev1.ConfigMap + key := client.ObjectKey{Namespace: gs.Namespace, Name: templateSnapshotName(gs, gs.Annotations[effectiveTemplateAnnotation])} + if err := r.Get(t.Context(), key, &cm); err != nil { + t.Fatal(err) + } + switch mode { + case "missing": + if err := r.Delete(t.Context(), &cm); err != nil { + t.Fatal(err) + } + case "corrupt": + cm.Data[templateSnapshotKey] = `{}` + if err := r.Update(t.Context(), &cm); err != nil { + t.Fatal(err) + } + case "foreign": + cm.OwnerReferences[0].UID = "other-server" + if err := r.Update(t.Context(), &cm); err != nil { + t.Fatal(err) + } + } + if _, err := effectiveGameTemplate(t.Context(), r.Client, gs); err == nil { + t.Fatal("invalid snapshot fell through to live template") + } + }) + } +} + +func TestTemplateRequestMustMatchInstalledDigest(t *testing.T) { + r, gs, installed := revisionFixture(t) + gs.Spec.TemplateRollout.RequestedRevision = gs.Annotations[effectiveTemplateAnnotation] + if err := r.Update(t.Context(), gs); err != nil { + t.Fatal(err) + } + installed.Spec.Image = "example.invalid/game:new" + if err := r.Update(t.Context(), installed); err != nil { + t.Fatal(err) + } + if _, _, err := r.reconcileTemplateRevision(t.Context(), gs); err != nil { + t.Fatal(err) + } + if _, held, _ := lifecycleOwner(gs); held { + t.Fatal("old request admitted a newer template") + } +} + +func TestTemplateAdoptionWaitsForLifecycleOwner(t *testing.T) { + for _, kind := range []string{"Backup", "Restore", "Wipe"} { + t.Run(kind, func(t *testing.T) { + r, gs, installed := revisionFixture(t) + gs.Spec.TemplateRollout.Policy = "Automatic" + op := lifecycleIdentity{Kind: kind, Name: "owner", UID: "owner-uid", TargetUID: gs.UID, Token: "request"} + gs.Annotations[lifecycleOperationAnnotation] = lifecycleOperationJSON(lifecycleOperation{lifecycleIdentity: op}) + if err := r.Update(t.Context(), gs); err != nil { + t.Fatal(err) + } + installed.Spec.Image = "example.invalid/game:new" + if err := r.Update(t.Context(), installed); err != nil { + t.Fatal(err) + } + effective, _, err := r.reconcileTemplateRevision(t.Context(), gs) + if err != nil || effective.Spec.Image != "example.invalid/game:old" { + t.Fatalf("protected operation adopted template: %v", err) + } + owner, _, _ := lifecycleOwner(gs) + if owner.Kind != kind { + t.Fatal("stole lifecycle owner") + } + }) + } +} + +func TestRunningTemplateRequiresOwnedRunningGame(t *testing.T) { + r, gs, _ := revisionFixture(t) + digest := gs.Annotations[effectiveTemplateAnnotation] + ss := &appsv1.StatefulSet{ObjectMeta: metav1.ObjectMeta{Name: gs.Name, Namespace: gs.Namespace, UID: "workload-uid", OwnerReferences: []metav1.OwnerReference{*metav1.NewControllerRef(gs, gameplanev1alpha1.GroupVersion.WithKind("GameServer"))}}} + pod := &corev1.Pod{ObjectMeta: metav1.ObjectMeta{Name: gs.Name + "-0", Namespace: gs.Namespace, Annotations: map[string]string{templateRevisionAnnotation: digest}, OwnerReferences: []metav1.OwnerReference{*metav1.NewControllerRef(ss, appsv1.SchemeGroupVersion.WithKind("StatefulSet"))}}} + if err := r.Create(t.Context(), ss); err != nil { + t.Fatal(err) + } + if err := r.Create(t.Context(), pod); err != nil { + t.Fatal(err) + } + if got, err := observedTemplateRevision(t.Context(), r.Client, gs); err != nil || got != "" { + t.Fatalf("pending Pod reported running: %q %v", got, err) + } + pod.Status.ContainerStatuses = []corev1.ContainerStatus{{Name: "game", State: corev1.ContainerState{Running: &corev1.ContainerStateRunning{}}}} + if err := r.Status().Update(t.Context(), pod); err != nil { + t.Fatal(err) + } + if got, err := observedTemplateRevision(t.Context(), r.Client, gs); err != nil || got != digest { + t.Fatalf("running Pod not observed: %q %v", got, err) + } + pod.OwnerReferences[0].UID = types.UID("replaced-workload") + if err := r.Update(t.Context(), pod); err != nil { + t.Fatal(err) + } + if got, err := observedTemplateRevision(context.Background(), r.Client, gs); err != nil || got != "" { + t.Fatalf("foreign Pod reported running: %q %v", got, err) + } +} + +func TestTemplateAdoptionDrainsAndKeepsAdmittedRevisionAcrossRestart(t *testing.T) { + r, gs, installed := revisionFixture(t) + old := gs.Annotations[effectiveTemplateAnnotation] + zero, one := int32(0), int32(1) + ss := &appsv1.StatefulSet{ObjectMeta: metav1.ObjectMeta{Name: gs.Name, Namespace: gs.Namespace, UID: "workload", OwnerReferences: []metav1.OwnerReference{*metav1.NewControllerRef(gs, gameplanev1alpha1.GroupVersion.WithKind("GameServer"))}}, Spec: appsv1.StatefulSetSpec{Replicas: &one}, Status: appsv1.StatefulSetStatus{Replicas: 1}} + if err := r.Create(t.Context(), ss); err != nil { + t.Fatal(err) + } + pod := &corev1.Pod{ObjectMeta: metav1.ObjectMeta{Name: gs.Name + "-0", Namespace: gs.Namespace, UID: "old-pod", OwnerReferences: []metav1.OwnerReference{*metav1.NewControllerRef(ss, appsv1.SchemeGroupVersion.WithKind("StatefulSet"))}}} + if err := r.Create(t.Context(), pod); err != nil { + t.Fatal(err) + } + installed.Spec.Image = "example.invalid/game:admitted" + if err := r.Update(t.Context(), installed); err != nil { + t.Fatal(err) + } + _, target, _ := templateSnapshot(installed) + gs.Spec.TemplateRollout.RequestedRevision = target + if err := r.Update(t.Context(), gs); err != nil { + t.Fatal(err) + } + if _, changed, err := r.reconcileTemplateRevision(t.Context(), gs); err != nil || !changed { + t.Fatalf("admission: %v %v", changed, err) + } + owner, held, _ := lifecycleOwner(gs) + if !held || owner.Kind != "Rollout" || owner.Token != target { + t.Fatalf("wrong owner: %#v", owner) + } + // A new leader and a newer catalog must retain the admitted target. + r = &GameServerReconciler{Client: r.Client, APIReader: r.Client, Scheme: r.Scheme} + installed.Spec.Image = "example.invalid/game:later" + if err := r.Update(t.Context(), installed); err != nil { + t.Fatal(err) + } + effective, changed, err := r.reconcileTemplateRevision(t.Context(), gs) + if err != nil || changed || effective.Spec.Image != "example.invalid/game:old" { + t.Fatalf("adopted before drain: %v %v", changed, err) + } + ss.Spec.Replicas = &zero + ss.Annotations = map[string]string{lifecycleOperationAnnotation: gs.Annotations[lifecycleOperationAnnotation]} + if err := r.Update(t.Context(), ss); err != nil { + t.Fatal(err) + } + ss.Status.Replicas = 0 + ss.Status.ObservedGeneration = ss.Generation + if err := r.Status().Update(t.Context(), ss); err != nil { + t.Fatal(err) + } + if _, changed, err := r.reconcileTemplateRevision(t.Context(), gs); err != nil || changed || gs.Annotations[effectiveTemplateAnnotation] != old { + t.Fatalf("live old Pod escaped drain: %v %v", changed, err) + } + if err := r.Delete(t.Context(), pod); err != nil { + t.Fatal(err) + } + if _, changed, err := r.reconcileTemplateRevision(t.Context(), gs); err != nil || !changed || gs.Annotations[effectiveTemplateAnnotation] != target { + t.Fatalf("pin not committed: %v %v", changed, err) + } + effective, err = effectiveGameTemplate(t.Context(), r.Client, gs) + if err != nil || effective.Spec.Image != "example.invalid/game:admitted" { + t.Fatalf("catalog replaced admitted content: %v", err) + } + // Suspended adoption releases after observing the new stopped template. + gs.Spec.Suspend = true + if err := r.Update(t.Context(), gs); err != nil { + t.Fatal(err) + } + ss.Spec.Template.Annotations = map[string]string{templateRevisionAnnotation: target} + if err := r.Update(t.Context(), ss); err != nil { + t.Fatal(err) + } + ss.Status.ObservedGeneration = ss.Generation + if err := r.Status().Update(t.Context(), ss); err != nil { + t.Fatal(err) + } + if _, changed, err := r.reconcileTemplateRevision(t.Context(), gs); err != nil || !changed { + t.Fatalf("release: %v %v", changed, err) + } + if _, held, _ := lifecycleOwner(gs); held || !gs.Spec.Suspend { + t.Fatal("owner retained or user suspend lost") + } + if _, _, err := r.reconcileTemplateRevision(t.Context(), gs); err != nil { + t.Fatal(err) + } + if gs.Status.TemplateRevision.Running != "" || gs.Status.TemplateRevision.Desired == target { + t.Fatalf("untruthful suspended/latest status: %#v", gs.Status.TemplateRevision) + } + var snapshots corev1.ConfigMapList + if err := r.List(t.Context(), &snapshots); err != nil { + t.Fatal(err) + } + if len(snapshots.Items) != 1 { + t.Fatalf("obsolete snapshots retained: %d", len(snapshots.Items)) + } +} + +func TestPinnedTemplateDrivesConfigInitStorageAndImage(t *testing.T) { + r, gs, old := revisionFixture(t) + old.Spec.Storage = gameplanev1alpha1.GameStorageSpec{MountPath: "/old-data", Size: resource.MustParse("1Gi"), Extra: []gameplanev1alpha1.ExtraVolumeSpec{{Name: "old", MountPath: "/old-extra", Size: resource.MustParse("1Gi")}}} + old.Spec.ConfigFiles = []gameplanev1alpha1.ConfigFile{{Path: "revision.txt", Template: "old contents"}} + revision, err := r.saveTemplateSnapshot(t.Context(), gs, old) + if err != nil { + t.Fatal(err) + } + gs.Annotations[effectiveTemplateAnnotation] = revision + if err := r.Update(t.Context(), gs); err != nil { + t.Fatal(err) + } + latest := old.DeepCopy() + latest.Spec.Image, latest.Spec.Storage.MountPath = "example.invalid/game:new", "/new-data" + latest.Spec.Storage.Extra[0].Name, latest.Spec.Storage.Extra[0].MountPath = "new", "/new-extra" + latest.Spec.ConfigFiles[0].Template = "new contents" + if err := r.Update(t.Context(), latest); err != nil { + t.Fatal(err) + } + effective, _, err := r.reconcileTemplateRevision(t.Context(), gs) + if err != nil { + t.Fatal(err) + } + mc, err := materializeConfig(gs, effective) + if err != nil { + t.Fatal(err) + } + if err := r.reconcilePVC(t.Context(), gs, effective); err != nil { + t.Fatal(err) + } + if err := r.reconcileExtraPVCs(t.Context(), gs, effective); err != nil { + t.Fatal(err) + } + if err := r.reconcileFilesSecret(t.Context(), gs, mc); err != nil { + t.Fatal(err) + } + if err := r.reconcileStatefulSet(t.Context(), gs, effective, nil, mc, 1); err != nil { + t.Fatal(err) + } + var ss appsv1.StatefulSet + if err := r.Get(t.Context(), client.ObjectKeyFromObject(gs), &ss); err != nil { + t.Fatal(err) + } + if ss.Spec.Template.Spec.Containers[0].Image != old.Spec.Image { + t.Fatal("image used latest") + } + for _, container := range append(ss.Spec.Template.Spec.Containers, ss.Spec.Template.Spec.InitContainers...) { + for _, mount := range container.VolumeMounts { + if mount.MountPath == "/new-data" || mount.MountPath == "/new-extra" { + t.Fatalf("mount escaped snapshot: %#v", mount) + } + } + } + if len(ss.Spec.Template.Spec.InitContainers) == 0 { + t.Fatal("pinned config-init absent") + } + var files corev1.Secret + if err := r.Get(t.Context(), client.ObjectKey{Namespace: gs.Namespace, Name: gs.Name + "-files"}, &files); err != nil { + t.Fatal(err) + } + found := false + for _, value := range files.Data { + if string(value) == "old contents" { + found = true + } + } + if !found { + t.Fatalf("files used latest: %#v", files.Data) + } + var pvcs corev1.PersistentVolumeClaimList + if err := r.List(t.Context(), &pvcs); err != nil { + t.Fatal(err) + } + if len(pvcs.Items) != 2 { + t.Fatalf("wrong effective PVC set: %d", len(pvcs.Items)) + } + for _, pvc := range pvcs.Items { + if pvc.Name == gs.Name+"-extra-new" { + t.Fatal("pending revision provisioned new extra storage") + } + } +} + +func TestSnapshotRestorePinsEffectiveSourceBeforeStartup(t *testing.T) { + r, source, installed := revisionFixture(t) + rs := &gameplanev1alpha1.Restore{ObjectMeta: metav1.ObjectMeta{Name: "restore", Namespace: source.Namespace, UID: "restore-uid"}} + if err := r.Create(t.Context(), rs); err != nil { + t.Fatal(err) + } + target := source.DeepCopy() + target.Name, target.UID, target.ResourceVersion = "restored", "target-uid", "" + target.Annotations = map[string]string{} + restorer := &RestoreReconciler{Client: r.Client, APIReader: r.Client, Scheme: r.Scheme} + if err := restorer.planRestoredTemplate(t.Context(), rs, source, target); err != nil { + t.Fatal(err) + } + if err := r.Create(t.Context(), target); err != nil { + t.Fatal(err) + } + installed.Spec.Image = "example.invalid/game:new" + if err := r.Update(t.Context(), installed); err != nil { + t.Fatal(err) + } + if _, wait, err := r.reconcileTemplateRevision(t.Context(), target); err != nil || !wait { + t.Fatalf("target bypassed snapshot copy: wait=%v err=%v", wait, err) + } + if err := restorer.copyRestoredTemplate(t.Context(), rs, target); err != nil { + t.Fatal(err) + } + effective, err := effectiveGameTemplate(t.Context(), r.Client, target) + if err != nil || effective.Spec.Image != "example.invalid/game:old" { + t.Fatalf("restore adopted latest content: %v", err) + } +} + +type revisionStopper struct{ calls int } + +func (s *revisionStopper) Stop(context.Context, string, string) error { s.calls++; return nil } +func (*revisionStopper) Enabled() bool { return true } + +func TestTemplateRolloutUsesOldGracefulStopAndBlocksBackup(t *testing.T) { + r, gs, old := revisionFixture(t) + old.Spec.RCON = &gameplanev1alpha1.RCONSpec{Protocol: "source"} + old.Spec.Capabilities = &gameplanev1alpha1.CapabilitiesSpec{Lifecycle: &gameplanev1alpha1.LifecycleSpec{Stop: []string{"save", "stop"}}} + pin, err := r.saveTemplateSnapshot(t.Context(), gs, old) + if err != nil { + t.Fatal(err) + } + gs.Annotations[effectiveTemplateAnnotation] = pin + gs.Spec.TemplateRollout.Policy = "Automatic" + if err := r.Update(t.Context(), gs); err != nil { + t.Fatal(err) + } + newTemplate := old.DeepCopy() + newTemplate.Spec.Image = "example.invalid/game:new" + newTemplate.Spec.Capabilities = nil // latest no longer declares graceful stop + if err := r.Update(t.Context(), newTemplate); err != nil { + t.Fatal(err) + } + if _, changed, err := r.reconcileTemplateRevision(t.Context(), gs); err != nil || !changed { + t.Fatalf("automatic admission: %v %v", changed, err) + } + if claimed, err := claimLifecycleOperation(t.Context(), r.Client, r.Client, gs, lifecycleIdentity{Kind: "Backup", Name: "copy", UID: "copy-uid", TargetUID: gs.UID}, nil); err != nil || claimed { + t.Fatalf("backup entered rollout: %v %v", claimed, err) + } + one := int32(1) + ss := &appsv1.StatefulSet{ObjectMeta: metav1.ObjectMeta{Name: gs.Name, Namespace: gs.Namespace, UID: "workload", OwnerReferences: []metav1.OwnerReference{*metav1.NewControllerRef(gs, gameplanev1alpha1.GroupVersion.WithKind("GameServer"))}}, Spec: appsv1.StatefulSetSpec{Replicas: &one}, Status: appsv1.StatefulSetStatus{ReadyReplicas: 1, Replicas: 1}} + if err := r.Create(t.Context(), ss); err != nil { + t.Fatal(err) + } + stopper := &revisionStopper{} + r.AgentClient = stopper + effective, _, err := r.reconcileTemplateRevision(t.Context(), gs) + if err != nil { + t.Fatal(err) + } + replicas, poll, err := r.desiredReplicas(t.Context(), gs, effective, idleAwake) + if err != nil || replicas != 1 || poll <= 0 || stopper.calls != 1 { + t.Fatalf("old graceful contract bypassed: replicas=%d poll=%v calls=%d err=%v", replicas, poll, stopper.calls, err) + } +} + +func TestPinnedTemplateSurvivesInstalledTemplateDeletion(t *testing.T) { + r, gs, installed := revisionFixture(t) + if err := r.Delete(t.Context(), installed); err != nil { + t.Fatal(err) + } + effective, _, err := r.reconcileTemplateRevision(t.Context(), gs) + if err != nil || effective.Spec.Image != "example.invalid/game:old" { + t.Fatalf("installed deletion lost pinned content: %v", err) + } + if gs.Status.TemplateRevision.Desired != "" { + t.Fatal("missing installed revision reported as available") + } + condition := meta.FindStatusCondition(gs.Status.Conditions, "TemplateUpdatePending") + if condition == nil || condition.Status != metav1.ConditionUnknown { + t.Fatalf("missing unavailable condition: %#v", condition) + } +} + +func TestStaleTemplateRenderCannotUndoCommittedPin(t *testing.T) { + r, gs, old := revisionFixture(t) + stale := gs.DeepCopy() + newTemplate := old.DeepCopy() + newTemplate.Spec.Image = "example.invalid/game:new" + pin, err := r.saveTemplateSnapshot(t.Context(), gs, newTemplate) + if err != nil { + t.Fatal(err) + } + gs.Annotations[effectiveTemplateAnnotation] = pin + if err := r.Update(t.Context(), gs); err != nil { + t.Fatal(err) + } + if err := r.reconcileStatefulSet(t.Context(), stale, old, nil, &materializedConfig{}, 1); err == nil { + t.Fatal("stale rendering created a workload after pin change") + } +} + +func TestTemplateBaselinePreservesLegacyWorkloadUntilAdmittedUpdate(t *testing.T) { + for _, policy := range []string{"Automatic", "OnRequest"} { + t.Run(policy, func(t *testing.T) { + r, gs, installed := revisionFixture(t) + delete(gs.Annotations, effectiveTemplateAnnotation) + gs.Spec.TemplateRollout.Policy = policy + if err := r.Update(t.Context(), gs); err != nil { + t.Fatal(err) + } + installed.Spec.RCON = &gameplanev1alpha1.RCONSpec{Protocol: "source"} + installed.Spec.Capabilities = &gameplanev1alpha1.CapabilitiesSpec{Lifecycle: &gameplanev1alpha1.LifecycleSpec{Stop: []string{"save", "stop"}}} + if err := r.Update(t.Context(), installed); err != nil { + t.Fatal(err) + } + one := int32(1) + ss := &appsv1.StatefulSet{ObjectMeta: metav1.ObjectMeta{Name: gs.Name, Namespace: gs.Namespace, UID: "legacy-workload", OwnerReferences: []metav1.OwnerReference{*metav1.NewControllerRef(gs, gameplanev1alpha1.GroupVersion.WithKind("GameServer"))}}, Spec: appsv1.StatefulSetSpec{Replicas: &one, Template: corev1.PodTemplateSpec{ObjectMeta: metav1.ObjectMeta{Annotations: map[string]string{"admission.example/default": "keep"}}, Spec: corev1.PodSpec{DNSPolicy: corev1.DNSClusterFirst, RestartPolicy: corev1.RestartPolicyAlways, SchedulerName: "default-scheduler", Containers: []corev1.Container{{Name: "game", Image: installed.Spec.Image, ImagePullPolicy: corev1.PullIfNotPresent, TerminationMessagePath: "/dev/termination-log", TerminationMessagePolicy: corev1.TerminationMessageReadFile}}}}}, Status: appsv1.StatefulSetStatus{Replicas: 1, ReadyReplicas: 1}} + pod := &corev1.Pod{ObjectMeta: metav1.ObjectMeta{Name: gs.Name + "-0", Namespace: gs.Namespace, OwnerReferences: []metav1.OwnerReference{*metav1.NewControllerRef(ss, appsv1.SchemeGroupVersion.WithKind("StatefulSet"))}}, Status: corev1.PodStatus{ContainerStatuses: []corev1.ContainerStatus{{Name: "game", State: corev1.ContainerState{Running: &corev1.ContainerStateRunning{}}}}}} + for _, obj := range []client.Object{ss, pod} { + if err := r.Create(t.Context(), obj); err != nil { + t.Fatal(err) + } + } + before, err := json.Marshal(ss.Spec.Template) + if err != nil { + t.Fatal(err) + } + if _, changed, err := r.reconcileTemplateRevision(t.Context(), gs); err != nil || !changed { + t.Fatalf("baseline admission: changed=%v err=%v", changed, err) + } + owner, held, err := lifecycleOwner(gs) + if err != nil || !held || !owner.Baseline { + t.Fatalf("missing durable baseline intent: %#v %v", owner, err) + } + // A restarted reconciler must preserve replicas while baseline ownership is held. + stopper := &revisionStopper{} + r = &GameServerReconciler{Client: r.Client, APIReader: r.APIReader, Scheme: r.Scheme, AgentClient: stopper} + if replicas, _, err := r.desiredReplicas(t.Context(), gs, installed, idleAwake); err != nil || replicas != 1 || stopper.calls != 0 { + t.Fatalf("baseline stopped legacy workload: replicas=%d calls=%d err=%v", replicas, stopper.calls, err) + } + if _, changed, err := r.reconcileTemplateRevision(t.Context(), gs); err != nil || !changed { + t.Fatalf("baseline pin: changed=%v err=%v", changed, err) + } + pin := gs.Annotations[effectiveTemplateAnnotation] + if !validTemplateRevision(pin) { + t.Fatal("baseline did not save a pin") + } + if _, held, _ := lifecycleOwner(gs); held { + t.Fatal("baseline retained lifecycle owner") + } + effective, _, err := r.reconcileTemplateRevision(t.Context(), gs) + if err != nil { + t.Fatal(err) + } + if gs.Status.TemplateRevision.Running != "" { + t.Fatal("legacy Pod assigned an invented running revision") + } + mc, err := materializeConfig(gs, effective) + if err != nil { + t.Fatal(err) + } + if err := r.reconcileStatefulSet(t.Context(), gs, effective, nil, mc, 1); err != nil { + t.Fatal(err) + } + if err := r.Get(t.Context(), client.ObjectKeyFromObject(ss), ss); err != nil { + t.Fatal(err) + } + after, err := json.Marshal(ss.Spec.Template) + if err != nil { + t.Fatal(err) + } + if string(after) != string(before) || stopper.calls != 0 || *ss.Spec.Replicas != 1 { + t.Fatal("baseline changed legacy Pod template or power state") + } + + installed.Spec.Image = "example.invalid/game:new" + installed.Spec.Capabilities = nil + if err := r.Update(t.Context(), installed); err != nil { + t.Fatal(err) + } + _, desired, err := templateSnapshot(installed) + if err != nil { + t.Fatal(err) + } + if policy == "OnRequest" { + gs.Spec.TemplateRollout.RequestedRevision = desired + if err := r.Update(t.Context(), gs); err != nil { + t.Fatal(err) + } + } + if _, changed, err := r.reconcileTemplateRevision(t.Context(), gs); err != nil || !changed { + t.Fatalf("next revision admission: %v %v", changed, err) + } + effective, _, err = r.reconcileTemplateRevision(t.Context(), gs) + if err != nil { + t.Fatal(err) + } + if replicas, _, err := r.desiredReplicas(t.Context(), gs, effective, idleAwake); err != nil || replicas != 1 || stopper.calls != 1 { + t.Fatalf("next revision bypassed old graceful stop: replicas=%d calls=%d err=%v", replicas, stopper.calls, err) + } + if err := r.reconcileStatefulSet(t.Context(), gs, effective, nil, mc, 0); err != nil { + t.Fatal(err) + } + if _, changed, err := r.reconcileTemplateRevision(t.Context(), gs); err != nil || changed { + t.Fatalf("adopted before owned drain: changed=%v err=%v", changed, err) + } + if gs.Annotations[effectiveTemplateAnnotation] != pin { + t.Fatal("pin advanced while legacy Pod remains") + } + if err := r.Get(t.Context(), client.ObjectKeyFromObject(ss), ss); err != nil { + t.Fatal(err) + } + if ss.Annotations[lifecycleOperationAnnotation] != gs.Annotations[lifecycleOperationAnnotation] { + t.Fatal("drain not owned by admitted rollout") + } + ss.Status.Replicas, ss.Status.ReadyReplicas, ss.Status.ObservedGeneration = 0, 0, ss.Generation + if err := r.Status().Update(t.Context(), ss); err != nil { + t.Fatal(err) + } + if err := r.Delete(t.Context(), pod); err != nil { + t.Fatal(err) + } + if _, changed, err := r.reconcileTemplateRevision(t.Context(), gs); err != nil || !changed { + t.Fatalf("drained adoption: %v %v", changed, err) + } + if gs.Annotations[effectiveTemplateAnnotation] != desired { + t.Fatal("drained rollout did not adopt requested pin") + } + }) + } +} + +func TestTemplateBaselineAllowsRealWorkloadChanges(t *testing.T) { + for _, change := range []string{"inputs", "stopped", "new-workload"} { + t.Run(change, func(t *testing.T) { + r, gs, _ := revisionFixture(t) + pin := gs.Annotations[effectiveTemplateAnnotation] + inputs, err := r.baselineRenderInputs(gs, pin) + if err != nil { + t.Fatal(err) + } + gs.Annotations[baselineTemplateAnnotation], gs.Annotations[baselineWorkloadAnnotation], gs.Annotations[baselineInputsAnnotation] = pin, "legacy", inputs + one := int32(1) + ss := &appsv1.StatefulSet{ObjectMeta: metav1.ObjectMeta{UID: "legacy"}, Spec: appsv1.StatefulSetSpec{Replicas: &one}} + if keep, err := r.preserveBaselinePodTemplate(t.Context(), gs, ss); err != nil || !keep { + t.Fatalf("baseline not preserved: %v %v", keep, err) + } + switch change { + case "inputs": + gs.Spec.Image = "example.invalid/game:override" + case "stopped": + zero := int32(0) + ss.Spec.Replicas = &zero + case "new-workload": + ss.UID = "replacement" + } + if keep, err := r.preserveBaselinePodTemplate(t.Context(), gs, ss); err != nil || keep { + t.Fatalf("real workload change frozen: %v %v", keep, err) + } + }) + } +} + +func TestTemplateBaselineWithoutWorkloadPinsBeforeFirstRender(t *testing.T) { + r, gs, _ := revisionFixture(t) + delete(gs.Annotations, effectiveTemplateAnnotation) + if err := r.Update(t.Context(), gs); err != nil { + t.Fatal(err) + } + for range 2 { + if _, changed, err := r.reconcileTemplateRevision(t.Context(), gs); err != nil || !changed { + t.Fatalf("initial pin: %v %v", changed, err) + } + } + effective, _, err := r.reconcileTemplateRevision(t.Context(), gs) + if err != nil { + t.Fatal(err) + } + if err := r.reconcileStatefulSet(t.Context(), gs, effective, nil, &materializedConfig{}, 1); err != nil { + t.Fatal(err) + } + var ss appsv1.StatefulSet + if err := r.Get(t.Context(), client.ObjectKeyFromObject(gs), &ss); err != nil { + t.Fatal(err) + } + if ss.Spec.Template.Annotations[templateRevisionAnnotation] != gs.Annotations[effectiveTemplateAnnotation] || *ss.Spec.Replicas != 1 { + t.Fatal("first workload not stamped and started") + } +} + +func TestTemplateBaselineDoesNotSwallowConcurrentSpecEdit(t *testing.T) { + r, gs, installed := revisionFixture(t) + delete(gs.Annotations, effectiveTemplateAnnotation) + gs.Generation = 1 + if err := r.Update(t.Context(), gs); err != nil { + t.Fatal(err) + } + one := int32(1) + ss := &appsv1.StatefulSet{ObjectMeta: metav1.ObjectMeta{Name: gs.Name, Namespace: gs.Namespace, UID: "legacy", OwnerReferences: []metav1.OwnerReference{*metav1.NewControllerRef(gs, gameplanev1alpha1.GroupVersion.WithKind("GameServer"))}}, Spec: appsv1.StatefulSetSpec{Replicas: &one, Template: corev1.PodTemplateSpec{Spec: corev1.PodSpec{Containers: []corev1.Container{{Name: "game", Image: installed.Spec.Image}}}}}} + if err := r.Create(t.Context(), ss); err != nil { + t.Fatal(err) + } + if _, changed, err := r.reconcileTemplateRevision(t.Context(), gs); err != nil || !changed { + t.Fatalf("baseline admission: %v %v", changed, err) + } + gs.Generation++ // Fake clients do not increment spec generations. + gs.Spec.Image = "example.invalid/game:requested" + if err := r.Update(t.Context(), gs); err != nil { + t.Fatal(err) + } + if _, changed, err := r.reconcileTemplateRevision(t.Context(), gs); err != nil || !changed { + t.Fatalf("baseline initialization: %v %v", changed, err) + } + if gs.Annotations[baselineInputsAnnotation] != "" { + t.Fatal("concurrent edit was recorded as already applied") + } + effective, _, err := r.reconcileTemplateRevision(t.Context(), gs) + if err != nil { + t.Fatal(err) + } + if err := r.reconcileStatefulSet(t.Context(), gs, effective, nil, &materializedConfig{}, 1); err != nil { + t.Fatal(err) + } + if err := r.Get(t.Context(), client.ObjectKeyFromObject(ss), ss); err != nil { + t.Fatal(err) + } + if ss.Spec.Template.Spec.Containers[0].Image != gs.Spec.Image { + t.Fatal("baseline swallowed the requested image change") + } +} diff --git a/operator/internal/controller/gameserver_wipe_inventory_test.go b/operator/internal/controller/gameserver_wipe_inventory_test.go index e4075147d..2ae64daf1 100644 --- a/operator/internal/controller/gameserver_wipe_inventory_test.go +++ b/operator/internal/controller/gameserver_wipe_inventory_test.go @@ -45,6 +45,22 @@ func TestGameServerReconcileInventoriesWipeWorkersOnce(t *testing.T) { c := fake.NewClientBuilder().WithScheme(s).WithObjects(gs, tmpl, caSecret).WithStatusSubresource(gs).Build() reader := &wipeInventoryReader{Reader: c} r := &GameServerReconciler{Client: c, APIReader: reader, Scheme: s, AgentCASecretName: caSecret.Name, AgentCASecretNamespace: caSecret.Namespace} + // This test measures an ordinary already-admitted reconcile. Template + // admission has its own live worker checks and transition tests. + revision, err := r.saveTemplateSnapshot(t.Context(), gs, tmpl) + if err != nil { + t.Fatal(err) + } + if gs.Annotations == nil { + gs.Annotations = map[string]string{} + } + gs.Annotations[effectiveTemplateAnnotation] = revision + if err := c.Update(t.Context(), gs); err != nil { + t.Fatal(err) + } + if err := r.reportTemplateRevision(t.Context(), gs, revision, lifecycleOperation{}, false); err != nil { + t.Fatal(err) + } // Exercise both initial child/status creation and the next full pass. Idle // and capture reconciliation participate, rather than just lifecycle helpers. for range 2 { diff --git a/operator/internal/controller/helpers_envtest_test.go b/operator/internal/controller/helpers_envtest_test.go index 8f10b7053..df401b061 100644 --- a/operator/internal/controller/helpers_envtest_test.go +++ b/operator/internal/controller/helpers_envtest_test.go @@ -806,6 +806,12 @@ func seedGameServer(t *testing.T, ns, name string) { if err := k8sClient.Create(context.Background(), gs); err != nil { t.Fatalf("seed gameserver %s/%s: %v", ns, name, err) } + seedBackupWorkload(t, gs) +} + +func seedBackupWorkload(t *testing.T, gs *gameplanev1alpha1.GameServer) { + t.Helper() + name, ns := gs.Name, gs.Namespace one := int32(1) labels := map[string]string{"app": name} ss := &appsv1.StatefulSet{ diff --git a/operator/internal/controller/lifecycle_operation.go b/operator/internal/controller/lifecycle_operation.go index e63e75597..1775ef36b 100644 --- a/operator/internal/controller/lifecycle_operation.go +++ b/operator/internal/controller/lifecycle_operation.go @@ -34,6 +34,9 @@ type lifecycleIdentity struct { // InitialStartup permits only the first workload of a CSI restore's new // target (including WaitForFirstConsumer PVCs), while other operations wait. InitialStartup bool `json:"initialStartup,omitempty"` + // Baseline establishes a first template pin without replacing an existing + // workload. Durable intent prevents a leader restart turning it into a drain. + Baseline bool `json:"baseline,omitempty"` } type lifecycleOperation struct { @@ -54,7 +57,7 @@ func parseLifecycleOperation(value string) (lifecycleOperation, error) { return op, fmt.Errorf("decode lifecycle owner: %w", err) } for _, id := range append([]lifecycleIdentity{op.lifecycleIdentity}, op.Recovery...) { - if id.Name == "" || id.UID == "" || id.TargetUID == "" || (id.Kind != "Backup" && id.Kind != "Restore" && id.Kind != "Wipe") || (id.Kind == "Wipe" && id.Token == "") { + if id.Name == "" || id.UID == "" || id.TargetUID == "" || (id.Kind != "Backup" && id.Kind != "Restore" && id.Kind != "Wipe" && id.Kind != "Rollout") || (id.Kind == "Wipe" && id.Token == "") || (id.Kind == "Rollout" && !validTemplateRevision(id.Token)) { return op, fmt.Errorf("invalid lifecycle owner identity") } if id.TargetUID != op.TargetUID { @@ -134,7 +137,7 @@ func lifecycleOwnerExists(ctx context.Context, reader client.Reader, namespace s obj = &gameplanev1alpha1.Backup{} case "Restore": obj = &gameplanev1alpha1.Restore{} - case "Wipe": + case "Wipe", "Rollout": // Only the GameServer reconciler may cancel/replace a wipe token after // its workers drain. A removed request is not proof of worker absence. return true, nil @@ -160,6 +163,9 @@ func claimLifecycleOperation(ctx context.Context, c client.Client, reader client if live.UID != want.TargetUID || !live.DeletionTimestamp.IsZero() { return false, fmt.Errorf("lifecycle target changed identity or is being deleted") } + if want.Kind == "Rollout" && live.Generation != want.Generation { + return false, errLifecycleGenerationChanged + } *gs = live op, occupied, err := lifecycleOwner(gs) if err != nil { @@ -178,7 +184,7 @@ func claimLifecycleOperation(ctx context.Context, c client.Client, reader client } op.lifecycleIdentity = want } else if occupied { - if gs.Annotations[lifecycleOperationAnnotation] != "" && op.Kind != "Wipe" && op.Generation != want.Generation { + if gs.Annotations[lifecycleOperationAnnotation] != "" && op.Kind != "Wipe" && op.Kind != "Rollout" && op.Generation != want.Generation { return false, errLifecycleGenerationChanged } if gs.Annotations[lifecycleOperationAnnotation] == "" { @@ -193,7 +199,7 @@ func claimLifecycleOperation(ctx context.Context, c client.Client, reader client } // A stop command already sent may still save data and exit. Waiting // here also lets pending restarts finish instead of freezing mid-stop. - if want.Kind == "Backup" { + if want.Kind == "Backup" || want.Kind == "Rollout" { pending, err := backupLifecycleTransitionPending(ctx, reader, gs) if err != nil || pending { return false, err diff --git a/operator/internal/controller/lifecycle_operation_envtest_test.go b/operator/internal/controller/lifecycle_operation_envtest_test.go index b31972a14..7dc623a1a 100644 --- a/operator/internal/controller/lifecycle_operation_envtest_test.go +++ b/operator/internal/controller/lifecycle_operation_envtest_test.go @@ -18,7 +18,8 @@ import ( func TestLifecycleCASAcrossControllers(t *testing.T) { ns := newNamespace(t) seedGameServer(t, ns, "target") - b := &gameplanev1alpha1.Backup{ObjectMeta: metav1.ObjectMeta{Name: "backup", Namespace: ns}, Spec: gameplanev1alpha1.BackupSpec{ServerRef: gameplanev1alpha1.LocalObjectRef{Name: "target"}, RepoRef: &gameplanev1alpha1.SecretKeySelector{Name: "repo"}, Quiesce: false}} + b := buildBackup(ns, "backup", "target", "repo") + b.Spec.Quiesce = false rs := &gameplanev1alpha1.Restore{ObjectMeta: metav1.ObjectMeta{Name: "restore", Namespace: ns}, Spec: gameplanev1alpha1.RestoreSpec{ServerRef: gameplanev1alpha1.LocalObjectRef{Name: "target"}, BackupRef: gameplanev1alpha1.LocalObjectRef{Name: "source"}}} if err := k8sClient.Create(t.Context(), b); err != nil { t.Fatal(err) diff --git a/operator/internal/controller/networkcapture_filter.go b/operator/internal/controller/networkcapture_filter.go index c3d0bfd49..8252a16ed 100644 --- a/operator/internal/controller/networkcapture_filter.go +++ b/operator/internal/controller/networkcapture_filter.go @@ -7,7 +7,6 @@ import ( corev1 "k8s.io/api/core/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/types" gameplanev1alpha1 "github.com/GameplanePanel/gameplane/operator/api/v1alpha1" ) @@ -50,14 +49,14 @@ func (r *NetworkCaptureReconciler) captureFilter( return nc.Spec.Filter, "", nil } name := gs.Spec.TemplateRef.Name - var tmpl gameplanev1alpha1.GameTemplate - if err := r.Get(ctx, types.NamespacedName{Name: name}, &tmpl); err != nil { + tmpl, err := effectiveGameTemplate(ctx, r.Client, gs) + if err != nil { if apierrors.IsNotFound(err) { return nil, fmt.Sprintf("gametemplate %s not found; cannot build the default capture filter", name), nil } return nil, "", fmt.Errorf("get gametemplate %s for the default capture filter: %w", name, err) } - f := defaultCaptureFilter(&tmpl) + f := defaultCaptureFilter(tmpl) if f == "" { return nil, fmt.Sprintf("gametemplate %s advertises no ports; supply a capture filter", name), nil } diff --git a/operator/internal/controller/restore_controller.go b/operator/internal/controller/restore_controller.go index d9326703e..6db71a7c8 100644 --- a/operator/internal/controller/restore_controller.go +++ b/operator/internal/controller/restore_controller.go @@ -129,7 +129,10 @@ func (r *RestoreReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct } return ctrl.Result{}, err } - if src.Spec.Strategy == "volume-snapshot" && rs.Annotations[restoreTargetAnnotation] == "" { + // Binding the target does not change the restore strategy. CSI's own + // preparation path checks that binding before awaiting startup, repairing + // references and enforcing the deadline on every subsequent reconcile. + if src.Spec.Strategy == "volume-snapshot" { return r.reconcileVolumeSnapshotRestore(ctx, &rs, &src) } @@ -175,12 +178,13 @@ func (r *RestoreReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct } } - // A missing template is not fatal: it only refines the FSGroup, and - // buildBackupPodSecurityContext falls back to 65532 for a zero template. - var tmpl gameplanev1alpha1.GameTemplate - if err := r.Get(ctx, types.NamespacedName{Name: gs.Spec.TemplateRef.Name}, &tmpl); err != nil && !apierrors.IsNotFound(err) { + // A pinned snapshot is mandatory once established. Legacy targets retain + // the historical missing-template fallback for their initial operation. + effective, err := effectiveGameTemplate(ctx, r.apiReader(), &gs) + if err != nil && (gs.Annotations[effectiveTemplateAnnotation] != "" || !apierrors.IsNotFound(err)) { return ctrl.Result{}, err } + tmpl := *effective if rs.Status.Phase == gameplanev1alpha1.RestorePhaseSuspending { if gs.Status.Phase != gameplanev1alpha1.GameServerPhaseSuspended && diff --git a/operator/internal/controller/restore_template.go b/operator/internal/controller/restore_template.go new file mode 100644 index 000000000..039fa3dff --- /dev/null +++ b/operator/internal/controller/restore_template.go @@ -0,0 +1,84 @@ +package controller + +import ( + "context" + "crypto/sha256" + "encoding/json" + "fmt" + + corev1 "k8s.io/api/core/v1" + apierrors "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" + + gameplanev1alpha1 "github.com/GameplanePanel/gameplane/operator/api/v1alpha1" +) + +const restoreTemplateAnnotation = "restore.gameplane.local/template-snapshot" + +func (r *RestoreReconciler) planRestoredTemplate(ctx context.Context, rs *gameplanev1alpha1.Restore, source, target *gameplanev1alpha1.GameServer) error { + // Pre-upgrade sources retain historical restore behavior. New snapshots + // cannot reconstruct the template used when an older backup was taken. + if source.Annotations[effectiveTemplateAnnotation] == "" { + return nil + } + identity := sha256.Sum256([]byte(string(rs.UID))) + name := fmt.Sprintf("restore-template-%x", identity[:16]) + var existing corev1.ConfigMap + err := r.apiReader().Get(ctx, client.ObjectKey{Namespace: rs.Namespace, Name: name}, &existing) + if err != nil && !apierrors.IsNotFound(err) { + return err + } + if err == nil { + if !metav1.IsControlledBy(&existing, rs) || existing.Immutable == nil || !*existing.Immutable { + return fmt.Errorf("restore template plan is foreign or mutable") + } + } else { + tmpl, err := effectiveGameTemplate(ctx, r.apiReader(), source) + if err != nil { + return err + } + data, revision, err := templateSnapshot(tmpl) + if err != nil { + return err + } + immutable := true + cm := &corev1.ConfigMap{ObjectMeta: metav1.ObjectMeta{Name: name, Namespace: rs.Namespace, Annotations: map[string]string{templateRevisionAnnotation: revision}}, Immutable: &immutable, Data: map[string]string{templateSnapshotKey: string(data)}} + if err := controllerutil.SetControllerReference(rs, cm, r.Scheme); err != nil { + return err + } + if err := r.Create(ctx, cm); err != nil { + return err + } + } + target.Annotations[restoreTemplateAnnotation] = name + return nil +} + +func (r *RestoreReconciler) copyRestoredTemplate(ctx context.Context, rs *gameplanev1alpha1.Restore, target *gameplanev1alpha1.GameServer) error { + var cm corev1.ConfigMap + if err := r.apiReader().Get(ctx, client.ObjectKey{Namespace: target.Namespace, Name: target.Annotations[restoreTemplateAnnotation]}, &cm); err != nil { + return err + } + if !metav1.IsControlledBy(&cm, rs) || cm.Immutable == nil || !*cm.Immutable || !cm.DeletionTimestamp.IsZero() { + return fmt.Errorf("restore template plan is foreign, mutable or deleting") + } + var tmpl gameplanev1alpha1.GameTemplate + if err := json.Unmarshal([]byte(cm.Data[templateSnapshotKey]), &tmpl); err != nil { + return err + } + _, revision, err := templateSnapshot(&tmpl) + if err != nil { + return err + } + if tmpl.Name != target.Spec.TemplateRef.Name || revision != cm.Annotations[templateRevisionAnnotation] { + return fmt.Errorf("restore template plan content changed") + } + writer := &GameServerReconciler{Client: r.Client, APIReader: r.apiReader(), Scheme: r.Scheme} + if _, err := writer.saveTemplateSnapshot(ctx, target, &tmpl); err != nil { + return err + } + target.Annotations[effectiveTemplateAnnotation] = revision + return r.Update(ctx, target) +} diff --git a/operator/internal/controller/restore_volumesnapshot.go b/operator/internal/controller/restore_volumesnapshot.go index 00705401c..ea1207787 100644 --- a/operator/internal/controller/restore_volumesnapshot.go +++ b/operator/internal/controller/restore_volumesnapshot.go @@ -141,6 +141,12 @@ func (r *RestoreReconciler) reconcileVolumeSnapshotRestore( return r.failOrRequeue(ctx, rs, err) } rewriteRefs(&created.Spec, copies) + // Preserve the source's effective template before creating a target. A + // durable Restore-owned copy survives source adoption/deletion and retries; + // the target receives its own immutable copy before InitialStartup. + if err := r.planRestoredTemplate(ctx, rs, &orig, created); err != nil { + return r.failOrRequeue(ctx, rs, err) + } // Persist the copy plan on the Restore now, before creating anything. // ensureOwnedRefCopies below can fail transiently (e.g. a write @@ -224,6 +230,12 @@ func (r *RestoreReconciler) ensureRestoredRefsFromSpec( } func (r *RestoreReconciler) prepareSnapshotRestoreTarget(ctx context.Context, rs *gameplanev1alpha1.Restore, gs *gameplanev1alpha1.GameServer) (bool, error) { + if gs.Annotations[effectiveTemplateAnnotation] == "" && gs.Annotations[restoreTemplateAnnotation] != "" { + if err := r.copyRestoredTemplate(ctx, rs, gs); err != nil { + return false, err + } + return false, nil + } changed, err := r.bindRestoreTarget(ctx, rs, gs) if err != nil { return false, err diff --git a/operator/internal/controller/restore_volumesnapshot_dispatch_test.go b/operator/internal/controller/restore_volumesnapshot_dispatch_test.go new file mode 100644 index 000000000..5ca38869b --- /dev/null +++ b/operator/internal/controller/restore_volumesnapshot_dispatch_test.go @@ -0,0 +1,81 @@ +package controller + +import ( + "encoding/json" + "testing" + "time" + + appsv1 "k8s.io/api/apps/v1" + batchv1 "k8s.io/api/batch/v1" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/client/fake" + + gameplanev1alpha1 "github.com/GameplanePanel/gameplane/operator/api/v1alpha1" +) + +// Exercise the public dispatch after target binding. Calling the CSI helper +// directly misses a regression that diverted later passes into Restic restore. +func TestVolumeSnapshotRestoreReconcileKeepsBoundStrategy(t *testing.T) { + for _, state := range []string{"running", "repair-reference", "deadline"} { + t.Run(state, func(t *testing.T) { + scheme := scrapeScheme(t) + if err := appsv1.AddToScheme(scheme); err != nil { + t.Fatal(err) + } + orig := &gameplanev1alpha1.GameServer{ObjectMeta: metav1.ObjectMeta{Name: "source", Namespace: "ns", UID: "source-uid"}} + target := &gameplanev1alpha1.GameServer{ObjectMeta: metav1.ObjectMeta{Name: "target", Namespace: "ns", UID: "target-uid", Annotations: map[string]string{annoRestoreCreatedBy: "restore", restoreGuardAnnotation: restoreIdentityJSON("restore", "restore-uid")}}, Spec: gameplanev1alpha1.GameServerSpec{TemplateRef: gameplanev1alpha1.GameTemplateRef{Name: "template"}}} + backup := &gameplanev1alpha1.Backup{ObjectMeta: metav1.ObjectMeta{Name: "backup", Namespace: "ns", UID: "backup-uid"}, Spec: gameplanev1alpha1.BackupSpec{ServerRef: gameplanev1alpha1.LocalObjectRef{Name: orig.Name}, Strategy: "volume-snapshot"}, Status: gameplanev1alpha1.BackupStatus{Phase: gameplanev1alpha1.BackupPhaseSucceeded, SnapshotID: "snapshot", VolumeSnapshotContentName: "content"}} + started := metav1.Now() + rs := &gameplanev1alpha1.Restore{ObjectMeta: metav1.ObjectMeta{Name: "restore", Namespace: "ns", UID: "restore-uid", Finalizers: []string{restoreCleanupFinalizer}, Annotations: map[string]string{restoreTargetAnnotation: restoreIdentityJSON(target.Name, target.UID)}}, Spec: gameplanev1alpha1.RestoreSpec{BackupRef: gameplanev1alpha1.LocalObjectRef{Name: backup.Name}, ServerRef: gameplanev1alpha1.LocalObjectRef{Name: target.Name}}, Status: gameplanev1alpha1.RestoreStatus{Phase: gameplanev1alpha1.RestorePhaseRunning, SnapshotID: "snapshot", StartTime: &started}} + objects := []client.Object{orig, target, backup, rs} + want := gameplanev1alpha1.RestorePhaseRunning + switch state { + case "running": + target.Status.Phase = gameplanev1alpha1.GameServerPhaseRunning + want = gameplanev1alpha1.RestorePhaseSucceeded + case "repair-reference": + plan, err := json.Marshal([]refCopy{{Kind: secretRefKind, OrigName: "source-secret", CopyName: "target-secret"}}) + if err != nil { + t.Fatal(err) + } + rs.Annotations["restore.gameplane.local/copy-plan"] = string(plan) + target.Spec.Env = []corev1.EnvVar{{Name: "SECRET", ValueFrom: &corev1.EnvVarSource{SecretKeyRef: &corev1.SecretKeySelector{LocalObjectReference: corev1.LocalObjectReference{Name: "target-secret"}, Key: "key"}}}} + objects = append(objects, &corev1.Secret{ObjectMeta: metav1.ObjectMeta{Name: "source-secret", Namespace: "ns", OwnerReferences: []metav1.OwnerReference{*metav1.NewControllerRef(orig, gameplanev1alpha1.GroupVersion.WithKind("GameServer"))}}, Data: map[string][]byte{"key": []byte("preserved-value")}}) + case "deadline": + started = metav1.NewTime(time.Now().Add(-VolumeSnapshotRestoreDeadline - time.Minute)) + want = gameplanev1alpha1.RestorePhaseFailed + } + cl := fake.NewClientBuilder().WithScheme(scheme).WithObjects(objects...).WithStatusSubresource(rs, target, backup).Build() + r := &RestoreReconciler{Client: cl, APIReader: cl, Scheme: scheme} + if _, err := r.Reconcile(t.Context(), ctrl.Request{NamespacedName: client.ObjectKeyFromObject(rs)}); err != nil { + t.Fatal(err) + } + var got gameplanev1alpha1.Restore + if err := cl.Get(t.Context(), client.ObjectKeyFromObject(rs), &got); err != nil { + t.Fatal(err) + } + if got.Status.Phase != want { + t.Fatalf("bound CSI restore phase = %s, want %s: %s", got.Status.Phase, want, got.Status.Message) + } + if state == "repair-reference" { + var copied corev1.Secret + if err := cl.Get(t.Context(), client.ObjectKey{Namespace: "ns", Name: "target-secret"}, &copied); err != nil { + t.Fatalf("bound CSI restore did not repair reference: %v", err) + } + if !metav1.IsControlledBy(&copied, target) || string(copied.Data["key"]) != "preserved-value" { + t.Fatal("repaired reference lost ownership or data") + } + } + var jobs batchv1.JobList + if err := cl.List(t.Context(), &jobs); err != nil { + t.Fatal(err) + } + if len(jobs.Items) != 0 { + t.Fatal("CSI restore dispatched into Restic Job creation") + } + }) + } +} diff --git a/operator/specs.md b/operator/specs.md index d0e1fceea..2225bbcfc 100644 --- a/operator/specs.md +++ b/operator/specs.md @@ -30,6 +30,41 @@ start/stop and expiry remain reconciler responsibilities; the gateway cannot bypass them or operate an arbitrary pod. Existing game resources and storage are not recreated to enable remote parity. +## Template revision admission + +- `GameServer.spec.templateRollout.policy` defaults to Automatic; OnRequest + admits only `requestedRevision == status.templateRevision.desired`. Initial + provisioning/baseline always adopts the installed content. No fleet scheduler, + canary or maintenance-window controller is implied. +- First-pin initialization uses shared ownership and a checked metadata update + without stopping an existing workload. Its StatefulSet UID and render-input + fingerprint preserve the existing Pod template byte-for-byte, including API + defaults/admission fields, while those inputs are unchanged. A real workload + input change, replaced StatefulSet or observed stopped drain allows revision + stamping. An existing unannotated Pod never receives inferred provenance. + New servers pin before first rendering. Existing lifecycle owners defer both. +- Complete template Name/spec content is SHA256-addressed in immutable owned + ConfigMaps (900 KiB maximum). The effective annotation is authoritative; status + is reconstructible. A missing/foreign/mutable/corrupt pin fails closed. +- All GameServer config, version/image, init, storage, agent, networking and + workload calculations use the effective snapshot. Restic backup resolves the + pin after shared ownership, restore resolves its owned target pin, and default + capture filters use pinned ports. CSI restore planning persists a Restore-owned + source snapshot and copies it to the new server before startup permission. +- Rollout extends the shared operation owner: no admission during backup, + restore or wipe; old effective graceful stop and live observed Pod drain precede + a checked pin update. The owner survives restart and catalog changes, releasing + after the matching new Pod is observed or a suspended zero-replica template is + observed. Startup health remains independent. Per-server power intent survives. +- Desired/effective/running digests are distinct. Running requires the owned + StatefulSet/Pod chain and a running game container; legacy or stopped Pods do + not claim the desired revision. TemplateUpdatePending has RevisionAvailable, + OperationInProgress, AdoptingRevision, RevisionCurrent and TemplateUnavailable + reasons, included in the generated condition translation reference. +- Obsolete snapshots are pruned only after old workload drain and replacement + observation. PVCs are retained; data compatibility and runtime/data rollback + remain administrator responsibilities. See `docs/template-rollouts.md`. + ## Non-goals / boundaries The operator **does not** handle: diff --git a/test/e2e/buckets.sh b/test/e2e/buckets.sh index d60a26f14..1d1747012 100755 --- a/test/e2e/buckets.sh +++ b/test/e2e/buckets.sh @@ -62,6 +62,7 @@ TestGameServer_TemplateDefaultOverridesInstallTime TestGameServer_ExplicitStorageClassOverridesDefault TestGameServer_NonexistentStorageClassSurfacesError TestGameServer_VersionSwitch +TestGameServer_TemplateOnRequestRetainsData TestGameServer_WipeReportsFailureOnPermissionDenied TestGameServer_CascadingDelete TestGameServer_TunnelCredentialRefusalSurfaced diff --git a/test/e2e/specs.md b/test/e2e/specs.md index abf7cda91..8d6dc38f1 100644 --- a/test/e2e/specs.md +++ b/test/e2e/specs.md @@ -12,6 +12,14 @@ It was one of three `go.work` modules without CI lint coverage until this featur ## Responsibilities +The operator bucket includes `TestGameServer_TemplateOnRequestRetainsData`: a +live busybox workload keeps its Pod and old rendered config after a shared +template update, then admits the exact desired digest and verifies a replacement +Pod, the same PVC UID, preserved save marker and updated config-init output. +Operator regression sources cover lifecycle exclusion, old-template graceful +stop, status reset/leader recovery, exact request binding, snapshot integrity, +complete pinned render inputs and source-template preservation for CSI restore. + - Boot and tear down (or reuse) a kind cluster, install the working-tree Helm chart, and wait for every component to come up healthy. - Exercise the full CRD lifecycle for all 8 kinds (GameServer, GameTemplate, Backup, BackupSchedule, Restore, Module, ModuleSource, Cluster) against a real API server and operator. - Drive the REST + WebSocket API as a real HTTP client would: login, session/CSRF handling, RBAC matrix checks, console/PTY/log streaming, file upload/download. diff --git a/test/e2e/template_rollout_e2e_test.go b/test/e2e/template_rollout_e2e_test.go new file mode 100644 index 000000000..9319a9171 --- /dev/null +++ b/test/e2e/template_rollout_e2e_test.go @@ -0,0 +1,120 @@ +//go:build e2e + +package e2e + +import ( + "context" + "encoding/json" + "fmt" + "strings" + "testing" + "time" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/types" +) + +// A real workload remains unchanged while a new shared template is installed, +// then adopts only on an exact request while retaining its PVC and saved data. +func TestGameServer_TemplateOnRequestRetainsData(t *testing.T) { + t.Parallel() + ctx := context.Background() + const ns, name, template = "gameplane-games", "e2e-template-stage", "e2e-template-stage" + applyBusyboxTemplate(t, template) + tmpl, err := envInstance.Dyn.Resource(gameTemplateGVR).Get(ctx, template, metav1.GetOptions{}) + if err != nil { + t.Fatal(err) + } + if err := unstructured.SetNestedSlice(tmpl.Object, []any{map[string]any{"path": "revision.txt", "template": "old"}}, "spec", "configFiles"); err != nil { + t.Fatal(err) + } + if _, err := envInstance.Dyn.Resource(gameTemplateGVR).Update(ctx, tmpl, metav1.UpdateOptions{}); err != nil { + t.Fatal(err) + } + gs := &unstructured.Unstructured{Object: map[string]any{"apiVersion": "gameplane.local/v1alpha1", "kind": "GameServer", "metadata": map[string]any{"name": name, "namespace": ns}, "spec": map[string]any{"templateRef": map[string]any{"name": template}, "templateRollout": map[string]any{"policy": "OnRequest"}}}} + if _, err := envInstance.Dyn.Resource(gameServerGVR).Namespace(ns).Create(ctx, gs, metav1.CreateOptions{}); err != nil { + t.Fatal(err) + } + t.Cleanup(func() { + _ = envInstance.Dyn.Resource(gameServerGVR).Namespace(ns).Delete(context.Background(), name, metav1.DeleteOptions{}) + }) + get := func() *unstructured.Unstructured { + t.Helper() + obj, err := envInstance.Dyn.Resource(gameServerGVR).Namespace(ns).Get(ctx, name, metav1.GetOptions{}) + if err != nil { + t.Fatal(err) + } + return obj + } + var old string + envInstance.Eventually(t, 3*time.Minute, func() (bool, string) { + obj := get() + running, _, _ := unstructured.NestedString(obj.Object, "status", "templateRevision", "running") + effective, _, _ := unstructured.NestedString(obj.Object, "status", "templateRevision", "effective") + old = effective + return effective != "" && running == effective && obj.GetAnnotations()["operations.gameplane.local/owner"] == "", "waiting for initial pinned workload" + }) + pod, err := envInstance.K8s.CoreV1().Pods(ns).Get(ctx, name+"-0", metav1.GetOptions{}) + if err != nil { + t.Fatal(err) + } + oldPod := pod.UID + pvc, err := envInstance.K8s.CoreV1().PersistentVolumeClaims(ns).Get(ctx, name+"-data", metav1.GetOptions{}) + if err != nil { + t.Fatal(err) + } + oldPVC := pvc.UID + if out, err := envInstance.Kubectl(ctx, "exec", "-n", ns, name+"-0", "-c", "game", "--", "sh", "-c", "printf retained > /data/save-marker; cat /data/revision.txt"); err != nil || strings.TrimSpace(out) != "old" { + t.Fatalf("seed persisted data: %s %v", out, err) + } + tmpl, err = envInstance.Dyn.Resource(gameTemplateGVR).Get(ctx, template, metav1.GetOptions{}) + if err != nil { + t.Fatal(err) + } + if err := unstructured.SetNestedSlice(tmpl.Object, []any{map[string]any{"path": "revision.txt", "template": "new"}}, "spec", "configFiles"); err != nil { + t.Fatal(err) + } + if _, err := envInstance.Dyn.Resource(gameTemplateGVR).Update(ctx, tmpl, metav1.UpdateOptions{}); err != nil { + t.Fatal(err) + } + var desired string + envInstance.Eventually(t, time.Minute, func() (bool, string) { + obj := get() + desired, _, _ = unstructured.NestedString(obj.Object, "status", "templateRevision", "desired") + effective, _, _ := unstructured.NestedString(obj.Object, "status", "templateRevision", "effective") + return desired != "" && desired != old && effective == old, "waiting for pending revision" + }) + // Check after the controller reported processing the update, rather than + // relying on an arbitrary sleep before asserting an unchanged Pod. + pod, err = envInstance.K8s.CoreV1().Pods(ns).Get(ctx, name+"-0", metav1.GetOptions{}) + if err != nil || pod.UID != oldPod { + t.Fatalf("catalog update replaced staged Pod: %v", err) + } + if out, err := envInstance.Kubectl(ctx, "exec", "-n", ns, name+"-0", "-c", "game", "--", "cat", "/data/revision.txt"); err != nil || strings.TrimSpace(out) != "old" { + t.Fatalf("pending config changed: %s %v", out, err) + } + patch, err := json.Marshal(map[string]any{"spec": map[string]any{"templateRollout": map[string]any{"requestedRevision": desired}}}) + if err != nil { + t.Fatal(err) + } + if _, err := envInstance.Dyn.Resource(gameServerGVR).Namespace(ns).Patch(ctx, name, types.MergePatchType, patch, metav1.PatchOptions{}); err != nil { + t.Fatal(err) + } + envInstance.Eventually(t, 3*time.Minute, func() (bool, string) { + obj := get() + running, _, _ := unstructured.NestedString(obj.Object, "status", "templateRevision", "running") + current, err := envInstance.K8s.CoreV1().Pods(ns).Get(ctx, name+"-0", metav1.GetOptions{}) + if err != nil { + return false, err.Error() + } + return running == desired && current.UID != oldPod && obj.GetAnnotations()["operations.gameplane.local/owner"] == "", fmt.Sprintf("running revision=%s", running) + }) + pvc, err = envInstance.K8s.CoreV1().PersistentVolumeClaims(ns).Get(ctx, name+"-data", metav1.GetOptions{}) + if err != nil || pvc.UID != oldPVC { + t.Fatalf("adoption replaced PVC: %v", err) + } + if out, err := envInstance.Kubectl(ctx, "exec", "-n", ns, name+"-0", "-c", "game", "--", "sh", "-c", "cat /data/save-marker; printf ':'; cat /data/revision.txt"); err != nil || strings.TrimSpace(out) != "retained:new" { + t.Fatalf("persisted contents after adoption: %s %v", out, err) + } +} diff --git a/web/specs.md b/web/specs.md index d24b3f964..2eaa729be 100644 --- a/web/specs.md +++ b/web/specs.md @@ -10,6 +10,10 @@ The Gameplane dashboard is a React SPA providing a UI layer over the Gameplane A ## Responsibilities +GameServer domain types include optional `spec.templateRollout` policy/exact +revision request and `status.templateRevision` desired/effective/running digests. +These are CRD/API contracts; no new rollout controls or visual flow are defined. + - Render all authenticated Gameplane CRDs and operations as React pages and interactive forms - Handle user authentication (local + OIDC) and session management (cookies + CSRF tokens) - Fetch and cache data via TanStack Query; invalidate caches on Kubernetes watch events (SSE) diff --git a/web/src/types.ts b/web/src/types.ts index 880c2b72c..729ca5ed0 100644 --- a/web/src/types.ts +++ b/web/src/types.ts @@ -541,6 +541,7 @@ export interface GameServer { metadata: ObjectMeta & { resourceVersion?: string }; spec: { templateRef: { name: string }; + templateRollout?: { policy?: "Automatic" | "OnRequest"; requestedRevision?: string }; suspend?: boolean; // Seconds the operator waits for the template's stop sequence to run // over RCON before scaling the pod down (soft-stop). Range 0–600, @@ -576,6 +577,7 @@ export interface GameServer { }; status?: { phase?: GameServerPhase; + templateRevision?: { desired?: string; effective?: string; running?: string }; endpoints?: GameServerEndpoint[]; agent?: { lastHeartbeat?: string; From 7ff89554eb037dd5e0c9fa7341ede7d0c696dcbc Mon Sep 17 00:00:00 2001 From: Baylem Date: Wed, 21 Oct 2026 17:10:55 -0400 Subject: [PATCH 03/17] test: model backup status writes in revision fixtures Signed-off-by: Baylem --- .../internal/controller/gameserver_template_revision_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/operator/internal/controller/gameserver_template_revision_test.go b/operator/internal/controller/gameserver_template_revision_test.go index 80d94074d..46706339c 100644 --- a/operator/internal/controller/gameserver_template_revision_test.go +++ b/operator/internal/controller/gameserver_template_revision_test.go @@ -26,7 +26,7 @@ func revisionFixture(t *testing.T) (*GameServerReconciler, *gameplanev1alpha1.Ga } gs := &gameplanev1alpha1.GameServer{ObjectMeta: metav1.ObjectMeta{Name: "game", Namespace: "games", UID: "server-uid"}, Spec: gameplanev1alpha1.GameServerSpec{TemplateRef: gameplanev1alpha1.GameTemplateRef{Name: "template"}, TemplateRollout: &gameplanev1alpha1.TemplateRolloutSpec{Policy: "OnRequest"}}} tmpl := &gameplanev1alpha1.GameTemplate{ObjectMeta: metav1.ObjectMeta{Name: "template"}, Spec: gameplanev1alpha1.GameTemplateSpec{Image: "example.invalid/game:old", Env: []corev1.EnvVar{{Name: "REVISION", Value: "old"}}}} - c := fake.NewClientBuilder().WithScheme(s).WithObjects(gs, tmpl).WithStatusSubresource(gs, &appsv1.StatefulSet{}).Build() + c := fake.NewClientBuilder().WithScheme(s).WithObjects(gs, tmpl).WithStatusSubresource(gs, &appsv1.StatefulSet{}, &gameplanev1alpha1.Backup{}).Build() r := &GameServerReconciler{Client: c, APIReader: c, Scheme: s} digest, err := r.saveTemplateSnapshot(t.Context(), gs, tmpl) if err != nil { From 3ab227e074eb9888bfaab4151fac43214b14961c Mon Sep 17 00:00:00 2001 From: Baylem Date: Wed, 21 Oct 2026 22:49:08 -0400 Subject: [PATCH 04/17] fix(e2e): isolate rollout fixtures and observe workload stops Signed-off-by: Baylem --- .../controller/gameserver_envtest_test.go | 26 +++++++------ .../controller/helpers_envtest_test.go | 9 ++--- .../controller/manager_scope_envtest_test.go | 39 +++++++++++++++++++ test/e2e/template_rollout_e2e_test.go | 39 ++++++++++--------- 4 files changed, 78 insertions(+), 35 deletions(-) create mode 100644 operator/internal/controller/manager_scope_envtest_test.go diff --git a/operator/internal/controller/gameserver_envtest_test.go b/operator/internal/controller/gameserver_envtest_test.go index 8c18ad7e3..bbdb2e707 100644 --- a/operator/internal/controller/gameserver_envtest_test.go +++ b/operator/internal/controller/gameserver_envtest_test.go @@ -2045,9 +2045,8 @@ func TestGameServer_ConfigFilesMaterialize(t *testing.T) { return true, "" }) - // Dropping configFiles from the template must delete the Secret and - // strip the init container + volume. Template edits don't trigger a - // GameServer reconcile (no cross-watch), so poke the GameServer. + // Dropping configFiles from the template must adopt the new revision, + // delete the Secret, and strip the init container + volume. // Retry on conflict — reconcilers patch status concurrently, racing a // bare Get+Update's resourceVersion. if err := retry.RetryOnConflict(retry.DefaultRetry, func() error { @@ -2070,14 +2069,19 @@ func TestGameServer_ConfigFilesMaterialize(t *testing.T) { t.Fatalf("update gameserver: %v", err) } eventually(t, func() (bool, string) { - // Re-poke each poll: the reconcile racing the template cache - // update must not strand the test. - poke := getGameServer(t, ns, "smp") - if poke.Annotations == nil { - poke.Annotations = map[string]string{} - } - poke.Annotations["test.gameplane.local/poke"] = time.Now().Format(time.RFC3339Nano) - _ = k8sClient.Update(context.Background(), poke) + // Envtest has no StatefulSet controller. Acknowledge only the + // actual stop request before the rollout may change its template. + var observed appsv1.StatefulSet + if err := k8sClient.Get(context.Background(), types.NamespacedName{Namespace: ns, Name: "smp"}, &observed); err != nil { + return false, "statefulset: " + err.Error() + } + if observed.Spec.Replicas != nil && *observed.Spec.Replicas == 0 && observed.Status.ObservedGeneration < observed.Generation { + observed.Status.ObservedGeneration = observed.Generation + observed.Status.Replicas, observed.Status.ReadyReplicas = 0, 0 + if err := k8sClient.Status().Update(context.Background(), &observed); err != nil { + return false, "observe stopped workload: " + err.Error() + } + } var sec corev1.Secret err := k8sClient.Get(context.Background(), diff --git a/operator/internal/controller/helpers_envtest_test.go b/operator/internal/controller/helpers_envtest_test.go index fbb6dccb0..d40447572 100644 --- a/operator/internal/controller/helpers_envtest_test.go +++ b/operator/internal/controller/helpers_envtest_test.go @@ -165,11 +165,10 @@ func startMgr(t *testing.T, ns string, setups ...setupReconciler) client.Client Scheme: scheme, Logger: logr.Discard(), Cache: cache.Options{ - // Include the test namespace AND cluster scope (""). Without - // the "" entry, controller-runtime's namespace-restricted - // cache will refuse to serve reads of cluster-scoped CRDs - // like GameTemplate. - DefaultNamespaces: map[string]cache.Config{ns: {}, "": {}}, + // Cluster-scoped kinds use the independent cluster cache. An + // empty namespace key means AllNamespaces and would make this + // manager reconcile fixtures left by every earlier test. + DefaultNamespaces: map[string]cache.Config{ns: {}}, }, Metrics: metricsserver.Options{BindAddress: "0"}, HealthProbeBindAddress: "0", diff --git a/operator/internal/controller/manager_scope_envtest_test.go b/operator/internal/controller/manager_scope_envtest_test.go new file mode 100644 index 000000000..4a4330f69 --- /dev/null +++ b/operator/internal/controller/manager_scope_envtest_test.go @@ -0,0 +1,39 @@ +//go:build envtest + +package controller + +import ( + "testing" + + "sigs.k8s.io/controller-runtime/pkg/client" + + gameplanev1alpha1 "github.com/GameplanePanel/gameplane/operator/api/v1alpha1" +) + +// The envtest API has no namespace garbage collector. Each new manager must +// ignore earlier fixtures while continuing to read cluster-scoped templates. +func TestManagerCacheKeepsNamespaceIsolationAndClusterScope(t *testing.T) { + ns, other := newNamespace(t), newNamespace(t) + tmpl := buildGameTemplate(uniqueName("cache-scope")) + if err := k8sClient.Create(t.Context(), tmpl); err != nil { + t.Fatal(err) + } + deleteCleanup(t, tmpl) + for _, namespace := range []string{ns, other} { + if err := k8sClient.Create(t.Context(), buildGameServer(namespace, "server", tmpl.Name)); err != nil { + t.Fatal(err) + } + } + cached := startMgr(t, ns) + var templates gameplanev1alpha1.GameTemplate + if err := cached.Get(t.Context(), client.ObjectKeyFromObject(tmpl), &templates); err != nil { + t.Fatalf("cluster-scoped template unavailable: %v", err) + } + var servers gameplanev1alpha1.GameServerList + if err := cached.List(t.Context(), &servers); err != nil { + t.Fatal(err) + } + if len(servers.Items) != 1 || servers.Items[0].Namespace != ns { + t.Fatalf("manager cache included resources outside its test namespace: %+v", servers.Items) + } +} diff --git a/test/e2e/template_rollout_e2e_test.go b/test/e2e/template_rollout_e2e_test.go index 9319a9171..0f6e7c046 100644 --- a/test/e2e/template_rollout_e2e_test.go +++ b/test/e2e/template_rollout_e2e_test.go @@ -13,6 +13,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/types" + "k8s.io/client-go/util/retry" ) // A real workload remains unchanged while a new shared template is installed, @@ -22,16 +23,25 @@ func TestGameServer_TemplateOnRequestRetainsData(t *testing.T) { ctx := context.Background() const ns, name, template = "gameplane-games", "e2e-template-stage", "e2e-template-stage" applyBusyboxTemplate(t, template) - tmpl, err := envInstance.Dyn.Resource(gameTemplateGVR).Get(ctx, template, metav1.GetOptions{}) - if err != nil { - t.Fatal(err) - } - if err := unstructured.SetNestedSlice(tmpl.Object, []any{map[string]any{"path": "revision.txt", "template": "old"}}, "spec", "configFiles"); err != nil { - t.Fatal(err) - } - if _, err := envInstance.Dyn.Resource(gameTemplateGVR).Update(ctx, tmpl, metav1.UpdateOptions{}); err != nil { - t.Fatal(err) + setConfigFile := func(contents string) { + t.Helper() + // The template controller updates status concurrently with both + // spec changes. Retry the complete read-modify-write on conflict. + if err := retry.RetryOnConflict(retry.DefaultRetry, func() error { + tmpl, err := envInstance.Dyn.Resource(gameTemplateGVR).Get(ctx, template, metav1.GetOptions{}) + if err != nil { + return err + } + if err := unstructured.SetNestedSlice(tmpl.Object, []any{map[string]any{"path": "revision.txt", "template": contents}}, "spec", "configFiles"); err != nil { + return err + } + _, err = envInstance.Dyn.Resource(gameTemplateGVR).Update(ctx, tmpl, metav1.UpdateOptions{}) + return err + }); err != nil { + t.Fatal(err) + } } + setConfigFile("old") gs := &unstructured.Unstructured{Object: map[string]any{"apiVersion": "gameplane.local/v1alpha1", "kind": "GameServer", "metadata": map[string]any{"name": name, "namespace": ns}, "spec": map[string]any{"templateRef": map[string]any{"name": template}, "templateRollout": map[string]any{"policy": "OnRequest"}}}} if _, err := envInstance.Dyn.Resource(gameServerGVR).Namespace(ns).Create(ctx, gs, metav1.CreateOptions{}); err != nil { t.Fatal(err) @@ -68,16 +78,7 @@ func TestGameServer_TemplateOnRequestRetainsData(t *testing.T) { if out, err := envInstance.Kubectl(ctx, "exec", "-n", ns, name+"-0", "-c", "game", "--", "sh", "-c", "printf retained > /data/save-marker; cat /data/revision.txt"); err != nil || strings.TrimSpace(out) != "old" { t.Fatalf("seed persisted data: %s %v", out, err) } - tmpl, err = envInstance.Dyn.Resource(gameTemplateGVR).Get(ctx, template, metav1.GetOptions{}) - if err != nil { - t.Fatal(err) - } - if err := unstructured.SetNestedSlice(tmpl.Object, []any{map[string]any{"path": "revision.txt", "template": "new"}}, "spec", "configFiles"); err != nil { - t.Fatal(err) - } - if _, err := envInstance.Dyn.Resource(gameTemplateGVR).Update(ctx, tmpl, metav1.UpdateOptions{}); err != nil { - t.Fatal(err) - } + setConfigFile("new") var desired string envInstance.Eventually(t, time.Minute, func() (bool, string) { obj := get() From 0e7282d38968ce0cc6837fc0deef88923ae49616 Mon Sep 17 00:00:00 2001 From: Baylem Date: Wed, 21 Oct 2026 22:49:07 -0400 Subject: [PATCH 05/17] fix(operator): preserve condition changes before status comparison Signed-off-by: Baylem --- operator/internal/controller/helpers.go | 4 +++- operator/internal/controller/helpers_extra_test.go | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/operator/internal/controller/helpers.go b/operator/internal/controller/helpers.go index be11001c0..8bd3890d6 100644 --- a/operator/internal/controller/helpers.go +++ b/operator/internal/controller/helpers.go @@ -13,8 +13,10 @@ import ( ) // upsertCondition replaces a condition by Type if present, otherwise -// appends. Sets LastTransitionTime to now when the status flips. +// appends. Sets LastTransitionTime to now when the status flips. Preserve the +// input slice so callers can compare old and new conditions before persisting. func upsertCondition(conds []metav1.Condition, c metav1.Condition) []metav1.Condition { + conds = append([]metav1.Condition(nil), conds...) now := metav1.Now() for i := range conds { if conds[i].Type != c.Type { diff --git a/operator/internal/controller/helpers_extra_test.go b/operator/internal/controller/helpers_extra_test.go index 85a8d2ccf..ea6ab4ce0 100644 --- a/operator/internal/controller/helpers_extra_test.go +++ b/operator/internal/controller/helpers_extra_test.go @@ -53,6 +53,19 @@ func TestUpsertCondition_StatusFlip_BumpsTimestamp(t *testing.T) { } } +func TestUpsertConditionPreservesComparisonBase(t *testing.T) { + for _, status := range []metav1.ConditionStatus{metav1.ConditionFalse, metav1.ConditionTrue} { + t.Run(string(status), func(t *testing.T) { + original := metav1.Condition{Type: "SnapshotCleaned", Status: metav1.ConditionFalse, Reason: "Pending", LastTransitionTime: metav1.Now()} + conditions := []metav1.Condition{original} + updated := upsertCondition(conditions, metav1.Condition{Type: original.Type, Status: status, Reason: "Updated"}) + if conditions[0] != original || sameConditions(conditions, updated) { + t.Fatalf("upsert hid the change from status persistence: before=%+v after=%+v", conditions, updated) + } + }) + } +} + func TestSameConditions(t *testing.T) { a := []metav1.Condition{ {Type: "Ready", Status: metav1.ConditionTrue, Reason: "Up"}, From db5db7c2ff127efba7b1fe6fffcd1d0f1a92b16c Mon Sep 17 00:00:00 2001 From: Baylem Date: Thu, 22 Oct 2026 20:33:52 -0400 Subject: [PATCH 06/17] fix(operator): retain failed restore ownership until startup drains Signed-off-by: Baylem --- docs/operator-operations.md | 7 + .../controller/gameserver_controller.go | 11 +- .../controller/lifecycle_operation.go | 16 ++ .../internal/controller/restore_lifecycle.go | 32 ++++ .../restore_startup_cleanup_test.go | 181 ++++++++++++++++++ operator/specs.md | 2 +- 6 files changed, 246 insertions(+), 3 deletions(-) create mode 100644 operator/internal/controller/restore_startup_cleanup_test.go diff --git a/docs/operator-operations.md b/docs/operator-operations.md index 88366705f..7c60b4fd9 100644 --- a/docs/operator-operations.md +++ b/docs/operator-operations.md @@ -74,6 +74,13 @@ is allowed under that reservation so storage using WaitForFirstConsumer can bind Other operations wait until the restore completes. Existing data-PVC restores continue to require an observed stopped workload and drained writers. +If initial startup fails or the Restore is deleted, cleanup first retires its +startup permission and suspends the target. The operation remains held until the +StatefulSet has observed zero replicas and every live or terminating game/PVC +writer has drained. Recovery of a force-deleted Restore applies the same check +before a successor can proceed, preserving the existing pod template while +requesting zero replicas. A successful Restore leaves its initial workload running. + Stopped-source preparation (#716), Restic preparation and quiesce deadlines (#717), CSI capture deadlines (#719), and staged template adoption (#731) are separate changes building on this ownership boundary. diff --git a/operator/internal/controller/gameserver_controller.go b/operator/internal/controller/gameserver_controller.go index 6afec928a..01b9ec971 100644 --- a/operator/internal/controller/gameserver_controller.go +++ b/operator/internal/controller/gameserver_controller.go @@ -1247,6 +1247,8 @@ func (r *GameServerReconciler) desiredReplicas( return 0, 5 * time.Second, nil } return 1, 5 * time.Second, nil + } else if held && lifecycleRecoveryNeedsStop(op) { + return 0, 5 * time.Second, nil } else if held && (op.Kind == "Backup" || op.Baseline || len(op.Recovery) != 0) { var ss appsv1.StatefulSet err := r.wipeReader().Get(ctx, client.ObjectKeyFromObject(gs), &ss) @@ -1549,8 +1551,13 @@ func (r *GameServerReconciler) reconcileStatefulSet( } if op.Kind == "Backup" || len(op.Recovery) != 0 { if !ss.CreationTimestamp.IsZero() || ss.ResourceVersion != "" { - // Preserve replicas AND the complete pod template, including - // config hashes, images, init containers and mount topology. + // Orphaned restores may leave a running initial workload. + // Stop it while preserving its complete pod template. Other + // protected operations also preserve the replica count. + if lifecycleRecoveryNeedsStop(op) { + zero := int32(0) + ss.Spec.Replicas = &zero + } return nil } // No workload exists yet. Create it stopped; this gives backup diff --git a/operator/internal/controller/lifecycle_operation.go b/operator/internal/controller/lifecycle_operation.go index 09acf54d3..6445aa927 100644 --- a/operator/internal/controller/lifecycle_operation.go +++ b/operator/internal/controller/lifecycle_operation.go @@ -268,6 +268,15 @@ func legacyLifecycleCopiesLive(ctx context.Context, c client.Client, reader clie return false, nil } +func lifecycleRecoveryNeedsStop(op lifecycleOperation) bool { + for _, predecessor := range op.Recovery { + if predecessor.Kind == "Restore" { + return true + } + } + return false +} + func recoverLifecycleOperation(ctx context.Context, c client.Client, reader client.Reader, gs *gameplanev1alpha1.GameServer, op lifecycleOperation, quiescer AgentQuiescer) (bool, error) { for _, predecessor := range op.Recovery { var busy bool @@ -286,6 +295,13 @@ func recoverLifecycleOperation(ctx context.Context, c client.Client, reader clie return false, err } } + if lifecycleRecoveryNeedsStop(op) { + r := &RestoreReconciler{Client: c, APIReader: reader, Scheme: c.Scheme()} + stopped, _, err := r.restoreTargetStopped(ctx, gs) + if err != nil || !stopped { + return false, err + } + } for _, predecessor := range op.Recovery { if !predecessor.NeedsUnquiesce { continue diff --git a/operator/internal/controller/restore_lifecycle.go b/operator/internal/controller/restore_lifecycle.go index f54d09756..91916ea54 100644 --- a/operator/internal/controller/restore_lifecycle.go +++ b/operator/internal/controller/restore_lifecycle.go @@ -262,11 +262,43 @@ func (r *RestoreReconciler) cleanupRestore(ctx context.Context, rs *gameplanev1a if err != nil { return ctrl.Result{}, err } + if !sameLifecycleOwner(op.lifecycleIdentity, restoreLifecycleIdentity(&gs, rs)) { + return ctrl.Result{}, fmt.Errorf("restore cleanup target has a different lifecycle owner") + } + if !success && (op.InitialStartup || !gs.Spec.Suspend) { + // A CSI restore may have started the game to bind its PVC. + // Retire that permission before asking the workload to stop; + // a replacement operation must not overlap the old process. + op.InitialStartup = false + gs.Spec.Suspend = true + gs.Annotations[lifecycleOperationAnnotation] = lifecycleOperationJSON(op) + if err := r.Update(ctx, &gs); err != nil { + return ctrl.Result{}, err + } + } ready, err := recoverLifecycleOperation(ctx, r.Client, r.apiReader(), &gs, op, r.OperationQuiescer) if err != nil || !ready { return ctrl.Result{RequeueAfter: 5 * time.Second}, err } } + if !success { + if !gs.Spec.Suspend { + gs.Spec.Suspend = true + if err := r.Update(ctx, &gs); err != nil { + return ctrl.Result{}, err + } + } + stopped, progressed, err := r.restoreTargetStopped(ctx, &gs) + if err != nil { + return ctrl.Result{}, err + } + if progressed { + return ctrl.Result{Requeue: true}, nil + } + if !stopped { + return ctrl.Result{RequeueAfter: 5 * time.Second}, nil + } + } if err := clearLifecycleOperation(ctx, r.Client, r.apiReader(), &gs, restoreLifecycleIdentity(&gs, rs)); err != nil { return ctrl.Result{}, err } diff --git a/operator/internal/controller/restore_startup_cleanup_test.go b/operator/internal/controller/restore_startup_cleanup_test.go new file mode 100644 index 000000000..5ac8e40e1 --- /dev/null +++ b/operator/internal/controller/restore_startup_cleanup_test.go @@ -0,0 +1,181 @@ +package controller + +import ( + "testing" + + appsv1 "k8s.io/api/apps/v1" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "sigs.k8s.io/controller-runtime/pkg/client" + + gameplanev1alpha1 "github.com/GameplanePanel/gameplane/operator/api/v1alpha1" +) + +func startupCleanupFixture(t *testing.T) (*RestoreReconciler, *gameplanev1alpha1.GameServer, *gameplanev1alpha1.Restore, *appsv1.StatefulSet, *corev1.Pod) { + t.Helper() + r, gs, rs := restoreLifecycleFixture(t) + rs.Annotations = map[string]string{restoreTargetAnnotation: restoreIdentityJSON(gs.Name, gs.UID)} + rs.Finalizers = []string{restoreCleanupFinalizer} + if err := r.Update(t.Context(), rs); err != nil { + t.Fatal(err) + } + op := lifecycleOperation{lifecycleIdentity: restoreLifecycleIdentity(gs, rs)} + op.InitialStartup = true + gs.Spec.Suspend = false + gs.Annotations = map[string]string{restoreGuardAnnotation: restoreIdentityJSON(rs.Name, rs.UID), lifecycleOperationAnnotation: lifecycleOperationJSON(op)} + if err := r.Update(t.Context(), gs); err != nil { + t.Fatal(err) + } + ss := &appsv1.StatefulSet{} + if err := r.Get(t.Context(), client.ObjectKeyFromObject(gs), ss); err != nil { + t.Fatal(err) + } + one := int32(1) + ss.Spec.Replicas = &one + ss.Spec.Template.Spec.Containers = []corev1.Container{{Name: "game", Image: "restored-image"}} + if err := r.Update(t.Context(), ss); err != nil { + t.Fatal(err) + } + ss.Status.Replicas = 1 + ss.Status.ObservedGeneration = ss.Generation + if err := r.Status().Update(t.Context(), ss); err != nil { + t.Fatal(err) + } + pod := &corev1.Pod{ObjectMeta: metav1.ObjectMeta{Name: gs.Name + "-0", Namespace: gs.Namespace, UID: "startup-pod", Finalizers: []string{"test/hold"}, OwnerReferences: []metav1.OwnerReference{{APIVersion: "apps/v1", Kind: "StatefulSet", Name: ss.Name, UID: ss.UID, Controller: ownerBoolPtr(true)}}}, Status: corev1.PodStatus{Phase: corev1.PodRunning}} + if err := r.Create(t.Context(), pod); err != nil { + t.Fatal(err) + } + return r, gs, rs, ss, pod +} + +func TestRestoreStartupCleanupDrainsBeforeRelease(t *testing.T) { + for _, outcome := range []string{"failed", "deleted", "succeeded"} { + t.Run(outcome, func(t *testing.T) { + r, gs, rs, ss, pod := startupCleanupFixture(t) + rs.Status.Phase = gameplanev1alpha1.RestorePhaseFailed + if outcome == "succeeded" { + rs.Status.Phase = gameplanev1alpha1.RestorePhaseSucceeded + } + if err := r.Status().Update(t.Context(), rs); err != nil { + t.Fatal(err) + } + if outcome == "deleted" { + if err := r.Delete(t.Context(), rs); err != nil { + t.Fatal(err) + } + if err := r.Get(t.Context(), client.ObjectKeyFromObject(rs), rs); err != nil { + t.Fatal(err) + } + } + res, err := r.cleanupRestore(t.Context(), rs) + if err != nil { + t.Fatal(err) + } + gs = lifecycleServer(t, r) + if outcome == "succeeded" { + if gs.Spec.Suspend || gs.Annotations[lifecycleOperationAnnotation] != "" || res.RequeueAfter != 0 { + t.Fatalf("successful startup was stopped: %+v %+v", gs, res) + } + return + } + op, held, err := lifecycleOwner(gs) + if err != nil || !held || op.InitialStartup || !gs.Spec.Suspend || res.RequeueAfter == 0 { + t.Fatalf("failed startup released or retained permission to start: %+v %+v %v", gs, res, err) + } + // An observed scale-down does not prove a terminating Pod drained. + zero := int32(0) + ss.Spec.Replicas = &zero + if err := r.Update(t.Context(), ss); err != nil { + t.Fatal(err) + } + ss.Status.Replicas, ss.Status.ObservedGeneration = 0, ss.Generation + if err := r.Status().Update(t.Context(), ss); err != nil { + t.Fatal(err) + } + if err := r.Delete(t.Context(), pod); err != nil { + t.Fatal(err) + } + if res, err := r.cleanupRestore(t.Context(), rs); err != nil || res.RequeueAfter == 0 || lifecycleServer(t, r).Annotations[lifecycleOperationAnnotation] == "" { + t.Fatalf("terminating startup Pod lost exclusion: %+v %v", res, err) + } + if err := r.Get(t.Context(), client.ObjectKeyFromObject(pod), pod); err != nil { + t.Fatal(err) + } + pod.Finalizers = nil + if err := r.Update(t.Context(), pod); err != nil { + t.Fatal(err) + } + for range 2 { + if _, err := r.cleanupRestore(t.Context(), rs); err != nil { + t.Fatal(err) + } + } + gs = lifecycleServer(t, r) + if !gs.Spec.Suspend || gs.Annotations[lifecycleOperationAnnotation] != "" || gs.Annotations[restoreGuardAnnotation] != "" { + t.Fatalf("drained failed startup did not settle suspended: %+v", gs) + } + }) + } +} + +func TestOrphanRestoreStartupDrainsBeforeNextOwnerProceeds(t *testing.T) { + r, gs, rs, ss, pod := startupCleanupFixture(t) + rs.Finalizers = nil + if err := r.Update(t.Context(), rs); err != nil { + t.Fatal(err) + } + if err := r.Delete(t.Context(), rs); err != nil { + t.Fatal(err) + } + b := guardBackup("next") + if err := r.Create(t.Context(), b); err != nil { + t.Fatal(err) + } + want := backupLifecycleIdentity(gs, b, false) + if ready, err := claimLifecycleOperation(t.Context(), r.Client, r.apiReader(), gs, want, nil); err != nil || ready { + t.Fatalf("orphan startup admitted another operation: %t %v", ready, err) + } + gr := &GameServerReconciler{Client: r.Client, APIReader: r.apiReader(), Scheme: r.Scheme} + if replicas, _, err := gr.desiredReplicas(t.Context(), gs, &gameplanev1alpha1.GameTemplate{}, idleAwake); err != nil || replicas != 0 { + t.Fatalf("orphan recovery did not request zero replicas: %d %v", replicas, err) + } + // Even a stale callback asking for one replica must stop the old process + // without changing the template before the successor owns clean data. + if err := gr.reconcileStatefulSet(t.Context(), gs, &gameplanev1alpha1.GameTemplate{}, nil, &materializedConfig{}, 1); err != nil { + t.Fatal(err) + } + if err := r.Get(t.Context(), client.ObjectKeyFromObject(ss), ss); err != nil { + t.Fatal(err) + } + if *ss.Spec.Replicas != 0 || ss.Spec.Template.Spec.Containers[0].Image != "restored-image" { + t.Fatalf("orphan recovery did not preserve the stopped template: %+v", ss.Spec) + } + ss.Status.Replicas, ss.Status.ObservedGeneration = 0, ss.Generation + if err := r.Status().Update(t.Context(), ss); err != nil { + t.Fatal(err) + } + if ready, err := claimLifecycleOperation(t.Context(), r.Client, r.apiReader(), gs, want, nil); err != nil || ready { + t.Fatalf("observed scale-down bypassed live startup Pod: %t %v", ready, err) + } + pod.Finalizers = nil + if err := r.Update(t.Context(), pod); err != nil { + t.Fatal(err) + } + if err := r.Delete(t.Context(), pod); err != nil { + t.Fatal(err) + } + ready := false + for range 2 { + var err error + ready, err = claimLifecycleOperation(t.Context(), r.Client, r.apiReader(), gs, want, nil) + if err != nil { + t.Fatal(err) + } + if ready { + break + } + } + if !ready { + t.Fatal("drained predecessor did not permit successor") + } +} diff --git a/operator/specs.md b/operator/specs.md index 516fc53eb..60308563c 100644 --- a/operator/specs.md +++ b/operator/specs.md @@ -329,7 +329,7 @@ Primary reconcilers register with the manager in `cmd/main.go` and handle CRD li - Suspend: wait for Suspended/Stopped status plus the actual workload: the owned StatefulSet must exist, request zero replicas, report zero replicas, and have observed its current generation. An absent StatefulSet waits for workload reconciliation; a missing template or broken workload must be repaired before restore can proceed. No live or terminating game pod or pod mounting the data PVC may remain. Nonterminal Jobs mounting that PVC must also finish before a new restore Job starts. These checks use the uncached API reader and run again immediately before creating the Job. - The stopped StatefulSet also receives the owning Restore guard. A successful fence write immediately requeues the Restore to repeat the workload and writer checks; only external drainage waits use the polling delay. Its mutation callback honors that guard even when the GameServer cache snapshot predates acquisition, fencing delayed scale-up writes with the StatefulSet resourceVersion. Cleanup removes both guards after workers drain. - Restore Job: mount snapshot (from VolumeSnapshot or restic), run restic restore. Job carries BackoffLimit and ActiveDeadlineSeconds from the reconciler's JobBackoffLimit / JobActiveDeadlineSeconds fields (operator flags --backup-job-backoff-limit / --backup-job-active-deadline-seconds, Helm operator.backupJobBackoffLimit / operator.backupJobActiveDeadlineSeconds; defaults 2 and 86400, applied when unset; spec 018 OD-027); Job failure is recognized only from a Failed=True condition. Legacy in-flight Jobs without the pinned target annotation fail the Restore and are canceled/drained; operators can start a fresh Restore after cleanup. Pod SecurityContext takes FSGroup from the target GameTemplate's spec.security.fsGroup (fallback 65532 if template missing). - - Resume: once the restore Job succeeds and its live pods have drained, persist Succeeded before releasing the matching guard and clearing suspend in the same pass. This ordering survives interrupted status writes or operator restarts; it does not wait for the GameServer to reach Running again. Failure/deletion cancels active owned Jobs with foreground deletion and retains the guard/finalizer until Jobs and live worker pods drain, then leaves the target suspended. A missing or recreated guard owner can be recovered only after its UID's orphan Jobs and workers drain. Target recreation fails the old restore; cleanup never changes the replacement server. + - Resume: once the restore Job succeeds and its live pods have drained, persist Succeeded before releasing the matching guard and clearing suspend in the same pass. This ordering survives interrupted status writes or operator restarts; it does not wait for the GameServer to reach Running again. Failure/deletion cancels active owned Jobs with foreground deletion, retires CSI initial-startup permission and suspends the target while retaining the guard/finalizer. Release additionally requires an owned StatefulSet with desired/observed zero replicas at its current generation, no live or terminating game/PVC writer pods and no pending PVC writer Jobs. Orphan recovery applies the same stopped-target proof before admitting a successor, preserving the template while forcing zero replicas. Successful CSI restores keep their initial workload running. Target recreation fails the old restore; cleanup never changes the replacement server. - Status: report phase (Pending/Suspending/Running/Succeeded/Failed). `RestorePhaseResuming` is declared on the type but never assigned by this reconciler (F-260). - Volume-snapshot restore reference handling: When a volume-snapshot restore stands up a new GameServer from the original server's spec, any references in spec.env (SecretKeyRef, ConfigMapKeyRef) and spec.networking.tunnel.credentialsSecretRef that are owned by the original server must be copied to new objects owned by the restored server, with rewritten names, because the restored server does not own the originals. Ownership of a source object is an OwnerReference to the original server (Kind, Name, UID) and is re-verified against the source object immediately before each copy, not just once during planning. An object that already exists under a copy name is accepted only if the restored server controls it (a controller OwnerReference, `controller: true`); otherwise the restore fails. The restore fails before the new GameServer is created if the original server does not own every referenced object. The references are rewritten in the new GameServer's spec when it is created, and the copies are made right after creation and re-ensured on every reconcile pass. Only an ownership refusal fails the restore; transient errors (stale cache reads, write conflicts, a referenced object not yet visible in the cache) requeue it. A restore's 10-minute deadline starts when the restore first plans the new server (before it is created) and covers both creating the server with its reference copies and waiting for it to reach Running; it is enforced even while a transient error (such as a referenced object that stays missing) keeps recurring, so the restore cannot run past the limit, and once it expires the restore fails with a deadline message. From 0e0d5d9c51706dcb2e332ecc7f94fb238fa94292 Mon Sep 17 00:00:00 2001 From: Baylem Date: Fri, 23 Oct 2026 00:19:17 -0400 Subject: [PATCH 07/17] test: preserve controller updates in lifecycle fixtures Signed-off-by: Baylem --- .../controller/helpers_envtest_test.go | 18 ++++++++++++------ .../controller/networkcapture_envtest_test.go | 19 +++++++++++++------ .../restore_startup_cleanup_test.go | 4 ++-- 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/operator/internal/controller/helpers_envtest_test.go b/operator/internal/controller/helpers_envtest_test.go index d40447572..8069878a8 100644 --- a/operator/internal/controller/helpers_envtest_test.go +++ b/operator/internal/controller/helpers_envtest_test.go @@ -570,12 +570,18 @@ func markBackupSucceeded(t *testing.T, ns, name, snapshotID, size string) { // reconciler waits for Suspended/Stopped before advancing to Running. func markGameServerPhase(t *testing.T, ns, name string, phase gameplanev1alpha1.GameServerPhase) { t.Helper() - var gs gameplanev1alpha1.GameServer - if err := k8sClient.Get(context.Background(), types.NamespacedName{Namespace: ns, Name: name}, &gs); err != nil { - t.Fatalf("get gameserver: %v", err) - } - gs.Status.Phase = phase - if err := k8sClient.Status().Update(context.Background(), &gs); err != nil { + // The Restore reconciler also writes the target's ownership annotations. + // Refetch after conflicts so this simulated status observation preserves + // concurrent controller writes without turning them into fixture failures. + ctx := t.Context() + if err := retry.RetryOnConflict(retry.DefaultRetry, func() error { + var gs gameplanev1alpha1.GameServer + if err := k8sClient.Get(ctx, types.NamespacedName{Namespace: ns, Name: name}, &gs); err != nil { + return err + } + gs.Status.Phase = phase + return k8sClient.Status().Update(ctx, &gs) + }); err != nil { t.Fatalf("status update gameserver: %v", err) } } diff --git a/operator/internal/controller/networkcapture_envtest_test.go b/operator/internal/controller/networkcapture_envtest_test.go index f7cf85007..5c5d2e12d 100644 --- a/operator/internal/controller/networkcapture_envtest_test.go +++ b/operator/internal/controller/networkcapture_envtest_test.go @@ -510,12 +510,19 @@ func TestNetworkCapture_UserStopCallsSidecar(t *testing.T) { // Emulate the API's StopNetworkCapture: patch status directly to // Completed with its exact message, bypassing the reconciler. - nc := getNetworkCapture(t, ns, "cap-stop-001") - now := metav1.NewTime(time.Now().UTC()) - nc.Status.Phase = gameplanev1alpha1.CapturePhaseCompleted - nc.Status.CompletionTime = &now - nc.Status.Message = "stopped by user request" - if err := k8sClient.Status().Update(context.Background(), nc); err != nil { + // The active reconciler may refresh capture progress between Get and Update. + ctx := t.Context() + if err := retry.RetryOnConflict(retry.DefaultRetry, func() error { + var nc gameplanev1alpha1.NetworkCapture + if err := k8sClient.Get(ctx, types.NamespacedName{Namespace: ns, Name: "cap-stop-001"}, &nc); err != nil { + return err + } + now := metav1.NewTime(time.Now().UTC()) + nc.Status.Phase = gameplanev1alpha1.CapturePhaseCompleted + nc.Status.CompletionTime = &now + nc.Status.Message = "stopped by user request" + return k8sClient.Status().Update(ctx, &nc) + }); err != nil { t.Fatalf("patch capture to user-stopped: %v", err) } diff --git a/operator/internal/controller/restore_startup_cleanup_test.go b/operator/internal/controller/restore_startup_cleanup_test.go index 5ac8e40e1..78da66458 100644 --- a/operator/internal/controller/restore_startup_cleanup_test.go +++ b/operator/internal/controller/restore_startup_cleanup_test.go @@ -51,7 +51,7 @@ func startupCleanupFixture(t *testing.T) (*RestoreReconciler, *gameplanev1alpha1 func TestRestoreStartupCleanupDrainsBeforeRelease(t *testing.T) { for _, outcome := range []string{"failed", "deleted", "succeeded"} { t.Run(outcome, func(t *testing.T) { - r, gs, rs, ss, pod := startupCleanupFixture(t) + r, _, rs, ss, pod := startupCleanupFixture(t) rs.Status.Phase = gameplanev1alpha1.RestorePhaseFailed if outcome == "succeeded" { rs.Status.Phase = gameplanev1alpha1.RestorePhaseSucceeded @@ -71,7 +71,7 @@ func TestRestoreStartupCleanupDrainsBeforeRelease(t *testing.T) { if err != nil { t.Fatal(err) } - gs = lifecycleServer(t, r) + gs := lifecycleServer(t, r) if outcome == "succeeded" { if gs.Spec.Suspend || gs.Annotations[lifecycleOperationAnnotation] != "" || res.RequeueAfter != 0 { t.Fatalf("successful startup was stopped: %+v %+v", gs, res) From 2081831728a6799c6d98a6387164e7069b001484 Mon Sep 17 00:00:00 2001 From: Baylem Date: Fri, 23 Oct 2026 00:19:17 -0400 Subject: [PATCH 08/17] test: synchronize closed RCON response fixtures Signed-off-by: Baylem --- agent/internal/rcon/nuclearoption_test.go | 29 +++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/agent/internal/rcon/nuclearoption_test.go b/agent/internal/rcon/nuclearoption_test.go index 248c6a7fb..9061d2c94 100644 --- a/agent/internal/rcon/nuclearoption_test.go +++ b/agent/internal/rcon/nuclearoption_test.go @@ -1275,18 +1275,47 @@ type pipeFrameCase struct { forbidErr string // substring the error must NOT contain (e.g. a detail suffix) } +type responseDeadlineConn struct { + net.Conn + deadlineSet chan<- struct{} +} + +func (c *responseDeadlineConn) SetDeadline(deadline time.Time) error { + if err := c.Conn.SetDeadline(deadline); err != nil { + return err + } + select { + case c.deadlineSet <- struct{}{}: + default: + } + return nil +} + // runPipeFrameCases sends each case's raw frame back to the client over net.Pipe // and checks the body or the error. func runPipeFrameCases(t *testing.T, tests []pipeFrameCase) { t.Helper() for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { + deadlineSet := make(chan struct{}, 1) client := newPipeClient(t, func(remote net.Conn) { if _, _, err := readNuclearOptionRequest(remote); err != nil { return } + if len(tt.frame) == 0 { + // Exec sets its response deadline after sending the request. + // Closing first can fail SetDeadline instead of the status read. + select { + case <-deadlineSet: + case <-t.Context().Done(): + return + } + } writeFrameSegments(remote, tt.frame, tt.oneByte) }) + if len(tt.frame) == 0 { + client.conn = &responseDeadlineConn{Conn: client.conn, deadlineSet: deadlineSet} + } body, err := client.Exec("test-command") if tt.wantErr != "" { From 575a912e229458cf90acacd1d07cf8ad8a541876 Mon Sep 17 00:00:00 2001 From: Baylem Date: Sat, 24 Oct 2026 10:53:50 -0400 Subject: [PATCH 09/17] test: verify shared PID survives restricted capture Signed-off-by: Baylem --- test/e2e/restricted_workloads_e2e_test.go | 6 ++++++ test/e2e/specs.md | 2 ++ 2 files changed, 8 insertions(+) diff --git a/test/e2e/restricted_workloads_e2e_test.go b/test/e2e/restricted_workloads_e2e_test.go index 823b1d403..703e5991c 100644 --- a/test/e2e/restricted_workloads_e2e_test.go +++ b/test/e2e/restricted_workloads_e2e_test.go @@ -74,6 +74,9 @@ func TestRestrictedWorkloads_NodeCaptureAndTokenRotation(t *testing.T) { if pod.Spec.AutomountServiceAccountToken == nil || *pod.Spec.AutomountServiceAccountToken || len(pod.Spec.InitContainers) != 1 || len(pod.Spec.EphemeralContainers) != 0 { t.Fatalf("unexpected restricted pod: %+v", pod.Spec) } + if pod.Spec.ShareProcessNamespace == nil || !*pod.Spec.ShareProcessNamespace { + t.Fatal("restricted profile must retain shared PID for agent metrics") + } for _, c := range append(pod.Spec.Containers, pod.Spec.InitContainers...) { sc := c.SecurityContext if sc == nil || sc.RunAsNonRoot == nil || !*sc.RunAsNonRoot || sc.AllowPrivilegeEscalation == nil || *sc.AllowPrivilegeEscalation || sc.Capabilities == nil || len(sc.Capabilities.Add) != 0 || len(sc.Capabilities.Drop) != 1 || sc.Capabilities.Drop[0] != "ALL" || sc.SeccompProfile == nil || sc.SeccompProfile.Type != corev1.SeccompProfileTypeRuntimeDefault { @@ -237,6 +240,9 @@ func TestRestrictedWorkloads_NodeCaptureAndTokenRotation(t *testing.T) { if live.UID != pod.UID || len(live.Spec.EphemeralContainers) != 0 { t.Fatal("capture restarted or injected into game pod") } + if live.Spec.ShareProcessNamespace == nil || !*live.Spec.ShareProcessNamespace { + t.Fatal("capture changed the shared PID profile required for agent metrics") + } for i, c := range live.Status.ContainerStatuses { if c.RestartCount != pod.Status.ContainerStatuses[i].RestartCount { t.Fatal("capture restarted game/agent container") diff --git a/test/e2e/specs.md b/test/e2e/specs.md index 486f3f813..1eb527c6d 100644 --- a/test/e2e/specs.md +++ b/test/e2e/specs.md @@ -18,6 +18,8 @@ opt-in, traffic-bearing PCAP download, unchanged game Pod UID/restart counts, worker cleanup on completion/revocation, and cross-namespace resource cleanup after GameServer deletion. Local work compiles test sources only; CI executes the drill and all unit/chart regressions. +The drill explicitly verifies that shared PID remains enabled for agent metrics +after the Restricted upgrade and after capture completion and revocation. The `test/e2e` module is Gameplane's end-to-end test suite: it stands up a real (kind-based) Kubernetes cluster, installs the Helm chart, and drives the operator/api/agent/sentinel stack as real components rather than mocks — CRDs applied through the typed/dynamic client, HTTP calls through a real port-forward, RCON/wire-protocol joins against real game server containers. Where the other modules' test tiers (unit, envtest) prove a component's own logic in isolation, this module proves the whole product works together on a cluster shaped like the ones users actually run. From 32addfe916554347e82fbeb65e78ba966a103348 Mon Sep 17 00:00:00 2001 From: Baylem Date: Sat, 24 Oct 2026 11:00:07 -0400 Subject: [PATCH 10/17] fix: allow guarded wipe recovery to drain workloads Signed-off-by: Baylem --- .../controller/gameserver_controller.go | 10 + .../gameserver_lifecycle_reconcile_test.go | 365 ++++++++++++++++++ .../internal/controller/gameserver_wipe.go | 10 +- .../controller/gameserver_wipe_guard.go | 23 +- operator/specs.md | 10 +- 5 files changed, 411 insertions(+), 7 deletions(-) create mode 100644 operator/internal/controller/gameserver_lifecycle_reconcile_test.go diff --git a/operator/internal/controller/gameserver_controller.go b/operator/internal/controller/gameserver_controller.go index 01b9ec971..3ce22a11b 100644 --- a/operator/internal/controller/gameserver_controller.go +++ b/operator/internal/controller/gameserver_controller.go @@ -38,6 +38,10 @@ import ( gameplanev1alpha1 "github.com/GameplanePanel/gameplane/operator/api/v1alpha1" ) +// Lifecycle annotation conflicts need a fresh reconcile, not an error backoff. +// Give concurrent writers and the informer cache a bounded interval to settle. +const lifecycleConflictRetry = time.Second + // GameServerReconciler reconciles a GameServer object into a StatefulSet, // Service, and PVC. The agent sidecar is injected at pod-spec build time. type GameServerReconciler struct { @@ -360,6 +364,9 @@ func (r *GameServerReconciler) Reconcile(ctx context.Context, req ctrl.Request) // single status patch further down. idle, idleStatus, idleRequeue, idleScheduleErr, err := r.reconcileIdle(ctx, &gs) if err != nil { + if apierrors.IsConflict(err) { + return ctrl.Result{RequeueAfter: lifecycleConflictRetry}, nil + } logger.Error(err, "reconcile idle") return ctrl.Result{}, err } @@ -409,6 +416,9 @@ func (r *GameServerReconciler) Reconcile(ctx context.Context, req ctrl.Request) replicas, stopRequeue, err := r.desiredReplicas(ctx, &gs, &tmpl, idle, &wipeState) if err != nil { + if apierrors.IsConflict(err) { + return ctrl.Result{RequeueAfter: lifecycleConflictRetry}, nil + } logger.Error(err, "compute desired replicas") return ctrl.Result{}, err } diff --git a/operator/internal/controller/gameserver_lifecycle_reconcile_test.go b/operator/internal/controller/gameserver_lifecycle_reconcile_test.go new file mode 100644 index 000000000..3be7f0010 --- /dev/null +++ b/operator/internal/controller/gameserver_lifecycle_reconcile_test.go @@ -0,0 +1,365 @@ +package controller + +import ( + "context" + "crypto/rand" + "crypto/rsa" + "crypto/x509" + "encoding/pem" + "errors" + "fmt" + "reflect" + "testing" + "time" + + "github.com/go-logr/logr" + appsv1 "k8s.io/api/apps/v1" + batchv1 "k8s.io/api/batch/v1" + corev1 "k8s.io/api/core/v1" + apierrors "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + clientgoscheme "k8s.io/client-go/kubernetes/scheme" + "k8s.io/client-go/util/cert" + ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/client/fake" + "sigs.k8s.io/controller-runtime/pkg/client/interceptor" + "sigs.k8s.io/controller-runtime/pkg/log" + + gameplanev1alpha1 "github.com/GameplanePanel/gameplane/operator/api/v1alpha1" +) + +func lifecycleGameServerFixture(t *testing.T, gs *gameplanev1alpha1.GameServer, extras ...client.Object) *GameServerReconciler { + t.Helper() + s := wipeScheme(t) + if err := clientgoscheme.AddToScheme(s); err != nil { + t.Fatal(err) + } + tmpl := &gameplanev1alpha1.GameTemplate{ObjectMeta: metav1.ObjectMeta{Name: gs.Spec.TemplateRef.Name}, Spec: gameplanev1alpha1.GameTemplateSpec{Image: "example.invalid/game:unit"}} + key, err := rsa.GenerateKey(rand.Reader, 2048) + if err != nil { + t.Fatal(err) + } + ca, err := cert.NewSelfSignedCACert(cert.Config{CommonName: "lifecycle-reconcile-test"}, key) + if err != nil { + t.Fatal(err) + } + caSecret := &corev1.Secret{ObjectMeta: metav1.ObjectMeta{Name: "agent-ca", Namespace: gs.Namespace}, Data: map[string][]byte{ + "ca.crt": pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: ca.Raw}), + "ca.key": pem.EncodeToMemory(&pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(key)}), + }} + objects := append([]client.Object{gs, tmpl, caSecret}, extras...) + c := fake.NewClientBuilder().WithScheme(s).WithObjects(objects...). + WithStatusSubresource(gs, &appsv1.StatefulSet{}, &batchv1.Job{}).Build() + r := &GameServerReconciler{Client: c, APIReader: c, Scheme: s, AgentCASecretName: caSecret.Name, AgentCASecretNamespace: caSecret.Namespace} + // These regressions start after template admission so their first public + // pass exercises lifecycle recovery or the intended annotation conflict. + revision, err := r.saveTemplateSnapshot(t.Context(), gs, tmpl) + if err != nil { + t.Fatal(err) + } + if gs.Annotations == nil { + gs.Annotations = map[string]string{} + } + gs.Annotations[effectiveTemplateAnnotation] = revision + if err := c.Update(t.Context(), gs); err != nil { + t.Fatal(err) + } + op, held, err := lifecycleOwner(gs) + if err != nil { + t.Fatal(err) + } + if err := r.reportTemplateRevision(t.Context(), gs, revision, op, held); err != nil { + t.Fatal(err) + } + return r +} + +func requireNoWipeJob(t *testing.T, r *GameServerReconciler, gs *gameplanev1alpha1.GameServer) { + t.Helper() + var job batchv1.Job + if err := r.Get(t.Context(), client.ObjectKey{Namespace: gs.Namespace, Name: gs.Name + "-wipe"}, &job); !apierrors.IsNotFound(err) { + t.Fatalf("wipe launched before recovery completed: %v", err) + } +} + +func TestGameServerWipeReconcileDrainsOrphanRestoreStartup(t *testing.T) { + gs := wipeGameServer(false, "wipe") + predecessor := lifecycleIdentity{Kind: "Restore", Name: "deleted", UID: "deleted-restore", TargetUID: gs.UID, InitialStartup: true} + gs.Annotations[lifecycleOperationAnnotation] = lifecycleOperationJSON(lifecycleOperation{lifecycleIdentity: predecessor}) + gs.Annotations[restoreGuardAnnotation] = restoreIdentityJSON(predecessor.Name, predecessor.UID) + ss := wipeStoppedSet(gs) + one := int32(1) + ss.Spec.Replicas, ss.Status.Replicas = &one, 1 + ss.Spec.Template.Spec.Containers = []corev1.Container{{Name: "game", Image: "restored-image"}} + originalTemplate := ss.Spec.Template.DeepCopy() + pod := &corev1.Pod{ObjectMeta: metav1.ObjectMeta{Name: gs.Name + "-0", Namespace: gs.Namespace, UID: "startup", Finalizers: []string{"test/hold"}, + OwnerReferences: []metav1.OwnerReference{{APIVersion: "apps/v1", Kind: "StatefulSet", Name: ss.Name, UID: ss.UID, Controller: ownerBoolPtr(true)}}}, Status: corev1.PodStatus{Phase: corev1.PodRunning}} + r := lifecycleGameServerFixture(t, gs, ss, pod) + request := ctrl.Request{NamespacedName: client.ObjectKeyFromObject(gs)} + // Admission persists the successor. The next public pass must reach the + // StatefulSet controller instead of waiting for its own scale-down. + for range 2 { + if _, err := r.Reconcile(t.Context(), request); err != nil { + t.Fatal(err) + } + } + current := wipeCurrent(t, r.Client, gs) + op, held, err := lifecycleOwner(current) + if err != nil || !held || op.Kind != "Wipe" || len(op.Recovery) != 1 || op.Recovery[0].UID != predecessor.UID || !current.Spec.Suspend { + t.Fatalf("orphan recovery lost its identity or exclusion: %+v %v", current, err) + } + if err := r.Get(t.Context(), client.ObjectKeyFromObject(ss), ss); err != nil { + t.Fatal(err) + } + if ss.Spec.Replicas == nil || *ss.Spec.Replicas != 0 || !reflect.DeepEqual(ss.Spec.Template, *originalTemplate) { + t.Fatalf("recovery did not scale down with the original template: %+v", ss.Spec) + } + requireNoWipeJob(t, r, gs) + ss.Status.Replicas, ss.Status.ObservedGeneration = 0, ss.Generation + if err := r.Status().Update(t.Context(), ss); err != nil { + t.Fatal(err) + } + if err := r.Delete(t.Context(), pod); err != nil { + t.Fatal(err) + } + if _, err := r.Reconcile(t.Context(), request); err != nil { + t.Fatal(err) + } + requireNoWipeJob(t, r, gs) + current = wipeCurrent(t, r.Client, gs) + op, held, err = lifecycleOwner(current) + if err != nil || !held || len(op.Recovery) != 1 { + t.Fatalf("terminating startup pod lost the recovery fence: %+v %v", current, err) + } + if err := r.Get(t.Context(), client.ObjectKeyFromObject(pod), pod); err != nil { + t.Fatal(err) + } + pod.Finalizers = nil + if err := r.Update(t.Context(), pod); err != nil { + t.Fatal(err) + } + for range 3 { + if _, err := r.Reconcile(t.Context(), request); err != nil { + t.Fatal(err) + } + } + var job batchv1.Job + if err := r.Get(t.Context(), client.ObjectKey{Namespace: gs.Namespace, Name: gs.Name + "-wipe"}, &job); err != nil { + t.Fatalf("drained predecessor did not permit wipe: %v", err) + } + current = wipeCurrent(t, r.Client, gs) + op, held, err = lifecycleOwner(current) + if err != nil || !held || op.Kind != "Wipe" || len(op.Recovery) != 0 || !current.Spec.Suspend || job.Labels[wipeTokenLabel] != "wipe" { + t.Fatalf("wipe launch lost exclusive ownership: %+v %v", current, err) + } +} + +func TestGameServerWipeReconcileWaitsForPredecessorCleanup(t *testing.T) { + gs := wipeGameServer(true, "wipe") + gs.Annotations[wipeGuardAnnotation] = "wipe" + predecessor := lifecycleIdentity{Kind: "Backup", Name: "deleted", UID: "deleted-backup", TargetUID: gs.UID, NeedsUnquiesce: true} + gs.Annotations[lifecycleOperationAnnotation] = lifecycleOperationJSON(lifecycleOperation{lifecycleIdentity: wipeLifecycleIdentity(gs, "wipe"), Recovery: []lifecycleIdentity{predecessor}}) + // A labelled worker still counts even if its Job and PVC mount metadata + // are gone. A stopped target alone does not complete predecessor cleanup. + worker := &corev1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "orphan-copy", Namespace: gs.Namespace, Labels: map[string]string{backupUIDLabel: string(predecessor.UID)}}, Status: corev1.PodStatus{Phase: corev1.PodRunning}} + gamePod := &corev1.Pod{ObjectMeta: metav1.ObjectMeta{Name: gs.Name + "-0", Namespace: gs.Namespace, UID: "original-game"}, Status: corev1.PodStatus{Phase: corev1.PodRunning}} + r := lifecycleGameServerFixture(t, gs, wipeStoppedSet(gs), worker, gamePod) + cleanupErr := errors.New("save-on unavailable") + quiescer := &scrapeQuiescer{unquiesceErr: cleanupErr} + r.OperationQuiescer = quiescer + request := ctrl.Request{NamespacedName: client.ObjectKeyFromObject(gs)} + if _, err := r.Reconcile(t.Context(), request); err != nil { + t.Fatal(err) + } + requireNoWipeJob(t, r, gs) + if err := r.Delete(t.Context(), worker); err != nil { + t.Fatal(err) + } + if _, err := r.Reconcile(t.Context(), request); !errors.Is(err, cleanupErr) { + t.Fatalf("unfinished save-on did not retain its error: %v", err) + } + requireNoWipeJob(t, r, gs) + current := wipeCurrent(t, r.Client, gs) + op, held, err := lifecycleOwner(current) + if err != nil || !held || len(op.Recovery) != 1 || !current.Spec.Suspend { + t.Fatalf("unfinished save-on lost its recovery fence: %+v %v", current, err) + } + quiescer.unquiesceErr = nil + if _, err := r.Reconcile(t.Context(), request); err != nil { + t.Fatal(err) + } + requireNoWipeJob(t, r, gs) + if err := r.Delete(t.Context(), gamePod); err != nil { + t.Fatal(err) + } + for range 2 { + if _, err := r.Reconcile(t.Context(), request); err != nil { + t.Fatal(err) + } + } + var job batchv1.Job + if err := r.Get(t.Context(), client.ObjectKey{Namespace: gs.Namespace, Name: gs.Name + "-wipe"}, &job); err != nil { + t.Fatalf("completed save-on did not permit wipe: %v", err) + } + if quiescer.unquiesced != 1 { + t.Fatalf("save-on completed %d times, want once", quiescer.unquiesced) + } +} + +func TestWipeRecoveryRetainsCleanupFences(t *testing.T) { + for _, mode := range []string{"cancel", "replace", "success"} { + t.Run(mode, func(t *testing.T) { + gs := wipeGameServer(true, "wipe") + gs.Annotations[wipeGuardAnnotation] = "wipe" + predecessor := lifecycleIdentity{Kind: "Backup", Name: "deleted", UID: "deleted-backup", TargetUID: gs.UID} + gs.Annotations[lifecycleOperationAnnotation] = lifecycleOperationJSON(lifecycleOperation{lifecycleIdentity: wipeLifecycleIdentity(gs, "wipe"), Recovery: []lifecycleIdentity{predecessor}}) + ss := wipeStoppedSet(gs) + worker := &corev1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "orphan-copy", Namespace: gs.Namespace, Labels: map[string]string{backupUIDLabel: string(predecessor.UID)}}, Status: corev1.PodStatus{Phase: corev1.PodRunning}} + objects := []client.Object{gs, ss, worker} + switch mode { + case "cancel": + delete(gs.Annotations, WipeRequestedAnnotation) + case "replace": + gs.Annotations[WipeRequestedAnnotation] = "replacement" + case "success": + gs.Annotations[wipeSuccessAnnotation] = "wipe" + objects = append(objects, &batchv1.Job{ObjectMeta: metav1.ObjectMeta{Name: gs.Name + "-wipe", Namespace: gs.Namespace, Labels: map[string]string{wipeTokenLabel: "wipe"}, + OwnerReferences: []metav1.OwnerReference{{APIVersion: gameplanev1alpha1.GroupVersion.String(), Kind: "GameServer", Name: gs.Name, UID: gs.UID, Controller: ownerBoolPtr(true)}}}, Status: batchv1.JobStatus{Succeeded: 1}}) + } + s := wipeScheme(t) + c := fake.NewClientBuilder().WithScheme(s).WithObjects(objects...).Build() + r := &GameServerReconciler{Client: c, APIReader: c, Scheme: s} + if err := r.reconcileWipe(t.Context(), gs, &gameplanev1alpha1.GameTemplate{}); err != nil { + t.Fatal(err) + } + current := wipeCurrent(t, c, gs) + op, held, err := lifecycleOwner(current) + if err != nil || !held || op.Token != "wipe" || len(op.Recovery) != 1 || current.Annotations[wipeGuardAnnotation] != "wipe" || current.Annotations[WipeCompletedAnnotation] != "" || !current.Spec.Suspend { + t.Fatalf("cleanup changed unfinished recovery: %+v %v", current, err) + } + if err := c.Get(t.Context(), client.ObjectKeyFromObject(ss), ss); err != nil || ss.Annotations[wipeGuardAnnotation] != "wipe" { + t.Fatalf("cleanup removed the workload fence: %+v %v", ss, err) + } + if mode == "success" { + var job batchv1.Job + if err := c.Get(t.Context(), client.ObjectKey{Namespace: gs.Namespace, Name: gs.Name + "-wipe"}, &job); err != nil || !job.DeletionTimestamp.IsZero() { + t.Fatalf("success cleanup ran before predecessor drained: %+v %v", job, err) + } + } else { + requireNoWipeJob(t, r, gs) + } + }) + } +} + +func TestWipeLaunchRevalidatesDurableOwnerAfterStopProof(t *testing.T) { + for _, mode := range []string{"recovery", "other owner", "missing owner", "malformed owner"} { + t.Run(mode, func(t *testing.T) { + gs := wipeGameServer(true, "wipe") + gs.Annotations[wipeGuardAnnotation] = "wipe" + gs.Annotations[lifecycleOperationAnnotation] = lifecycleOperationJSON(lifecycleOperation{lifecycleIdentity: wipeLifecycleIdentity(gs, "wipe")}) + s := wipeScheme(t) + c := fake.NewClientBuilder().WithScheme(s).WithObjects(gs, wipeStoppedSet(gs)).Build() + observedWorkload, changedOwner := false, false + reader := interceptor.NewClient(c, interceptor.Funcs{Get: func(ctx context.Context, cl client.WithWatch, key client.ObjectKey, obj client.Object, opts ...client.GetOption) error { + if err := cl.Get(ctx, key, obj, opts...); err != nil { + return err + } + if _, ok := obj.(*appsv1.StatefulSet); ok { + observedWorkload = true + } + live, ok := obj.(*gameplanev1alpha1.GameServer) + if !ok || !observedWorkload || changedOwner { + return nil + } + changedOwner = true + op := lifecycleOperation{lifecycleIdentity: wipeLifecycleIdentity(live, "wipe")} + switch mode { + case "recovery": + op.Recovery = []lifecycleIdentity{{Kind: "Backup", Name: "predecessor", UID: "predecessor", TargetUID: gs.UID, NeedsUnquiesce: true}} + case "other owner": + op.lifecycleIdentity = lifecycleIdentity{Kind: "Restore", Name: "replacement", UID: "replacement", TargetUID: gs.UID} + } + live.Annotations[lifecycleOperationAnnotation] = lifecycleOperationJSON(op) + if mode == "missing owner" { + delete(live.Annotations, lifecycleOperationAnnotation) + } else if mode == "malformed owner" { + live.Annotations[lifecycleOperationAnnotation] = "invalid" + } + return cl.Update(ctx, live) + }}) + r := &GameServerReconciler{Client: c, APIReader: reader, Scheme: s} + err := r.reconcileWipe(t.Context(), gs, &gameplanev1alpha1.GameTemplate{}) + if mode == "malformed owner" { + if err == nil { + t.Fatal("malformed owner did not fail closed") + } + } else if err != nil { + t.Fatal(err) + } + if !changedOwner { + t.Fatal("did not reach the live owner read after stop proof") + } + requireNoWipeJob(t, r, gs) + }) + } +} + +type lifecycleErrorLog struct{ errors *[]error } + +func (*lifecycleErrorLog) Init(logr.RuntimeInfo) {} +func (*lifecycleErrorLog) Enabled(int) bool { return true } +func (*lifecycleErrorLog) Info(int, string, ...any) {} +func (l *lifecycleErrorLog) WithValues(...any) logr.LogSink { return l } +func (l *lifecycleErrorLog) WithName(string) logr.LogSink { return l } +func (l *lifecycleErrorLog) Error(err error, _ string, _ ...any) { *l.errors = append(*l.errors, err) } + +func TestGameServerLifecyclePatchConflictsRetryQuietly(t *testing.T) { + for _, transition := range []string{"idle", "restart"} { + for _, conflict := range []bool{false, true} { + t.Run(fmt.Sprintf("%s/conflict=%t", transition, conflict), func(t *testing.T) { + gs := wipeGameServer(false, "") + if transition == "idle" { + // Disabling idle while asleep requests an annotation clear. + gs.Annotations[IdleAsleepSinceAnnotation] = time.Now().Add(-time.Hour).UTC().Format(time.RFC3339) + } else { + gs.Annotations[RestartRequestedAnnotation] = "restart" + } + r := lifecycleGameServerFixture(t, gs) + cause := errors.New("API unavailable") + var patchErr error = cause + if conflict { + patchErr = apierrors.NewConflict(schema.GroupResource{Group: "gameplane.local", Resource: "gameservers"}, gs.Name, cause) + } + patchErr = fmt.Errorf("write response: %w", patchErr) + patches := 0 + r.Client = interceptor.NewClient(r.Client.(client.WithWatch), interceptor.Funcs{Patch: func(ctx context.Context, c client.WithWatch, obj client.Object, patch client.Patch, opts ...client.PatchOption) error { + if _, ok := obj.(*gameplanev1alpha1.GameServer); ok { + patches++ + return patchErr + } + return c.Patch(ctx, obj, patch, opts...) + }}) + var logged []error + ctx := log.IntoContext(t.Context(), logr.New(&lifecycleErrorLog{errors: &logged})) + result, err := r.Reconcile(ctx, ctrl.Request{NamespacedName: client.ObjectKeyFromObject(gs)}) + if patches != 1 { + t.Fatalf("lifecycle patch was not reached exactly once: %d", patches) + } + if conflict { + if err != nil || result != (ctrl.Result{RequeueAfter: time.Second}) || len(logged) != 0 { + t.Fatalf("expected quiet one-second conflict retry: result=%+v error=%v logs=%v", result, err, logged) + } + } else if !errors.Is(err, cause) || result != (ctrl.Result{}) || len(logged) != 1 || !errors.Is(logged[0], cause) { + t.Fatalf("real error lost its identity/log/backoff: result=%+v error=%v logs=%v", result, err, logged) + } + var ss appsv1.StatefulSet + if err := r.Get(t.Context(), client.ObjectKeyFromObject(gs), &ss); !apierrors.IsNotFound(err) { + t.Fatalf("failed lifecycle patch still mutated the workload: %v", err) + } + }) + } + } +} diff --git a/operator/internal/controller/gameserver_wipe.go b/operator/internal/controller/gameserver_wipe.go index c59ecf998..e3414336a 100644 --- a/operator/internal/controller/gameserver_wipe.go +++ b/operator/internal/controller/gameserver_wipe.go @@ -74,6 +74,11 @@ func (r *GameServerReconciler) reconcileWipe( if changed { return nil } + if guard != "" { + if ready, err := wipeLifecycleReady(gs, guard); err != nil || !ready { + return err + } + } if guard == "" { if len(state.jobs) == 0 { return nil @@ -137,9 +142,12 @@ func (r *GameServerReconciler) reconcileWipe( if err := r.wipeReader().Get(ctx, client.ObjectKeyFromObject(gs), &live); err != nil { return client.IgnoreNotFound(err) } - if live.UID != gs.UID || live.Annotations[wipeGuardAnnotation] != guard || live.Annotations[WipeRequestedAnnotation] != guard || !pendingWipe(&live) || live.Annotations[restoreGuardAnnotation] != "" { + if live.UID != gs.UID || live.Annotations[wipeGuardAnnotation] != guard || live.Annotations[WipeRequestedAnnotation] != guard || !pendingWipe(&live) || live.Annotations[restoreGuardAnnotation] != "" || live.Annotations[backupGuardAnnotation] != "" { return nil } + if ready, err := wipeLifecycleReady(&live, guard); err != nil || !ready { + return err + } return r.createWipeJob(ctx, &live, tmpl, jobName, guard) } diff --git a/operator/internal/controller/gameserver_wipe_guard.go b/operator/internal/controller/gameserver_wipe_guard.go index bdf00bfc8..45a6becc4 100644 --- a/operator/internal/controller/gameserver_wipe_guard.go +++ b/operator/internal/controller/gameserver_wipe_guard.go @@ -166,10 +166,11 @@ func (r *GameServerReconciler) ensureWipeGuard(ctx context.Context, gs *gameplan } *gs = live if token := gs.Annotations[wipeGuardAnnotation]; token != "" { - ready, err := claimLifecycleOperation(ctx, r.Client, r.wipeReader(), gs, wipeLifecycleIdentity(gs, token), r.OperationQuiescer) - // Upgrading an existing guard does not require another pass. Only - // unfinished predecessor cleanup must prevent this wipe proceeding. - return err == nil && !ready, err + _, err := claimLifecycleOperation(ctx, r.Client, r.wipeReader(), gs, wipeLifecycleIdentity(gs, token), r.OperationQuiescer) + // Existing ownership must not skip workload reconciliation: orphaned + // Restore recovery may need it to scale down the initial startup pod. + // reconcileWipe separately blocks cleanup and launch until recovery ends. + return false, err } state := wipeInventory(inventory) if err := r.loadWipeWorkers(ctx, gs, state); err != nil { @@ -196,6 +197,20 @@ func (r *GameServerReconciler) ensureWipeGuard(ctx context.Context, gs *gameplan return err == nil && gs.Annotations[wipeGuardAnnotation] == token, err } +// wipeLifecycleReady requires the durable owner, not just its compatibility +// guard. Pending predecessors still own cleanup obligations and cannot be +// discarded by wipe completion, cancellation, replacement, or a new worker. +func wipeLifecycleReady(gs *gameplanev1alpha1.GameServer, token string) (bool, error) { + if gs.Annotations[lifecycleOperationAnnotation] == "" { + return false, nil + } + op, held, err := lifecycleOwner(gs) + if err != nil { + return false, err + } + return held && sameLifecycleOwner(op.lifecycleIdentity, wipeLifecycleIdentity(gs, token)) && len(op.Recovery) == 0, nil +} + // Stamp the owned workload with a checked write before workers launch. A stale // workload update then conflicts, while callbacks reading the fence stay at 0. func (r *GameServerReconciler) wipeTargetStopped(ctx context.Context, gs *gameplanev1alpha1.GameServer) (bool, error) { diff --git a/operator/specs.md b/operator/specs.md index 60308563c..41f06f10d 100644 --- a/operator/specs.md +++ b/operator/specs.md @@ -228,7 +228,7 @@ Primary reconcilers register with the manager in `cmd/main.go` and handle CRD li - Node affinity: honor spec.nodeSelector and spec.affinity preferences. - Ingress NetworkPolicy: enforce per-template advertised ports, admit CIDRs from `--game-ingress-from-cidr`. - Fixed-name child cleanup: Delete fixed-name objects (`-config` Secret, `-files` Secret, `-rcon` Secret, `-auto` BackupSchedule, `-wipe` Job) only when the GameServer controls them via OwnerReference; unowned objects with these names stay in place (same rule as game-ingress NetworkPolicy). Wipe cleanup carries the verified Job UID as a delete precondition; a foreign Job cannot acknowledge a pending wipe or resume its server. - - **Conflict requeue:** When reconcileStatefulSet or reconcileWipe encounters an apierrors.IsConflict error (concurrent update races), requeue without error logging — conflicts are expected and transient. The Module, NetworkCapture and Backup reconcilers apply the same rule to every error they return, via `requeueOnConflict` (`conflict.go`). + - **Conflict requeue:** When reconcileStatefulSet or reconcileWipe encounters an apierrors.IsConflict error (concurrent update races), requeue without error logging — conflicts are expected and transient. Idle-transition and restart-acknowledgment conflicts, including wrapped errors, also return before logging and retry after one second with fresh state. Other errors retain their identity, error logging and controller-runtime backoff. The Module, NetworkCapture and Backup reconcilers apply the conflict rule to every error they return, via `requeueOnConflict` (`conflict.go`). - Load-balancer address management: translate spec.networking.addressPool / .address preferences onto the Service based on the cluster's address-manager flavor (MetalLB, Cilium, or none), report assignment status via the AddressAssignment condition. - **Network capture foundation** (**Phase 2 Foundational**): Pre-provision a `captures` emptyDir (1 GiB) unconditionally on every game pod's StatefulSet template (required because pod.spec.volumes is immutable on running pods; a rolling restart of all existing game pods is incurred once on upgrade). Extend the `-agent` Service with a second numeric ServicePort 9091 for the capture sidecar's control endpoint. RBAC markers grant `pods/ephemeralcontainers` access (get, list, watch, patch, update) and full CRUD on `networkcaptures` resources. The capture sidecar injection as an ephemeral container is implemented: `buildCaptureEphemeralContainer` (`gameserver_controller.go`) is the single source of truth for the container spec, injected eagerly by `GameServerReconciler.reconcileCapture` when `spec.capture.enabled` is set, with `NetworkCaptureReconciler.injectCaptureContainer` as an idempotent fallback for the case where its own cache is ahead of the GameServer reconciler's write. - **Split concerns:** @@ -358,7 +358,13 @@ lineage is retained on the GameServer across repeated force deletion. Owned Jobs are canceled with UID preconditions and foreground propagation; independently inventoried live or terminating worker pods and pending CSI captures retain the guard. Saving is restored only after recovery workers drain. The workload remains -frozen during recovery even when the successor is a Restore or wipe. Terminal +frozen during recovery even when the successor is a Restore or wipe, except +that an orphaned Restore's initial workload must scale to zero with its template +preserved. An existing wipe guard does not skip this workload reconciliation. +Wipe cancellation, replacement, success cleanup and worker creation wait until +all predecessor workers and quiesce cleanup finish. Immediately before worker +creation, an uncached read must still show the same durable wipe owner with no +pending recovery; the compatibility guard alone cannot authorize a launch. Terminal state and existing cleanup intent are preserved before releasing the owner; failed/canceled restores remain suspended. Generation changes to active Backup or Restore specs fail the operation and enter cleanup rather than authorizing a From dd8c9bbcbc9005b2b14a7f1f8a5f0a44b2410a07 Mon Sep 17 00:00:00 2001 From: Baylem Date: Sun, 25 Oct 2026 19:12:36 -0400 Subject: [PATCH 11/17] fix: carry reviewed security and chart prerequisites Signed-off-by: Baylem --- charts/gameplane/templates/NOTES.txt | 6 ++ .../templates/operator-strategy-migrate.yaml | 2 +- charts/gameplane/templates/operator.yaml | 4 +- charts/gameplane/templates/validate.yaml | 3 - charts/tests/check_workloads.py | 9 ++- docs/production-placement.md | 7 +- docs/release-notes.md | 5 +- .../controller/gameserver_files_test.go | 11 ++- .../controller/networkcapture_node.go | 48 +++++++++--- .../controller/networkcapture_node_test.go | 74 ++++++++++++++++++- operator/specs.md | 7 +- test/e2e/backup_stopped_e2e_test.go | 7 +- 12 files changed, 154 insertions(+), 29 deletions(-) diff --git a/charts/gameplane/templates/NOTES.txt b/charts/gameplane/templates/NOTES.txt index 6f5d24139..bac02868a 100644 --- a/charts/gameplane/templates/NOTES.txt +++ b/charts/gameplane/templates/NOTES.txt @@ -4,6 +4,12 @@ persistence and dashboard blocks are absent. */ -}} {{- $r := .Values.api.telemetry.receiver }} +{{- if and (eq (include "gameplane.operatorEnabled" .) "true") (gt (int .Values.operator.replicas) 1) (not .Values.operator.leaderElect) }} + +Operator leader election is enabled automatically because operator.replicas is +greater than one. The saved leaderElect=false value remains compatible with +upgrades; all operator replicas coordinate through the leader-election Lease. +{{- end }} {{- if .Values.api.standalone }} Standalone central panel: no local game cluster or Kubernetes API credentials. diff --git a/charts/gameplane/templates/operator-strategy-migrate.yaml b/charts/gameplane/templates/operator-strategy-migrate.yaml index e376fca4b..c6b51ef85 100644 --- a/charts/gameplane/templates/operator-strategy-migrate.yaml +++ b/charts/gameplane/templates/operator-strategy-migrate.yaml @@ -1,6 +1,6 @@ {{- /* SSA cannot remove a server-defaulted rollingUpdate field. Patch it before Helm applies Recreate, including installations that manage CRDs externally. */ -}} -{{- if and .Release.IsUpgrade (eq (include "gameplane.operatorEnabled" .) "true") (not .Values.operator.leaderElect) }} +{{- if and .Release.IsUpgrade (eq (include "gameplane.operatorEnabled" .) "true") (not (or .Values.operator.leaderElect (gt (int .Values.operator.replicas) 1))) }} {{- $existing := lookup "apps/v1" "Deployment" .Release.Namespace "gameplane-operator" }} {{- if $existing }} {{- $name := printf "%s-op-roll" .Release.Name }} diff --git a/charts/gameplane/templates/operator.yaml b/charts/gameplane/templates/operator.yaml index 66cecce24..9f6453dd8 100644 --- a/charts/gameplane/templates/operator.yaml +++ b/charts/gameplane/templates/operator.yaml @@ -239,7 +239,7 @@ metadata: labels: {{- include "gameplane.labels" . | nindent 4 }} spec: replicas: {{ .Values.operator.replicas }} - {{- if not .Values.operator.leaderElect }} + {{- if not (or .Values.operator.leaderElect (gt (int .Values.operator.replicas) 1)) }} # Without leader election, prevent a rolling update from overlapping writers. strategy: type: Recreate @@ -274,7 +274,7 @@ spec: imagePullPolicy: {{ .Values.image.pullPolicy }} args: {{- include "gameplane.auxiliaryResourceArgs" .Values.operator | nindent 12 }} - {{- if .Values.operator.leaderElect }} + {{- if or .Values.operator.leaderElect (gt (int .Values.operator.replicas) 1) }} - --leader-elect {{- end }} - --agent-image={{ include "gameplane.agentImage" . }} diff --git a/charts/gameplane/templates/validate.yaml b/charts/gameplane/templates/validate.yaml index d29173bc8..12e28a855 100644 --- a/charts/gameplane/templates/validate.yaml +++ b/charts/gameplane/templates/validate.yaml @@ -13,9 +13,6 @@ {{- if not (regexMatch "^v1\\.[0-9]+$" (.Values.podSecurity.version | default "v1.34")) }} {{- fail "podSecurity.version must pin a Kubernetes minor such as v1.34" }} {{- end }} -{{- if and (eq (include "gameplane.operatorEnabled" .) "true") (gt (int .Values.operator.replicas) 1) (not .Values.operator.leaderElect) }} -{{- fail "operator.leaderElect must be enabled with more than one replica" }} -{{- end }} {{- if .Values.api.standalone }} {{- if ne (include "gameplane.apiEnabled" .) "true" }} {{- fail "api.standalone requires api.enabled=true" }} diff --git a/charts/tests/check_workloads.py b/charts/tests/check_workloads.py index a4c433528..9d8e4f860 100644 --- a/charts/tests/check_workloads.py +++ b/charts/tests/check_workloads.py @@ -39,6 +39,8 @@ def check_operator_migration(): assert not any(obj["kind"] == "Job" for obj in render(values, release=release, chart=chart)) values["operator"]["leaderElect"] = True assert not any(obj["kind"] == "Job" for obj in render(values, upgrade=True, release=release, chart=chart)) + values["operator"].update(replicas=2, leaderElect=False) + assert not any(obj["kind"] == "Job" for obj in render(values, upgrade=True, release=release, chart=chart)) def main(): @@ -81,7 +83,10 @@ def main(): assert overrides["--agent-resources"] == {"requests": {"cpu": "80m"}} render({"api": {"pdb": {"enabled": True, "minAvailable": 1}}}, failure="api.pdb must allow the singleton API to be evicted") render({"api": {"pdb": {"enabled": True, "maxUnavailable": 0}}}, failure="api.pdb must allow the singleton API to be evicted") - render({"operator": {"replicas": 2, "leaderElect": False}}, failure="operator.leaderElect must be enabled") + upgraded = render({"operator": {"replicas": 2, "leaderElect": False}}, upgrade=True) + operator = one(upgraded, "Deployment", "gameplane-operator") + assert operator["spec"]["strategy"]["type"] == "RollingUpdate" + assert "--leader-elect" in operator["spec"]["template"]["spec"]["containers"][0]["args"] single = render({"operator": {"leaderElect": False}}) assert one(single, "Deployment", "gameplane-operator")["spec"]["strategy"] == {"type": "Recreate", "rollingUpdate": None} removed = render({"operator": {"agentResources": None, "tunnelResources": {}}}) @@ -100,12 +105,14 @@ def main(): old_chart = Path(directory) / "chart" shutil.copytree(CHART, old_chart) old_values = yaml.safe_load((old_chart / "values.yaml").read_text()) + old_values["operator"].update(replicas=2, leaderElect=False) for key in ["agentResources", "sentinelResources", "tunnelResources", "backupResources", "pdb", *placement]: old_values["operator"].pop(key, None) (old_chart / "values.yaml").write_text(yaml.safe_dump(old_values)) old = render(chart=old_chart) args = one(old, "Deployment", "gameplane-operator")["spec"]["template"]["spec"]["containers"][0]["args"] assert not any(arg.startswith("--tunnel-resources=") for arg in args) + assert "--leader-elect" in args if __name__ == "__main__": diff --git a/docs/production-placement.md b/docs/production-placement.md index 175d23f3a..9bdd26dab 100644 --- a/docs/production-placement.md +++ b/docs/production-placement.md @@ -82,9 +82,10 @@ cause API downtime. A PDB is not an availability guarantee and does not prevent node failures. The persistent telemetry receiver is also a singleton; avoid a zero-unavailable budget unless intentionally accepting a blocked drain. -Keep operator leader election enabled with redundant replicas and rolling -updates. The chart rejects multiple replicas with leader election disabled; -with one replica and election disabled it uses Recreate to avoid overlapping +Redundant operator replicas use leader election and rolling updates. The chart +automatically enables election when replicas exceed one, even when an older +release retained `leaderElect: false`; upgrades continue rendering and install +notes explain the effective setting. With one replica and election disabled it uses Recreate to avoid overlapping reconcilers during upgrades. API replica/process restrictions remain unchanged. When switching an existing operator to Recreate, a pre-upgrade hook clears the diff --git a/docs/release-notes.md b/docs/release-notes.md index f3da01f11..ff07383fa 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -16,6 +16,9 @@ keys use the defaults even with `--reuse-values`. Chart-managed pods now accept placement, topology-spread and priority settings, with optional PDBs for Deployments. API remains a singleton and its PDB uses `maxUnavailable: 1`; node drains can cause API downtime. Operator replicas greater -than one require leader election. Disabling election on a singleton uses Recreate. +than one automatically enable leader election, including upgrades retaining +`leaderElect: false` through `--reuse-values`; that old setting no longer fails +chart rendering. Install notes explain the effective behavior. Disabling +election on a singleton uses Recreate. See [production placement](production-placement.md) for upgrade controls and a worker-pool example. diff --git a/operator/internal/controller/gameserver_files_test.go b/operator/internal/controller/gameserver_files_test.go index 4eb17f521..d1d530332 100644 --- a/operator/internal/controller/gameserver_files_test.go +++ b/operator/internal/controller/gameserver_files_test.go @@ -102,6 +102,13 @@ func TestBuildConfigInitContainer_GroupWritableWithFSGroup(t *testing.T) { if !strings.Contains(arg, "stat -c %g") || !strings.Contains(arg, "stat -c %a") { t.Errorf("already-correct ownership and modes must be checked before mutation: %q", arg) } + if !strings.Contains(arg, `'/data/'"$p"`) { + t.Errorf("copied paths must keep the relative path quoted: %q", arg) + } + groupCheck, groupChange := strings.Index(arg, "stat -c %g"), strings.Index(arg, "chgrp ") + if groupCheck < 0 || groupChange < 0 || groupCheck >= groupChange { + t.Errorf("group ownership must be checked before chgrp: %q", arg) + } // Verify the command contains "find ./*" if !strings.Contains(arg, "find ./*") { @@ -122,7 +129,7 @@ func TestBuildConfigInitContainer_ReusesSharedFilesWithoutOwnership(t *testing.T t.Fatal(err) } } - source := filepath.Join(staging, "cfg", "profile.txt") + source := filepath.Join(staging, "cfg", "profile with spaces.txt") if err := os.WriteFile(source, []byte("first"), 0o600); err != nil { t.Fatal(err) } @@ -160,7 +167,7 @@ func TestBuildConfigInitContainer_ReusesSharedFilesWithoutOwnership(t *testing.T if out, err := command.CombinedOutput(); err != nil { t.Fatalf("repeat copy required ownership of writable files: %v %s", err, out) } - if got, err := os.ReadFile(filepath.Join(data, "cfg", "profile.txt")); err != nil || string(got) != "updated" { + if got, err := os.ReadFile(filepath.Join(data, "cfg", "profile with spaces.txt")); err != nil || string(got) != "updated" { t.Fatalf("config was not replaced: %q %v", got, err) } if info, err := os.Stat(unrelated); err != nil || info.Mode().Perm() != 0o600 { diff --git a/operator/internal/controller/networkcapture_node.go b/operator/internal/controller/networkcapture_node.go index ab6231797..944fbe10b 100644 --- a/operator/internal/controller/networkcapture_node.go +++ b/operator/internal/controller/networkcapture_node.go @@ -301,6 +301,31 @@ func (r *NetworkCaptureReconciler) nodeFail(ctx context.Context, nc *gameplanev1 return r.fail(ctx, nc, message) } +// A recorded annotation identifies cleanup obligations, not permission to +// create privileged resources. Revalidate deployment authority on every pass. +func (r *NetworkCaptureReconciler) validateNodeCaptureNamespace(ctx context.Context, nc *gameplanev1alpha1.NetworkCapture) (string, error) { + if bound := nc.Annotations[nodeCaptureNamespaceAnnotation]; bound != "" && bound != r.DiagnosticsNamespace { + return "node capture annotation must match the configured diagnostics namespace", nil + } + if r.DiagnosticsNamespace == "" { + return "node diagnostics require cluster deployment opt-in and a configured diagnostics namespace", nil + } + if r.DiagnosticsNamespace == nc.Namespace || r.DiagnosticsNamespace == r.AgentCASecretNamespace { + return "node diagnostics namespace must be separate from the games and control-plane namespaces", nil + } + var namespace corev1.Namespace + if err := r.nodeReader().Get(ctx, types.NamespacedName{Name: r.DiagnosticsNamespace}, &namespace); err != nil { + if apierrors.IsNotFound(err) { + return "configured diagnostics namespace no longer exists", nil + } + return "", err + } + if namespace.Labels["pod-security.kubernetes.io/enforce"] != "privileged" { + return "diagnostics namespace must explicitly permit privileged node diagnostics", nil + } + return "", nil +} + func (r *NetworkCaptureReconciler) reconcileNodeCapture(ctx context.Context, nc *gameplanev1alpha1.NetworkCapture) (ctrl.Result, error) { if nc.DeletionTimestamp != nil { clean, err := r.cleanupNodeCapture(ctx, nc) @@ -316,6 +341,13 @@ func (r *NetworkCaptureReconciler) reconcileNodeCapture(ctx context.Context, nc controllerutil.RemoveFinalizer(nc, nodeCaptureFinalizer) return ctrl.Result{}, r.Update(ctx, nc) } + namespaceFailure, err := r.validateNodeCaptureNamespace(ctx, nc) + if err != nil { + return ctrl.Result{}, err + } + if namespaceFailure != "" && !isTerminalCapturePhase(nc.Status.Phase) { + return r.nodeFail(ctx, nc, namespaceFailure) + } if isTerminalCapturePhase(nc.Status.Phase) { drained, err := r.deleteNodeWorkers(ctx, nc) if err != nil { @@ -332,7 +364,9 @@ func (r *NetworkCaptureReconciler) reconcileNodeCapture(ctx context.Context, nc if time.Now().Before(nc.Status.CompletionTime.Add(time.Duration(ttl) * time.Second)) { // Retained artifacts need certificate rotation even after the target // game Pod has gone away. No target or worker is recreated here. - if ns := nc.Annotations[nodeCaptureNamespaceAnnotation]; ns != "" { + // Revoked namespace authority permits cleanup, never fresh writes + // such as certificate rotation. Preserve the original retention clock. + if ns := nc.Annotations[nodeCaptureNamespaceAnnotation]; ns != "" && namespaceFailure == "" { var anchor corev1.ConfigMap if err := r.nodeReader().Get(ctx, types.NamespacedName{Namespace: ns, Name: nodeCaptureName(nc)}, &anchor); err != nil { if !apierrors.IsNotFound(err) { @@ -409,17 +443,7 @@ func (r *NetworkCaptureReconciler) reconcileNodeCapture(ctx context.Context, nc if bound := nc.Annotations[capturePodUIDAnnotation]; bound != "" && (bound != string(pod.UID) || nc.Annotations[nodeCaptureNodeAnnotation] != pod.Spec.NodeName || nc.Annotations[nodeCaptureContainerAnnotation] != containerID) { return r.nodeFail(ctx, nc, "target Pod, node or container identity changed") } - if nc.Annotations[nodeCaptureNamespaceAnnotation] == "" { - if r.DiagnosticsNamespace == gs.Namespace { - return r.nodeFail(ctx, nc, "node diagnostics namespace must be separate from the games namespace") - } - var namespace corev1.Namespace - if err := r.nodeReader().Get(ctx, types.NamespacedName{Name: r.DiagnosticsNamespace}, &namespace); err != nil { - return ctrl.Result{}, err - } - if namespace.Labels["pod-security.kubernetes.io/enforce"] != "privileged" { - return r.nodeFail(ctx, nc, "diagnostics namespace must explicitly permit privileged node diagnostics") - } + if nc.Annotations[capturePodUIDAnnotation] == "" || !controllerutil.ContainsFinalizer(nc, nodeCaptureFinalizer) { var captures gameplanev1alpha1.NetworkCaptureList if err := r.nodeReader().List(ctx, &captures, client.InNamespace(nc.Namespace)); err != nil { return ctrl.Result{}, err diff --git a/operator/internal/controller/networkcapture_node_test.go b/operator/internal/controller/networkcapture_node_test.go index ddd9a333d..8ff025291 100644 --- a/operator/internal/controller/networkcapture_node_test.go +++ b/operator/internal/controller/networkcapture_node_test.go @@ -63,6 +63,77 @@ func nodeReconcilerFixture(t *testing.T, objects ...client.Object) *NetworkCaptu return &NetworkCaptureReconciler{Client: c, APIReader: c, Scheme: scheme, CaptureEnabled: true, RestrictedWorkloads: true, DiagnosticsNamespace: "diagnostics"} } +func TestNodeCaptureValidatesNamespaceOnEveryReconcile(t *testing.T) { + for _, test := range []struct { + name, configured, recorded, enforcement, controlPlane, want string + }{ + {"prefilled-foreign", "diagnostics", "foreign", "privileged", "system", "configured diagnostics namespace"}, + {"same-as-games", "games", "games", "privileged", "system", "separate"}, + {"same-as-control-plane", "system", "system", "privileged", "system", "separate"}, + {"psa-revoked", "diagnostics", "diagnostics", "restricted", "system", "explicitly permit privileged"}, + {"psa-omitted", "diagnostics", "diagnostics", "", "system", "explicitly permit privileged"}, + } { + t.Run(test.name, func(t *testing.T) { + nc := &gameplanev1alpha1.NetworkCapture{ObjectMeta: metav1.ObjectMeta{Name: "cap", Namespace: "games", UID: "capture-uid", Annotations: map[string]string{nodeCaptureNamespaceAnnotation: test.recorded}}, Status: gameplanev1alpha1.NetworkCaptureStatus{Phase: gameplanev1alpha1.CapturePhaseRunning}} + ns := &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: test.configured, Labels: map[string]string{"pod-security.kubernetes.io/enforce": test.enforcement}}} + r := nodeReconcilerFixture(t, nc, ns) + r.DiagnosticsNamespace = test.configured + r.AgentCASecretNamespace = test.controlPlane + if _, err := r.reconcileNodeCapture(t.Context(), nc); err != nil { + t.Fatal(err) + } + var live gameplanev1alpha1.NetworkCapture + if err := r.Get(t.Context(), client.ObjectKeyFromObject(nc), &live); err != nil { + t.Fatal(err) + } + if live.Status.Phase != gameplanev1alpha1.CapturePhaseFailed || !strings.Contains(live.Status.Message, test.want) { + t.Fatalf("namespace authorization bypassed: %+v", live.Status) + } + var anchors corev1.ConfigMapList + if err := r.List(t.Context(), &anchors); err != nil || len(anchors.Items) != 0 { + t.Fatalf("invalid namespace acquired artifacts: %v %+v", err, anchors) + } + }) + } +} + +func TestNodeCaptureNamespaceRevocationDrainsBeforeFailure(t *testing.T) { + nc := &gameplanev1alpha1.NetworkCapture{ObjectMeta: metav1.ObjectMeta{Name: "cap", Namespace: "games", UID: "capture-uid", Annotations: map[string]string{nodeCaptureNamespaceAnnotation: "diagnostics"}}, Status: gameplanev1alpha1.NetworkCaptureStatus{Phase: gameplanev1alpha1.CapturePhaseRunning}} + ns := &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "diagnostics", Labels: map[string]string{"pod-security.kubernetes.io/enforce": "restricted"}}} + worker := &corev1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "worker", Namespace: ns.Name, Labels: map[string]string{nodeCaptureUIDLabel: string(nc.UID), nodeCaptureComponentLabel: "worker"}}} + r := nodeReconcilerFixture(t, nc, ns, worker) + if result, err := r.reconcileNodeCapture(t.Context(), nc); err != nil || result.RequeueAfter == 0 { + t.Fatalf("revocation did not wait for worker drain: %+v %v", result, err) + } + if nc.Status.Phase != gameplanev1alpha1.CapturePhaseRunning { + t.Fatal("failure published before worker drain") + } + if _, err := r.reconcileNodeCapture(t.Context(), nc); err != nil { + t.Fatal(err) + } + if nc.Status.Phase != gameplanev1alpha1.CapturePhaseFailed { + t.Fatalf("revocation not reported: %+v", nc.Status) + } +} + +func TestNodeCaptureRevokedNamespacePreservesTerminalRetention(t *testing.T) { + completed := metav1.NewTime(time.Now().Add(-time.Minute)) + nc := &gameplanev1alpha1.NetworkCapture{ObjectMeta: metav1.ObjectMeta{Name: "cap", Namespace: "games", UID: "capture-uid", Annotations: map[string]string{nodeCaptureNamespaceAnnotation: "diagnostics"}}, Status: gameplanev1alpha1.NetworkCaptureStatus{Phase: gameplanev1alpha1.CapturePhaseFailed, CompletionTime: &completed}} + ns := &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "diagnostics", Labels: map[string]string{"pod-security.kubernetes.io/enforce": "restricted"}}} + anchor := &corev1.ConfigMap{ObjectMeta: metav1.ObjectMeta{Name: nodeCaptureName(nc), Namespace: ns.Name, Labels: map[string]string{nodeCaptureUIDLabel: string(nc.UID)}}} + r := nodeReconcilerFixture(t, nc, ns, anchor) + if result, err := r.reconcileNodeCapture(t.Context(), nc); err != nil || result.RequeueAfter == 0 { + t.Fatalf("revocation interrupted terminal retention: %+v %v", result, err) + } + if !nc.Status.CompletionTime.Equal(&completed) { + t.Fatal("revocation restarted the retention clock") + } + var secrets corev1.SecretList + if err := r.List(t.Context(), &secrets); err != nil || len(secrets.Items) != 0 { + t.Fatalf("revoked namespace received certificate writes: %v %+v", err, secrets) + } +} + type staleCaptureListClient struct{ client.Client } func (c staleCaptureListClient) List(ctx context.Context, list client.ObjectList, opts ...client.ListOption) error { @@ -141,7 +212,8 @@ func TestNodeCaptureRefusesWithoutServerOptIn(t *testing.T) { gs := &gameplanev1alpha1.GameServer{ObjectMeta: metav1.ObjectMeta{Name: "game", Namespace: "games", UID: "server-uid"}, Spec: gameplanev1alpha1.GameServerSpec{Capture: &gameplanev1alpha1.CaptureConfiguration{Enabled: true}}} nc := &gameplanev1alpha1.NetworkCapture{ObjectMeta: metav1.ObjectMeta{Name: "cap", Namespace: "games", UID: "capture-uid"}} nc.Spec.ServerRef.Name = gs.Name - r := nodeReconcilerFixture(t, gs, nc) + ns := &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "diagnostics", Labels: map[string]string{"pod-security.kubernetes.io/enforce": "privileged"}}} + r := nodeReconcilerFixture(t, gs, nc, ns) if _, err := r.reconcileNodeCapture(t.Context(), nc); err != nil { t.Fatal(err) } diff --git a/operator/specs.md b/operator/specs.md index 41f06f10d..e48352ad6 100644 --- a/operator/specs.md +++ b/operator/specs.md @@ -22,7 +22,12 @@ Existing volumes still need compatible ownership before enabling Restricted. Restricted Pods never receive the legacy capture ephemeral container. `spec.capture.nodeDiagnostic` additionally requires cluster capture enablement and `--diagnostics-namespace`. The dedicated namespace must explicitly enforce -privileged and be separate from games/control plane. Live owner UIDs establish +privileged and be separate from games/control plane. Every reconcile checks +the recorded namespace against the configured namespace and rechecks live PSA +labels and namespace separation. Revocation drains workers before failure; +terminal/deleting captures retain cleanup but cannot rotate certificates in an +unauthorized namespace. A prefilled namespace annotation alone never skips +target binding or cleanup finalization. Live owner UIDs establish GameServer→StatefulSet→Pod provenance; Pod UID, node and exact containerd ID are pinned before worker creation. A target change drains work before releasing the capture lock. A bounded, no-retry Job has hostPID and only SYS_ADMIN, diff --git a/test/e2e/backup_stopped_e2e_test.go b/test/e2e/backup_stopped_e2e_test.go index d469a635d..e02258db2 100644 --- a/test/e2e/backup_stopped_e2e_test.go +++ b/test/e2e/backup_stopped_e2e_test.go @@ -21,7 +21,10 @@ import ( func TestBackup_StoppedCopiesRemainRestorable(t *testing.T) { t.Parallel() ctx := context.Background() - ns, gs, tmpl := "gameplane-games", "e2e-stopped-backup", "e2e-stopped-backup-template" + suffix := time.Now().UnixNano() + ns := "gameplane-games" + gs := fmt.Sprintf("e2e-stopped-backup-%d", suffix) + tmpl := fmt.Sprintf("e2e-stopped-backup-template-%d", suffix) ensureResticRepo(t) applyBusyboxTemplate(t, tmpl) applyBusyboxGameServer(t, ns, gs, tmpl) @@ -56,7 +59,7 @@ func TestBackup_StoppedCopiesRemainRestorable(t *testing.T) { return apierrors.IsNotFound(err), fmt.Sprintf("pod absence: %v", err) }) for i := 1; i <= 2; i++ { - name := fmt.Sprintf("e2e-stopped-copy-%d", i) + name := fmt.Sprintf("e2e-stopped-copy-%d-%d", suffix, i) backup := &unstructured.Unstructured{Object: map[string]any{ "apiVersion": "gameplane.local/v1alpha1", "kind": "Backup", "metadata": map[string]any{"name": name, "namespace": ns}, From 32c8f2bf8dbf8aebf654342e8a388b5baa9ece99 Mon Sep 17 00:00:00 2001 From: Baylem Date: Wed, 4 Nov 2026 00:24:46 -0500 Subject: [PATCH 12/17] fix(api): redact config with verified effective template schemas Signed-off-by: Baylem --- api/internal/handlers/config_redact.go | 63 +++- .../handlers/config_redact_revision_test.go | 318 ++++++++++++++++++ api/internal/handlers/lifecycle.go | 7 +- api/internal/kube/template_revision.go | 77 +++++ api/specs.md | 5 +- charts/gameplane/templates/api.yaml | 5 + charts/tests/check_standalone.py | 5 + docs/install.md | 8 + 8 files changed, 471 insertions(+), 17 deletions(-) create mode 100644 api/internal/handlers/config_redact_revision_test.go create mode 100644 api/internal/kube/template_revision.go diff --git a/api/internal/handlers/config_redact.go b/api/internal/handlers/config_redact.go index 5d37b99d5..f801424f2 100644 --- a/api/internal/handlers/config_redact.go +++ b/api/internal/handlers/config_redact.go @@ -2,9 +2,9 @@ package handlers import ( "context" + "errors" "sync" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "github.com/GameplanePanel/gameplane/api/internal/kube" @@ -58,32 +58,43 @@ func rulesFromTemplate(tmpl *unstructured.Unstructured) configRules { type configRuleCache struct { k *kube.Client mu sync.Mutex - entries map[string]configRules + entries map[configRuleKey]configRules +} + +// A revision is content-addressed, but snapshot ownership belongs to one +// server. Never reuse a verified snapshot for a replacement or another server. +type configRuleKey struct { + template, namespace, name, uid, revision string } func newConfigRuleCache(k *kube.Client) *configRuleCache { - return &configRuleCache{k: k, entries: map[string]configRules{}} + return &configRuleCache{k: k, entries: map[configRuleKey]configRules{}} } -// rulesFor returns the rules for the named template, failing closed when the -// template cannot be read. -func (c *configRuleCache) rulesFor(ctx context.Context, templateName string) configRules { - if templateName == "" || c == nil || c.k == nil || c.k.Dynamic == nil { +// rulesFor uses the server's admitted template, failing closed when that +// template cannot be read or its pinned snapshot cannot be verified. +func (c *configRuleCache) rulesFor(ctx context.Context, gs *unstructured.Unstructured) configRules { + if gs == nil || c == nil || c.k == nil { return configRules{failClosed: true} } + templateName, _, _ := unstructured.NestedString(gs.Object, "spec", "templateRef", "name") + key := configRuleKey{template: templateName, namespace: gs.GetNamespace(), name: gs.GetName(), uid: string(gs.GetUID()), revision: gs.GetAnnotations()[kube.EffectiveTemplateRevisionAnnotation]} c.mu.Lock() - cached, ok := c.entries[templateName] + cached, ok := c.entries[key] c.mu.Unlock() if ok { return cached } - tmpl, err := c.k.Dynamic.Resource(kube.GVRs["templates"]).Get(ctx, templateName, metav1.GetOptions{}) + tmpl, err := c.k.EffectiveGameTemplate(ctx, gs) if err != nil { return configRules{failClosed: true} } rules := rulesFromTemplate(tmpl) + if rules.failClosed { + return rules + } c.mu.Lock() - c.entries[templateName] = rules + c.entries[key] = rules c.mu.Unlock() return rules } @@ -107,8 +118,7 @@ func (c *configRuleCache) redact(ctx context.Context, gs *unstructured.Unstructu if len(cfg) == 0 { return } - name, _, _ := unstructured.NestedString(gs.Object, "spec", "templateRef", "name") - rules := c.rulesFor(ctx, name) + rules := c.rulesFor(ctx, gs) for key, val := range cfg { if !rules.redacts(key) { continue @@ -127,6 +137,32 @@ func (c *configRuleCache) redactList(ctx context.Context, list *unstructured.Uns } } +// validateCloneConfig prevents secrets copied from a pinned source from +// becoming ordinary config on an unpinned clone. Redacting only the POST reply +// would still expose them on the clone's subsequent GET/list/event responses. +func (c *configRuleCache) validateCloneConfig(ctx context.Context, source, clone *unstructured.Unstructured) error { + if source.GetAnnotations()[kube.EffectiveTemplateRevisionAnnotation] == "" { + return nil + } + cfg, _, err := unstructured.NestedMap(source.Object, "spec", "config") + if err != nil { + return errors.New("cannot clone: source config is malformed") + } + if len(cfg) == 0 { + return nil + } + sourceRules, targetRules := c.rulesFor(ctx, source), c.rulesFor(ctx, clone) + for key, value := range cfg { + if s, ok := value.(string); ok && s == "" { + continue + } + if sourceRules.redacts(key) && (targetRules.failClosed || !targetRules.password[key]) { + return errors.New("cannot clone: the current template does not protect copied passwords; restore its password field types or create a new server with fresh configuration") + } + } + return nil +} + // restoreRedactedConfig rewrites desired.spec.config before a PUT so redacted // values the client sent back do not overwrite stored passwords. live is the // stored object (nil when it does not exist). The rules are documented in @@ -146,8 +182,7 @@ func restoreRedactedConfig(ctx context.Context, c *configRuleCache, desired, liv return } if live != nil { - name, _, _ := unstructured.NestedString(live.Object, "spec", "templateRef", "name") - rules = c.rulesFor(ctx, name) + rules = c.rulesFor(ctx, live) } out := make(map[string]any, len(incoming)) for key, val := range incoming { diff --git a/api/internal/handlers/config_redact_revision_test.go b/api/internal/handlers/config_redact_revision_test.go new file mode 100644 index 000000000..82c8c709c --- /dev/null +++ b/api/internal/handlers/config_redact_revision_test.go @@ -0,0 +1,318 @@ +package handlers + +import ( + "context" + "crypto/sha256" + "encoding/json" + "fmt" + "net/http" + "net/http/httptest" + "reflect" + "strings" + "testing" + "time" + + corev1 "k8s.io/api/core/v1" + apierrors "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/types" + "k8s.io/apimachinery/pkg/watch" + dynamicfake "k8s.io/client-go/dynamic/fake" + kubefake "k8s.io/client-go/kubernetes/fake" + clienttesting "k8s.io/client-go/testing" + + "github.com/GameplanePanel/gameplane/api/internal/auth" + "github.com/GameplanePanel/gameplane/api/internal/kube" + "github.com/GameplanePanel/gameplane/api/internal/scope" +) + +// Mirror the operator's immutable snapshot wire format, without fetching the +// current catalog template when preparing a pinned server fixture. +func pinRedactionTemplate(t *testing.T, k *kube.Client, gs, tmpl *unstructured.Unstructured) *corev1.ConfigMap { + t.Helper() + if gs.GetUID() == "" { + gs.SetUID(types.UID("uid-" + gs.GetName())) + } + data, err := json.Marshal(map[string]any{"metadata": map[string]any{"name": tmpl.GetName()}, "spec": tmpl.Object["spec"]}) + if err != nil { + t.Fatal(err) + } + revision := fmt.Sprintf("%x", sha256.Sum256(data)) + identity := sha256.Sum256([]byte(string(gs.GetUID()) + "/" + gs.GetNamespace() + "/" + gs.GetName())) + immutable := true + cm := &corev1.ConfigMap{ObjectMeta: metav1.ObjectMeta{ + Name: fmt.Sprintf("gpt-%x-%s", identity[:8], revision[:32]), Namespace: gs.GetNamespace(), + OwnerReferences: []metav1.OwnerReference{{APIVersion: "gameplane.local/v1alpha1", Kind: "GameServer", Name: gs.GetName(), UID: gs.GetUID(), Controller: &immutable}}, + }, Immutable: &immutable, Data: map[string]string{"template.json": string(data)}} + if _, err := k.Typed.CoreV1().ConfigMaps(gs.GetNamespace()).Create(t.Context(), cm, metav1.CreateOptions{}); err != nil { + t.Fatal(err) + } + annotations := gs.GetAnnotations() + if annotations == nil { + annotations = map[string]string{} + } + annotations[kube.EffectiveTemplateRevisionAnnotation] = revision + gs.SetAnnotations(annotations) + return cm +} + +func catalogWithoutPasswords() *unstructured.Unstructured { + tmpl := redactTemplate() + tmpl.Object["spec"] = map[string]any{"configSchema": []any{ + map[string]any{"name": "MOTD", "type": "string"}, + map[string]any{"name": "RCON_PASSWORD", "type": "string"}, + }} + return tmpl +} + +func TestRedact_PinnedTemplateSurvivesCatalogPasswordRemoval(t *testing.T) { + k := fakeKubeClient(catalogWithoutPasswords()) + gs := serverWithConfig("alpha", plainConfig()) + pinRedactionTemplate(t, k, gs, redactTemplate()) + if _, err := k.Dynamic.Resource(kube.GVRs["servers"]).Namespace(redactNS).Create(t.Context(), gs, metav1.CreateOptions{}); err != nil { + t.Fatal(err) + } + router := mountResourcesRouter(k) + for _, path := range []string{"/servers/alpha", "/servers/"} { + rr := do(t, router, http.MethodGet, path, nil) + if rr.Code != http.StatusOK { + t.Fatalf("%s: %d %s", path, rr.Code, rr.Body) + } + assertNoSecretLeak(t, rr.Body.String()) + if !strings.Contains(rr.Body.String(), "hello") { + t.Fatalf("%s failed closed despite a valid snapshot: %s", path, rr.Body) + } + } + for _, incoming := range []map[string]any{ + {"MOTD": "hello", "RCON_PASSWORD": configRedactedMarker, "ADMIN_PASSWORD": ""}, + {"MOTD": "hello", "RCON_PASSWORD": configRedactedMarker}, + } { + body := updateBody(incoming) + body["metadata"].(map[string]any)["uid"] = string(gs.GetUID()) + rr := do(t, router, http.MethodPut, "/servers/alpha", body) + if rr.Code != http.StatusOK { + t.Fatalf("put: %d %s", rr.Code, rr.Body) + } + assertNoSecretLeak(t, rr.Body.String()) + if got := storedConfig(t, k, "alpha"); !reflect.DeepEqual(got, plainConfig()) { + t.Fatalf("PUT lost the pinned template's required password: %v", got) + } + } +} + +func TestRedact_PinnedTemplateCacheSeparatesServersAndRevisions(t *testing.T) { + k := fakeKubeClient(catalogWithoutPasswords()) + old := serverWithConfig("old", plainConfig()) + pinRedactionTemplate(t, k, old, redactTemplate()) + current := serverWithConfig("current", plainConfig()) + pinRedactionTemplate(t, k, current, catalogWithoutPasswords()) + cache := newConfigRuleCache(k) + cache.redact(t.Context(), current) + cache.redact(t.Context(), old) + if cfg := specConfig(t, old.Object); cfg["ADMIN_PASSWORD"] != configRedactedMarker || cfg["RCON_PASSWORD"] != configRedactedMarker { + t.Fatalf("current schema escaped into the older server: %v", cfg) + } + // The same server adopting another revision within a request must use its + // new schema, while a same-name replacement must re-prove snapshot ownership. + next := serverWithConfig("current", plainConfig()) + next.SetUID(current.GetUID()) + pinRedactionTemplate(t, k, next, redactTemplate()) + cache.redact(t.Context(), next) + if specConfig(t, next.Object)["RCON_PASSWORD"] != configRedactedMarker { + t.Fatal("revision change reused the old cache entry") + } + replacement := current.DeepCopy() + replacement.SetUID("replacement-uid") + cache.redact(t.Context(), replacement) + if specConfig(t, replacement.Object)["MOTD"] != configRedactedMarker { + t.Fatal("replacement server reused another UID's verified snapshot") + } + otherNamespace := current.DeepCopy() + otherNamespace.SetNamespace("another-namespace") + cache.redact(t.Context(), otherNamespace) + if specConfig(t, otherNamespace.Object)["MOTD"] != configRedactedMarker { + t.Fatal("another namespace reused a verified snapshot") + } +} + +func TestRedact_InvalidPinnedTemplateFailsClosedWithoutCatalogFallback(t *testing.T) { + for _, mode := range []string{"missing", "malformed-revision", "uppercase-revision", "missing-uid", "mutable", "foreign-owner", "wrong-owner-name", "wrong-owner-kind", "wrong-owner-api", "deleting", "corrupt-content", "wrong-template", "wrong-namespace", "malformed-schema"} { + t.Run(mode, func(t *testing.T) { + k := fakeKubeClient(catalogWithoutPasswords()) + gs := serverWithConfig("alpha", plainConfig()) + snapshotTemplate := redactTemplate() + if mode == "wrong-template" { + snapshotTemplate.SetName("other-template") + } + if mode == "malformed-schema" { + snapshotTemplate.Object["spec"].(map[string]any)["configSchema"] = "invalid" + } + cm := pinRedactionTemplate(t, k, gs, snapshotTemplate) + switch mode { + case "missing": + if err := k.Typed.CoreV1().ConfigMaps(cm.Namespace).Delete(t.Context(), cm.Name, metav1.DeleteOptions{}); err != nil { + t.Fatal(err) + } + case "malformed-revision": + gs.SetAnnotations(map[string]string{kube.EffectiveTemplateRevisionAnnotation: "../invalid"}) + case "uppercase-revision": + gs.SetAnnotations(map[string]string{kube.EffectiveTemplateRevisionAnnotation: strings.ToUpper(gs.GetAnnotations()[kube.EffectiveTemplateRevisionAnnotation])}) + case "missing-uid": + gs.SetUID("") + case "mutable": + cm.Immutable = nil + case "foreign-owner": + cm.OwnerReferences[0].UID = "other-server" + case "wrong-owner-name": + cm.OwnerReferences[0].Name = "other-server" + case "wrong-owner-kind": + cm.OwnerReferences[0].Kind = "Backup" + case "wrong-owner-api": + cm.OwnerReferences[0].APIVersion = "foreign.example/v1alpha1" + case "deleting": + now := metav1.Now() + cm.DeletionTimestamp = &now + case "corrupt-content": + cm.Data["template.json"] = `{"metadata":{"name":"minecraft"},"spec":{}}` + case "wrong-namespace": + gs.SetNamespace("another-namespace") + } + if mode != "missing" { + if _, err := k.Typed.CoreV1().ConfigMaps(cm.Namespace).Update(t.Context(), cm, metav1.UpdateOptions{}); err != nil { + t.Fatal(err) + } + } + newConfigRuleCache(k).redact(t.Context(), gs) + for key, value := range specConfig(t, gs.Object) { + if value != configRedactedMarker { + t.Fatalf("%s leaked despite invalid snapshot: %v", key, value) + } + } + if len(k.Dynamic.(*dynamicfake.FakeDynamicClient).Actions()) != 0 { + t.Fatal("invalid pin fell back to current catalog") + } + }) + } +} + +func TestRedact_PinnedSnapshotFailureIsNotCached(t *testing.T) { + k := fakeKubeClient(catalogWithoutPasswords()) + gs := serverWithConfig("alpha", plainConfig()) + cm := pinRedactionTemplate(t, k, gs, redactTemplate()) + if err := k.Typed.CoreV1().ConfigMaps(cm.Namespace).Delete(t.Context(), cm.Name, metav1.DeleteOptions{}); err != nil { + t.Fatal(err) + } + cache := newConfigRuleCache(k) + missing := gs.DeepCopy() + cache.redact(t.Context(), missing) + if specConfig(t, missing.Object)["MOTD"] != configRedactedMarker { + t.Fatal("missing snapshot did not fail closed") + } + if _, err := k.Typed.CoreV1().ConfigMaps(cm.Namespace).Create(t.Context(), cm, metav1.CreateOptions{}); err != nil { + t.Fatal(err) + } + cache.redact(t.Context(), gs) + if cfg := specConfig(t, gs.Object); cfg["MOTD"] != "hello" || cfg["RCON_PASSWORD"] != configRedactedMarker { + t.Fatalf("recovered snapshot did not supply its schema: %v", cfg) + } +} + +func TestRedact_PinnedCloneRejectsPasswordDowngradeBeforeCreate(t *testing.T) { + for _, mode := range []string{"removed", "retyped", "missing-target", "missing-source", "unchanged-passwords", "empty-passwords"} { + t.Run(mode, func(t *testing.T) { + catalog := redactTemplate() + fields := catalog.Object["spec"].(map[string]any)["configSchema"].([]any) + switch mode { + case "removed": + catalog.Object["spec"].(map[string]any)["configSchema"] = fields[:2] + case "retyped": + fields[1].(map[string]any)["type"] = "string" + case "empty-passwords": + catalog = catalogWithoutPasswords() + } + k := fakeKubeClient(catalog) + gs := serverWithConfig("alpha", plainConfig()) + if mode == "empty-passwords" { + gs.Object["spec"].(map[string]any)["config"] = map[string]any{"MOTD": "hello", "RCON_PASSWORD": "", "ADMIN_PASSWORD": ""} + } + cm := pinRedactionTemplate(t, k, gs, redactTemplate()) + if mode == "missing-target" { + if err := k.Dynamic.Resource(kube.GVRs["templates"]).Delete(t.Context(), catalog.GetName(), metav1.DeleteOptions{}); err != nil { + t.Fatal(err) + } + } + if mode == "missing-source" { + if err := k.Typed.CoreV1().ConfigMaps(cm.Namespace).Delete(t.Context(), cm.Name, metav1.DeleteOptions{}); err != nil { + t.Fatal(err) + } + } + if _, err := k.Dynamic.Resource(kube.GVRs["servers"]).Namespace(redactNS).Create(t.Context(), gs, metav1.CreateOptions{}); err != nil { + t.Fatal(err) + } + rr := do(t, mountLifecycleRouter(k), http.MethodPost, "/servers/alpha:clone", map[string]any{"newName": "beta"}) + assertNoSecretLeak(t, rr.Body.String()) + if mode == "unchanged-passwords" || mode == "empty-passwords" { + if rr.Code != http.StatusOK { + t.Fatalf("safe clone: %d %s", rr.Code, rr.Body) + } + if !reflect.DeepEqual(storedConfig(t, k, "beta"), specConfig(t, gs.Object)) { + t.Fatal("safe clone changed config") + } + return + } + if rr.Code != http.StatusConflict || !strings.Contains(rr.Body.String(), "current template") { + t.Fatalf("unsafe clone: %d %s", rr.Code, rr.Body) + } + if _, err := k.Dynamic.Resource(kube.GVRs["servers"]).Namespace(redactNS).Get(t.Context(), "beta", metav1.GetOptions{}); !apierrors.IsNotFound(err) { + t.Fatalf("rejected clone persisted: %v", err) + } + }) + } +} + +func TestRedact_PinnedFleetAndEventsUseSelectedClusterSnapshot(t *testing.T) { + previous := scope.AllowedNamespaces + scope.AllowedNamespaces = []string{scope.DefaultNamespace} + t.Cleanup(func() { scope.AllowedNamespaces = previous }) + k := fleetTestClient(catalogWithoutPasswords()) + gs := serverWithConfig("alpha", plainConfig()) + gs.SetNamespace(scope.DefaultNamespace) + pinRedactionTemplate(t, k, gs, redactTemplate()) + if _, err := k.Dynamic.Resource(kube.GVRs["servers"]).Namespace(gs.GetNamespace()).Create(t.Context(), gs, metav1.CreateOptions{}); err != nil { + t.Fatal(err) + } + home := fleetTestClient(catalogWithoutPasswords()) + reg := clusterTestRegistry(home) + reg.Set("remote", k) + rr := inventoryRequest(t, fleetRouter(reg), inventoryUser("remote", gs.GetNamespace(), "servers:read"), http.MethodGet, "/fleet/servers?cluster=remote") + if rr.Code != http.StatusOK || !strings.Contains(rr.Body.String(), "hello") { + t.Fatalf("fleet: %d %s", rr.Code, rr.Body) + } + assertNoSecretLeak(t, rr.Body.String()) + if len(home.Typed.(*kubefake.Clientset).Actions()) != 0 { + t.Fatal("remote redaction consulted the home cluster") + } + fw := watch.NewFake() + k.Dynamic.(*dynamicfake.FakeDynamicClient).PrependWatchReactor("gameservers", func(clienttesting.Action) (bool, watch.Interface, error) { return true, fw, nil }) + ctx, cancel := context.WithCancel(auth.WithUser(t.Context(), testAdminUser())) + defer cancel() + req := httptest.NewRequestWithContext(ctx, http.MethodGet, "/events?cluster=remote", nil) + w := &lockedBuffer{header: http.Header{}} + done := make(chan struct{}) + go func() { defer close(done); eventsHandler(reg)(w, req) }() + go fw.Add(gs) + deadline := time.Now().Add(5 * time.Second) + for !strings.Contains(w.String(), "data:") && time.Now().Before(deadline) { + time.Sleep(10 * time.Millisecond) + } + cancel() + <-done + if out := w.String(); !strings.Contains(out, "data:") || !strings.Contains(out, "hello") { + t.Fatalf("missing pinned event: %s", out) + } + assertNoSecretLeak(t, w.String()) + if specConfig(t, gs.Object)["ADMIN_PASSWORD"] != "adm1n" { + t.Fatal("SSE redacted the shared watch object in place") + } +} diff --git a/api/internal/handlers/lifecycle.go b/api/internal/handlers/lifecycle.go index 2622f318c..9d46758fa 100644 --- a/api/internal/handlers/lifecycle.go +++ b/api/internal/handlers/lifecycle.go @@ -233,6 +233,11 @@ func cloneHandler(reg *kube.Registry) http.HandlerFunc { // never grants host-level diagnostic privileges to the new server. unstructured.RemoveNestedField(clone.Object, "spec", "capture", "nodeDiagnostic") stampOwner(clone, req) + configRules := newConfigRuleCache(k) + if err := configRules.validateCloneConfig(req.Context(), src, clone); err != nil { + httperr.WriteCode(w, req, http.StatusConflict, err) + return + } cl := scope.RequestedCluster(req) if err := validateAndProtectGameServer(req.Context(), k, cl, ns, body.NewName, clone, nil); err != nil { @@ -249,7 +254,7 @@ func cloneHandler(reg *kube.Registry) http.HandlerFunc { } // The clone stores the source's config verbatim; only the response is redacted. created = created.DeepCopy() - newConfigRuleCache(k).redact(req.Context(), created) + configRules.redact(req.Context(), created) writeOrErr(w, req, created, nil) } } diff --git a/api/internal/kube/template_revision.go b/api/internal/kube/template_revision.go new file mode 100644 index 000000000..1ef1eba2c --- /dev/null +++ b/api/internal/kube/template_revision.go @@ -0,0 +1,77 @@ +package kube + +import ( + "context" + "crypto/sha256" + "encoding/hex" + "encoding/json" + "fmt" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" +) + +// EffectiveTemplateRevisionAnnotation records the template admitted by the +// operator. Once set, consumers must not fall back to the current catalog. +const EffectiveTemplateRevisionAnnotation = "gameplane.local/effective-template-revision" + +// EffectiveGameTemplate reads the schema used by this server, including an +// OnRequest server that has not adopted the latest catalog revision. Snapshot +// identity and content checks match the operator's snapshot contract; reads use +// this cluster's client and the server's namespace, never a caller-supplied path. +func (c *Client) EffectiveGameTemplate(ctx context.Context, gs *unstructured.Unstructured) (*unstructured.Unstructured, error) { + if c == nil || gs == nil { + return nil, fmt.Errorf("template client or server is missing") + } + name, _, err := unstructured.NestedString(gs.Object, "spec", "templateRef", "name") + if err != nil || name == "" { + return nil, fmt.Errorf("server template name is missing or malformed") + } + revision := gs.GetAnnotations()[EffectiveTemplateRevisionAnnotation] + if revision == "" { + if c.Dynamic == nil { + return nil, fmt.Errorf("template client is missing") + } + return c.Dynamic.Resource(GVRs["templates"]).Get(ctx, name, metav1.GetOptions{}) + } + decoded, err := hex.DecodeString(revision) + if err != nil || len(decoded) != sha256.Size || hex.EncodeToString(decoded) != revision { + return nil, fmt.Errorf("invalid effective template revision") + } + if c.Typed == nil || gs.GetUID() == "" || gs.GetNamespace() == "" || gs.GetName() == "" { + return nil, fmt.Errorf("snapshot client or server identity is missing") + } + identity := sha256.Sum256([]byte(string(gs.GetUID()) + "/" + gs.GetNamespace() + "/" + gs.GetName())) + snapshotName := fmt.Sprintf("gpt-%x-%s", identity[:8], revision[:32]) + cm, err := c.Typed.CoreV1().ConfigMaps(gs.GetNamespace()).Get(ctx, snapshotName, metav1.GetOptions{}) + if err != nil { + return nil, fmt.Errorf("read pinned template snapshot: %w", err) + } + owner := metav1.GetControllerOf(cm) + if cm.Name != snapshotName || cm.Namespace != gs.GetNamespace() || owner == nil || + owner.UID != gs.GetUID() || owner.Name != gs.GetName() || owner.Kind != "GameServer" || owner.APIVersion != "gameplane.local/v1alpha1" || + cm.Immutable == nil || !*cm.Immutable || !cm.DeletionTimestamp.IsZero() { + return nil, fmt.Errorf("template snapshot is foreign, mutable or deleting") + } + data := []byte(cm.Data["template.json"]) + if len(data) > 900*1024 { + return nil, fmt.Errorf("template snapshot exceeds 900 KiB") + } + // The operator stores the exact JSON bytes it hashes. Hash those bytes + // directly so the API does not need a second copy of the typed CRD schema. + // Noncanonical rewrites are rejected even if they decode to the same spec. + digest := sha256.Sum256(data) + if hex.EncodeToString(digest[:]) != revision { + return nil, fmt.Errorf("template snapshot content does not match pinned revision") + } + var tmpl unstructured.Unstructured + // The stored snapshot deliberately omits kind/apiVersion. Decode its map + // directly rather than invoking Unstructured's GVK-requiring decoder. + if err := json.Unmarshal(data, &tmpl.Object); err != nil { + return nil, fmt.Errorf("decode template snapshot: %w", err) + } + if tmpl.GetName() != name { + return nil, fmt.Errorf("template snapshot name does not match server") + } + return &tmpl, nil +} diff --git a/api/specs.md b/api/specs.md index 1a202ed09..822387d95 100644 --- a/api/specs.md +++ b/api/specs.md @@ -655,11 +655,12 @@ Foreign keys are enforced only on Postgres (modernc-sqlite runs with FK OFF); th ### GameServer config password redaction - Every covered response omits `metadata.annotations["kubectl.kubernetes.io/last-applied-configuration"]`: this historical manifest can contain passwords absent from the current config or template. Omission applies even when current config is absent, empty, or malformed; stored Kubernetes metadata and other annotations remain unchanged. `GameServer.spec.config` stores wizard values in clear, including those of `type: password` fields in the template's `configSchema`. Anyone holding `servers:read` (or the owner/collaborator fallback) could therefore read every password. The API now redacts them; implementation and tests are in `api/internal/handlers/config_redact.go` and `config_redact_test.go`. -- **Marker:** `__gameplane_redacted__`. On reads, each non-empty password-type value is replaced by the marker (an empty value stays empty so clients can show "not set"). The password-field set comes from the server's `GameTemplate.spec.configSchema` (read live and memoised only within one request, or within one SSE event, so a template edit applies to the very next response and event). +- **Marker:** `__gameplane_redacted__`. On reads, each non-empty password-type value is replaced by the marker (an empty value stays empty so clients can show "not set"). The password-field set comes from the server's effective `GameTemplate.spec.configSchema`. When `gameplane.local/effective-template-revision` is set, the API reads the server's immutable snapshot from the selected cluster and namespace, verifies its controller owner, identity, digest and template name, and rejects deleting snapshots. The exact stored JSON must match the pinned SHA-256 digest. An OnRequest server keeps its admitted password rules even when the catalog removes or retypes those fields. Servers without a pin use the current catalog. Rules are memoised only within one request or SSE event, keyed by template, namespace, server name, UID and revision. - **Covered paths (one helper):** GET/POST/PUT `/servers` and `/servers/{name}` (including the create and update replies), `POST /servers/{name}:clone` reply (the clone itself stores the source's values verbatim), `GET /users/me/servers`, `GET /fleet/servers`, and the `/events` SSE stream (each watch event is redacted on a copy). Share links expose only name/status/address/player count; capture, mod, tunnel-credential, notification and WebSocket paths never carry `spec.config`; the audit log and its sinks record actor/method/path/target/status/ip/reason only and never request bodies. -- **Fail closed:** when the template cannot be read (no `templateRef`, not found, API error, malformed `configSchema`) every non-empty config value is redacted. +- **Fail closed:** when the template cannot be read (no `templateRef`, not found, API error, malformed `configSchema`), or a pinned snapshot is missing, unreadable or invalid, every non-empty config value is redacted. A failed pin lookup never falls back to the latest catalog. The API needs `get` on ConfigMaps in each allowed game namespace; the chart grants it through the games Role, and remote kubeconfigs need the same permission. Failed lookups are not cached. PUT secret preservation uses this same effective schema. - **Update rule (PUT `/servers/{name}`)**, applied before the write (markers: every key; the other rules: per password-type key, every key when failing closed): a value equal to the marker keeps the stored value for ANY key, whether or not the current template marks it a password and whatever the stored value's type (the marker is API-emitted, and a fail-closed read marks every key); if the key is absent from the stored object the marker is dropped, never stored; a different non-empty value replaces it; an explicit empty string clears it only when the field is optional, for a `required` field (or when failing closed, where optionality is unknown) the stored value is kept; a key omitted from the body is removed as in any PUT, except a `required` password field, which is restored. This is what makes the dashboard's whole-`spec` PUT (`mergeDraftOntoLatest`) safe. On POST, marker values are dropped. - **Not covered:** Kubernetes API readers (kubectl, GitOps, the optional read-only `mcp-server`) see the stored object; protect it with cluster RBAC. +- **Pinned source clones:** cloning drops the source's server-specific pin. Before creating the clone, the API checks that its current catalog schema still marks every copied, non-empty source password as a password. If those fields were removed/retyped, or their protection cannot be verified, cloning returns `409` without creating anything. Restore the template's password types or create a new server with fresh configuration. Safe clones continue to copy config verbatim. ### Audit - **Scope:** every mutating request (POST/PATCH/DELETE); reads excluded diff --git a/charts/gameplane/templates/api.yaml b/charts/gameplane/templates/api.yaml index adf54a0d7..111983d83 100644 --- a/charts/gameplane/templates/api.yaml +++ b/charts/gameplane/templates/api.yaml @@ -96,6 +96,11 @@ rules: - apiGroups: ["snapshot.storage.k8s.io"] resources: [volumesnapshots] verbs: [get] + # Read owned, immutable template snapshots for pinned-server password + # redaction. These lookups never list or modify game namespace ConfigMaps. + - apiGroups: [""] + resources: [configmaps] + verbs: [get] # Verify GameServer -> StatefulSet -> Pod controller ownership before # serving pod logs or accepting terminal input. - apiGroups: ["apps"] diff --git a/charts/tests/check_standalone.py b/charts/tests/check_standalone.py index e30ea1211..c8214eb76 100644 --- a/charts/tests/check_standalone.py +++ b/charts/tests/check_standalone.py @@ -84,6 +84,11 @@ def main(): one(defaults, "ModuleSource", "default") api_rules = one(defaults, "ClusterRole", "gameplane-api-read")["rules"] assert any(rule.get("resources") == ["clusters"] and "update" in rule["verbs"] for rule in api_rules) + assert not any("configmaps" in rule.get("resources", []) for rule in api_rules) + games_role = one(defaults, "Role", "gameplane-api-games") + assert games_role["metadata"]["namespace"] == "gameplane-games" + snapshot_rules = [rule for rule in games_role["rules"] if "configmaps" in rule.get("resources", [])] + assert snapshot_rules == [{"apiGroups": [""], "resources": ["configmaps"], "verbs": ["get"]}] assert "--standalone" not in one(defaults, "Deployment", "gameplane-api")["spec"]["template"]["spec"]["containers"][0]["args"] values = { diff --git a/docs/install.md b/docs/install.md index 4ec438c77..6ef2122b3 100644 --- a/docs/install.md +++ b/docs/install.md @@ -684,6 +684,14 @@ Before registering a target cluster, ensure it has: - Gameplane operator and agent images accessible (same registry as the control-plane) - A valid kubeconfig scoped to the intended Gameplane operations and namespaces +Servers pinned to an admitted template revision also require `get` on core +`configmaps` in each allowed game namespace. The API verifies the snapshot's +ownership, immutability and content before using its password schema. If a +snapshot is missing, invalid or inaccessible, all non-empty config values are +redacted; the API never substitutes the latest catalog schema for a pin. The +chart grants this read permission to the local API. Update custom remote +kubeconfigs and extra namespace Roles with the same permission. + ### Pod logs and PTY console permissions The central API must reach the target Kubernetes API (including streaming/SPDY From 0da2fa6d8cce928700789533730b530ae5992b32 Mon Sep 17 00:00:00 2001 From: Baylem Date: Wed, 4 Nov 2026 00:26:45 -0500 Subject: [PATCH 13/17] fix(web): synchronize backup coverage Pencil designs Signed-off-by: Baylem --- assets/design-export/MANIFEST.md | 11 + assets/design-export/json/bHJy6.json | 273 ++++++++++++++++ assets/design-export/json/zhLZN.json | 73 ++++- assets/design-export/screenshots/bHJy6.png | Bin 0 -> 52320 bytes assets/design-export/screenshots/zhLZN.png | Bin 127997 -> 328777 bytes design.pen | 343 +++++++++++++++++++++ web/e2e/screenshots/capture.ts | 13 +- web/e2e/screenshots/slice-3.spec.ts | 20 ++ web/scripts/compare-screenshots.mjs | 8 +- web/src/test/handlers.ts | 14 +- 10 files changed, 742 insertions(+), 13 deletions(-) create mode 100644 assets/design-export/json/bHJy6.json create mode 100644 assets/design-export/screenshots/bHJy6.png diff --git a/assets/design-export/MANIFEST.md b/assets/design-export/MANIFEST.md index f8656ad32..60128ae85 100644 --- a/assets/design-export/MANIFEST.md +++ b/assets/design-export/MANIFEST.md @@ -2810,3 +2810,14 @@ Merging master after PR #815 conflicted on `design.pen`. The file was taken from The operator has supported `spec.idle.wakeOnConnect` since v0.2.0-beta.8, but the dashboard had no control for it. No reusable component changed and Row 26 keeps its height, so no other node moved. `check-layout.js`: `NO ISSUES`. `pen-componentize` `audit.js`: nothing new on the two frames; the repeated "Field Auto-restart" and probe "row1" structures it lists predate this change. **Exports:** JSON from `Get(id, {depth: 80, includePathGeometry: true})`, pretty-printed (zero `"..."` elisions, `python3 -m json.tool` passes). PNG from `Export(ids, "png", …, {scale: 2})`: both 2880×3240. Headless `pen interactive` session (pen.dev CLI 0.3.14), with the lucide icon font served from the `lucide-static@0.563.0` npm tarball because unpkg.com is blocked in that sandbox. Body-text checks: `"Wake the server when a player connects"` only in `i1bLR.json` and `A8vGwM.json`; `"unable to wake the server"` only in `A8vGwM.json`. + +## Incremental export 2026-11-04 — Backup consistency and volume coverage (PR #769, inherited by #772) + +| Node | Name | Change | +| --- | --- | --- | +| `zhLZN` | Gameplane/Backup Detail Drawer | Added achieved consistency and legacy volume-coverage fields after Server. The legacy state explicitly says capture metadata is unavailable instead of inferring coverage from current configuration. The drawer remains 440×760. | +| `bHJy6` | Gameplane/Backup Volume Coverage — Recorded | Added a 396px-wide coverage state with capture time, the single-primary-claim scope, and included data, excluded rebuildable, and excluded unclassified claims. Rebuildable is explicitly a declaration rather than proof of recoverability. The width includes the drawer body's scrollbar allowance; card padding includes the 1px inside border. | + +Source: `web/src/components/backups/BackupDetailDrawer.tsx`. The recorded state uses the matching screenshot fixture in `web/src/test/handlers.ts`; `web/e2e/screenshots/slice-3.spec.ts` captures both node IDs and checks their distinct content. + +**Exports:** JSON from Pencil `Get(id, {depth: 30, includePathGeometry: true})`, with no truncation markers; PNG from `Export(ids, "png", …, {scale: 2})`. Both nodes were visually inspected in Pencil, and the recorded state was checked manually in Chrome. The user saved `design.pen` in Pencil after the final sizing adjustment. TypeScript application and screenshot source compilation passed; automated visual execution remains CI-only. The drawer reference crop was remeasured as `(120,96)-(1000,1616)` in the new PNG, retaining the 880×1520 panel. diff --git a/assets/design-export/json/bHJy6.json b/assets/design-export/json/bHJy6.json new file mode 100644 index 000000000..adabe84d3 --- /dev/null +++ b/assets/design-export/json/bHJy6.json @@ -0,0 +1,273 @@ +{ + "type": "frame", + "id": "bHJy6", + "x": 2276, + "y": 4461, + "name": "Gameplane/Backup Volume Coverage — Recorded", + "reusable": true, + "width": 396, + "fill": "$surface/surface", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "r8Owu", + "name": "Coverage label", + "fill": "$muted", + "content": "VOLUME COVERAGE", + "lineHeight": 1.333333, + "fontFamily": "$typography/font-sans", + "fontSize": 12, + "fontWeight": "normal", + "letterSpacing": 0.5 + }, + { + "type": "frame", + "id": "mfHN5", + "name": "Recorded capture manifest", + "width": "fill_container", + "layout": "vertical", + "gap": 12, + "children": [ + { + "type": "text", + "id": "Z5aM17", + "name": "Capture recorded at", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Recorded: 2026-07-13T00:12:04Z", + "lineHeight": 1.333333, + "fontFamily": "$typography/font-sans", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "etbdz", + "name": "Coverage scope", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Only the primary data claim is copied. Rebuildable is a declaration, not proof that recovery can reconstruct its contents.", + "lineHeight": 1.333333, + "fontFamily": "$typography/font-sans", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "zLDqu", + "name": "Captured volume inventory", + "width": "fill_container", + "layout": "vertical", + "gap": 12, + "children": [ + { + "type": "frame", + "id": "jgV6n", + "name": "Volume game-data", + "width": "fill_container", + "cornerRadius": 4, + "stroke": "$border/border", + "strokeWidth": 1, + "strokeAlignment": "inner", + "layout": "vertical", + "gap": 4, + "padding": 9, + "children": [ + { + "type": "text", + "id": "F0Qiz", + "name": "Claim name", + "fill": "$foreground/foreground", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "game-data", + "lineHeight": 1.333333, + "fontFamily": "$typography/font-mono", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "b4aDFu", + "name": "Coverage result", + "fill": "$foreground/foreground", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Included", + "lineHeight": 1.428571, + "fontFamily": "$typography/font-sans", + "fontSize": 14, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "pq4ts", + "name": "Volume classification", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Data", + "lineHeight": 1.333333, + "fontFamily": "$typography/font-sans", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "fM4kj", + "name": "Mount path", + "fill": "$foreground/foreground", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "/world", + "lineHeight": 1.333333, + "fontFamily": "$typography/font-mono", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "DTQiV", + "name": "Volume game-extra-install", + "width": "fill_container", + "cornerRadius": 4, + "stroke": "$border/border", + "strokeWidth": 1, + "strokeAlignment": "inner", + "layout": "vertical", + "gap": 4, + "padding": 9, + "children": [ + { + "type": "text", + "id": "MiYbU", + "name": "Claim name", + "fill": "$foreground/foreground", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "game-extra-install", + "lineHeight": 1.333333, + "fontFamily": "$typography/font-mono", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "GhJX5", + "name": "Coverage result", + "fill": "$foreground/foreground", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Not covered", + "lineHeight": 1.428571, + "fontFamily": "$typography/font-sans", + "fontSize": 14, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "ektuq", + "name": "Volume classification", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Rebuildable", + "lineHeight": 1.333333, + "fontFamily": "$typography/font-sans", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "HGTOq", + "name": "Mount path", + "fill": "$foreground/foreground", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "/serverfiles", + "lineHeight": 1.333333, + "fontFamily": "$typography/font-mono", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "VdVDP", + "name": "Volume game-mods", + "width": "fill_container", + "cornerRadius": 4, + "stroke": "$border/border", + "strokeWidth": 1, + "strokeAlignment": "inner", + "layout": "vertical", + "gap": 4, + "padding": 9, + "children": [ + { + "type": "text", + "id": "Xox0R", + "name": "Claim name", + "fill": "$foreground/foreground", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "game-mods", + "lineHeight": 1.333333, + "fontFamily": "$typography/font-mono", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "Iarhd", + "name": "Coverage result", + "fill": "$foreground/foreground", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Not covered", + "lineHeight": 1.428571, + "fontFamily": "$typography/font-sans", + "fontSize": 14, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "xtjIY", + "name": "Volume classification", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Unclassified", + "lineHeight": 1.333333, + "fontFamily": "$typography/font-sans", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "o9BwkI", + "name": "Mount path", + "fill": "$foreground/foreground", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "/world/mods", + "lineHeight": 1.333333, + "fontFamily": "$typography/font-mono", + "fontSize": 12, + "fontWeight": "normal" + } + ] + } + ] + } + ] + } + ] +} diff --git a/assets/design-export/json/zhLZN.json b/assets/design-export/json/zhLZN.json index a61847465..741ccfd75 100644 --- a/assets/design-export/json/zhLZN.json +++ b/assets/design-export/json/zhLZN.json @@ -22,8 +22,7 @@ "x": -12, "y": 0 }, - "blur": 32, - "spread": -8 + "blur": 32 }, "layout": "vertical", "children": [ @@ -167,6 +166,76 @@ } ] }, + { + "type": "frame", + "id": "T8CP1C", + "name": "Achieved consistency", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "No2fi", + "name": "Consistency label", + "fill": "$muted", + "content": "ACHIEVED CONSISTENCY", + "lineHeight": 1.333333, + "fontFamily": "$typography/font-sans", + "fontSize": 12, + "fontWeight": "normal", + "letterSpacing": 0.5 + }, + { + "type": "text", + "id": "f04lR", + "name": "Unknown consistency", + "fill": "$foreground/foreground", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Consistency has not been reported.", + "lineHeight": 1.428571, + "fontFamily": "$typography/font-sans", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "W6b7K", + "name": "Volume coverage — Legacy unknown", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "J3Xx6", + "name": "Coverage label", + "fill": "$muted", + "content": "VOLUME COVERAGE", + "lineHeight": 1.333333, + "fontFamily": "$typography/font-sans", + "fontSize": 12, + "fontWeight": "normal", + "letterSpacing": 0.5 + }, + { + "type": "text", + "id": "YFaQj", + "name": "Unknown capture coverage", + "fill": "$foreground/foreground", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Capture-time volume metadata is unavailable. Inspect the original backup and module configuration before recovery.", + "lineHeight": 1.428571, + "fontFamily": "$typography/font-sans", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, { "type": "frame", "id": "llkFe", diff --git a/assets/design-export/screenshots/bHJy6.png b/assets/design-export/screenshots/bHJy6.png new file mode 100644 index 0000000000000000000000000000000000000000..4685c56b382e5288f2a6f2578569d68706b50cb1 GIT binary patch literal 52320 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

ck$JMX!}r9sis_rSDjWPIF-zjTis z$E4f~M1((p{~&C9(Y-c4dg2-xz;ER^FILZS^k*3(S&o4+Zo_j=)3W0?SvJ#SxhFWPQ7_ zR2ZLA;cL#nmpnJBTV;y0KQliGJ10`r7dft|-}%DYrj| z=X1{8*6+A~%VXbbp5^xhs@M5%&h4^(QzBZtuXk=H3?GosvhGIjJb{jB^1UvC7r{vKlZDy~lLla8V6*6c3%u zIKLpDNctHPb7iT7T(lwk>Lwc>eGppDbS;UNkbj2Aw@LQ2$zjPAby*}iQ7;V}1TwMg zOaB}%8o==qqZI+Zdi7Kn=v@6HpY=1el|3nr-V_|MR4QiwO&^33lCIL3Mh(06lV&}7 zUE$ta(5h9yLLLd69~USwmGHzmcKLa8L>OgC>;}7Zb>1y0DL_IM79u^tRvy#}^$c`P z?uMdfEycs;2QF2?!G%=kpC#5fA3;mDA_%qhzW2tpev~5%bsml3O%-MtHXXXHgh{%w zteHufKFVuat#jxN!f8ggsz8{_EZDo`b3GY6)b}PNaz*P0P#BWF{WV(W5R%ubCw$3$ zb*%qv{UZ;$-@W-gatVGCNHm`AmlZHX8T`ci@XcW6&%*&l=8nN3;170G`~g-31) z&kFj6biFte*!Vcq0fz69M3ySy@vvv8)uF@yCp(u#Hr^eno-nmc&M=uA1nIkbZH8Jm z2xgBm$D8jq$~f~(l|1Jjt{e!cOJq3W8+U1xtHQcuZp>rql2W`BBRyNGq$pnbIiJN& za*W9~!i_qnI;#KvkH%vFz&!%K42-<8U>7`CyIEhIuC}@>2{N;`Cu2E7J@mMS@O?q@ z*WxN#Ho{?1_eDCzHP6g!g6#bMNR`0b_``0(aWnTY3it(Mtx;>M^VY#(kU+`?FtG}*FF zkT81_E;56*oXa_#?vd*8^4umokbALT?r-p>za1mapQ(l|&o_hKI!o94`^f~#W|3Ea zv+TUESrk^atXOPrlf@_2mBJqcb@okUzR++9ZyyUowkDr10PpCq*=MhPIoFr#e-ay^ z7q_ZG1vsQnjt}G1;kp++p7Ex8S%MiOyH|*%>nZ;i%?k9$BeD znh;IU@=1v~AO7X_rvX_kK6ff6+yBe>l+hTr)WxMoWzk7m&xn^$`jd$Uq0_p)se+_l&VVO)$to2&|8~P3 zBca8lVB5!}(2;d@d8B#V30UL=ktKtw)C>>_5Lv1@j8BEgzlDUNku=z3$_N;HTP=wF zFm<DD<$_fUnV>WvN&R9^UXwY_$z$T!=>YO5oDT=V+GlaDLV8KLr_87 zyV-vSKBE_es%l-u^~i6VyFt$NhKo*c2D=?J<0$gDD_%>7P4ugG%}aDKUTl?ja?kKf z6J=x!S6S#T1*J{!ijgo^DyD@4E6w>kijL_>bc;s&G!G z74im7wKF$HFFIMPnpgs*t8l_~7K&XiESRGXw74mUC%M&GPVXt2y{osm5~!YBE4T#d zqxT$>aloPpHasFH-fdWRqv$S=i*QQFTNmvKwOd{2g3s!=g&H;30*=G zMKC_k1ETaK*Eanp9_|LBVeOy>rkho%6^@@&_+IlvgzwXB8{R{ltrr-0Fp4y>0Uux;CBmKHh>~kEMppUY|Az>9~Y>3|l#n zTc$9#@l3QDzI`ftoCD}!om&K)+v%!~L{uOrSRxuQ>VIUe5nI_SJ6;raE5ALo4afnEHta&oc=SE+FHZ*e#NR$0`VXO! z(ikGknuregto|wIpWpuYQTe~5%zxPsm8hj{O2vc{q4fXNWs znfAl=?FI7xA;6+qP4{lU48H2y`G1}EK6f%wlxqbnkzo<5|C!x>Lu?~39yVL^BoKKd za^+V4k`UZl{Rqdm=o4GUfk^-mYW8#aw+mO;a7clV?x)xdvE{KTXfujsG7 ze?s!XQl`ZmVbY5}W!X>mA4x^3EWH^7HZlKP4vR^tlYk0*e(D|x3WX43;9$b5i zqE{(*tMtrqcwFq}Xoc67GZ9xs}C7fSST9TjkIj*5U4ZQ+! zkKM0#HI(o)gqS@bIj%EZsW&QOLkahK{fAy%g)l$x2x8h=C`MW2$zEo%G>y63Xi>v9D*l{0cxTdgy4Vlq-<>FU^PXUBHb z$OZ#a>M|&H^H!h!()k(P?8-YGW}@>8cZo($2@5~io5}sdHMTwpgSg?^uPZrqEjtbs zVkKTPpZL`ezif6cCoeHw45!>2zQCCXZ^g*BTdUcrlaX(a``(ms8>)cVd`)gQ z`G*TY9Mzf`CA=y5d`l0pH5L7pi#(|v=`!9<5wpVi7@LZcaD?0~JY4Q@M zT=7k#FYa8p^LEd8%Dgr}C}EE@QNhc`=NwPkFCDu?ELj**??88EXsymSMJl4!G$d5b zwH{=%rj(i_ow^K+xCw6AGHEO#UFw`>EZkI*$QpMr=dltJt|dW?`UJG(msqY~dAb#( z7_C*y_B8kIxQhyMzl!QxxL)GrZm+9G%k#SXDGN6!w}G_yBS?+f$>fl%$RRy=`xzJd zjk+QOob*_{Im3M{ox0IT&Jd|dKD@1Z28Nx?Ac>BgxtH_q+WU3|H(hUWrRZe63s*>% zSe3oEkadmBcp^cuVF!an0%j=-P}p+DxWOgH;;$Z_${U`V zeIlFr27RTj=5ajUh1t%IHv5@{=eaFr=d=90tsK|EUcOwqt_CVJ*!C_(Do{PnvHgPP z2AQrsMtTlvQJz0F?{@lWn+4Y%98sDgtg5UC4NGy>#Lb(}Uw;>mGU{u4;P{KD6Sfe7 zMVI$Lqmx2x=JCYvHNC6uDb9`*OD#~Xs&Pp97u_>Y>#STl1`_l1*9Um3`HWOQPjG!H z(~;d|Eh(bkXM0!hKnZ>oDIlZPidNeKecbzsd-xaDr&rDUXJQ;hssz2#c>XyhZzA1$ zXkD}BVln8P78<*j=f@SCX(zm#dDg(1JkQ`abvI-VV?=mQ){Y9PPVimN9pft?^)k{bVnI$+?{dqU!|^L-DW8g%hGH zG`YaOjLub)x^s?Wx*ufqsygn=1-=YF+^_$sJwPPad`)f$gsdB+=lZS0Neo>8^U?b% zJ6u*ylirlk+{#SLXkQ4ZIm2d!5mu&MM+HEyR6m3+@qP{W3vYyNy(SK{U1(UnJ@iKw zQvd5cysaje9dmf;0dy_bk?uAWcg6kb9$`6XXGaVro0ygVu9t7Uap5^Pv6ikXfF|TZ zcs#;}DmgLhZL z!2#oqDsOK1Cai>j!JsoDA<2hl#2Bjgc9N1b36%a7e(%yk zhQgJRn|yv}%V9|^iSgfZt+gOVf#P3_19-8c4VLkF{nJ#0tk_(w83BbkCV1RpeO?P- zKBg>_&K-xEfZ^s97L_Knl+HqH|kPIf47 z#Fxw`ApVDmvkj~ED#AK!#;xNTVF^X1$HNjxl=_a=+6c1SXIZR8#Mq!C8>WfuEXva3 z>&KZ0l+Yhg2!JOoL41(pv*yulM(eJ_f3k)dV}m9^r31%mIEh;oFf%?q9&ZuvwP`;t z38)0e&;d;7-kTWgj5ZWPTgVmWw-_M-@?}sMKBREPuE9!=6Y>)%EX4{w-%)SKd?Gp4 zZnb}+lxZk<8Ni9R^qsKiV;@Et#fG`JCq1I7b@cL29uJcOI#kmq5RCMQ#~xOsE0SO7 zev0yAr*fEimuHWy_EZQ1$wT>m4EBwBQc78$g$p}hm|@}h0Tj_AOEsaZ&~n~Z*SqHH zC{PCF2=l5Vxh6Z*3L<*0f0hkYVSRusSp*-v?M+Z|$E31wTED`VJNfv)e1@rtr? zn`>ED{kgq&K~*NNr$2slgT)P^yE1XCh0B{FpQxQh)Q=>9~su*2fm$FoQXpU+(LttjyALLHAo*2j%uYeIYW>wKy# zqg$<3e|j>4ckcrcbNA1s-A-ny`Y%iAndj)Y>6=WSJL`h5-10%*Sv-}_vQ2u;|5g5l zU+i4DS|@>TJARe=M$*TmbKLk4gi7zKG?=a^!`*>JPFpE`G+wY+?7QXd`CJEuj8elO zdmq$y_kfxsq=Q9_7H8kzgmN!nY-NWw0}et1WVtlsAw|prLWWFE8;3 zd46`j--q(=6j!uF@9vrvX{0X!i;1j5o2Nkk76FIs;+C? z@&qr2F%jR^7tU{MZ#Oe@iz5gbel5f;PVNg=r@Je{@=HZqy`)Vw<^b;-v-+Xd603ut z4qH#^s)vSkkgs;WBIj0f(jv36*9Fb-f^2+-ODd32cGJ*hM}@K?kYDvy_eQZ~C6Wbq zX{W8(dQXWdqfZ>}(nsQ=T2YmmbI083{3!H~iqsSVy(|6^daPpBf+P}9XA%@46{k~q z^-Bz8^O~Q@t+i8EM~b}MJFZ+$e?t(kEc^zv5RcIX-{u@Q1e#ZeWd$!l{8rsF1^h5h z-OA$R=egyKl}eD^CdOk9eQ`6>Camxxn)AkI+R zN;+VnNb-C(OIPL)?v!ht7s_AbfsHlMVxsLfgaulDVX)RQEH~xhpb83;mlmXmMS=9H z-oeu&*N;!#t(U^)_1AbR9h00Bt*ZdV)|%MHPBvoG9LMShY}am#n6&6LegDmrS~~wp ziigHq4fNY@To}g8tW421GY;EPbmtH=xtsH=9-yHMoqtS5bzRsvfS40nSCcdqhrDfP zk|zHo-j=&`qa)ErLf&|X?XgON*;*cnSd;x|$o!~qAarUcqvTdc*Y&%%#8l1SZHqYr ziK+%`HMdh{{y1?RrH!~w!c_Kyh$gNIXBfN67i3PT;rw;2$xgTriqzxrHnW_boS1nv z?^K^P@cIt<3Lo3?3-w`_P4aMRqKcl@VQup>qG8=I^I-yq=94N&4&V+vyS zyR^;P6SP+4D{dgwdA);+$FCx0Oy-y;4KxH+(t+oHtRwU}36J|2Y(Aff|Dq^AgVJAQ zpfIzlwKWW;;xnE6uJB#5$aEF9DSztc<@VP{Y&@HiS2YIy@Vl2ol8+@_kA289`8uA7 zENU8#_sMKc?$YR3&z$UDn){j;ikrfx(QkbeiCGK#y%UA_C?=l5(>Y{tBTqjxkk4{A zE@+IwauXLm9A1x_tC_uyZ`$#TX;4^G#!77ZVPqRi3a@(d^hHIdvIfjdvkJa)c`DP! z-`~pz<24q?r7d&>w@-q3glVlVB$(xeEYhVOr9%7NhA3nmoS%4`|dpDGpstiGq90NJIHcHj}j28Jv86Da#-)> ztUf)>$~brZWh=ZOrQ%)G{>*27n-k6}5;qY}(=W8H4I$_aFWyyvpQUFohdsbp7yVui zzVky{LG^G2%oikI+*)yxfn#{e81%R4);z5|rt1z3vq{xmBXY45$9jUi5<-{nZZH+^gMa*X z$#Zt{rSHl+qs_UG9{l&O<5Rq{ZjmSNN~PbPAX_2$NY^laonuF)^xjO5^I8ap*(Y`e z@Dr(GZdNu#=|yu8m33k)EzB&~qK{Zo$OVlAk-3?}ExG*;$Pu1*4_R#Lt0_o7%r2pY zDjn_saiaJoHKC$y@R07jp#ub$SY@d(ETY?>N}xMN0%UIcCxtE65o>1#vst(9^Dd6} zs4{bXD|O5X`+-3CSRKCGIAT`UQeqK+qNTONA(V$q!RD>Vl_$S2Im-??@x@*f1CmRs zs#>eXIeOS&TV#JTY*Y4}h{%31G2ohaNN*vjk(8~scSK}Cz#A*y-+CAc)yt4v?tXi}erSys zoh%nv6}|uFGQs{M6#sJlv3W3)PM{qe{59PcscCIPt9n zon0Plg0|o5F}yYMGxPt$3o7(jKLx7!>O)HNk`( zYLfh%5-S|KQJk+Vo~GE~bk{j$J0m^Ril(Evo@@PCY^j#2|100z@oWE@Qs8EA(<2eZ zoj7N;;9m&Z=D#aI%=&^vYA#mvo&Dx%ZcZf*on6$HIaiwNpvx~ZMP@J&DOmzmh98t| z8m|g!&c^jrAkB-83wE63P={BQ&Qo0YcOude?6f{jT0*XHtR7y47cX(j_tzO35hFwV zVx|q;-M)hIVf6*Vo_hAFj65g^(8^rV-Q%RwsLNS$`3xOcm7SP_%~*qvrsqo?wkd(< zsdQ2Jl|Blu!l6Msr_#3Mue>r9kEX~8xx^asN*~#rN9xb3#svVy879oqfH#t?`BNk% zH!FN_=_A-)1YT8715V5HD7iRJgBF>4FJHI*IW}y4wJ2SzfsMIVSKKXG*@31?FXrYU zp))#`%DDEP6Hwuh@>k)f`}b`zt;ONw%Oeb$#$GpT@n#bmv7|UZ(pvy!UHK>sM0_(> zp;%lVVW+9)2JMN&7DwK|Qt{)2x}Rs2H*gg`Qf|hjLXOM$X~=dovafUDOhz8M zJWnxApqso(PRzELAtc@Qwvf{XQXP8638hIbaW8d3a^yDD^gv4j-NHja6n0)2;9a`n zljOWZ=nwRO#Y0CSi5*JD&;ZUt*F&mzH=mk3@T^SMsK8B#f8nBk5lDNQYZV3cbVtZ6*Ju^gHpko>jNHkv}l7@WI@ zI&4i){!O%gLDg=8KISr80%c*KdruK^$a<^xuS~%}<%s(8mZ^IOx=IlF~TgRp6Q&zyHcw}o$mq#`=c#?I|NaNsW?&vKXVTE38BI^|`Qu4Y6Z zNZj|PiAgME|L116)RC{42JR+tBrC0QuVU=VPWTn*p$Cm*5dr**#iO60fNJ6@wkw^N zrRU)7rQcuC;Obv=QsVX~W&Z>?fpzSJ`E#$gO~yMEW8r~5;lU`G-$m!^p{2u>KO~Rr zE_lkN~@mHmQyj8t_*SCxRs9fi^rNj@EjLm=lY%nqXG|IzBy zqHI^Vd&ZeIjcfnPO53uN8lW{j=eX70|G$~Kt`0zZ)!~A_YDTgtca;9pzXrA?wJH*W z@vkD(_*J?b0~E>4EB(;k{?&T)|3wc3JG7AjBrvNE#yImDXbGse5WtzqpKTC53q-c{7!NJnHtb{ePN5wf-! zoz|2CZ!NXXnMaPb9currlfJm;mj&B#i7)1oylAjm1N^W`)T+pQz`f4&h4M_!!OY@6 z;rMUaUN)~M;IKoJ%(u@?k^q@dGp(_4&-e)gbbrIjP(w?(03gmP1y5Wy?^k*Ub&R@_ zO470gkhPQ6pW?m(7WWGY4A1CS=Okr1lYJD|GO6Edn!1YE=&E;NK3m)J%g>{CvRj5Z zyWs?9E>Kxmt+dPTR#SD3`J}bqgFA}pjR_+2?-balzy7?PVtsNK$aK3ZiS%|g;3$6S zvqayj@m`)t)#drbp945o8$6*}Iu*@ z`oX2$XdGuhDu4NH?J_J*;4F^CS{$Dd3407tSg>;5xB@MWtn88e%hD(s=`MH0jv8t$ z9wDM5fR;i+g}(Pa&eTY8YN8KbanDC=pfg*O+CNm5OgyVlvj$d{;f7O$CaijxeQ zR$)nbBW`Xc%&z9OJOFn>+41#jx#sg2qNJDljL{e&$>b6h9_lS9M*%f^<1Ii|2|&u{ zFSib#9UISD{-Z00o_~3kR;qK|N;4M6Hs$P*zt;w_6o+ncusSShAjh*%;zJ^uAX!hJ zhiB_W?{_-5QLfrCums(UhyYUX01iUHqlg8tiF6QRRj!DDL?&BLY{w9z_DiXvcCb%VQno3@3Gm)XvXh5OWo4V>j zQ0ST|>)6au_C3@RD`UmI8`?|Klljbwhu}Y+E7PPQ6zf!2fCa?reC}SLN(1NSp8Wi* zd$}qgNVK=s?nAPkJ%3O85_7sM+fgKlM-)gb-^CN9L&rLLWxWL|i16Z>0F?(Om2(ON zUd}0#Z6w+fQ-*FcL?&wfB1)wF8HYxck{WPI|-fDFJStVr zY@=t{{dT>;wS^E?zithVe$H=wvsPgSWNVw0K#RzF5tkm5TmsWz5eql_dpzjYloDMH z*e1ZLko7{!^U(2a46vK?p3fOC7X%s*jg(_vnorynaSM6M-KoxZ=@TRHD`{&-l=B{$SUQ?iy9u3YDG zu3g`k7}Q0~G$3-O1Ds(jm{TB9H)^A)t~39@nPmnJ>ajBiKAB8n7ued>f&pO-NkG$GYLNL4l19N~+ zrsqrGX%K+Zoo@ot@R~uY$yWt#=bZb1d@D~N_@h)iu|66gQV2L6fvLP;xu3z5PgI4~ zm--t*4fHOO^dh)PI;NjFW9J+?i26M|o)xQ{-%>$2F^A zR%Tw?d$61G)N*21h7=m-sq@0@>3tUOjuHZh3XnA25%n*UuX7#!i^62kby0V7EisaZ%!B8Lb;VsS)P znk1wTNOTHldcJ)#$f?bL*b`%;j&mQAJ&cK-u8ojM%rQi&E{NVURM$tI(jftB)EY_F zX(NC;$+*D7un0Yf7f&GFc6(ng>1uk&8h3Wjh;odxc>Vf5MB@=XTf&7Rk&HL+*_2^zq!_iwM@dpE2 zC0)FUB0=sz`n|b#ujD&mIt<|L3F_uamRhU~SX|4|T1u>+H&ac2#>Z^!EHY4qPB^le z0&$Afi=Za_!+W6gl*F*lia0%F=-;PKqL*%}FxFr>g0Z=u|#gKuju_uTH zxyw12apF&PyRWId-WPGH%_uB%ir}bc{(4vs z76xFF(NNJh!A(1MQ_ssg$bV=f*<8rD9!nF|1yAE!(Tj3Ow3EAuD9vD(DBQ12qhmj?(Ouf+SuMhj^sOAw?tg^Wg}08^?|A zGwyGVpf%-B?09vzXT0_7|KS37((W0O3ypng{?o0?o?~6%$-KoJ)AZq%N3%O0SQMis z6nrtu9La*L4bSAYh~E%l?RK+a575NNl5Zc9Rto@9J>KU@gq62XNzq;Hxv!<`%^sRl zz0rqdkU_mCNB}5M+)k-wr#Zadua5Zi;dB}sl(83~dbC$E4mgMPBYmsvk(nZX zVvg1?8^1mJ7XFQ5TQTuO->aVU0c|rD14#|h0xmyAmw34=FpcxwKF|c4^G>#fy(|1E zU!ot@>iMw!jCQ8=BbR8;FTu}-fFdC^bHW{omf42YML*V4)%f2%oQ zqq@~wE-rLZ;&3!oTL0CaO3bv)f|a-Xi{TsW@f{L~fdT@vvu&e_Hn5v&%XyMSLWF=< z)LhGjeD497F~lRU{ZOL&Tjwo<+x7FQ55s@ja$LqOPNdzA)%v6G)3M5_T$o#Y61<*B zNPS4v`dy^*8FIlZ>tiAe(Fn_9MkVKdAB@ z>{kG;S3g`#(8F6VJR#VM0$DQmkxQ+yHk^_vQN?juK2jFTQny`qhj0(7#=Rk8OvU+* znwijqB>Zs?oVd@b8 z+y&(OXSUo8I4@u+RQO@?G*@r$h0DoyRb+k;t0x>-gMPQyV!0-ahD+?SRX;xgX?5Ye6h+Lm%>T;(vGwM5W?VNEsLCMQ zuwLVU(!<}%3~OvQ|#qN`ZD={|S|yqC?GPU8W-N zKyerI;UV^_<%u!NG(|STj#-z`@-SAv#+0bBud%f8Amx!33SPD zishUba4xEV<>bh89^c|TPcP0epJBZWh0&w|0T&ZIlx({$_tqikWkltqzsRjMGf#0Z z{sE<#P7!7 z#*=sCt|**iRX|Av>5W5zO(}lO>bcRxmEW8)E+$f*C52%-oxAs2&c1$kX3P0GvrS*` z#?!3>`2WY*d&g7xzwzT)A!QcIj?$2kvN@GdZ=q7DY$|0Qdpl05Lv||4N=q_Nvd1~H zv&+n0#~#N#IOF@et@QbRfB*a*{iECMeywX?&+B?EHJP8MFu4CQdT%apiP$J`!IEqw zv2dH*#Z%L5)^TZ)22z|puKS-THOSt$r_M3Ad1{WEe}L+nIIeLM*{?XG;A$jO7sYY#q(FQP$2$~5@`|3_E% zuRiq<{Xty`B8*kWW&>!cIPwi)RLc%?0W2lz-zQyKZ#J^|F;f^Oz=jW*i^O>?I$DgIR)WYWA7;M6>v^BfDO$?V^SHaC z$?r-91QyOd@MrTWU^x5d?khU^qyU!rgut%FiVSmzck!#(|(WIO~p1=cIsK@Bq4 zG{GpHV_rW-BA9-Fpxvzuq10kS5IMY1&k$b*Fz5j#5>f{%&1TQPFz-aSim)t3(C{c! zjE?&kTZG0Luo1t7wl}qS)h6%rG|Sk>=u;J@y!tk}*x!^l`TSlLe4U)@UggisXTJp6 zUdpJ9XFK@(gPt`3fLJ^nEDT4QwD?jQ3-?Y;} z#4v&$Q4y!C0Bq(+Hq#Ilm8nY-?f6mw(~z{qx33-mVnIs}_}oau48v*Hl{1%Qt^(wuCc2$b8YiMB+z&U1ypuNM#V(tE-7p zKFT)~Wj>DNxb)1j*F^0tQyc{(gkW^u~T9&k=7BmNIh4wK`9;)__$1 z3Z;Az_fuYvfAx<{8`{ie%qp_ykHSj5nNN#wFP$~X<&NENf#NE0=MX;C_$nD^yhe6# zM+HK_*h6)x8f_!C7-lm#+j};o-JDVRuw%3EMr<#qx+riaZ$VX{O59Ttcb&04hn88@ zWZ|)W)QbnNu=iQ}T*KLXZaxiJ(H8gs>R`68%aT{1(1@!=xT)SLRoZ4_Q7RRFRv*4y zdG&_*C;z@BflOrD-5aZh)3TFcG!S2Z>He;~uGlW85nH3J$eAz)C>H0#bV&y)f zhJKrS3yOve-SY3wjG{)2zF4FQj%J%?;> zufNU7bZ{edmH^f4@4qv@8Lfkcw${P=2SQN(0f7Xb9bXQ^t^h#0y-I`GwDwM9J%F@B zsC}m)&X<3u5r$oaf^tO-t+88h?2J=XBoLk|0%5s!o&?6NRj!YKWR+{C6JFul3cPJR z*?CJ;b*M+JZD+u*Q>a{}SJVFOy#{Rq zYEL0Gp((zIdtJ0+126T}GIq7o4c5j#o7!4DH1WP4(6?vlAFi?I9-_9rxOMQ!5aRv> z|A*+!&E^g9eY0*8r~*8?%=h&O_AM6BQj(kYpTX?m&t`G?f& zp=t=o@z6HvX3ISZx9FR0G(v#1O5Xy8Jc~J1Ow#MU>$NPGjb`NBQdOP8(DYJH5@dQ0sq1)78Z|3PW3ban! zXy1aZ{z`o}sk;uS;L{QJ@YN0E=yEFoQXHKtIW z0imfH6i|Wc@|;=Bxr{aKI56I3D0q>qwJqLqIBAGoxG9K!X}FAv$)DY%nbD! zGF>b&LzB}lDW?#3RE3_hkH_MX8?pb5FB>Q#dH%$M+82*@ z+l{)OElF_{Os?@s9qiw-kQgbzEMo@_zut-kSP=)h@Qb1_A!fA;2GH0r`jS=1|F9w)4T)Fx^`r7WuV(+wq1kEe=e?-1faE zZtW)*=KHy&E5G-R{F>{~@%BJE@!j~Z?>%FC;no*N&Vd!mE75sE#{rEjO|^XVpWZ0j zL;KRIh`{|j&P#9;|I-$!%b6JMl=6ut^9%U|Sj5T;TRBMfis0{e4Jo2x6&5OTZB)#{ zwD1J4V-j&cy}o$bg|9@Qr2`s1d&FM7x#LV^FZKz7>g5l_I7&B<-KoPVO%`>9m2YUo zit&RpY*8O(RwUvvx7!4b2e|KWs7|Ve$a?l$@%fZ_jjpw>&g^eY=X*d#^>{2c+MQ6- z2}mWqpD7>UK&pDZPaeEVDv<3lkS^9&)^U*hReH6qIXAVbdx!8mw?6bc5yaB!2-mV5 zqW^O7T)D&t{{74;ye9Tv&?!y5sm%Gco)@Omi`VM&IbB*M;xIWz5mqb2iHVtJ^W^JR ztw#8Sqb@kdpWWl{;=C4K=P&Sj+kNEn_;G9S_6N+wY)Sf_;!7>}Ly8YL{9so0S@>Dy z@#Uz@dgG`L){G4TlskcJ!=+US$;o3@r`tF&ge3{s#Wc^b5RBk;$4g z^S4x%S9MOsr9Sa!f1S*v=3wI4=uJ3zfn{PjjvT0knB_vOHjBz%msakFp`NgyoGd?U zSla%KH_Gl;C0CKg?|f8ua(-ew8MLrR12>C}R5^I(LuE0q+tK#F{ktSDo+CN4N0A=m z2k;s0nAK{vz{z4>xIT{+b1DPsb}JimF>lo!7Vk(($3%Q-;cJWJ_!z;7@+w%(2n$!p zns#~?E{1-TE7Z$jENQA+AWSD!+PU7b&s}i#i+xI>WSZ2v2e2ty(&Dj`TtUO*qVy)7 zx0s2bUD&4}PzF5K;YmLi*DI6HyM!{k?zrN{_K2jiM!+0z;#p~V-x|MYN)Y25dv(Zh zPXo=t8u>B{G4;(dO^AcA>(fU|d>$TGBoZx|=@(8&+*}pGkl3eM zCz&)jhd=Fpg0uA%R*f~|@+Kz+v&khhRh0HGrY`oX!QE_zuQq&6)on9ByTbEasDEaE zg_$dwFS^0OIZ3l_c>HwJPhiBUZ)jJzI4#t0Np3H)LxQ`(h(gqkozrDv&M2E#q)e5N zisxO~6%UNlE{?aX5>H(ao&54ucea1Vup*AJVf+iL7+||CnG0W{eUNLiuw2#uJqv!x z*7?o|CakQN-Fh{aQr7j$ZI6n9xQQ2KNg|!XWLW$6@Bse?v4OKIF@5=%SG$v`{3Yg* zTkFaoe2(wJFRPi;7mJ4HQIuC!ILGSD@c7xQcDk_^8UwnX2lHo7#Us3R3;qBp{Wm+> zS4H~(q`+dy4RIseT80N|fEyncpzp_Yups-f!F- zofF(xEwArZ^Z@{@>K=Ixw=m@q%gRD1CmpK8EYUTSN4LYTj+^Ok|y7{+HGB~wJzuW3*@0s zN9WOZ9q|df*FNXq$>7B+X2hZtOEcU6*N<+`T z`=lh>=}UWJ>3j7qKHU=8fW+(A`+g@R+j_zsz-RYY13p?B#dSwYxTXs*5{_}PMqk*;$FgE8?CU0zT z8MMv7M1nMP2kbCUOtkOL0$FAa@VvkM?Va_PvxVQ~Y^XIVpoH~iS-T%^@1mR-Ri>ti z0(k!W&e-vdX>Sf~4dDl9-sRQ(Ym}UYT#q`PHpoQlWNq9sagYarO%X-){`i)rloO$H z1XgL}MKF~k%BMX4IuqdNNfqF`&{eFhBeC=e&zuBqKPgY|RGV1lF_W~E$0 zLS-#UC;h&es)l2M=U|<)@q*j;_gV=VcT^DRXkH)C(XbUpWKP}jw{T19Ok+vyBB2Se zU5@OMk=t7W+$^r3DYvmxo8-ho?IHwz?7ITI8oA%}=K4EmD)Mq)Yk^8M({6-7#zbkm zs7u>h-2vRFRS2)HM~lWzqH$!ETcz`ZeOGsY<5<#GN(X^`aF;^01ca7&qs<>)JYkx> zvqnn`wECMI&FJ^bn7*7YG0?b7)aUaVvM{dd7Upsg1QFf}RPKq7!X2jT7&^KS-@F-+VNO`kckIL9sV|5<^*eeYN>bET3O)^#&Ce z*J;L9u4cAzDJN9+1P0pXjZu2Sd9!C&YhSQiOVfGo6aS+F6Y-cB>gsa$;1~L zZEWzQF>!A79Hqsz_YSedm^gMf3g$_gx8hu+IHE-auaNi8dp5?w1NRBUD z$1-d&V>=4^q`4L%jdh zX

E;G-}L1h?w<*P#e=cpCk%7Co`w+nbPVV!%7y z@B9l>W_c^5%OmYEV~ z^iM%PKO?VAZWU8SGYzTfn6}t=FXCm@2_wWetbm(N`0B*11{tE|jqy`8=?-cm$99M> zq&%ZRGoAVB`L`6UK>9Zvtyj~uFmKQ7m;E>*%BTA=7$F5mJ|Y>+T*kuJWy-qDL!O6b zRVDtqVMSoVQ=&$%0$5Lru6Bi4=ZvJ7k1geiD0vb)pB?vJ{OS0{Kdwi5CYTuc{dJw% z;UWn=0}rWjXuG@iP%Uo=(nL}CHLjpltMlgc_|8#TRSDT&c1UHlZBJmKN~ zBeJNR%u2x>=6V9L0a@TcP*H0o>b6;i^x@Gv|7a*V5oBP#$*#u~n?PRBtk#j6GMNa< zAe@ikYFel$B{O`_B0rK(G^y4`>$otF@pfGc6J9E4c{*(CEPpQ2&FgNGcfaOdc~%@D z0#=lnc75W5gDG^bthvV{xD(x<1=+gJbv3OW6 zSWiY$?9Y4MRa~qN)Uk2|!n0Nbdu5A_#W;bml@oDnRP*p{5+*D{B2L;V%BN!_mJVeh zB4tkh$RR?uc!GM1iY+x z&sGOY$cR`uZFL>`$(XAQ#I!$TIP#*GosTpB49_zAjCc`YANjIOsG#iVGr}b&-AY4H zKGe3OFXlOFW$I2tNsoigTb})xjCz!7H*$*zUBAzl0iUK>n)SUho{%Z+UCyJSWxr zetZDo69Ub5@14(MIKayz3uh+p{~Mi?I}M&|?6w7+L%=6}eK*2RZP3E9RPHPv*_I(L zLMB19OHkhx9p7i$d%pf_0bohsg#z;|{P9BcjD^7cB9WfzcxtE-e@wejggb zCh$c5htdy)>+|X;0rx!k#dZ1LCqgTBV&e>Rsi{Q^OoGsZ*w9!e21HIcX1FT-mVGrg zq|c8J1L~09spcApNE9=;JmDoY7pDC6Aa_xL&_tAWpO`o|algdoCgm}$e!d4=% zMH3_Q+jcJu#B)D}aa`W3fa}DGsQ+z24IL$j4-GL@pq{?*#)%?g`j7Opm*^aD7)4a) z-W7S!S+h$%FCz@`3ipXJ@(uZ}OGZNKAL%DDd#>*zR}hMGmC{NBL;3i8D@m7}nvYM= z(mwHm12lNzEjo;hKGIjQZE}G?xwc0McfJ_BeWcO&sj>Zq(8+u|v+8OACm`0t3>^<` zn!9pmsOBL;&K02+EixH0=_TJw;3uN-$yy8;+?j=B-RO5CqJqsLqV81zVO-sxdH-yW z0Vwb)gWMD=Wc<(|R+CVk;=4xkcEM*ysD1g)W0Ge%Sk0<6waJ`*F$}BC_t&vt5ZP{s zf&wZDbKdGerPDc{E4arx#X)7#Rg)h8*WP|Hp%n9@!d|sfWJ$7jBNrI&>Wi& zi4n;U(|X84%)7lH&R$lovb4-I#Lw>WMW(grZcAkz7y_w(w6AA#rk$+7t@5kcg}B0J z8VrAzSkg00?M-TE9B9zt;;xPW9l^}aL*V#xQG=R$e;iTD%~+eWfveDlkJ6k=Jq}OG}B|qv2)jmApyz)d8`E zi+0MhY7Jl3Me+8^JJ$md=i_KRPmZ#Qv+|Bt{wV{g((qaiy{WUHp4|WZS7jN8!|eyT zLbYp~`j@{r{M|K(ma+vU*XYax|L_>*Nec4toi%eo(V_J3|FZ?DXj#>ttr2lcf!muuo zk5#E@w=TWpHeC?ldO{NOjS6??Umq*-GB(W)%KYdfXu39}%;s)9fW)YJlw;!mfWU*n z%bK2MO91v9LqoL{eZ6D?rIn~8zi!Ph_agNY$UFg@I9HG^j0*CTHWmsPz3(~0Uf>)) z47J^A`?SIRa_o?tr?xrxk7~KpXASvIof_ur&Nd{QpvXDc=|U3%^NzDKfKj=+odIrV z$g@8ewg-cl#|QF7DF+*hRCl&Lx?}=n0neW~1d+VKA*!`auQ4VL@=xMP&52x9P^dbw zx9D#e9cj**@r)K2cGn<>X+}ALRGx!ac{KfR6d{+HTBF#c@V0INVvT9S9)-~6|8XQB zzIfqY2<}Csg5!`h@Jcrr4Vq}k<-RXmLFrz2&C0IM^OoMjfyPD|p>eg>B;7}Jy!e>KnPF(erOy4>06UYw+l5!Vy7eGkWSjm%=7*#AnG%STeX>#z&3@@@7l3Cv= zNSV*WYzDX&qW{QIvo#J@&NyH7!pcoK+%u)5+idz2?xuG@tjx=S85x!t?KuNd!5_QptTt zEwjs`Q426aAk5Hfu{-_LmvUmqc;eAA zZTUjcklVP_i{mf*EA=HbaPW2Na&q~m*wbv?`VcIqsw zJUfV_38N_Jx*SAgIFnkkPDs!FUHT2M{NeE*-@KH%20Q;Ff|};x6R+)Wf7XAIoP$F1 zf7WaK$C6AGhBq>)`|$Zs*{mLT2MC0)%vm!R@tmH-bY09y$%u9Qyw}PXeZ^WLi*xbn zv?9|zT=Qq(6o#l_6}FCr_Z9ZM1b0U@snfX1X|AgLaDCqGj5Lo{6sP#Xs)UKCjXRn| z;8wIXVN1&Ufg;xn)r{`9ENqGrY|rVO5|D;W!3$2R|SDCzS_)0 zZ=aVTX*UefY4Yn>Oywm5uhtMzqD4xm5k=Ix<(DI?e|)Vbi#RH4tRcA^g6*xOh&0o?JOTP^zO1@q+~9ejl+@CZ8FapP=*? z5gL>q#3yNy7`&T37JnQ-c!e3Le8p^ppCNSvH>d5Ie#+rC#Y%F7_lQbFJ~bkS@f(XD zlpoE+y?+dQystaqi6%`}(%DZH0>tuo@vjm^>>B*){|MYjD1NO@%8IvPsWqUL^OC;x zF2!?oyfnsxpyscdvG^qZSy_%nueyef0bry`|Md_Tf`5JZLl07$rK*`~=KPBR=nM0$JSO zHx;mF5S=FDQZOENXRu)l7j#J8%Tn7@dBM8yIj?sLAwRlfHXN$6*BCP zeZy_abO6@?T@*nC1B$+u!!F4F6}}>HH|kqakZQbfef3`_jt3~7cK=JL|3N=^fXBH# z789URApn9vP4U(jhwT9xX)?Hxc8fDE^)=GgN+4^5fXn9)_bL_=Gtl8dWA{xmc6HGW zPR9H1`{(gv=-YiLiwXAJ)6}+GLBRj(dI->Du>(@IR{#XXT;ZhhmfBsX4I|q63?2z? z3&K_F&HFPpRvYHj)d%`^Z@iYrK}bXpmh#o6In%uxL}6$nueEgY1LakK=iV3zTINx<#>>>9 zw8bQfO4pHG{lXji>2TG;L_!=#bD55%eUZ#Iu$;6<;! z#OyVJA$JUPA{Gf&*I+~%rfK%B<6!{g#AM4y>C_=6FRBe@&5%Y9Qy4p+Qg+6-!NPV? z6B8fmxzhO@c@FR(49#rf+;7q~eC+ll3J_Q*E_hYShy^EXA%6cs0`vdhj}YqK};CcoA|xSVfsksGOHaN9`6#yumWz*%l8f4^m{LgWh2 zUdxXlJM0u98QQXkr3NRrVgcJU{S}1ebH7%~FF*Jf`ZNWew}(WoLswh zq`g70;^s+W@3UuEF?Kp75cbzDlhDfv_HaIR)-Q*jzM_O%o8) zc3PzTV{eQ6MRH(2v1M%MNB$SdkrwN_1~jm(KbXY-h2)Unh(Zk0nfrWxuoK3Gt%K4i znV~(w4O-ZpZA=5p0bR@xr(j~_=?01eK9#a+5r`p6^cnz+)2(}biW~pnO*6j6HN?Bq z>;IP=QOw8}hU@j!W4jZIZWK9{V8;-oeuO>{0>xQ`X;>lVwpU~R`h6)|EQ&Rtt#u5i zz2!0AP9{Q`GG z$$u@yb(se4mjS;(VJac?lq&^Ka-P&s!J`**YhV@IM6^y%IhuXKz02@O@Zwv_@jsp3 zY+Wl_tni4xTBeVd+@YZ|cXiOOp3>OkSB}`)iuEKSM5fx*6O=1c&bD=iJ9VE4J@vCm zD4S+P*b7~JvvrWZv?l;_zIrzQKPs^T;(Rpyvyk~%;b3F%B%k_#0pQ17Mux6Jk_$|dB z7PX`0Y_?9QO9o6p13^waS%t)B#;-0=%NugtN~4{-0t~{;uNJY6)#KHHEjn%$drko~ zk#VC3+T8xn_8!=Pv252?jHjj%_$gzfE)3~uxn8fgMG4VTR>9O9{$*}*u|dcGu2@_V zIqz)gA;sgfFJdRR(*D~h)B0DtxB{W%SYEd4_u{^*!;TzpuxS-iu)DuGp;$p9D;&fl zpx~jABw;c1QrP!(2o;emJKq|2R_0@xv_+XZGw5Yf40`88O;7RSngpQ+4fwa_Gm_!Rx>aVa|hUM*wZ zd@z1vyn^u2;Z#K7Z(QoS`In=ZxW_Pi8=aH@ zVKRBj_<U zZ02X{#cCWc6C3%_qR-^BI)r~5GK~+qIh)Mhnb}gQ*&-d98ZvYxp3v;E@N?}dDR!HM zk>>1fHq&N{@c9;3Og5QDpSiN?^IhJM*?#N|^E|nCBUiH~c^{zhp2I7#_N_H7=cVK` zlt=lQt82rDPv}{ap&YPg(dP$~ga)D6J82$P%M1ce&2H%NK=iA%${HHwQ-Lg2UNd?q z1h-@;R?vaM9eOHXAsbD&SrVzjhU2wGJ61hNx$X(dbeZeT?ax+bJ6hi8kcnGuqc*Py7nSh#^p|2i{DHeC*iRBQAuzw7a24T`W9k0-klx?%g(TXLZS1lk{eR! ziYN%@38MyiT`W&75BusbzJc-nG9smu;j_cLo*BE@D$- zgdiA0O{L#$<;i=!(ad+-!wGG8R@5&p9%j>|Jg-9kW}m2e#Tiux+1Uw$m1&1i7Ww#8 z=HwvNA4jMKLTdeA=Rr;en#P)~NuI(P$J>KpcZSRV!`MwHxH+`lee*%! zd52zuj@k9ZkeYhaqSRM4Wq@~6wU(3PEhoKm4J`gl3s^FH%f?=*X_1~#)?5l9{d!7* zc^0xdG!4!<=H%c0W-%1DCJf8ED}PT5f~ag7u*YfZ#~_*#82&;7zVG^Pz9krX z{ZVjMejRFzILPj!{6H+b^~*dus$H)AK|R5`REKs}{$(T6FC0Q{*UXZbschK+Z~cjv zRvzBDeaghpHoRD#wV;7qpQHt1NLXSespV%(R;{xN?c`>J4|K(c{7_F~$aFTVoSgmb z!*Mgu9m7(72-$YV=#o4aEp2>GJ+e$o@`<)wVxFqrcM_Ljrj!%U&?rD};xRGB!Iy2t z*25xxs8D(`wKy4mJI&{XbemDNhPdU`z_&LuHZIhFpP_~%uL3mINA;P;niA9EL5_W7cKs)lwqjH6TfCOlIR>Qf^rSTTk&v47*Y*s>IE#+K3ZFbUd~~FvFO!$R z!*AVL_08bMm-DGM1B+YGm~+(NPNy}xK{6gA_I(nxXnRTXOEdappoIp}Iey_!!QQ4{ z4lNQth_^2&-}_=D4xvmsVutm1@B!fx$j<;9ZK#9fgQP0 zXCdts6g;KqyhWqz;Ceui*dnBjXI9d%qIyu6WH*9wD!(G!n|ppX-Z(YXZ>ByXc^nrb zp%<9|fQi=}ug^~hqbNt_*3ozfH=)rP>9d~hV~ixyxI>9+#+%aUv-1go>@u{*>LPhj z0{CzlR%F78gIV37cw%%< z)}g_zdJtsiVXzA{Uc_;2<|1A*R_3Gf`v-sjBn`R_;D@mlrek0#fsFK7Yb^=+!5yx3 zNJaOV*2n-^F4yF@3}>rD`CvHE*{bS|_w|$4t+KQF*gR{(&w5n{81v}2H9yc2m(x2B zLv^tz)u6mph>_{IFS?EyGx=ONbZ=_hsfnuY@q?Aw4ON*}h}~Z+x=+lY=K59KRq$3C z4zrVuISo$?Mul6Jr_uat#riGx?eLvvKs`NvFe&vizXS7du3g+I^37)h&43~3g-otP ziqhgT1Pylinee<u*{Bm+Br}GysQ!T?u$F?J) zXRD(dmAZQUq;*nxX1T@lK25EG&xA_RhS%+*+qCeIv1@77 zge%Bo_}q(?&*7>p^fFKUI!Xyybn<3{zBlJDhUzR31n*R$r1BNsS5gvs6a!KC1lz@E zM{TWf!6_q8=UG+%iH;7K%MCp`M7SVaab^4^@vW&RvkxF>cqmNaxJcM0D z$j*~1$(x{;OMTf4yu`=X>|2eC+MRa&xtH!f5)=P^`nY9%wY9GJ63TjRqC-NfQYGAc zL5pvQJ1YeOdTofN&+Kwlbmld@EM6VPB+<^iK~SiHn~#}CXtY}&qucKfRA2u?~2OQ>(s65KsKy%-sg}V zai-?ThXV_dB1=2{SP-Mq=mVQR^`}uE2u|!RTBj|O{(oU<$Qlt75O2q(LZ0u0o$uOK zSqS7Q?4#EB^NA}+7?~Zk(;=`$ioQ`&+lmDMTV3Dn=k)*B)Bp4}+Dr|BtxALn5B}+E z)W^w?TNw=n%pUM(@%)ulU{3u|^a0$QdvfQsq=4WxftS*ua)<{U8|YBPx1}8V=t^C; z^#t&^0p1Py0SXG9XoT57Jlv@jAk=W6(56 z(it@CXPxUpJq@8ju=}7-tFm-LLCh`VzVHgRg$QDTwGGWdThAZ@$-M)a?MqD!MfU&Z zqtKunL?4<1xV0x2wn0o-HfX@Z)|%Vy8S+1D9&OqNxPUki$pvMq;-PYi;I7%rd*_3x z6uS0O^`HuQWHTS_2xy2$L2!iE<$AZcLT<@YJd}h{%~iRH{~$9inFvtRV@$*VrWzeH zs~hAkgFf!ELM#X7at`MRyrZKz*@e-7k4knco`Kb3lN+TQgyQO@3nrL~zRltuWaeQL zX=u&N=b`I=0U+AFd){GDcQ0ASyeMicemDSe;)l%Am}&fN%b632Ukj`-6@M4VBLZ*I zS6TlqEGrkJ(5%iGuM9-C4ysV#a>W3mxhN3UTZC`*AVLTy?)<`c82uHDTVarx9v5FL z+hpfbrok}47`cWjccofhscs28q9Y+wJoG@NRn&zDnsQ5cj0=Ka>T*2t&MelSVl>s# z2ECX@g;UVsm^~}ugnhvTs9WMQV#^jefm4Z*fc&5KB?%Sse!mqJlsa>UYjP>x!TGYF z-T`q5*JK*-Ga=nWoU`T?j9q!2VQDlmXaUhShV)v%mbi5+gcYiy+da_+^%v?-nq#6jPv8Ts?k)Wg%2z#b0Au50-GgQP?$^iNX9;LVHO%N?R(x@;mrtpPyw{oX6KLjN2@I(X6KgSh|*z{idU4NQ37&DZ^M(cQKz@ znPEXKrC#)i;!02oS2Ds#X~_YGrrfN0zl6Y;8W;6g5&`s+n6x`DdG^Y;9^4yNT`M@- zxweSA=6A#`C5}3b4d2)iScVtVhPagMD*0S`TIJ@rQ1-aQqhhZ@L7Q>+Q9+|c8)l!n zWBCcHDqJY2{Almx0aQf-)6Z`PoX;FI;=2Ga^gv3YL$#u6&|v`8jM}=)2wBQ1Hx8g8 zbHHYrn^8dQRn9I?@SDC}o7Em?Ll6)PQeHEBT?(ULk-A)~GI-m^dTmH%1LX$FZFztu z5|4qB=^0;pAEoyqD?cwVcCirO-tbZWN@i0$828FJ(1SoT<=RRqPer?1vSLz$hEuZ* zEt_k8WqXfpgz3jXBFspu1OpB)eq_c?6^X4e6d5d9oznParLSLX#bk%<29SJjV zYgG&=A3(~{Um>fT?A0U6@J(BVc!Z^{dXLoXL+GGEz8kc4?JmOOPJa4ac9cQojm2Kn zYdvu*ym`u6qNtPV54HPw{R7Q`-8t$$u1Av7~LfKw2GvzhK%eIb*z< z70*JE&S?L71IAq1@><@*=g^N;GConbR=>k3%7&C#jF@}{?mf~6jPYYk2xZ}w9b6sX_m|D8|G*1J0;r7AD@gqr#1dq<}Rn=a}6_Y)Z3A$ebZUb^`^7) zBFlYm&zY>YyPi|VS!H)ga@u=5mTo;&HjiZ$?M88o2t6w9dK8a)EX|^9{;DhSt$@6P zI-kzYY&Z4{BX3s8yK|qg-OqL_l4)F$pFMudz5jjt+4A>Qc5`-fN#mVn)-|SFy=hO$ z@B4p;R7JbNALYw>%vnxpc~6ok7tI#3p}Sx9d3J9}D7TGI_<6#hUmureK?s|0y+zRNPKPh^=&j1rr{b-}7pOiXzf1HqcjGn7{OvCM*-p{3?uVgw^mMi4u!=!)YG$`_H zNfclJnHW$P$Z`+jh9B)ToB)K1J)=af1ohx2`xkcjW{m}~GCp6x?lwQ6^FwKac0*_j zBY-i7%oH~9vv&#YV%nj_@4eak?68TS)c!kzJ504peR~<(O=9|0XV!jJY&igsC3lWB zqlAHd9b$mf!18P=Ty;_K1qBC|f3hrI;0v|O9UhzIK^t~?kaph?Pf$~U`@4Uv%f?IC z-5=P3d4T1Jq;=Y|vbQF&{BwQP@M+pYC`W|sXJ|LsTiIH*b1z2KO?J1+a7(-S8||p% zKS!-A1g7>%)RfOO4PL5z4QSDzcT>+sM+Mv!uyOS|Z3Www1X7&#`>S&- zwAPXyz7N-P=G&v1Xn~jO5@s;}>=5=2bS5>G)1QvO>uC!Mw#HNikGWr@p|>&)?XkYE z!E(jGJZcA|JT~frHdBXtHQs67;|UV~{(Yy(?@N1^aiPbASZ7RfUK*H!S-nJf%nO|U zcs4mC+TKVbr>M3%cAoq9uF6U2Ll6rv4Xn@q*kn&{Qir;5-}&{mHZmbg4h6v|HJB^Mha_2{7C+Ua(G1bKEYRC;=;)0h~`rn7i#%j**X`n7Q75gT_($-^J4bP8);%KrG~ zCpc>PtirmjqN{ZuQI&(csHE@0{t<@x{G&8{KSX(nGQQ#IHxfz{wK7V4xL}iEpWP;f z##G$j4aVHS*n}wiFyyh(cgw&gf6xO&d-e)C^weVk70Ln*_O3^>>a3X*J4?4wiPK+X zAA8g(O+)MBqN@TQjd z|9F{x<&)U)dw1p;=`qg!z4m2xvh6I!lh+eQyDKGvo0em6j|=^4___7_Gj+T8f81gwon`W++lKp*qF0|mVJ3KZK$4afEPDvX2_?DsS=28 z4%Io)*usd$tF~9N$kYbZIhynwRbsIYKuVambA(FYHZT1L0cw)5+wbV(8FFvLB7%oT zx%^c5aW%_GjWEt!XCEC(&rEBQbp6+E?rV2k^``xrKb0iX?qAgMA%I&FPLx^CnWtM~ zY`V+N)<67du5YlsMf`xyaT?&uANJkU4UaD7s4p0~8E`?SV*H?%y=w1}Uhwa>x5R)0 zBhu;r>CZ>3hAUq1dv;^+y}wu!Eh15oSU zJr+I4^gSL9iEkdBc-dja?iHT@Smsm}`tp&bapLs?A>6fQ*I=zQ$pKwK&=>C4*;_3t zHvC^b(IJj+WD` zORoq`J#}HIj2%Zv1?4HOh|0R z$hLq2pqB{jwL?Ki_v6z%_P5KK1=Y z`_o$9AK-f`ZqDJo^p-dqu=|<&i88IW+6kx897g$%GS@!p`s*!!&3k72Q^-kbAXC%U zS!U=Q?|^V^c$BPn*7HJnu1;2`GV{H$z^svkQTJTh2o5y9!ZsZWI=1wi`qhQVbXt4H zJ@@vs-)J;1ZF?G(_&CmtAG4s*L@=*3YGL8?9P;H;J0na+SCYklthD!sN@~bu=2xm% zgjsdVn})(%!nu6G3Fa&SW3OQSSZe-8d*y33W&0nm9Ro^yF15ooaNF2A z5C;)tyz&~FgWz@VwwU*?-}59i?knLp++UcId?6ul-|B3j+hl^yk)=jc9kx3E;(Gpq zqx}X?yv-z^g*iflzq3*hT?{CkWfG|HH|FaAUGx1UN3IN<)}d2g3Ti)$4rLZtYC@wV zLzVvy3kg?2UO+usX$q}$Z z;-FYosC+hP94b_Hp^{rceL65inbzG^2!{Z$9h{zbAuBf2oSq6M3J>as^yU zX{3}jT8GYa32hNK-R~EoY#kPr=(4kTUj$5{N%s14{f|}#USWo$3^kXm-nJ0wFmZCb zu%XxWPF1hpak&& zS2ncm9waniw~I<3T_?#yEyJDZ{?h299raEvI;suq0Yz!$b^E0+msV*bM|%`f&p%iy zo7bO1_6YV7o1{MDy*K-wrBiQ<04QYiP8NK*C}C1ItZDmYFd+On(B#_qq&J!1=PT54 zTQ<`Xp){HR+ zk=J;Fh~ud|g~s{w!_j#WzXh@LAEYj73!7)|FyXkPu~qvjoZT@kv0OFiL4i6?kuVvi zGkb+>Gz#x}jW3LAN?0(EowG-UZ#k!A>g{l>B_*go$Z+rfJpaS>ZO$E|;;>T^c9Fr< z4I)DdD^DJE*3Bh5XWq`zj1KeXF>h&IjA3x&+Fn@3QOUc0B?TQ5!kM+{8gv18jW|`G zMVIW{MT6sBZ=H1hV6vC~MBCkKFJ8h;1UJlf=r=^lv_B0(XzFYTZ60cE=){Arn0((Y zJgwGr(6JKFIQxh?@fSm*WaH#hvFAA7BAJrxx)9P0&YU+jHV0qvxZ9okyNZWHXG2Gg0pM^L(q5HFG-HHj=VZCNJd@kQqAl zEmy$xE~o32`1{K7o}yw*nEU-4k0l(~rg$kVeOOY4kdqxDaKph5`iJ~Q)^Y7UhU;}-fPB@SB70fVFK*r0^U+UHU zYqYY%&jom|uZ_p-rZ*h=S#_wl@CPdMSej~v>T5MN{(SC8HKWN-)TkT3iV|=`;j&7a z)9q#S%05GC^>Ae?>c z^7AtKz}4^a*w>C1{MBlY{d^;PdAz1@thNP*=?~{pgBzygIua6PCi`>p=gle(hKmX- zSf}UgFCoaThzC|6xxE=MS$#1#R{c9U2U%6tihcgf*>4s%O6pPfXi}@PaTk{Omwj*x zaqi6hvSKQ!HrIEzuVRS~^U9;t;66SzYKS0_s-69WG0lHW7XEU`5H++>n7 zy5gyOgqY=?(PkODN7~m5j@PgC{T`XHcpg;y7YBRg4ffr>-Nvo~HEjnv(Ol+*(mLVQ zGt{pmC0@cNk80~S#f+oVBm8@vKg##V`g|NO_~Vry&NcHn(R1jh2l~^szLWaSdAA1H ztn`F*o)o$+zWLg%;&ls@)aDoZeD*-hj|cdgZmohl7L29db#xErwrubjp>}n9ZL}8J zUknI`I`s$%kI9KAMcz-%_>xvX6hw~r!32Ak7Qf^xHQj6&`(`xKOuT$0@^)qRQ?=Od z!_K1;#dy1#jzFCa8hy@b-*X?rm#m=8pP{*_ES4`i1hQl=!O)_6+xm z>K=N0j9a+gd3c$weUhVqCI05H)%Aid`RS(06~~|^Q2`^KP9vD(z0ugM<%VIU827fC zlqs%s7N6K3*$`MEB;qvI&MEr*I#D-1>Vt+^ciSZ@eODL#w9fjY;MU0Qyy?>2Nj(CF zmz+Zvg&JrnMHfZ4FibIhj)#ed9*vF<59x|V%GiuCn5A%aP2V(G`{ z&~QT2jjV2Yl|^i^hwadR#Vtj;hQFVvO?OG)v<8K|`kqa$tv>pBxoD^P^-Nguk{{bx znhfQuPD-cxo~De%OF;-VOZSxv6-v*S)#_kPKV7G}a^h;{l5;fm_jG*iwVZeUoXxw` z5tthj40D&1x!lF!Ijt5aWM6rc-d1a5Awg8a;mVPL|I^l&$3xk@|Cgj8I}bwk&|-Tm z5eCVgB$bq9kPxzG9SmvgOP(UzDB>ZHB}HVJWGg#ir0fl4!Z7yjcWxQ<`F&sg)9ZeX z`@YY)uXCOE^}gQMb+XUlC1b08ax9Gm;IeCv@4jMr+!tC#neqNAB6tKNqN zeh>G`XV4RC77dO^juNKI+D*`_saFcngP!1s#+6|-!95$!%<(9QOcA(4G||B`)iJe- zANMr}auJ}s2&z^lQ4oJ+;iKl;)XKOYF2rHOq34Ot%<%3S4}^$@&p?#Uck89DiHq2G zWEjVX;s=*$b^35S@ZlS^9aLr?PF-S$H5B}P@QxzbQCJ$$-?cMk?Wz=a@H{hXM zZ?-o(?u$HxB<(3|dk_~_b&^u|UL=U}jw(QcR1BS`wGmX5mAlPgq#?E^;m8l!om+ok zl+1(R(LL~f6~wMRof#NUH=ktZ8AnOsRm8=8OdH6;Y7Yynz3}{k@h1^|M=hwq(Jan8 zO(P+^=W+m*V*Y$mOkAADFN=18xW@ZWX5h}_y7>{p+tcVmLkVB4|Ms`OZ)7A|WzD<% z?OI!GbLSte{&2dghp2@pr#Blb5;Mx)dXtRd7Wb+wWH@*?);HXy|NMBW6z>?9XLDw3 zytd}Qb^S9qIy%zsf69*(-u^fOgIpUbi47bvexb`Twm}ry|J754P_cu4Dr@~^ftT@@ z4Ah)m-~a5cS#jtW#B6yi62CFL@~RNa@Ed?%T621j)-doHp4A6^56&|!WR88ei zx6C;!D_PYS)Lv&h>M;CoASHM+LMev}^QR%2b6pz5;Bb-ql-Js@nKllgz0b_xs{!o_w9m}AsS!VsW zXVFdw5z-mfK({xgC?i2cbtB+AUDs_9RQuOm5*>i){YsyzC9M8{=^o(6ooP>bm`}L3 zMv=JyU`a80*zO%mXMsY55w!JP^8HfT4weAw?^O%c2V>NJyBF%4)jW6u4+Baslo+3vW(m}bwpLRSe3thk>3lI8+HU=!rzoxfgP?Inek5I7*QR^eV zj}1&WQ(Dzt>>t|tk3byq7I^1P7_l1IN~1XFzAvbY!zNKq{>8J!Ta%1jd^*%3&f_DW znV6Bohdx?;wjRj+;q#=xcAnMGf){^x6Od00V%qs^CBn1dG{8HUO$&o3URgQ7X}w+B z3N$^%a~eMCJxOf*R8Dq;V1uos_ErR8xC8}5;3ARGxwY8;H+NNiJzB-5&{S!)j{Vc0 z-Vl7(3Px{I_`-}7@U8HGt&pyzXN|mKjRk?P$@u_i4+7sj1*?uRUt%V)v2Pl^p4hOO zT`UnE-mAUGic$vrc!uts@PB0Uy++`T`3jk9M!CYgAHCf~z~5=A@>o19eLf zFjHEd=f*qM`+Lb=g|)nSpG0FZ|HoAmCXhaO+4#%mgydlg{O;D93RY0d$`9YOzn7*e zJH_@EJc$C^F#{vr-iimqZx+ORNc_8s(6U4HLBkpT44hBu7Zzy?Fkc)Ln&cEm20M6-DuhfJdG6Gi zBtiQWmz$JSPLj*3`r3%x0(FbyA7X~6Bnzh-la+$kn;A~Xu_Pt(25ES}s?i)uHGCKcM1oP=hVwv*;+0_oI z!sf8izXpoNmJYUb_VrH~_kBNBcN84mwLJVThIl^BFZTmI#;>$Yx_449Bz^NjLEQ=X zgw%C+IjFkKv@-P7)aiJbfP=s8i(<+Jd@`0`mA4axe`RJjrkq~_-xHs&IA0l!-NnoDrDNaVuxa^dSB z41dDzuy{qM{i1vQL+O6o!5qdivA*n*ro%(H3G?w5PUW?hm%-^99cbQj@}brDZmUS( zirE8Pg)3}2JtR*ZVeTN8I{F=W-EUF@xJc*ylJ@`fuOihWa*!kKIvHlvLgSf<&_ue_en zD0oRHq8XD>WP9<1o5^4LTq_M5U8eJ+mvR~Ag;lJIhJ@-qMSjIiM9DM2mmewm`Lu#l z>>vvQy?~ByFPjW5)F4;Xlzy=elc~PVHP+5+W)>nntkG1%Bhh6=Z?lYG=SH|f%_UikTX^*^FZ@f{D2&wO};`fgg;ZCyGJ=56R zWjIrRraSB{kAu`%+i}P6TFd-%zU-tIss=A^%FnR8`-sN=dn)4)X)}L`NK7t(96^ewrlA`8`iDk`Oc^>AK4(5+#i13LX_b$%?1%Ks#b(U8z zr_AIMTw?)oS7IlFP%lAsxZvzkKPAYt8=XLG*BwHfp&*Dam_qH08CmmK3zz3_Mco~_ z6h9z~FIe=PcrjrdIA7%OwH)Uf$Vr!kJ%wbG;q)QqcAHNB{7uWMQYbQafHq2Y5Qoh) z@p*$IMOa|*rC{i(a{+o-WA~)f49vL2H)6}mlRcP+w(1|$O4Ova$16w9o+A8Kb^ms5 z6Bms*a2D^>zR=JVzU?AOI@lYKJqYU|fGZog;xVU; z3}CI~8B+Zw%3AU=D?G!lEz)bs{$g0?r1vnDkDK^}i#g1p&1MTL=<6=R?j~?HIJ?~K z$YQ7Qi%)XvvnEc-v48>ax&N}&omxe6@neWTS-7wr05V>ta*(7Dt9NQCi)L+NeGLnp z0tf7RCvL2qSzPuIie_0QaXZEp9p!51cp>OZ=$oiY|F3bOJono(_cnex>$(Vc>sI9= zHQox3+nB01tyQMoNx8_D{>CHJrITT3dg_6nVaL~C)lI&GDw#j~3w9?L!1GA#Fr8*Z zNTG6la;+TRbF6gZ90u;uc+Ly+bqO@6RB@|gw}iju*y*jXy~~hbz`>3iJKHqtRp$iO z%)Sv}tT(>5Gawf?%8S37rhs$>G<)51FBf9pbu%ds4NROqyD!@2L&2#z^e7rd04MR@ z*lsyJ;M%Ak=xM-MhTsH&O*WCc<^1-r@w!+)X!hi#!JTav zu~j<_)*#4+O%4h~Lj(Y=aprz{f=qnOtaa_rF+snlYe){+t^sXH2rAnV3q(OlrrX0j zd!y#d&_)zMZlxL^o_=WqxThdU4czLtWP!JoowIY1qx4p;a~N|J|D~~Ov{-5uK*Id{ z%KMF-d|pLB-$15e)M+b$grVJeP;G#Lp3|DUZSR=4d9WIlQN3$#$QHL z-ciR!k`2M-J_Ln8&f+xcCN7aidg6Bi^81a6>6F5N-Ps*(fu*i{9@)NW`*kn#GyGMnUCrOUn|LF}zJEXZ zouLWZWrz?+N={}cHP>$Xc1MkCWPUjJV54AVT;t5Tf>-%ROOw=Mz5H_)qn}qEiWNUC z`~DGrA2y#S=G&(BBqddWCHG5%ugO=SD!vF@YbUzsPV90nBQN#4Y$l*aP^b|0TiAUe zK+8Zh?)x`2uUCMom|sKiFyWPG%=~j5zU!xCB$}V|wMCAq^mN}C4^?LN#q$%;0g3VJ ziLwfevD~6j^Sbm*Wgina&RHab!(s%soGhf83k#$PakID9s;|jePMYM@K85+bSWOx$ zc~bUis4#zGJstl`@?>M>Tj%2}a^bNuX{gp$-uG}&cEc~XVBYk|p6Q}Gsc8ohE}4CU z{%QP~c3FI4?8i4RXW%uSMIWu1;v0m}P?Qv$-?HXrSYZU7ip&3sg$HbH(u>KBFVHa@ zt@7#=91;{aKR;+W9;F*k<^nFh_;_~x1KUugD9*a-)SPX)^K@I~C4s_g@p=^ol{ZQn zeO#<#iqH}(QiTbKPiaK8F5&E7wEkfqkNLPsc)%v`Deo-xfNX@1@PbG*1RJ{#<1E|n z^=?4{G%u`KtZ|5_;KwWC=b3a-5n>t>4$jr_OtG?pn79mEeYFT>_Xo&vkVh*y6Y6>D zg@Fx(2U`uL_Q+phJ6 zHgpm{c5zmXm$4OL{h3Ixm`{THiD*q|W{O8M4j+1=V~L2c{%=V z8H~B}mq1^*n1*c{!>Z_QqqTDbNRO4Cg=j9@Z)YA+hkB03$x)jj=bvZ97U@e_*POHB zt$6Kiuu$C2(f+_E-Q~`4Fspyr&l$AC)_%VIqU1%=x0R97;JrvRCNDCuMP?g-WMGJZ zY()L*149o*hgiS9eBR+yV&+6+LYRMORo+_T1a@rBz`^2)H2(%#4gS6q)9Z?Oi?_G! zH(!b^`&d8`EcUUFKxcUH+DGnIiB(u@W;O@!_5I% z@dhY=V%=h$b7F?0qnwESibAE;+eYAWow70?c!xt!PIgvz$lhQGWowWtQgnAY`KrJ2 zsSPGYCbo}#&wEum0;<;8%f8@UsW#1Ch~29wYd>aR@>y2m*REFs9EL!VUuq{8?Uh?j z@cInZwuHjgqC^^ucb)I8XXQ>RqXcPjISij^*|@Ihbg(4Dk5MjokJNWYKYRBla!$pV znB^IP-1gEH0eh>WZzte#IDyFHPp$TPmjnKh9@1&C))^w^xKMJYmSz9FHL%VKb<9)o zNOxXQ)(G%SBlZ*m=fuGMCem5{y$D{43Vo{3uD3Qus!B!SnFBNDV}HG|s}p{c$B4Ol z)uBHYc*=XeE1pOzC;L%8lmd&qZpguo9;C%u`BFRfRif@)EveM$dTwRR!yQ*J@DR_`UUw4k;SKc3}IUIhDz4mJzhO=TXz%G%~{8N+}LbCf2?{q{(WupTHfa; z@8ag?=I%EreH*YzPw%{K@Ks*$jfoH@2$2Bpj5Pmxws%`NNhOT%-u5b!C?GkZ9Xx2^ zSS_r6@QX)c-f<1vyUpho3Imt6232|@kUwjhE5*^3qH{!>3ta|mUEE*%KVT>@3a_+j zoO}80Q$NF%PdgsVi(7SXE&T;`tl$Y(1V(Th*}@}_mg z`PP|75A94Urwq6?g@!7-%@frVoR=HR!7>u*yJ6gT?Mg>U*(t)YsR!~u;HmNqI`iKz zt;w*b`b-{sIS%hxZ;F@x>HYkVB?+3m0sZZ%!_#syI3jP+Em_vjbs3EH1t-}w0ullf z46Y5aS>K|6w|rlW#7>8~e_^mLM9+5yXMMrIyk+SxNa4$V2-$s1sW5w;O+&hoN6yo= zhYYL$IJ%gytM6@od=g$vXMb8$P%hLK7Eot5AE{K!%S%~<8}N+caD`jfeR-muCb2nQ z+?u#vG?LHQJ2^m^QsEwss{WXWq}&ot0jCSR4?toTR3e)>k+`1dx<;yjS+n+`CfoeWY>~QqI~)X0c>%CmyWE}g zC*PGs4es$&NxN_x!tSv)9zasu8J*a>yMY6|2A~?t2>`=7k67Q_y$)eE4RC9d`w{J} zsrwv?kfaW{oZx>(7__~~r(WJA>j2Rn;(FJh#ee6=WLU@v=p&gRL$Y!QnkpcQbRncV zNycnYD(#B_R4Jq(X>%s}$F=`~#|2P6h`IZ>=r_h-N0fwk1uhG(*1W2g#(+0&G{M|MCicPU%IIOXBs z@|emY>Fuw&^8~CTOh$%d?b{3_;3d=#1YZAC3WJ2L|J)CpHx8_7^(fjfb3c9t6@#(_ z0*Qi(=aEPdbx|v~sGt3;&6C>tR6Whobnly@elSl0nsHio0(0!Ja=r4|jb9R*mmW$Q z-_gdN-d!&!Y6#ZPe#p&U)Cyb`>Bnq+w@~U(%8IUUF5Ggm4>1E0iTdi_j)SC*72TeR zI2$<*5z?t)BkHVVHyI8{4SK!olPsM7MeSauYq%2TJ-|eLvEco%7sZc0WRjqNAx1eX znxS595eAPM@J}AqI5W!ku5R=Up-Ah7ATm{r+bV&b$YByV#kE!YH;A>?)}myCopR4? zf`bZ?#s0&All@xvKR!J$5~3WCii%MtqYE&D;M@-ANro4m>5g!^lUO@o^=GE?G8izk z)^$gaJ=IQW4K(k1nPTC6dlSX=fhboYp7w$*Qa*N(LHg@)K)cTVH$NgB} zw5W^vc9!6mjsOC3c7cy@GN^w@xaWqwlGR8oowas;zrimBUM@GmBY40ZCK>+-B9Dm5QsF8u6K42V8HxHbWi8WfeHdVg3u^O!KD3Ctd@d`$KlKoU6 z6e-WohLX^Uf$La?RBIKQTmGUR>ah&<5)M`ZEdxSUBU)#K2%S<4TzKvLmE#xgV$yl# zaA?NDj{%9Mf|vT@aq$Mnr9JBM1DKiNiBsc{d{VC)Z3#D%Vw$kfKnyt zbG^tBlBIE)yNE~ba7fm<-E#@RvY607yrR?mWi9%T|M| z&7s1bps0I*VlR~yq*_Qvr6H~Mu8DPsnEf_KEu#p3NrqnL5X=H|-q=eknRc;Qt4NUQ zu)hp_F7FzSI z(%3#b>W4?txH7fr%tuOh6gP?-$33&XkmPQ#_!K?NGGDCKzOUpYi3*Uxv@{*Bz42zg zoDo+=FBXrTzJRpkW0N}R|I+sPSZY(GLa?&+cmwzGT5e?xX=|8N7jimS%vZDbU8(^s zB_>bVfkY5&LB|Q-N#$+Hn?N%x(F#Y67`@>YaJB|Sfrtk7_VykFqG7OgV`B@KFS}?J z>qv11(?7dhUuwWFJi#p8X5Hqq&K4Z+3GxaKgkww|Fn1cKMMjUFca|ZHDbhuj(MXts z+lNFS7zk)d1oW@Vf)jjo2J_$HsqIbXr+~%Q9#Qmw`I0RZmCGWjLQSgenC)Hps%T}rnUoQQ{a(Xd5mN7D3dHrQ@_0JIHbBnb#KmVXdHz@&$cg2G>jXyVF zQo)wTmr5$GRNm8Xna|Tt{~RGcd*j(cYP5&K5x=a+*!`(lAg|I5k+Sd~1e;@${K0PW zCqmo?+qdAMC3*6e1K1M4`2OHldFF z`jP)BS5kfQ@i%t)KgyLnL^2vbf(=Z5MQif#{wGQv2QSy{!-ll|GbbMf^u^X5<2-+y zxAFgF1wBq=0HKu2E-|&c{eu^QQK-vuFb(ZXDnSTG5IoM7R8*Bm*-N>;my-s0vk)on zTY@{Hn+m25h_S}f0wmKi%zr~q>;8cQM?-Zks9p6vOrA!7YAmTakY3=9?@GG%^&SMz z!9n$1NBPRu{v`brpfZ|0<*#i)<`7-Fi-xAk*F&J%f0q^DL-D|(zChgQx2$z2>GM=k zAr-su@Ym0_Nc0iuT`^690OD_E`4bd^XF2*#q!@_@+do=Sh>I zQ0*EY8>Oa$WH4K(Pm6(TmV&O0>r{WHxwUxofFZx{?}n+bnO&eBzaU`>!W^QwpP5>l z@trss*Is_l)vLy7eJj_Ttjyln=y$ep$f-xCcJ`U*1MY#(73~odBdY+Ci#UM+LKl+2 z)P}gYRN7jsRhzgX$Gca_f<4BRG=5DB=y@5-H%5Ei`$v1B>{38qQDtS?i^I1;y!y;q zLbjm0ICchv`*Rqq8C!82h|BWAh_y)9Vmgzxui}oqwi1wHS5LYwEO49$j*Lpxb8ORY zKR+Z3-&{V!3D=>Hsf&?5X5wDvr%k`U$V%HF4nVFn0b{>*pw2%6!B*Dq)vCLnG(4Y2+KRRFi;JkvBEByq2&z)0_$qk~V z;f8&0Uj+QlQ4Yms*doooM!FN*k6!XAz9aEhThPICg!ABFdW_Gtj*?iozx+|NYRgvh zG^~ikoF#+BI%Ds$L?k}Mr_gF2L5wno0haBuoo4p>eSZ9px46o+>i=e29B2@u4|p{u zA(D;o=Il_DeB{b=JGr7~8Fw5LW`WyfA1ZzO!+e%cZUuV7+;8IU5l)0WI`)b@ggOiJ z#JI*mUfU8h(){H5e6UxlntL!3mQM^v;&UJHyqg_yoaXie$%qgJ2S;K(1OE|{PrRS` zc!Me6Rq+N`u5CIQ)EWQ{E{vNsS<0ESFyXnBL_|{$UZo+?ndI~0K#aU$k+@v6?&L8+ zs(Cqux-zkQo-@AgiK0Kd0bZ{cNs`Q22Cqs2<)}Z-e7Iekj%X>1Y>cca9OSU;UFDDRG1bp|vxfKy)$d)|(vXe|oH>XnOMktj$^9 zEo`|Nr6DKho?CuATaT>MX)Mz7lxjaZl*D^ZGhahr`tuX@g|Dxd3#S*}RNotUoF4DY z8Gp6W-%#f7sB0!poQ-+u3sxTvU;2@A?2p7;w+LWjUGJaw~X zli{P8GtJ;@#`d%4)>qluMjRBhhl*z+%Nnf`8=PW`(oBECLw~SlG;rXR+)LjIst8Y< zWv_hlM-~(7K~4JwQTGN+LDY{nYu2ao7p&ha^_1}3>^(fQVZp$;+Tuj)KJRyHtW>O* zb!p|B#%eM+3n$J_j*&Blv}x2bl#18D4v+(?j%Y~5e3<_S;R~@g35xq)~Va~mKNdLD+IJQp#%OgoEa2(g?T;o+NiTE zUYS--o!+V&?f(*($ENtefP=#;UcB^Oo#GR^!*aGcEjKU`<8(FscAqd4Y;;-)(Z2iK zwmsw9CaO<@5yJ%-`OE(JdXc|+Min@pRCoXh?dcw$)^}e<*yUb~Fm1j5ZkQM-+e3o0 z4)$!o`(C!j78g3ab-OgluHzmC7m`S~Zt*%kKYAwXV}R>?eqT+q{VOAKNC{T93pYiG ze=w7Vr15B)ZG#hY{an>^&y9EJBMS>#!K}m;XR|C@qklCk3!>?X_v4!w21t&*p3FW# zZf$$bZ?14&$8$~Yo_$ooe5D<0Uim9cgZzKgJfn|S#8ukyjXr%Ke%$gvicM?a#n>BQ z@h?U`%zjv<5bm|zwqiS0&CvwdMUXH5+~!+9!%D^Dhi}&*E-v&~JpoxrZaLQBb;cwL zPZL&RowakHCfeKV#Pl&+_kgBXS44As9w^Ic%kb(?7$F+XIYm5>u|)-g(Msi9F3-$-IZX2G*DEUcx?0z3l?6@F+ikLkwJDW;r>i)jMBfE|oD2TC zES*}KVFJ&sWLg>nJnZnPMVQ~@L*@u%8$RExZ5Z90D^@1mO0EF!IC;*EK{aP4KLqcv~tAtyeI0L^j8gBjmJ0!#Ha zYq$ez8n=`7Lxr(k8L?h(y5*l*`6XUtu>X2L+``rBn+PN9xHko?Nfeyjwg zr?aN}Ze(;6p1G%-B6d$XvH$HtbB`S}&^u)Ba4AV=P?6QrV=ra2hg{p0d1gjGJT9b9 zQ#?AeV{}R42c^Nz3nGgP`*lT-W)$^Nj$>j?yYhE%v$HHOB?4Uc1Fk5Yh%JVB?`7)# zR8@lNN=YCE0u9*y4^^eRh>PY@$$R-s^sj4VR|xHDpc0KM>KQdx&HvC;5LTmB;WmN* z0#FXM>|`_{rlOi=7a3x|QhTdVM}eYq>kBv@a=T?{vqY5x7&*E4;0?JY6aXdQd3!QS zfQNQPRsSoaM1Xp4aDXi!-2V?5m@y_Jc7oE!ljOiy{wH~cw})Oi!) zyB5ZlR7AC)R^w}o9ecnE%yVpjYgwfd5Ym0XAS+G3A}1QZPwq&CvH39XW7~d+BNh8? z>&CW3E_UzFFsz5dh;^SmUGd!CKvTyMh&SrbH1IFDx=t9_ zN=L3AtvPkAcJ`0I6Y9_%&RiO74_N%g`;Q!n75rH~d?TgiiSpcvfi3UQ2A|&&*HH7| z+NR?7RORoiu%une8Jf)oK`feCWowY31mnLk^vVFfUPL%Cd9o?PQ8LLN|HHx}@DY(H z(!Zv%Zn!wD5_op4)41kE(~hbaT}ee+SQsOVBc=W6D%al3-0>Rf_ZRya-flx;Cb2f@ zhrACi7)z{K=Ca9jCFW|qS{8AX-rCc=wL}H=0Y|ndgjLbFMWXRP5dn#Vqe&JA4jkCp k@>Tox0Q`pv0_2AdWaFNC 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 pGnSVPQbK1W`G3jB>?O=Hg+GPK-@Y3+jr4Pij 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

MA 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π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 el.closest('[role="dialog"],[role="alertdialog"]') !== null) - : await locator.evaluate((el) => el.closest('[role="dialog"],[role="alertdialog"]') !== null); + ? await handle.evaluate((el) => el.matches('[role="dialog"],[role="alertdialog"]')) + : await locator.evaluate((el) => el.matches('[role="dialog"],[role="alertdialog"]')); if (isDialogCapture) { const NEAR_UNIFORM_TOLERANCE = 6; // per RGB channel, 0-255 const stripBudget = Math.max(0, 4 - heightAlreadyRemoved); // device px per edge diff --git a/web/e2e/screenshots/slice-3.spec.ts b/web/e2e/screenshots/slice-3.spec.ts index 687d07e40..af8e46555 100644 --- a/web/e2e/screenshots/slice-3.spec.ts +++ b/web/e2e/screenshots/slice-3.spec.ts @@ -245,9 +245,29 @@ test.describe("Slice 3: Create Server, Modules, Backups (Desktop — 1440x900) @ await expect(dialog).toBeVisible(); await expect(dialog.getByText("a1b2c3d4e5f6", { exact: true })).toBeVisible(); await expect(dialog.getByText("1.4 GiB", { exact: true })).toBeVisible(); + await expect(dialog.getByText("Consistency has not been reported.")).toBeVisible(); + await expect(dialog.getByText("Capture-time volume metadata is unavailable.", { exact: false })).toBeVisible(); await captureLocator(page, "zhLZN", dialog); }); + test("bHJy6: Backup recorded volume coverage", async ({ page }) => { + await setTheme(page, "light"); + await page.context().addCookies([{ + name: "e2e_backup_coverage", value: "recorded", domain: "localhost", path: "/", + }]); + await page.goto("/backups"); + const row = page.getByRole("row").filter({ hasText: "mc-survival-nightly-0713" }).filter({ hasText: "local / default" }); + await row.getByRole("rowheader").click(); + const dialog = page.getByRole("dialog", { name: /backup details/i }); + await expect(dialog.getByText("The game does not support quiesce.")).toBeVisible(); + const coverage = dialog.getByText("Volume coverage", { exact: true }).locator(".."); + await expect(coverage.getByText("Included", { exact: true })).toHaveCount(1); + await expect(coverage.getByText("Not covered", { exact: true })).toHaveCount(2); + await expect(coverage.getByText("Rebuildable", { exact: true })).toBeVisible(); + await expect(coverage.getByText("Unclassified", { exact: true })).toBeVisible(); + await captureLocator(page, "bHJy6", coverage); + }); + test("E9EEv0: Restore Backup dialog", async ({ page }) => { // Design PNG is light theme — see setTheme()'s note. await setTheme(page, "light"); diff --git a/web/scripts/compare-screenshots.mjs b/web/scripts/compare-screenshots.mjs index 9576ab1ca..d42510491 100755 --- a/web/scripts/compare-screenshots.mjs +++ b/web/scripts/compare-screenshots.mjs @@ -153,10 +153,10 @@ const SCALE_ALLOWLIST = { // alpha >= 250 bounding box. Re-measure it whenever the id is re-exported // or its shadow/size changes. const REFERENCE_CROP_ALLOWLIST = { - // Backup Detail Drawer: 440x760 panel at 2x; shadow offset x -12 / blur 32 / - // spread -8 leaves 44 CSS px bleed left, 20 right, 32 top and bottom (bbox - // (88,64)-(968,1584) => 880x1520). - zhLZN: { left: 88, top: 64, width: 880, height: 1520 }, + // Backup Detail Drawer: 440x760 panel at 2x. The refreshed Pencil export's + // shadow leaves 60 CSS px bleed left, 36 right, and 48 top and bottom; + // its alpha >= 250 panel bounds are (120,96)-(1000,1616) => 880x1520. + zhLZN: { left: 120, top: 96, width: 880, height: 1520 }, // Add module source dialog: 480x882 panel at 2x, bounding box re-verified // via PIL alpha>=250 scan of assets/design-export/screenshots/DMnEi.png (now // 1088x1898, bbox (64,40)-(1024,1810) => 960x1770). diff --git a/web/src/test/handlers.ts b/web/src/test/handlers.ts index e3f0d05a2..1186a0f23 100644 --- a/web/src/test/handlers.ts +++ b/web/src/test/handlers.ts @@ -1254,7 +1254,7 @@ export function buildScreenshotHandlers() { ], }), ), - http.get("/backups/:name", ({ params }) => { + http.get("/backups/:name", ({ params, cookies }) => { const name = String(params.name); if (name === "mc-survival-nightly-0713") { return HttpResponse.json( @@ -1267,6 +1267,18 @@ export function buildScreenshotHandlers() { completionTime: "2026-07-13T00:14:41Z", size: "1.4 GiB", snapshotID: "a1b2c3d4e5f6", + conditions: cookies.e2e_backup_coverage === "recorded" + ? [{ type: "Consistency", status: "False", reason: "UnsupportedRawCopy", message: "The game does not support quiesce." }] + : undefined, + captureManifest: cookies.e2e_backup_coverage === "recorded" ? { + state: "Recorded", + recordedAt: "2026-07-13T00:12:04Z", + volumes: [ + { claimName: "game-data", mountPaths: ["/world"], included: true, classification: "data", reason: "PrimaryDataClaim" }, + { claimName: "game-extra-install", mountPaths: ["/serverfiles"], included: false, classification: "rebuildable", reason: "NotCovered" }, + { claimName: "game-mods", mountPaths: ["/world/mods"], included: false, classification: "unclassified", reason: "NotCovered" }, + ], + } : undefined, }, }), ); From a2a73813947c3e0252d4dc4e3a7d29ca58b27d38 Mon Sep 17 00:00:00 2001 From: Baylem Date: Wed, 4 Nov 2026 22:37:32 -0500 Subject: [PATCH 14/17] fix(security): retain password protection through cloning and rollout Signed-off-by: Baylem --- .../handlers/config_clone_race_test.go | 130 +++++++++++++ api/internal/handlers/config_redact.go | 41 ++++- .../handlers/config_redact_revision_test.go | 2 +- api/internal/kube/protected_config.go | 29 +++ api/specs.md | 2 +- .../gameserver_template_revision.go | 20 +- .../internal/controller/template_passwords.go | 81 +++++++++ .../controller/template_passwords_test.go | 172 ++++++++++++++++++ operator/specs.md | 12 ++ 9 files changed, 477 insertions(+), 12 deletions(-) create mode 100644 api/internal/handlers/config_clone_race_test.go create mode 100644 api/internal/kube/protected_config.go create mode 100644 operator/internal/controller/template_passwords.go create mode 100644 operator/internal/controller/template_passwords_test.go diff --git a/api/internal/handlers/config_clone_race_test.go b/api/internal/handlers/config_clone_race_test.go new file mode 100644 index 000000000..e642b628f --- /dev/null +++ b/api/internal/handlers/config_clone_race_test.go @@ -0,0 +1,130 @@ +package handlers + +import ( + "net/http" + "reflect" + "testing" + + "github.com/go-chi/chi/v5" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/types" + dynamicfake "k8s.io/client-go/dynamic/fake" + clienttesting "k8s.io/client-go/testing" + + "github.com/GameplanePanel/gameplane/api/internal/kube" + "github.com/GameplanePanel/gameplane/api/internal/scope" +) + +func TestClonePasswordProtectionSurvivesCatalogRaceAndMutation(t *testing.T) { + for _, cluster := range []string{scope.DefaultCluster, "remote"} { + t.Run(cluster, func(t *testing.T) { + k := fakeKubeClient(redactTemplate()) + src := serverWithConfig("alpha", plainConfig()) + pinRedactionTemplate(t, k, src, redactTemplate()) + if _, err := k.Dynamic.Resource(kube.GVRs["servers"]).Namespace(redactNS).Create(t.Context(), src, metav1.CreateOptions{}); err != nil { + t.Fatal(err) + } + fake := k.Dynamic.(*dynamicfake.FakeDynamicClient) + fake.PrependReactor("create", "gameservers", func(action clienttesting.Action) (bool, runtime.Object, error) { + obj := action.(clienttesting.CreateAction).GetObject().(*unstructured.Unstructured) + obj.SetUID(types.UID("clone-" + obj.GetName())) // Force the real API server's post-Create cache miss. + return false, nil, fake.Tracker().Update(kube.GVRs["templates"], catalogWithoutPasswords(), "") + }) + reg := kube.NewRegistry(scope.DefaultCluster) + reg.Set(scope.DefaultCluster, fakeKubeClient()) + reg.Set(cluster, k) + router := chi.NewRouter() + MountLifecycle(router, reg) + MountResources(router, reg, nil) + store := newTestStore(t) + MountOwnership(router, reg, store) + user := testAdminUser() + user.Perms[cluster] = map[string]map[string]struct{}{"*": {"*": {}}} + query := "?cluster=" + cluster + rr := doWithUser(t, router, http.MethodPost, "/servers/alpha:clone"+query, map[string]any{"newName": "beta"}, user) + if rr.Code != http.StatusOK { + t.Fatalf("clone: %d %s", rr.Code, rr.Body) + } + assertNoSecretLeak(t, rr.Body.String()) + clone, err := k.GetServer(t.Context(), redactNS, "beta") + if err != nil { + t.Fatal(err) + } + keys, err := kube.ProtectedConfigKeys(clone.GetAnnotations()) + if err != nil || !reflect.DeepEqual(keys, []string{"ADMIN_PASSWORD", "RCON_PASSWORD"}) { + t.Fatalf("clone lost inherited password classification: %v %v", keys, err) + } + for _, path := range []string{"/servers/beta", "/servers/"} { + rr = doWithUser(t, router, http.MethodGet, path+query, nil, user) + if rr.Code != http.StatusOK { + t.Fatalf("read: %d %s", rr.Code, rr.Body) + } + assertNoSecretLeak(t, rr.Body.String()) + } + body := updateBody(map[string]any{"MOTD": "hello", "RCON_PASSWORD": configRedactedMarker, "ADMIN_PASSWORD": configRedactedMarker}) + body["metadata"].(map[string]any)["uid"] = string(clone.GetUID()) + body["metadata"].(map[string]any)["annotations"] = map[string]any{kube.ProtectedConfigKeysAnnotation: "[]"} + rr = doWithUser(t, router, http.MethodPut, "/servers/beta"+query, body, user) + if rr.Code != http.StatusOK { + t.Fatalf("PUT: %d %s", rr.Code, rr.Body) + } + assertNoSecretLeak(t, rr.Body.String()) + if !reflect.DeepEqual(storedConfig(t, k, "beta"), plainConfig()) { + t.Fatal("PUT lost stored secrets") + } + bob := seedUser(t, store, "bob", "viewer", "") + rr = doWithUser(t, router, http.MethodPost, "/servers/beta:transfer"+query, map[string]any{"userId": bob}, user) + if rr.Code != http.StatusNoContent { + t.Fatalf("transfer: %d %s", rr.Code, rr.Body) + } + rr = doWithUser(t, router, http.MethodGet, "/servers/beta"+query, nil, user) + assertNoSecretLeak(t, rr.Body.String()) + // A second-generation clone must inherit the source classification, + // even though that source has no pin yet. + if err := fake.Tracker().Update(kube.GVRs["templates"], redactTemplate(), ""); err != nil { + t.Fatal(err) + } + rr = doWithUser(t, router, http.MethodPost, "/servers/beta:clone"+query, map[string]any{"newName": "gamma"}, user) + if rr.Code != http.StatusOK { + t.Fatalf("second clone: %d %s", rr.Code, rr.Body) + } + assertNoSecretLeak(t, rr.Body.String()) + grandchild, err := k.GetServer(t.Context(), redactNS, "gamma") + if err != nil { + t.Fatal(err) + } + if grandchild.GetAnnotations()[kube.ProtectedConfigKeysAnnotation] != clone.GetAnnotations()[kube.ProtectedConfigKeysAnnotation] { + t.Fatal("clone of clone lost password classification") + } + }) + } +} + +func TestProtectedConfigMetadataFailsClosedAndCannotBeForged(t *testing.T) { + for _, raw := range []string{"", "null", `"PASSWORD"`, `[1]`, `[""]`} { + gs := serverWithConfig("alpha", plainConfig()) + gs.SetAnnotations(map[string]string{kube.ProtectedConfigKeysAnnotation: raw}) + newConfigRuleCache(fakeKubeClient(catalogWithoutPasswords())).redact(t.Context(), gs) + for key, value := range specConfig(t, gs.Object) { + if value != configRedactedMarker { + t.Fatalf("malformed metadata exposed %s", key) + } + } + } + gs := serverWithConfig("alpha", plainConfig()) + gs.SetAnnotations(map[string]string{kube.ProtectedConfigKeysAnnotation: `["MOTD"]`}) + k := fakeKubeClient(redactTemplate()) + rr := do(t, mountResourcesRouter(k), http.MethodPost, "/servers/", gs.Object) + if rr.Code != http.StatusCreated { + t.Fatalf("create: %d %s", rr.Code, rr.Body) + } + stored, err := k.GetServer(t.Context(), redactNS, "alpha") + if err != nil { + t.Fatal(err) + } + if _, found := stored.GetAnnotations()[kube.ProtectedConfigKeysAnnotation]; found { + t.Fatal("generic create accepted protected metadata from client") + } +} diff --git a/api/internal/handlers/config_redact.go b/api/internal/handlers/config_redact.go index f801424f2..85c68489b 100644 --- a/api/internal/handlers/config_redact.go +++ b/api/internal/handlers/config_redact.go @@ -2,7 +2,9 @@ package handlers import ( "context" + "encoding/json" "errors" + "slices" "sync" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" @@ -64,7 +66,8 @@ type configRuleCache struct { // A revision is content-addressed, but snapshot ownership belongs to one // server. Never reuse a verified snapshot for a replacement or another server. type configRuleKey struct { - template, namespace, name, uid, revision string + template, namespace, name, uid, revision, protected string + protectedPresent bool } func newConfigRuleCache(k *kube.Client) *configRuleCache { @@ -78,7 +81,8 @@ func (c *configRuleCache) rulesFor(ctx context.Context, gs *unstructured.Unstruc return configRules{failClosed: true} } templateName, _, _ := unstructured.NestedString(gs.Object, "spec", "templateRef", "name") - key := configRuleKey{template: templateName, namespace: gs.GetNamespace(), name: gs.GetName(), uid: string(gs.GetUID()), revision: gs.GetAnnotations()[kube.EffectiveTemplateRevisionAnnotation]} + protectedJSON, protectedPresent := gs.GetAnnotations()[kube.ProtectedConfigKeysAnnotation] + key := configRuleKey{template: templateName, namespace: gs.GetNamespace(), name: gs.GetName(), uid: string(gs.GetUID()), revision: gs.GetAnnotations()[kube.EffectiveTemplateRevisionAnnotation], protected: protectedJSON, protectedPresent: protectedPresent} c.mu.Lock() cached, ok := c.entries[key] c.mu.Unlock() @@ -93,6 +97,13 @@ func (c *configRuleCache) rulesFor(ctx context.Context, gs *unstructured.Unstruc if rules.failClosed { return rules } + protected, err := kube.ProtectedConfigKeys(gs.GetAnnotations()) + if err != nil { + return configRules{failClosed: true} + } + for _, key := range protected { + rules.password[key] = true + } c.mu.Lock() c.entries[key] = rules c.mu.Unlock() @@ -137,13 +148,10 @@ func (c *configRuleCache) redactList(ctx context.Context, list *unstructured.Uns } } -// validateCloneConfig prevents secrets copied from a pinned source from -// becoming ordinary config on an unpinned clone. Redacting only the POST reply -// would still expose them on the clone's subsequent GET/list/event responses. +// validateCloneConfig persists source password classification with the clone. +// The catalog can change after validation and before the operator's first pin, +// so every response and admission must retain this protected metadata. func (c *configRuleCache) validateCloneConfig(ctx context.Context, source, clone *unstructured.Unstructured) error { - if source.GetAnnotations()[kube.EffectiveTemplateRevisionAnnotation] == "" { - return nil - } cfg, _, err := unstructured.NestedMap(source.Object, "spec", "config") if err != nil { return errors.New("cannot clone: source config is malformed") @@ -152,6 +160,7 @@ func (c *configRuleCache) validateCloneConfig(ctx context.Context, source, clone return nil } sourceRules, targetRules := c.rulesFor(ctx, source), c.rulesFor(ctx, clone) + var protected []string for key, value := range cfg { if s, ok := value.(string); ok && s == "" { continue @@ -159,6 +168,22 @@ func (c *configRuleCache) validateCloneConfig(ctx context.Context, source, clone if sourceRules.redacts(key) && (targetRules.failClosed || !targetRules.password[key]) { return errors.New("cannot clone: the current template does not protect copied passwords; restore its password field types or create a new server with fresh configuration") } + if sourceRules.redacts(key) { + protected = append(protected, key) + } + } + if len(protected) != 0 { + slices.Sort(protected) + data, err := json.Marshal(protected) + if err != nil { + return err + } + annotations := clone.GetAnnotations() + if annotations == nil { + annotations = map[string]string{} + } + annotations[kube.ProtectedConfigKeysAnnotation] = string(data) + clone.SetAnnotations(annotations) } return nil } diff --git a/api/internal/handlers/config_redact_revision_test.go b/api/internal/handlers/config_redact_revision_test.go index 82c8c709c..a26209168 100644 --- a/api/internal/handlers/config_redact_revision_test.go +++ b/api/internal/handlers/config_redact_revision_test.go @@ -295,7 +295,7 @@ func TestRedact_PinnedFleetAndEventsUseSelectedClusterSnapshot(t *testing.T) { } fw := watch.NewFake() k.Dynamic.(*dynamicfake.FakeDynamicClient).PrependWatchReactor("gameservers", func(clienttesting.Action) (bool, watch.Interface, error) { return true, fw, nil }) - ctx, cancel := context.WithCancel(auth.WithUser(t.Context(), testAdminUser())) + ctx, cancel := context.WithCancel(auth.WithUser(t.Context(), inventoryUser("remote", gs.GetNamespace(), "servers:read"))) defer cancel() req := httptest.NewRequestWithContext(ctx, http.MethodGet, "/events?cluster=remote", nil) w := &lockedBuffer{header: http.Header{}} diff --git a/api/internal/kube/protected_config.go b/api/internal/kube/protected_config.go new file mode 100644 index 000000000..ac6d4f0a3 --- /dev/null +++ b/api/internal/kube/protected_config.go @@ -0,0 +1,29 @@ +package kube + +import ( + "encoding/json" + "errors" +) + +// ProtectedConfigKeysAnnotation records inherited password classification for +// clones before template admission. Generic API mutations reserve this domain. +const ProtectedConfigKeysAnnotation = "gameplane.local/protected-config-keys" + +// ProtectedConfigKeys reads the names only. Invalid metadata must fail closed. +// Keep the wire format in step with operator/controller/template_passwords.go. +func ProtectedConfigKeys(annotations map[string]string) ([]string, error) { + raw, found := annotations[ProtectedConfigKeysAnnotation] + if !found { + return nil, nil + } + var keys []string + if err := json.Unmarshal([]byte(raw), &keys); err != nil || keys == nil { + return nil, errors.New("invalid protected config metadata") + } + for _, key := range keys { + if key == "" { + return nil, errors.New("invalid protected config metadata") + } + } + return keys, nil +} diff --git a/api/specs.md b/api/specs.md index 822387d95..278415960 100644 --- a/api/specs.md +++ b/api/specs.md @@ -660,7 +660,7 @@ Foreign keys are enforced only on Postgres (modernc-sqlite runs with FK OFF); th - **Fail closed:** when the template cannot be read (no `templateRef`, not found, API error, malformed `configSchema`), or a pinned snapshot is missing, unreadable or invalid, every non-empty config value is redacted. A failed pin lookup never falls back to the latest catalog. The API needs `get` on ConfigMaps in each allowed game namespace; the chart grants it through the games Role, and remote kubeconfigs need the same permission. Failed lookups are not cached. PUT secret preservation uses this same effective schema. - **Update rule (PUT `/servers/{name}`)**, applied before the write (markers: every key; the other rules: per password-type key, every key when failing closed): a value equal to the marker keeps the stored value for ANY key, whether or not the current template marks it a password and whatever the stored value's type (the marker is API-emitted, and a fail-closed read marks every key); if the key is absent from the stored object the marker is dropped, never stored; a different non-empty value replaces it; an explicit empty string clears it only when the field is optional, for a `required` field (or when failing closed, where optionality is unknown) the stored value is kept; a key omitted from the body is removed as in any PUT, except a `required` password field, which is restored. This is what makes the dashboard's whole-`spec` PUT (`mergeDraftOntoLatest`) safe. On POST, marker values are dropped. - **Not covered:** Kubernetes API readers (kubectl, GitOps, the optional read-only `mcp-server`) see the stored object; protect it with cluster RBAC. -- **Pinned source clones:** cloning drops the source's server-specific pin. Before creating the clone, the API checks that its current catalog schema still marks every copied, non-empty source password as a password. If those fields were removed/retyped, or their protection cannot be verified, cloning returns `409` without creating anything. Restore the template's password types or create a new server with fresh configuration. Safe clones continue to copy config verbatim. +- **Clones:** cloning drops the source's server-specific pin. Before creating the clone, the API checks that its current catalog schema still marks every copied, non-empty source password as a password. If those fields were removed/retyped, or their protection cannot be verified, cloning returns `409` without creating anything. Safe clones copy config verbatim and atomically record the inherited password key names in `gameplane.local/protected-config-keys`. This reserved annotation joins the effective schema for redaction and PUT preservation, including before the clone's first pin and after catalog changes. Cache identity includes this metadata. Clones of clones carry the classification forward. Generic POST/PUT cannot forge or remove it, and owner/lifecycle patches preserve it. Malformed metadata fails closed. The operator rejects unsafe admission/pin changes before value validation and retires protection only for empty/absent stored values during a successful pin update. Clear or remove a protected value before adopting a template that retypes it, then set the new ordinary value after admission. ### Audit - **Scope:** every mutating request (POST/PATCH/DELETE); reads excluded diff --git a/operator/internal/controller/gameserver_template_revision.go b/operator/internal/controller/gameserver_template_revision.go index 53f8f8c44..2790b3199 100644 --- a/operator/internal/controller/gameserver_template_revision.go +++ b/operator/internal/controller/gameserver_template_revision.go @@ -168,6 +168,9 @@ func (r *GameServerReconciler) reconcileTemplateRevision(ctx context.Context, gs if err != nil { return nil, false, err } + if err := validateTemplatePasswordTransition(gs, effective, target); err != nil { + return nil, false, err + } if _, err := materializeConfig(gs, target); err != nil { return nil, false, err } @@ -183,6 +186,9 @@ func (r *GameServerReconciler) reconcileTemplateRevision(ctx context.Context, gs if err != nil || !drained { return effective, false, err } + if err := pruneEmptyProtectedConfigKeys(gs); err != nil { + return nil, false, err + } gs.Annotations[effectiveTemplateAnnotation] = op.Token delete(gs.Annotations, stopRequestedAtAnnotation) return effective, true, r.Update(ctx, gs) @@ -210,6 +216,9 @@ func (r *GameServerReconciler) reconcileTemplateRevision(ctx context.Context, gs policy := gs.Spec.TemplateRollout admit := pin == "" || policy == nil || policy.Policy == "" || policy.Policy == "Automatic" || policy.RequestedRevision == desired if admit { + if err := validateTemplatePasswordTransition(gs, effective, &installed); err != nil { + return nil, false, err + } if _, err := materializeConfig(gs, &installed); err != nil { return nil, false, err } @@ -267,11 +276,15 @@ func (r *GameServerReconciler) baselineRenderInputs(gs *gameplanev1alpha1.GameSe } func (r *GameServerReconciler) initializeTemplateBaseline(ctx context.Context, gs *gameplanev1alpha1.GameServer, op lifecycleOperation) error { - if _, err := loadTemplateSnapshot(ctx, r.wipeReader(), gs, op.Token); err != nil { + target, err := loadTemplateSnapshot(ctx, r.wipeReader(), gs, op.Token) + if err != nil { + return err + } + if err := validateTemplatePasswordTransition(gs, nil, target); err != nil { return err } var ss appsv1.StatefulSet - err := r.wipeReader().Get(ctx, client.ObjectKeyFromObject(gs), &ss) + err = r.wipeReader().Get(ctx, client.ObjectKeyFromObject(gs), &ss) if err != nil && !apierrors.IsNotFound(err) { return err } @@ -291,6 +304,9 @@ func (r *GameServerReconciler) initializeTemplateBaseline(ctx context.Context, g gs.Annotations[baselineInputsAnnotation] = inputs } } + if err := pruneEmptyProtectedConfigKeys(gs); err != nil { + return err + } gs.Annotations[effectiveTemplateAnnotation] = op.Token if err := clearLifecycleOperation(ctx, r.Client, r.wipeReader(), gs, op.lifecycleIdentity); err != nil { return err diff --git a/operator/internal/controller/template_passwords.go b/operator/internal/controller/template_passwords.go new file mode 100644 index 000000000..694dbfd7e --- /dev/null +++ b/operator/internal/controller/template_passwords.go @@ -0,0 +1,81 @@ +package controller + +import ( + "encoding/json" + "errors" + + gameplanev1alpha1 "github.com/GameplanePanel/gameplane/operator/api/v1alpha1" +) + +// The API stamps this reserved annotation with a clone's inherited password +// keys in the same Create as its config. Keep the format in step with api/kube. +const protectedConfigKeysAnnotation = "gameplane.local/protected-config-keys" + +func protectedConfigKeys(gs *gameplanev1alpha1.GameServer) ([]string, error) { + raw, found := gs.Annotations[protectedConfigKeysAnnotation] + if !found { + return nil, nil + } + var keys []string + if err := json.Unmarshal([]byte(raw), &keys); err != nil || keys == nil { + return nil, errors.New("invalid protected config metadata") + } + for _, key := range keys { + if key == "" { + return nil, errors.New("invalid protected config metadata") + } + } + return keys, nil +} + +// Validate before materializeConfig: validation of a retyped int/bool/enum +// includes its value in errors that become public GameServer status. +func validateTemplatePasswordTransition(gs *gameplanev1alpha1.GameServer, previous, target *gameplanev1alpha1.GameTemplate) error { + protected, err := protectedConfigKeys(gs) + if err != nil { + return err + } + if previous != nil { + for _, field := range previous.Spec.ConfigSchema { + if field.Type == "password" { + protected = append(protected, field.Name) + } + } + } + passwords := make(map[string]bool) + for _, field := range target.Spec.ConfigSchema { + previousPassword, seen := passwords[field.Name] + passwords[field.Name] = field.Type == "password" && (!seen || previousPassword) + } + for _, key := range protected { + if gs.Spec.Config[key] != "" && !passwords[key] { + return errors.New("template revision would expose a stored password; clear or remove the protected value before adopting this revision") + } + } + return nil +} + +// Release inherited classification only when the same optimistic update commits +// the target pin with an empty/absent value. A concurrent secret edit conflicts. +func pruneEmptyProtectedConfigKeys(gs *gameplanev1alpha1.GameServer) error { + keys, err := protectedConfigKeys(gs) + if err != nil { + return err + } + var retained []string + for _, key := range keys { + if gs.Spec.Config[key] != "" { + retained = append(retained, key) + } + } + if len(retained) == 0 { + delete(gs.Annotations, protectedConfigKeysAnnotation) + return nil + } + data, err := json.Marshal(retained) + if err != nil { + return err + } + gs.Annotations[protectedConfigKeysAnnotation] = string(data) + return nil +} diff --git a/operator/internal/controller/template_passwords_test.go b/operator/internal/controller/template_passwords_test.go new file mode 100644 index 000000000..d89a78625 --- /dev/null +++ b/operator/internal/controller/template_passwords_test.go @@ -0,0 +1,172 @@ +package controller + +import ( + "encoding/json" + "strings" + "testing" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/client" + + gameplanev1alpha1 "github.com/GameplanePanel/gameplane/operator/api/v1alpha1" +) + +func passwordRevisionFixture(t *testing.T) (*GameServerReconciler, *gameplanev1alpha1.GameServer, *gameplanev1alpha1.GameTemplate) { + t.Helper() + r, gs, installed := revisionFixture(t) + installed.Spec.ConfigSchema = []gameplanev1alpha1.ConfigField{{Name: "PASSWORD", Type: "password"}} + if err := r.Update(t.Context(), installed); err != nil { + t.Fatal(err) + } + digest, err := r.saveTemplateSnapshot(t.Context(), gs, installed) + if err != nil { + t.Fatal(err) + } + gs.Annotations[effectiveTemplateAnnotation] = digest + gs.Spec.Config = map[string]string{"PASSWORD": "still-private"} + gs.Spec.TemplateRollout.Policy = "Automatic" + if err := r.Update(t.Context(), gs); err != nil { + t.Fatal(err) + } + return r, gs, installed +} + +func TestTemplatePasswordDowngradeFailsBeforeValueValidation(t *testing.T) { + for _, kind := range []string{"string", "int", "bool", "enum", "removed", "duplicate"} { + t.Run(kind, func(t *testing.T) { + r, gs, installed := passwordRevisionFixture(t) + pin := gs.Annotations[effectiveTemplateAnnotation] + installed.Spec.ConfigSchema[0].Type = kind + if kind == "removed" { + installed.Spec.ConfigSchema = nil + } + if kind == "duplicate" { + installed.Spec.ConfigSchema = []gameplanev1alpha1.ConfigField{{Name: "PASSWORD", Type: "string"}, {Name: "PASSWORD", Type: "password"}} + } + if err := r.Update(t.Context(), installed); err != nil { + t.Fatal(err) + } + if _, err := r.Reconcile(t.Context(), ctrl.Request{NamespacedName: client.ObjectKeyFromObject(gs)}); err != nil { + t.Fatal(err) + } + if err := r.Get(t.Context(), client.ObjectKeyFromObject(gs), gs); err != nil { + t.Fatal(err) + } + status, err := json.Marshal(gs.Status) + if err != nil { + t.Fatal(err) + } + if gs.Status.Phase != gameplanev1alpha1.GameServerPhaseFailed || !strings.Contains(string(status), "would expose a stored password") || strings.Contains(string(status), "still-private") { + t.Fatalf("unsafe admission status: %s", status) + } + if gs.Annotations[effectiveTemplateAnnotation] != pin { + t.Fatal("unsafe revision changed the pin") + } + if _, held, err := lifecycleOwner(gs); err != nil || held { + t.Fatalf("unsafe revision acquired lifecycle ownership: held=%t err=%v", held, err) + } + }) + } +} + +func TestTemplatePasswordEditAfterAdmissionCannotCommitDowngrade(t *testing.T) { + r, gs, installed := passwordRevisionFixture(t) + pin := gs.Annotations[effectiveTemplateAnnotation] + gs.Spec.Config["PASSWORD"] = "" + if err := r.Update(t.Context(), gs); err != nil { + t.Fatal(err) + } + installed.Spec.ConfigSchema[0].Type = "int" + if err := r.Update(t.Context(), installed); err != nil { + t.Fatal(err) + } + if _, changed, err := r.reconcileTemplateRevision(t.Context(), gs); err != nil || !changed { + t.Fatalf("empty password should admit target: changed=%t err=%v", changed, err) + } + gs.Spec.Config["PASSWORD"] = "concurrent-secret" + if err := r.Update(t.Context(), gs); err != nil { + t.Fatal(err) + } + if _, _, err := r.reconcileTemplateRevision(t.Context(), gs); err == nil || !strings.Contains(err.Error(), "would expose a stored password") || strings.Contains(err.Error(), "concurrent-secret") { + t.Fatalf("commit did not reject the concurrent secret safely: %v", err) + } + if gs.Annotations[effectiveTemplateAnnotation] != pin { + t.Fatal("unsafe target committed") + } +} + +func TestClonePasswordClassificationProtectsInitialPin(t *testing.T) { + for _, baseline := range []bool{false, true} { + t.Run(map[bool]string{false: "admission", true: "admitted-baseline"}[baseline], func(t *testing.T) { + r, gs, installed := passwordRevisionFixture(t) + delete(gs.Annotations, effectiveTemplateAnnotation) + gs.Annotations[protectedConfigKeysAnnotation] = `["PASSWORD"]` + installed.Spec.ConfigSchema[0].Type = "int" + if err := r.Update(t.Context(), installed); err != nil { + t.Fatal(err) + } + if err := r.Update(t.Context(), gs); err != nil { + t.Fatal(err) + } + var err error + if baseline { + revision, saveErr := r.saveTemplateSnapshot(t.Context(), gs, installed) + if saveErr != nil { + t.Fatal(saveErr) + } + err = r.initializeTemplateBaseline(t.Context(), gs, lifecycleOperation{lifecycleIdentity: lifecycleIdentity{Token: revision, Baseline: true}}) + } else { + _, _, err = r.reconcileTemplateRevision(t.Context(), gs) + } + if err == nil || !strings.Contains(err.Error(), "would expose a stored password") || strings.Contains(err.Error(), "still-private") { + t.Fatalf("initial pin accepted a password downgrade: %v", err) + } + if gs.Annotations[effectiveTemplateAnnotation] != "" { + t.Fatal("unsafe initial pin committed") + } + }) + } +} + +func TestClearedClonePasswordProtectionRetiresWithInitialPin(t *testing.T) { + for _, empty := range []bool{false, true} { + t.Run(map[bool]string{false: "absent", true: "empty"}[empty], func(t *testing.T) { + r, gs, installed := passwordRevisionFixture(t) + delete(gs.Annotations, effectiveTemplateAnnotation) + gs.Annotations[protectedConfigKeysAnnotation] = `["PASSWORD"]` + delete(gs.Spec.Config, "PASSWORD") + if empty { + gs.Spec.Config["PASSWORD"] = "" + } + installed.Spec.ConfigSchema[0].Type = "string" + if err := r.Update(t.Context(), installed); err != nil { + t.Fatal(err) + } + if err := r.Update(t.Context(), gs); err != nil { + t.Fatal(err) + } + for range 2 { + if _, changed, err := r.reconcileTemplateRevision(t.Context(), gs); err != nil || !changed { + t.Fatalf("safe initial pin: changed=%t err=%v", changed, err) + } + } + if gs.Annotations[effectiveTemplateAnnotation] == "" || gs.Annotations[protectedConfigKeysAnnotation] != "" { + t.Fatalf("cleared protection retained after pin: %v", gs.Annotations) + } + gs.Spec.Config["PASSWORD"] = "new-public-value" + if err := validateTemplatePasswordTransition(gs, installed, installed); err != nil { + t.Fatalf("retired protection blocks a later public value: %v", err) + } + }) + } +} + +func TestMalformedProtectedConfigFailsClosed(t *testing.T) { + for _, raw := range []string{"", "null", `"PASSWORD"`, `[1]`, `[""]`} { + gs := &gameplanev1alpha1.GameServer{ObjectMeta: metav1.ObjectMeta{Annotations: map[string]string{protectedConfigKeysAnnotation: raw}}} + if err := validateTemplatePasswordTransition(gs, nil, &gameplanev1alpha1.GameTemplate{}); err == nil { + t.Fatalf("accepted malformed protection %q", raw) + } + } +} diff --git a/operator/specs.md b/operator/specs.md index d2c150b4c..2c130a51f 100644 --- a/operator/specs.md +++ b/operator/specs.md @@ -86,6 +86,18 @@ not recreated to enable remote parity. ## Template revision admission +- Admission and the final pin update reject removing or retyping a populated + password field from the previous effective schema. This check precedes value + validation so rejected values cannot enter public status messages. The same + rule applies to inherited clone password keys before the first pin. Errors + preserve the current pin and stored config. Clear or remove the protected + value before requesting the incompatible target. +- Clones carry `gameplane.local/protected-config-keys`, a JSON array of key + names stamped by the API in the same Create as their config. Invalid metadata + fails closed. Successful pin updates retire keys whose stored values are + empty or absent in that same resourceVersion-fenced update, allowing a later + ordinary value under the new schema. Populated keys retain protection. + - `GameServer.spec.templateRollout.policy` defaults to Automatic; OnRequest admits only `requestedRevision == status.templateRevision.desired`. Initial provisioning/baseline always adopts the installed content. No fleet scheduler, From 275383595284101bd6db5749ebc7bd4ee15f703e Mon Sep 17 00:00:00 2001 From: Baylem Date: Wed, 4 Nov 2026 22:39:21 -0500 Subject: [PATCH 15/17] fix(web): align backup drawer with Pencil references Signed-off-by: Baylem --- assets/design-export/MANIFEST.md | 4 + assets/design-export/json/bHJy6.json | 2 +- assets/design-export/json/zhLZN.json | 97 ++++++++++++++--- assets/design-export/screenshots/bHJy6.png | Bin 52320 -> 52422 bytes assets/design-export/screenshots/zhLZN.png | Bin 328777 -> 329367 bytes design.pen | 99 +++++++++++++++--- .../components/backups/BackupDetailDrawer.tsx | 4 +- 7 files changed, 172 insertions(+), 34 deletions(-) diff --git a/assets/design-export/MANIFEST.md b/assets/design-export/MANIFEST.md index 60128ae85..16db3e450 100644 --- a/assets/design-export/MANIFEST.md +++ b/assets/design-export/MANIFEST.md @@ -2821,3 +2821,7 @@ The operator has supported `spec.idle.wakeOnConnect` since v0.2.0-beta.8, but th Source: `web/src/components/backups/BackupDetailDrawer.tsx`. The recorded state uses the matching screenshot fixture in `web/src/test/handlers.ts`; `web/e2e/screenshots/slice-3.spec.ts` captures both node IDs and checks their distinct content. **Exports:** JSON from Pencil `Get(id, {depth: 30, includePathGeometry: true})`, with no truncation markers; PNG from `Export(ids, "png", …, {scale: 2})`. Both nodes were visually inspected in Pencil, and the recorded state was checked manually in Chrome. The user saved `design.pen` in Pencil after the final sizing adjustment. TypeScript application and screenshot source compilation passed; automated visual execution remains CI-only. The drawer reference crop was remeasured as `(120,96)-(1000,1616)` in the new PNG, retaining the 880×1520 panel. + +### Follow-up alignment — 2026-11-04 + +Re-exported `zhLZN` and `bHJy6` from Pencil after reviewing the CI captures. The drawer now explicitly removes HeroUI body/footer margins and uses foreground text for values, matching the design's 20px content inset. The recorded reference is 400px wide (440px drawer minus two 20px insets); native Windows scrollbars consume additional space in the live scroll area. Coverage cards remain 98px tall. Header/footer heights, field line heights, the phase chip, and action-button typography now match the component styles. Both nodes were visually inspected in Pencil and the recorded state was inspected in Chrome; no comparison thresholds were changed. JSON and 2× PNG exports use the same methods above. diff --git a/assets/design-export/json/bHJy6.json b/assets/design-export/json/bHJy6.json index adabe84d3..84d34efaf 100644 --- a/assets/design-export/json/bHJy6.json +++ b/assets/design-export/json/bHJy6.json @@ -5,7 +5,7 @@ "y": 4461, "name": "Gameplane/Backup Volume Coverage — Recorded", "reusable": true, - "width": 396, + "width": 400, "fill": "$surface/surface", "layout": "vertical", "gap": 4, diff --git a/assets/design-export/json/zhLZN.json b/assets/design-export/json/zhLZN.json index 741ccfd75..71c304348 100644 --- a/assets/design-export/json/zhLZN.json +++ b/assets/design-export/json/zhLZN.json @@ -38,8 +38,14 @@ "strokeAlignment": "inner", "strokeLinejoin": "round", "gap": 12, - "padding": 20, + "padding": [ + 20, + 20, + 21, + 20 + ], "justifyContent": "space_between", + "alignItems": "center", "children": [ { "type": "frame", @@ -52,6 +58,7 @@ "id": "J6746o", "fill": "$foreground/foreground", "content": "Backup details", + "lineHeight": 1.5, "fontFamily": "$typography/font-sans", "fontSize": 16, "fontWeight": "600" @@ -61,6 +68,7 @@ "id": "Y9xsP", "fill": "$muted", "content": "mc-survival-nightly-0713", + "lineHeight": 1.3333333333333333, "fontFamily": "$typography/font-mono", "fontSize": 12, "fontWeight": "normal" @@ -73,12 +81,28 @@ "ref": "J09iP", "name": "Btn Restore", "descendants": { + "eWkIT": { + "padding": [ + 0, + 12, + 0, + 10 + ], + "gap": 4 + }, "eWkIT/WtPjS": { "icon": "rotate-ccw", - "opacity": 1 + "opacity": 1, + "width": 16, + "height": 16 }, "eWkIT/r4VbAi": { - "content": "Restore" + "content": "Restore", + "fontSize": 14, + "lineHeight": 1.4285714285714286, + "fontWeight": "500", + "width": 51, + "textGrowth": "auto" } } } @@ -99,13 +123,14 @@ "id": "kJdLp", "width": "fill_container", "layout": "vertical", - "gap": 4, + "gap": 5, "children": [ { "type": "text", "id": "UnA2p", "fill": "$muted", "content": "PHASE", + "lineHeight": 1.3333333333333333, "fontFamily": "$typography/font-sans", "fontSize": 12, "fontWeight": "normal", @@ -120,7 +145,7 @@ "cornerRadius": 4, "padding": [ 0, - 8 + 6 ], "justifyContent": "center", "alignItems": "center", @@ -130,9 +155,10 @@ "id": "VzkPp", "fill": "$success/soft-foreground", "content": "Succeeded", - "fontFamily": "$typography/font-mono", + "lineHeight": 1.6666666666666667, + "fontFamily": "$typography/font-sans", "fontSize": 12, - "fontWeight": "normal" + "fontWeight": "500" } ] } @@ -150,6 +176,7 @@ "id": "i3iNn", "fill": "$muted", "content": "SERVER", + "lineHeight": 1.3333333333333333, "fontFamily": "$typography/font-sans", "fontSize": 12, "fontWeight": "normal", @@ -160,6 +187,7 @@ "id": "RuNbp", "fill": "$foreground/foreground", "content": "mc-survival", + "lineHeight": 1.4285714285714286, "fontFamily": "$typography/font-sans", "fontSize": 14, "fontWeight": "normal" @@ -180,7 +208,7 @@ "name": "Consistency label", "fill": "$muted", "content": "ACHIEVED CONSISTENCY", - "lineHeight": 1.333333, + "lineHeight": 1.3333333333333333, "fontFamily": "$typography/font-sans", "fontSize": 12, "fontWeight": "normal", @@ -194,7 +222,7 @@ "textGrowth": "fixed-width", "width": "fill_container", "content": "Consistency has not been reported.", - "lineHeight": 1.428571, + "lineHeight": 1.4285714285714286, "fontFamily": "$typography/font-sans", "fontSize": 14, "fontWeight": "normal" @@ -215,7 +243,7 @@ "name": "Coverage label", "fill": "$muted", "content": "VOLUME COVERAGE", - "lineHeight": 1.333333, + "lineHeight": 1.3333333333333333, "fontFamily": "$typography/font-sans", "fontSize": 12, "fontWeight": "normal", @@ -229,7 +257,7 @@ "textGrowth": "fixed-width", "width": "fill_container", "content": "Capture-time volume metadata is unavailable. Inspect the original backup and module configuration before recovery.", - "lineHeight": 1.428571, + "lineHeight": 1.4285714285714286, "fontFamily": "$typography/font-sans", "fontSize": 14, "fontWeight": "normal" @@ -248,6 +276,7 @@ "id": "unHoA", "fill": "$muted", "content": "SNAPSHOT ID", + "lineHeight": 1.3333333333333333, "fontFamily": "$typography/font-sans", "fontSize": 12, "fontWeight": "normal", @@ -258,6 +287,7 @@ "id": "Z0WZHU", "fill": "$foreground/foreground", "content": "a1b2c3d4e5f6", + "lineHeight": 1.6666666666666667, "fontFamily": "$typography/font-mono", "fontSize": 12, "fontWeight": "normal" @@ -276,6 +306,7 @@ "id": "ZKoIE", "fill": "$muted", "content": "SIZE", + "lineHeight": 1.3333333333333333, "fontFamily": "$typography/font-sans", "fontSize": 12, "fontWeight": "normal", @@ -286,6 +317,7 @@ "id": "ws91g", "fill": "$foreground/foreground", "content": "1.4 GiB", + "lineHeight": 1.4285714285714286, "fontFamily": "$typography/font-sans", "fontSize": 14, "fontWeight": "normal" @@ -304,6 +336,7 @@ "id": "wdRU3", "fill": "$muted", "content": "STARTED", + "lineHeight": 1.3333333333333333, "fontFamily": "$typography/font-sans", "fontSize": 12, "fontWeight": "normal", @@ -320,6 +353,7 @@ "id": "Cq41N", "fill": "$foreground/foreground", "content": "3h ago", + "lineHeight": 1.4285714285714286, "fontFamily": "$typography/font-sans", "fontSize": 14, "fontWeight": "normal" @@ -329,6 +363,7 @@ "id": "EWaAd", "fill": "$muted", "content": "2026-07-13T00:12:04Z", + "lineHeight": 1.3333333333333333, "fontFamily": "$typography/font-mono", "fontSize": 12, "fontWeight": "normal" @@ -349,6 +384,7 @@ "id": "LB6zU", "fill": "$muted", "content": "COMPLETED", + "lineHeight": 1.3333333333333333, "fontFamily": "$typography/font-sans", "fontSize": 12, "fontWeight": "normal", @@ -365,6 +401,7 @@ "id": "r7fAJS", "fill": "$foreground/foreground", "content": "3h ago", + "lineHeight": 1.4285714285714286, "fontFamily": "$typography/font-sans", "fontSize": 14, "fontWeight": "normal" @@ -374,6 +411,7 @@ "id": "fmTdG", "fill": "$muted", "content": "2026-07-13T00:14:41Z", + "lineHeight": 1.3333333333333333, "fontFamily": "$typography/font-mono", "fontSize": 12, "fontWeight": "normal" @@ -396,7 +434,12 @@ "strokeAlignment": "inner", "strokeLinejoin": "round", "gap": 8, - "padding": 16, + "padding": [ + 17, + 16, + 16, + 16 + ], "justifyContent": "end", "alignItems": "center", "children": [ @@ -407,7 +450,21 @@ "name": "Btn Delete", "descendants": { "E4lQce": { - "cornerRadius": "$radius/md" + "cornerRadius": "$radius/md", + "padding": [ + 0, + 12, + 0, + 10 + ], + "gap": 6 + }, + "E4lQce/IUtnC": { + "fontSize": 14, + "lineHeight": 1.4285714285714286, + "fontWeight": "500", + "width": 43, + "textGrowth": "auto" } } }, @@ -418,14 +475,24 @@ "name": "Btn Restore", "descendants": { "IVgQ8": { - "cornerRadius": "$radius/md" + "cornerRadius": "$radius/md", + "padding": [ + 0, + 12 + ], + "gap": 8 }, "nWTJb": { "enabled": false, "icon": "rotate-ccw" }, "IVgQ8/U1xvSo": { - "content": "Restore" + "content": "Restore", + "fontSize": 14, + "lineHeight": 1.4285714285714286, + "fontWeight": "500", + "width": 51, + "textGrowth": "auto" } } } diff --git a/assets/design-export/screenshots/bHJy6.png b/assets/design-export/screenshots/bHJy6.png index 4685c56b382e5288f2a6f2578569d68706b50cb1..4f6308960534f05eb77022e62ea32eadbcde23e8 100644 GIT binary patch literal 52422 zcmZU4cUY52_x6e?s7NSkfB*qQSyv?lmQa%jQ34{y6%nLEP2)LL)=tT~>=oj9B*`UDu9Y5xlF?jqE%(hM*GnQ0a%SSIlkp z3FDP!FBj$%K4`Ec(*MXJWlOHa5|?T{mMVL6H;HXHUY$qD*I-02ro~44xEC_$8+a_( zF=&Y-{pKr8g#UB@QXMqn>sV@I@Y1`9y06!l$2K(r|K~AEHA3~!H`P4{vZC)?S60|_ zz~qd8L}J4qNP>YtW7f=UWuDdNilz8dUf4|f0i{(wTcqyOLzP;C6ay77Nb z{4V(Bj_l#vwjEVJdP*eT5tIjqML3+HZMTQkp4pjrIBrX!0G9sn7x8m-{EKmh^WIP9 z;Ed(b1mROXMU|M5_|YHZOt=bW-~5@d7Vl`IVDY*ED6My4n_2d)O%DuN-K<}GeWvLOX%X+-IEqO?R&TQS$qI(5n@LXqfj zREUM^&t$@`oo0+1LU!$7z>A^obP64`5KUO`Wmoou>?l4sup*lwbq&J!R^zy}FW+PG zrzq_EN_f^J_%;}~Xub}5S5bC2zuX);*=^#5mvzNqh7Q74)!U4>`e(>cpMIB5N*3Gj zFT-sY%_B({5zpFeC1#7^MhUKO^IfK5v`aDn=$g5Z+Mub zMOa;llL`($9VF3iBJZmX4h|_ylC6{J>+@qWdfp`T%Svt(?%Yl&0on$;)@$W!W2r3_ z0h}l{u_)maR~!u$=e#xGy^5T$#f|Fj)YV##R z1w^o@JH4a5F*fMvE!ljjKERhIe>IIK?I)1r5x^%4@L#ewgR6SU!AlKh*)2(`v_9Bl zP;dxcoLKP2jQd;cinRdQ@tS=?A%-Hnb|TrKIr!%r2hBE2kc2Z)tA(lmy64bYC(@qD z-stj*iik@HYo9w!sARM>`PtwxY8+R+;8@evr@U3Eg$fPRF4))A64XY@ZQZnsUudGg z@1$+=lpQUY&eEGF(teW+`u&D$GVSujKZT}Jx6`SF&eOV= z{@UE?z-DKp+`hj->$Rwo3r0TaVZ}Iz6J-A^3eIdwUiw+F)6DDK-^RT8lR*BxhGDV5 zS9chRTDQs{Pum^Kmn~kdzjYv`f)v?#LNsyxnt4f2C3-&FJ^L9r^JQup_k&Oq!D8$L zvC~i3)cbU-&B<~5XSM9C83)hX^7}2de{Ba!KQH=kvrSA2H0=>~_S4ORQ5fF-(~=~) zcKiS(NYuBB@{8?}cOesDFLLgi5^bse=JHcfg25oo7h`P!KVt^4pZCIWw4iDkFzag{@1^WCM<9o1k46sw&oZ%%90^4n>9khE898YdB`zzPyoQD-!1C>5To zE4;j!A@gxq0bBf|jeVYw7ol>{oF7SQ2NoQ{*r|1b+=+eomwde!u z!A*w9^^Zf=04`ezM%Qr5Q^6Hs$WCP%4074=f1^TaQo~80m?#E+FXFdIt)|KNiu)~( zdK6Q5iT!W1{5wMbM3Udi#uc>S7gA^o^5ispW-u_6uGsPcG@X{`O_U^uK5Q4-P86ev z4Ci9U>;^U3LY^hj#OA+pl8`|KT+wsba`ADRcW12UL9?wRe+MzXrpsx9dL5etA+EjyQ* zOf(2yfc~wy4oKkhArsL{vf26ai8_fsmvC-&>N<9?G9x6u@BQ|)RUx*g|NO%^cI4>= z&o*^Mc}4ho8uk3_o*X2p0>iX)+7n>RHaOY#%WSgH_=%vVJZ9kh@g&t`mMuNj0e4!u#V|Gn6Nhs#R@n^xpjWiS|U&?CLvO zO!@~^k>&SeX_zJnknTdI6SjDzmEv<@S^36=rKeuVd3pL=B>kg3NJcpj7J|KCHJIKc%R&fGx%as0pw!T%QX1z*4yXa8<# z_#$~z=wkS_cPCQ^@%5?9!At&+I(GzZ_(R$pFI83u zd#5@f`a>HXTYhslr;ncY_eUmHh3OUipJC>FQSis}{u6_ClRNB$iym9R7e;w&{BK^o zyLs~Xo$YosZwZ~=GxT5jyO}i{>KI1KfKqlleHZ!r)AE=*z(n)N7ynLB*qW*nS>lxx zUlujyZ^KXjTOl=S!@B($wQuRNw}i%brcw3^q08M%p7vy&Nb5FFi3y6VzP~$#9mV=E z-Y?^~(dQAFJ=691ouvnCi5E8)Z8&@1rz^kc?r|$6FkAo(&T!va^UKV?MKb>DW_Ez_;eKk)GI}dg9O`_S-GkZwvw6Za)3MLpr#$#l=y-bVuRXHFMx> zXDndhYA>!QC;F8zEyisu#R0z+tsFY|Ild=A^<$2ym&EWQ956JWBHmAYv zmq9rIV%k^1QRGTpmc?y#*1*MY?Cvo6`a<35p?4rqP=y=fdZeU}1#vy;N4!>x;)k(B zM_!eqJ@L!pc*r^5j>$t`svVu6QEf-zHUMn{bT)LAe*y^Ej_a%N%=QSD^1uZ_qtB%c zS^K^)x_FB_iM2b5??0PnH7SSg39D$+PzBQ%?PQ*sk%14x%n@hjl1qjus;&-Gc_*Uc zo8+D1%a?L~Vp#-VOmLv8w|3KP^<~Ses+OCh)K!n6HgZClmYn#qn)$3Z!dXx4`RN=e z_{q#KY>NChE{uA-zdK|!tGF}l;ZB;j#H#0f*c-NiQqZyfx3sjAe=oOF0)xX3c9qHz zl%;Wvq8~!bDP60>zD;6nsS`TFUsnLt9Oru z3bj2eTiY@x5i159+Fbl*6(77ZspFmL8m(Gh9qZz5Vo z21a&8s^IX$)a=9vovpO#W?91?ez)?;W?6m6LWK=I1|6M#T-MqzQGS)&lNcZIKJhR~ z)V6DQFT}{)m38UJw~PpDPG_3+Rw4|}#oo_Q)rxZYXiJb;MT4p4x+^8&p-St|NSV4> z%j2q8ZsJ}=M{K!biKjb23l3wrbn7SN0oh!#B&0UmX}Yex-VK8}Y@D}|Q=oR)V>)%l zcDwK8^Eur9P+wK>_T$m39ftKS+pJ2e+ogXtaiF2o!l8~{paIRP5=YbVTW0)phY<_o zv`mqg_uYdw)k)o=M>lI5i3F8@ofnJ1ZjHixS~S`dP(EFAKv13Llq87r3p;5i8luuv zJK|yI(qSGigFZd=>>JH*UgV3@QlZs$o0_s`X^S$J)#vs(fpt`Fe2)|UF0uU2iJpLb zF?`9l>IL)dB=4u%c*}{7jG6Ah3t{^NROdf5->aL{PhG|*pIqub;y;(NBZ(SH`&37q z3+O6nTl_G7No1pc=GuUs#mpP;&c>OL#gQjy~phg!JW zL00qWf^^#tAl*H~)YW6Q8~xG-4s-jH|tC zt@ogTb~Be1K(c5Sj*1~e^ebaDQ8S100yBdecrMlJ_Kv%M#^I#F4K_Y1s; zs@9#Y3&aR#IVBGRZjBpQOa=Gc`5NvPuTD*N`xDR;6QB|o=-?SL*nckVWl(VK zpc~#CKrb{u%p83yt6N=CSpWC-;&f4<%%pP!~>I$hVkr+3}nOUy^Y5ldb4NpH0nmV#0 zupSu4@tAq+4rj`4Xdu-fh?)j4bs>BvaP=eKKV%{H~(10ZU*#sg=JJivh}Y0TTAvrrCXJ z>oXk{X7;!?;oo-?CxtN2zy0MFc78GnnqOx`bRJh?sK6m>g~@3-8y0K$1?{VpZ1|#d zu&v*znY5Dkn%B)~9I>{wED8NDcT7Tj8^bFO-o}ylepoAlb!qe1qHh??%UVjE=}CGP zPprz?IKGcT^ZO9ngR*{Ig{Il+ZnP4m_It0!HpQ42n@7pZzHa{^p$@qlcCpV1epi4$WW{u4I}h52zq+Fc_x zCI{L@Tw!>xOQk>@yZoG^kq}x-q9%Z3+scmfeg~v(tF^HXAJvs=SL#tgwzyLIOL$WsK`ZF;C*I5wrLU#rihh%9 zILd?55Y4h7(`zCfl3;2TRXw;&d8Y_5G@>m#5^Ec49ht^%CYp?J73)3ObD5v~5cix*s zr#%L=t|GB_1S&F``b#0&vCtmp(PLTv&LB8nG-y4t(U(APX5B3w5V6eh3rQ-I`P6CaJ|mx<#@4X*Jju+GPJ?+=zSBj%0T`jT^gz4IJm=P3wrB z78u6^c1n9P`G-uk2MvS3MAolDUB$e|@Ae$%1ezPOX1Pu8-yFpY6Sl;e3`kVc?MST+ z_QxW@zJvIfBKVq`1mc{aLMIKJp6^R^d-;A*J);=RVv3Ay8oMJUTW^3Il@qy8EW^k;0g&Q<|;Dgp{C>Gkjxjn@j9e~or>mm&Lbna8!VgIwC&am^H)q+$=K#Y~}Dsf;9|ra+i95IFPq`8Lc?Y5C@!^w+wy zo5x2Ptzg|-UH7&|IZ0V9ir28xFW0HbYhp-t=N_`S?%8;Ui|*$L9Nk-;R3Dq}kAx>y zZRh}__+Lf`A)F&i-PI(og&x}R(YE=25VF8xK~eubLB(f2zx*CFIIWWFE@%JmIr}>TH!86#@ccAvn~wy1 zlq~0C7rUKz9gTk|k0srLt9|b!p@ZCW@;v_$J(b^1Iw13paJvwLLRhoptBivVXG)pB z)r$Z4z^;f{C_eZw^DT~5t~~J{ro-fa1y8^>{P~X+|Bv7k%YwxUVMU63s?A;g2`FiI zw7=y^Y~V@0dUL3Qr&)#m?;%Z`?(hZNqyCJqkJW*v|9N9`S5K(n^gl=iS=DLZ?t4~f zJ}5C@a9;aAz?YIbYL8~OIlukW+4p?j?;nfojx56eh(@$A+N|M!SUZmL#6DNY@U~sc z>KN=f`Oh1rQG8K~g6?^p{To$Q2;&_{`%OS1EtB6~6O)1cr}^(8q?FWo0vc(C5&zNg zyK!UqXvzh_Cz*m5O&UJ@JEarue6*(~12e}5r1N$JDd?Ur*Hi$^>;_y%XbRE&sipq{>Lety!anss<Jt zf>~($SD^-uU|eED4!>RZSLe0=^=1IySO$-NSLFj+|21)8H3vlgVO68I8uja6X7|{C zBJN66D|ltst9RY_X4UspaE|-l@mu`4`{Umpj@y@w6Q@&;*%>qQ4Nv=81poDEl%b!B ztey*c2E{vf$rrR4+(3=_1;UW~MOjDFab@Zd;Iu5yzjJbv7Rb#y9BVJ-CD~j#_BCBq zD2UKBqeiTr^GJc}7Ty*y?tgSl%fpd%0D&98rc079tjMkX5e!=M^z6sjY-f4UFXdj> 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 NUC=w9_pfE({{x9?Qt>7DeT*^ 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

ck$JMX!}r9sis_rSDjWPIF-zjTis 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

E;G-}L1h?w<*P#e=cpCk%7Co`w+nbPVV!%7y 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 k@>Tox0Q`pv0_2AdWaFNCqS}*u%JkK>h#Jb! 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

cv-uR&2zmFhUv9aUL?4z1hdw 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%0D#2PHKq4y`kOPuln%D*R6Lmu5&WvrU2?auL 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 F{V!gBkcR*O delta 263997 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

BCI6Q3hvT-0Km3hK!`;q1*OBf#@C^lD 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

e})J?K@q{Wjz@}*8zf*> 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

fJ%lFc#P1np0mLCw2R`RYCG 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

E|&5O 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 %j6c{uwUZts3`nM( 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 diff --git a/design.pen b/design.pen index 7e548c03d..a12912023 100644 --- a/design.pen +++ b/design.pen @@ -119253,8 +119253,14 @@ "strokeAlignment": "inner", "strokeLinejoin": "round", "gap": 12, - "padding": 20, + "padding": [ + 20, + 20, + 21, + 20 + ], "justifyContent": "space_between", + "alignItems": "center", "children": [ { "type": "frame", @@ -119267,6 +119273,7 @@ "id": "J6746o", "fill": "$foreground/foreground", "content": "Backup details", + "lineHeight": 1.5, "fontFamily": "$typography/font-sans", "fontSize": 16, "fontWeight": "600" @@ -119276,6 +119283,7 @@ "id": "Y9xsP", "fill": "$muted", "content": "mc-survival-nightly-0713", + "lineHeight": 1.3333333333333333, "fontFamily": "$typography/font-mono", "fontSize": 12, "fontWeight": "normal" @@ -119288,12 +119296,28 @@ "ref": "J09iP", "name": "Btn Restore", "descendants": { + "eWkIT": { + "padding": [ + 0, + 12, + 0, + 10 + ], + "gap": 4 + }, "eWkIT/WtPjS": { "icon": "rotate-ccw", - "opacity": 1 + "opacity": 1, + "width": 16, + "height": 16 }, "eWkIT/r4VbAi": { - "content": "Restore" + "content": "Restore", + "fontSize": 14, + "lineHeight": 1.4285714285714286, + "fontWeight": "500", + "width": 51, + "textGrowth": "auto" } } } @@ -119314,13 +119338,14 @@ "id": "kJdLp", "width": "fill_container", "layout": "vertical", - "gap": 4, + "gap": 5, "children": [ { "type": "text", "id": "UnA2p", "fill": "$muted", "content": "PHASE", + "lineHeight": 1.3333333333333333, "fontFamily": "$typography/font-sans", "fontSize": 12, "fontWeight": "normal", @@ -119335,7 +119360,7 @@ "cornerRadius": 4, "padding": [ 0, - 8 + 6 ], "justifyContent": "center", "alignItems": "center", @@ -119345,9 +119370,10 @@ "id": "VzkPp", "fill": "$success/soft-foreground", "content": "Succeeded", - "fontFamily": "$typography/font-mono", + "lineHeight": 1.6666666666666667, + "fontFamily": "$typography/font-sans", "fontSize": 12, - "fontWeight": "normal" + "fontWeight": "500" } ] } @@ -119365,6 +119391,7 @@ "id": "i3iNn", "fill": "$muted", "content": "SERVER", + "lineHeight": 1.3333333333333333, "fontFamily": "$typography/font-sans", "fontSize": 12, "fontWeight": "normal", @@ -119375,6 +119402,7 @@ "id": "RuNbp", "fill": "$foreground/foreground", "content": "mc-survival", + "lineHeight": 1.4285714285714286, "fontFamily": "$typography/font-sans", "fontSize": 14, "fontWeight": "normal" @@ -119395,7 +119423,7 @@ "name": "Consistency label", "fill": "$muted", "content": "ACHIEVED CONSISTENCY", - "lineHeight": 1.333333, + "lineHeight": 1.3333333333333333, "fontFamily": "$typography/font-sans", "fontSize": 12, "fontWeight": "normal", @@ -119409,7 +119437,7 @@ "textGrowth": "fixed-width", "width": "fill_container", "content": "Consistency has not been reported.", - "lineHeight": 1.428571, + "lineHeight": 1.4285714285714286, "fontFamily": "$typography/font-sans", "fontSize": 14, "fontWeight": "normal" @@ -119430,7 +119458,7 @@ "name": "Coverage label", "fill": "$muted", "content": "VOLUME COVERAGE", - "lineHeight": 1.333333, + "lineHeight": 1.3333333333333333, "fontFamily": "$typography/font-sans", "fontSize": 12, "fontWeight": "normal", @@ -119444,7 +119472,7 @@ "textGrowth": "fixed-width", "width": "fill_container", "content": "Capture-time volume metadata is unavailable. Inspect the original backup and module configuration before recovery.", - "lineHeight": 1.428571, + "lineHeight": 1.4285714285714286, "fontFamily": "$typography/font-sans", "fontSize": 14, "fontWeight": "normal" @@ -119463,6 +119491,7 @@ "id": "unHoA", "fill": "$muted", "content": "SNAPSHOT ID", + "lineHeight": 1.3333333333333333, "fontFamily": "$typography/font-sans", "fontSize": 12, "fontWeight": "normal", @@ -119473,6 +119502,7 @@ "id": "Z0WZHU", "fill": "$foreground/foreground", "content": "a1b2c3d4e5f6", + "lineHeight": 1.6666666666666667, "fontFamily": "$typography/font-mono", "fontSize": 12, "fontWeight": "normal" @@ -119491,6 +119521,7 @@ "id": "ZKoIE", "fill": "$muted", "content": "SIZE", + "lineHeight": 1.3333333333333333, "fontFamily": "$typography/font-sans", "fontSize": 12, "fontWeight": "normal", @@ -119501,6 +119532,7 @@ "id": "ws91g", "fill": "$foreground/foreground", "content": "1.4 GiB", + "lineHeight": 1.4285714285714286, "fontFamily": "$typography/font-sans", "fontSize": 14, "fontWeight": "normal" @@ -119519,6 +119551,7 @@ "id": "wdRU3", "fill": "$muted", "content": "STARTED", + "lineHeight": 1.3333333333333333, "fontFamily": "$typography/font-sans", "fontSize": 12, "fontWeight": "normal", @@ -119535,6 +119568,7 @@ "id": "Cq41N", "fill": "$foreground/foreground", "content": "3h ago", + "lineHeight": 1.4285714285714286, "fontFamily": "$typography/font-sans", "fontSize": 14, "fontWeight": "normal" @@ -119544,6 +119578,7 @@ "id": "EWaAd", "fill": "$muted", "content": "2026-07-13T00:12:04Z", + "lineHeight": 1.3333333333333333, "fontFamily": "$typography/font-mono", "fontSize": 12, "fontWeight": "normal" @@ -119564,6 +119599,7 @@ "id": "LB6zU", "fill": "$muted", "content": "COMPLETED", + "lineHeight": 1.3333333333333333, "fontFamily": "$typography/font-sans", "fontSize": 12, "fontWeight": "normal", @@ -119580,6 +119616,7 @@ "id": "r7fAJS", "fill": "$foreground/foreground", "content": "3h ago", + "lineHeight": 1.4285714285714286, "fontFamily": "$typography/font-sans", "fontSize": 14, "fontWeight": "normal" @@ -119589,6 +119626,7 @@ "id": "fmTdG", "fill": "$muted", "content": "2026-07-13T00:14:41Z", + "lineHeight": 1.3333333333333333, "fontFamily": "$typography/font-mono", "fontSize": 12, "fontWeight": "normal" @@ -119611,7 +119649,12 @@ "strokeAlignment": "inner", "strokeLinejoin": "round", "gap": 8, - "padding": 16, + "padding": [ + 17, + 16, + 16, + 16 + ], "justifyContent": "end", "alignItems": "center", "children": [ @@ -119622,7 +119665,21 @@ "name": "Btn Delete", "descendants": { "E4lQce": { - "cornerRadius": "$radius/md" + "cornerRadius": "$radius/md", + "padding": [ + 0, + 12, + 0, + 10 + ], + "gap": 6 + }, + "E4lQce/IUtnC": { + "fontSize": 14, + "lineHeight": 1.4285714285714286, + "fontWeight": "500", + "width": 43, + "textGrowth": "auto" } } }, @@ -119633,14 +119690,24 @@ "name": "Btn Restore", "descendants": { "IVgQ8": { - "cornerRadius": "$radius/md" + "cornerRadius": "$radius/md", + "padding": [ + 0, + 12 + ], + "gap": 8 }, "nWTJb": { "enabled": false, "icon": "rotate-ccw" }, "IVgQ8/U1xvSo": { - "content": "Restore" + "content": "Restore", + "fontSize": 14, + "lineHeight": 1.4285714285714286, + "fontWeight": "500", + "width": 51, + "textGrowth": "auto" } } } @@ -127471,7 +127538,7 @@ "y": 4461, "name": "Gameplane/Backup Volume Coverage — Recorded", "reusable": true, - "width": 396, + "width": 400, "fill": "$surface/surface", "layout": "vertical", "gap": 4, diff --git a/web/src/components/backups/BackupDetailDrawer.tsx b/web/src/components/backups/BackupDetailDrawer.tsx index eff9875e1..37acbe02a 100644 --- a/web/src/components/backups/BackupDetailDrawer.tsx +++ b/web/src/components/backups/BackupDetailDrawer.tsx @@ -74,7 +74,7 @@ export function BackupDetailDrawer({ name, ns, onClose, onRestore, target: expli {intl.formatMessage({ id: "web.components.backups.backup_detail_drawer.restore", defaultMessage: "Restore", description: "Backup details drawer: visible text of the restore button in the drawer header and of the primary restore button in the footer; keep it short" })} - + {error && } {backup && ( <> @@ -131,7 +131,7 @@ export function BackupDetailDrawer({ name, ns, onClose, onRestore, target: expli {remove.error && } - +