oxidecomputer / oxidecomputer/omicron

Blueprints should store the reasons zone dispositions were changed

Open
#5,586 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
572
Forks
97
Avg merge
2d 12h
Merged PRs (30d)
96

Description

In #5493, we realized that blueprint diffs weren't quite clear about why a disposition was changed. That's because blueprints themselves don't have any persistent information about this.

To address this, we should consider storing a zone log (append-only?) next to each zone which indicates the particular blueprint an action was taken in, and why that was done.

For diffs it may be a bit confusing to see the zone log if the "before" blueprint isn't an ancestor of the "after" blueprint. We'll have to see how it looks, but may need to make blueprint diffs aware of the ancestor relationship, and enhance their output accordingly. Ancestor and cousin blueprint diffs definitely feel different to me in ways that implementing this will hopefully elaborate.

(We're reinventing bits of a source control system. :) )

Contributor guide

Open the contributing guide

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 blueprint diff behavior and how zones and dispositions are represented. Define what persistent zone logs should record, then validate how ancestor and cousin blueprint diffs should present that history; done means the reason and blueprint for each disposition change are retained and reflected clearly in diffs.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
backend-api-design
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.