-
Notifications
You must be signed in to change notification settings - Fork 58
[sled-agent] Don't bounce zones if their config changes only by an identical image_source
#8514
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
[sled-agent] Don't bounce zones if their config changes only by an identical image_source
#8514
Conversation
Testing this on berlin looks good. Setup:
I derived a blueprint and changed the image source for every zone on one sled:
All the zones except Making this new blueprint the target, sled-agent logs show the expected behavior; most zones had their configs updated in place, and the pantry zone was shut down and restarted:
Confirmed by checking zone uptimes; the pantry zone had just restarted, and all other zones had uptimes back to when they originally started. A final confirmation: inventory shows that all the zones (even the non-bounced ones) are running from the requested artifacts:
|
…file name (#33) In oxidecomputer/omicron#8514 we found that the artifact and file names don't actually match all the time. With this change, both the artifact and the file name will have to be specified. oxidecomputer/omicron#8510 is the issue that tracks cleaning this up.
Prior to this PR, any change to the
OmicronZoneConfig
of an already-running zone resulted in that zone being shut down and restarted. With this PR, we allow a single kind of change that does not restart the zone. If theimage_source
swaps fromInstallDataset
toArtifact { hash }
(or vice versa) and the hash of this zone in the install dataset exactly matches theArtifact { hash }
, we don't need to do anything: we're already running the exact zone as desired, just started from a different place.Fixes #8463.
Makes #8510 slightly worse; yet another
ZoneKind::make_a_string()
method. (This one is at least guaranteed-by-test to be an extension of an existing one. I don't feel a lot better about that though.)I'll test this on a racklette before merging; will put notes below once I do. But I think this is contained enough that it can be reviewed before that's done.