fix(plugin): migrate legacy resource storage - #209
Merged
Conversation
Preserve persisted Plugin Resources when upgrading to the versioned Resource envelope. Carry status, generation, resourceVersion, and the reconcile schedule into the new path, then archive the legacy file. Add regression coverage for migration and conflict-safe persistence.
Introduce a ResourceSource contract that lets plugins discover and continuously contribute resources through a Baton-owned lifecycle context. Wait for initial source synchronization before reconciliation, materialize resources idempotently, and cancel live subscriptions with controller registration. Keep CronSource focused on scheduling existing resources and remove the old discovery compatibility path. Update the public plugin package, documentation, and tests for the ideal 0-to-1 API.
Move the public Source contract and Baton-owned Source lifecycle into dedicated modules. Rename ResourceSource to the implementable Source interface while keeping CronSource as the host-owned fixed resync configuration. Keep Resource as the data boundary, Source as discovery and wake input, Controller as convergence, and Manager as lifecycle orchestration. Document the model and pin class-based Source implementations with a contract test.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Preserve persisted Plugin Resources when upgrading to the versioned
Resource envelope. Carry status, generation, resourceVersion, and the
reconcile schedule into the new path, then archive the legacy file.
Add regression coverage for migration and conflict-safe persistence.
Introduce a ResourceSource contract that lets plugins discover and continuously
contribute resources through a Baton-owned lifecycle context. Wait for initial
source synchronization before reconciliation, materialize resources
idempotently, and cancel live subscriptions with controller registration.
Keep CronSource focused on scheduling existing resources and remove the old
discovery compatibility path. Update the public plugin package, documentation,
and tests for the ideal 0-to-1 API.
Move the public Source contract and Baton-owned Source lifecycle into dedicated
modules. Rename ResourceSource to the implementable Source interface while
keeping CronSource as the host-owned fixed resync configuration.
Keep Resource as the data boundary, Source as discovery and wake input,
Controller as convergence, and Manager as lifecycle orchestration. Document
the model and pin class-based Source implementations with a contract test.