)]}'
{
  "commit": "c75c9d4f30174c089cce47c608683bf09396fa30",
  "tree": "a3d34c7ac52f16650de55ba28d3621add81e5f99",
  "parents": [
    "886d2892d1717bc130cfa008742c06c29f7ff186"
  ],
  "author": {
    "name": "Serge Bazanski",
    "email": "serge@nexantic.com",
    "time": "Tue Apr 13 16:40:14 2021 +0200"
  },
  "committer": {
    "name": "Leopold Schabel",
    "email": "leo@nexantic.com",
    "time": "Tue Apr 13 19:51:11 2021 +0200"
  },
  "message": "m/n/c/consensus: add client\n\nThis implementes a thin wrapper around etcd\u0027s clientv3.Client, with the\nfollowing advantages:\n\n - Only implements KV, Watcher and Lease interfaces, ie. unprivileged\n   namespaceable interfaces - not cluster management interfaces. These\n   will be available to both remote and local etcd connections.\n - Adds recursive namespacing functionality, which permits different\n   parts of the subsystem to receive their own somewhat-sandboxed etcd\n   subtree. This not only makes the etcd keyspace layout more strict,\n   but also simplifies passing around etcd clients, as major components\n   (like the kubernetes subsystem) can hand out its own sub-clients,\n   instead of them having to be globally declared ahead of time.\n\nTest Plan: Exercised by tests.\n\nX-Origin-Diff: phab/D756\nGitOrigin-RevId: 03fead9a89c301a2e70df8a007b7ecb60b2364c7\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "35dd097fe839d31156ecd010153279033c9e58d6",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/consensus/client/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "168f4459e3286c50d31402f2c48753471830bcf8",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/consensus/client/client.go"
    }
  ]
}
