oxidecomputer / oxidecomputer/maghemite
test for ddm compatibility with the most recent release
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 94
- Forks
- 6
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 12
Description
In January we hit a snag during dogfood update due to a change in the ddm protocol. Both switch zones are up during upgrade which means that mid-upgrade we have both new and old code running simultaneously (this will be generally true as the upgrade feature progresses, but is specifically true for the switch zones today). To address this, we made v2 of the ddm protocol compatible with v1:
- #156
This PR also introduced a test to validate compatibility between v1 and v2. Since we've shipped v2 and upgraded customers to v2, the validation of compatibility between v1 and v2 is no longer relevant. Instead, we need a mechanism to validate the current code in development against the releases from which upgrade is supported (Note: to this point we have only supported incremental upgrade from N to N+1; we have not supported skipping a release e.g. N to N+2). This kind of validation from release to release is going to be generally relevant (i.e. for omicron) as our upgrade process evolves to have both new and old code running side-by-side for other services.
This testing is going to be particularly helpful for validating our solution to
- #157
Here are some discrete steps we can take:
- Remove or disable the current v1 -> v2 tests as the validation they perform is no longer relevant (#276)
- Determine a mechanism for tagging and discovering previous version(s). Currently we've hard-coded a particular hash to retrieve buildomat artifacts from a known-valid v1 build. This was appropriately expedient, but a more general approach may be warranted such as doing discovery from a list of tagged, TUF repos, tagging this and other repos at the time of a new software release, etc.
- Figure out how we want to support an old client version so that new code can communicate with a
ddmadmfrom a previous release
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the existing v1-to-v2 compatibility tests and the hard-coded hash used to retrieve buildomat artifacts. Compare the proposed tagged TUF repository discovery with the current upgrade assumptions, then define completion as validating development code against each supported previous release and communicating with an older ddmadm client.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- networking, release, testing-qa
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100