-
Notifications
You must be signed in to change notification settings - Fork 43
[nexus][sled-agent] DNS services are backed by explicit datasets #3022
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Conversation
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
…zones, zone_name -> zone_type, config -> ledger
## Before this PR Running on rack2 and calling `omicron-package uninstall` would involve a fatal termination of the connection, as it would delete the `cxgbe0/ll` and `cxgbe1/ll` IP addresses necessary for contacting the sled. ## After this PR Those addresses are left alone. This is pretty useful for development, as it allows us to run `uninstall` to cleanly wipe a Gimlet, preparing it for future "clean installs".
I'm planning to take this one on starting today. First step is merging in |
smklein
added a commit
that referenced
this pull request
Jun 29, 2023
…oo (#3390) ## Prelude This combines: - #3022 - #3025 - #3026 Into one PR. Trying to split them out resulted in intermediate states that were not worthwhile debugging - I'd rather invest the energy into fixing this "more-desirable end-state". ## What does this PR do - (Internal and External) DNS services are explicitly backed by datasets, making it possible to "delete and re-initialize" arbitrary zones without data loss. This is necessary for correct behavior in cold boot. - Merges the concept of "datasets" into "services". - Previously, "datasets" were considered services managing data, and "services" were considered services *without datasets* - the two were totally disjoint. This was a bit arbitrary, and made it more complicated to conform sleds during service management. - As one example of an inconsistency, "requesting services" was vectorized ("ask for all services that should be on the sled"), "requesting datasets" was not (it was an ask-for-one-at-a-time API). - Now, "services" are universal, and they may optionally manage datasets. This unifies pathways a bit, and simplifies the API. Fixes #3018 Part of #2978
Merged in #3390 |
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.
This PR ensures that DNS services are explicitly backed by datasets. After this PR, it should be possible
to "delete and re-initialize" arbitrary zones, as long as they are re-initialized with their associated datasets and requested configuration.
NOTE: Within the Sled Agent, "datasets" and "services" are treated differently. Requesting datasets additionally can cause a dataset to be formatted within a zpool, in addition to launching a zone-based service - since the logic here was initially different, the sled agent exposed different endpoints for each case. This PR crosses that line a bit, by converting two entities (InternalDns, ExternalDns) that were initially "services" to become a "datasets". In the future, these concepts should be merged (or at least, the "services managing dataset" should be pulled into the "services" table properly). As this PR crosses that line, it contributes to that "merging" slightly.
Fixes #3018