)]}'
{
  "commit": "80861fd796e8f32e2866fa3757ff92ee186a9e8f",
  "tree": "3e02b5ce623b8d429f082a0e8f8a06fba546c163",
  "parents": [
    "f758ce419a4a63261e4cacf8b8795a17d024df87"
  ],
  "author": {
    "name": "Serge Bazanski",
    "email": "serge@monogon.tech",
    "time": "Tue Nov 02 22:14:06 2021 +0100"
  },
  "committer": {
    "name": "Sergiusz Bazanski",
    "email": "serge@monogon.tech",
    "time": "Tue Nov 09 16:41:17 2021 +0000"
  },
  "message": "m/n/c/curator: implement Watching NodesInCluster\n\nThis pipes etcd ranged watchers for nodes into a Curator RPC. This is to\nbe used by systems that need to compile information based on all/some\nnodes in the cluster, eg. when building a cluster directory or hosts\nfile with DNS mappings.\n\nThe existence of both NodeInCluster and NodesInCluster could be argued\nas unnecessary, and it might make sense to merge NodeInCluster\nfunctionality into NodesInCluster with a filter-by-node-id field. We\nshould consider doing this once the dust settles.\n\nWe also use this opportunity to write tests for Node{,s}InCluster.\n\nChange-Id: I544657b1bfe266a37230760236510024c6007c24\nReviewed-on: https://review.monogon.dev/c/monogon/+/420\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8eb9a49f5bfdc946c8a32f85310b71d1d6d0acf1",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/curator/BUILD.bazel",
      "new_id": "3d394e45e1601c806e2239cf56457b9bf02fc23f",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/curator/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "30324ca7557a6a4fc376739605c48768c4d715c7",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/curator/impl_leader_curator.go",
      "new_id": "3c2a87cf72db8324f2fffb70758655798635b1c3",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/curator/impl_leader_curator.go"
    },
    {
      "type": "modify",
      "old_id": "0b8789234651f15a7983b8051a081bc66ca11873",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/curator/impl_leader_test.go",
      "new_id": "23d24eddb8732b507c57de1b2712786956a31d48",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/curator/impl_leader_test.go"
    },
    {
      "type": "modify",
      "old_id": "ab78ba64aa80d0e6c25e7d26444624a77527839d",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/curator/proto/api/api.proto",
      "new_id": "8bf35df2eb0fe5942e9f683e837aec1630933ad5",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/curator/proto/api/api.proto"
    },
    {
      "type": "modify",
      "old_id": "d460e4f686fec9ee515ba86f2f9c9ccdf08e023c",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/curator/state.go",
      "new_id": "0db9af558b40f942ec8b4fb5b709e39af6e20565",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/curator/state.go"
    },
    {
      "type": "modify",
      "old_id": "8b8152a4cc66747bdb391d756a697f2ab2227b54",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/curator/state_test.go",
      "new_id": "0bee7e1607853c85449fcdc957cebc2c994f5969",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/curator/state_test.go"
    }
  ]
}
