Skip to content

[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
wants to merge 82 commits into from

Conversation

smklein
Copy link
Collaborator

@smklein smklein commented May 5, 2023

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

smklein added 30 commits April 28, 2023 09:54
…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".
@smklein smklein changed the title DNS services are backed by explicit datasets [nexus][sled-agent] DNS services are backed by explicit datasets May 5, 2023
Base automatically changed from opt-oxide to main May 9, 2023 20:36
@bnaecker
Copy link
Collaborator

bnaecker commented Jun 6, 2023

I'm planning to take this one on starting today. First step is merging in main...will it blend?

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
@smklein
Copy link
Collaborator Author

smklein commented Jul 4, 2023

Merged in #3390

@smklein smklein closed this Jul 4, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

DNS zones should provision storage in a dataset explicitly
2 participants