oxidecomputer / crucible

A storage service.
Mozilla Public License 2.0
175 stars 18 forks source link

More crutest and dsc updates to support Volume layer activities. #1472

Closed leftwo closed 1 month ago

leftwo commented 1 month ago

This adds support for crutest to use a provided dsc endpoint to construct a Volume object.

These changes should be a fix for both issues: https://github.com/oxidecomputer/crucible/issues/1451 and https://github.com/oxidecomputer/crucible/issues/1457

Moved the existing volume creation steps to a new function, and added another option on how we can create a Volume. The two previous ways of creating a volume are not changed (though I changed a log message and added some warnings). The new code is in taking the dsc provided endpoint and using that to construct a volume.

Additional dsc changes were made to help provide Volume info. Renamed things in dsc to better reflect what information they hold. Specifically, update a bunch of region set comments, as dsc just controls crucible-downstairs processes, and does not know which ones are part of what region set.

New dsc commands

New dsc behavior

Other changes tools/test_replay.sh transitioned to using the new --dsc option, as that test already required a dsc endpoint and was using a hard coded default value for it.

tools/test_restart_repair.sh was updated to wait for dsc to report that all downstairs are online after a restart. This avoids a race where we told dsc to start, and then start crutest, but the downstairs are not yet online.

All the tests that use dsc will eventually transition to using it to construct a Volume, but I'm pushing that work to another PR.

There are more changes coming, specifically

Other work this enables

leftwo commented 1 month ago

If anyone else want's to comment (or has comments in progress) let me know, otherwise I'll merge this when the CI tests pass.