oxidecomputer / oxidecomputer/maghemite

test for ddm compatibility with the most recent release

Open
#275 0 comments 0 reactions 0 assignees View on GitHub

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 ddmadm from a previous release

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.