)]}'
{
  "commit": "080f7ff710e359f2dab0d8ace98f0aa8e443d98d",
  "tree": "f515ece2d0503d897d2c09e18d9fcb5e2f57cee3",
  "parents": [
    "44d6b832490adc28d787f392db1c9e40c9ff3438"
  ],
  "author": {
    "name": "Serge Bazanski",
    "email": "serge@monogon.tech",
    "time": "Thu Sep 09 13:01:00 2021 +0200"
  },
  "committer": {
    "name": "Sergiusz Bazanski",
    "email": "serge@monogon.tech",
    "time": "Tue Sep 21 08:41:43 2021 +0000"
  },
  "message": "m/n/core/curator: add thin etcd storage abstraction\n\nThis implements etcdPrefix, a more formalized way to represent objects\nstored within etcd under some unique ID key.\n\nThis ensures any time objects are retrieved by key they are not\naccidentally traversing /-delimited \u0027path\u0027 elements, and implements the\nmildly complex range start/end computation operation for when all\nobjects from within a prefix must retrieved.\n\nChange-Id: Ib095f466faaf453b5f61a35642df6b0c1076ae05\nReviewed-on: https://review.monogon.dev/c/monogon/+/322\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "25be134da131114f8eab430a5a9051a29687be25",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/curator/BUILD.bazel",
      "new_id": "40f77409e6aa482921d864f678a56ed884dbdb63",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/curator/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "c50cbbdee69be7970648861bf4eb1e9e07814829",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/curator/bootstrap.go",
      "new_id": "98d176a1e7bf9d9aab16351a7f48721ba863857c",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/curator/bootstrap.go"
    },
    {
      "type": "modify",
      "old_id": "34dd62b6d68a40e834708ad027430e1caff5cbb8",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/curator/impl_leader_curator.go",
      "new_id": "8d14582f206b472c0e824a5d0e7b1bf7257a755b",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/curator/impl_leader_curator.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d460e4f686fec9ee515ba86f2f9c9ccdf08e023c",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/curator/state.go"
    },
    {
      "type": "modify",
      "old_id": "6668b197bf47f3f6af72dcece289e8928cd91a1a",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/curator/state_node.go",
      "new_id": "4e2535fe27e80505174cc68967816dc699a7ffb5",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/curator/state_node.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8b8152a4cc66747bdb391d756a697f2ab2227b54",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/curator/state_test.go"
    }
  ]
}
