)]}'
{
  "commit": "d20ddccddf601c2a34cc5238bd82b6a4a1744502",
  "tree": "52eeeb7917b79220ad0f0cb34447525f7c21341b",
  "parents": [
    "8bc82868fd289220078ff317235db084349d9f70"
  ],
  "author": {
    "name": "Jan Schär",
    "email": "jan@monogon.tech",
    "time": "Wed May 08 14:18:29 2024 +0200"
  },
  "committer": {
    "name": "Jan Schär",
    "email": "jan@monogon.tech",
    "time": "Tue May 14 12:11:45 2024 +0000"
  },
  "message": "m/n/k/reconciler: implement leader election\n\nBefore this change, the reconciler runs on all Kubernetes controllers. \nWhen we are in a rolling upgrade of the cluster where a reconciled \nobject changes, this will cause the old and new versions of the \nreconciler to fight each other, constantly updating the object back and \nforth.\n\nNow, the reconciler is elected among nodes of the latest release. The \nstatus of the reconciliation is communicated to all Kubernetes \ncontrollers through a new key-value in etcd.\n\nAdditionally, compatibility constraints can be expressed by changing the \nconstants minReconcilerRelease and minApiserverRelease, allowing \nreconciliation to happen in a controlled way that ensures compatibility \neven during rolling upgrades.\n\nChange-Id: Iaf7c27702bd9809a13d47bcf041b71438353bef2\nReviewed-on: https://review.monogon.dev/c/monogon/+/3062\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8690540bd00b6c0b5150299a9273b702f08a7be0",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/curator/impl_follower.go",
      "new_id": "5963737902df2866075c8fe518590a24b99e621c",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/curator/impl_follower.go"
    },
    {
      "type": "modify",
      "old_id": "6bfe82d867c803b6628f778f8c25c6b821e589c1",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/curator/impl_leader_cluster_networking.go",
      "new_id": "52d8c12049e23286278bea9754a37ebea07d9b02",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/curator/impl_leader_cluster_networking.go"
    },
    {
      "type": "modify",
      "old_id": "98334107f2dc7f992811d763db9725dd7a6c8256",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/curator/impl_leader_curator.go",
      "new_id": "259677bbbdda771b7a23dde7d50f4701dcca762a",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/curator/impl_leader_curator.go"
    },
    {
      "type": "modify",
      "old_id": "2fe5e6cbb2f40ccffe31e271803274b1942b8518",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/curator/impl_leader_management.go",
      "new_id": "ff18f7289e4fae63d7d395dcca3e0b6b43fabe6f",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/curator/impl_leader_management.go"
    },
    {
      "type": "modify",
      "old_id": "0b3941020ecf444b65e3f973cb11241f17c48440",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/curator/impl_leader_test.go",
      "new_id": "29f1f58d4da0fe44b2171b6e7193645137183034",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/curator/impl_leader_test.go"
    },
    {
      "type": "modify",
      "old_id": "a731e065cb8c34c0482f0920abe0c04c6d2f2e53",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/curator/proto/private/BUILD.bazel",
      "new_id": "035f00780282afc9b8d1cd5a61b7fbb5194d3932",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/curator/proto/private/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "d279a28ee84e77727d985b3ffdbdb93276a3870c",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/curator/proto/private/storage.proto",
      "new_id": "23b60ac86b66fd1adbe4219b2614fd4b045256c0",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/curator/proto/private/storage.proto"
    },
    {
      "type": "modify",
      "old_id": "bd11f6a13a8aaad5c4e68abb9bd84b1df850769a",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/curator/state_node.go",
      "new_id": "0c2f53ba1806108fb41145cbfb57b80c67f8b8a0",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/curator/state_node.go"
    },
    {
      "type": "modify",
      "old_id": "e8c96c69b722c852a14fff6e21309339aab7801a",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/roleserve/worker_kubernetes.go",
      "new_id": "c3fcfb318430d3486b88f891656bbc4aad7b03c3",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/roleserve/worker_kubernetes.go"
    },
    {
      "type": "modify",
      "old_id": "d775c5058fcd2f2b20a870819117082416b8df09",
      "old_mode": 33188,
      "old_path": "metropolis/node/kubernetes/BUILD.bazel",
      "new_id": "854f6c3a296b7d0d2354a0be078c716d938a2ba7",
      "new_mode": 33188,
      "new_path": "metropolis/node/kubernetes/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "306c2737b9d63df6fe9a2a24f668bffe5878404b",
      "old_mode": 33188,
      "old_path": "metropolis/node/kubernetes/reconciler/BUILD.bazel",
      "new_id": "caa239aabadfb067c175f28781441de00afb6997",
      "new_mode": 33188,
      "new_path": "metropolis/node/kubernetes/reconciler/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "2d2bfdaca3df3e60329daa677cb13715c61e2ee0",
      "old_mode": 33188,
      "old_path": "metropolis/node/kubernetes/reconciler/reconciler.go",
      "new_id": "4ea2d84f9810d0e174e15cd4d5c6c98602952fc9",
      "new_mode": 33188,
      "new_path": "metropolis/node/kubernetes/reconciler/reconciler.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f3ad06b91fa28998e1486848313a9f4efbbe721e",
      "new_mode": 33188,
      "new_path": "metropolis/node/kubernetes/reconciler/reconciler_status.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bd627a284e62486a6034b3eb8402c900e33f8437",
      "new_mode": 33188,
      "new_path": "metropolis/node/kubernetes/reconciler/reconciler_status_test.go"
    },
    {
      "type": "modify",
      "old_id": "c1cec27590f9d595cf5654f1ee0a208fc878296c",
      "old_mode": 33188,
      "old_path": "metropolis/node/kubernetes/service_controller.go",
      "new_id": "6b4360b2eb71c3e739be941b29b58266a049cffc",
      "new_mode": 33188,
      "new_path": "metropolis/node/kubernetes/service_controller.go"
    },
    {
      "type": "modify",
      "old_id": "b4955284f9b000c2d7da5fc8267cb0991793b1dd",
      "old_mode": 33188,
      "old_path": "version/version.go",
      "new_id": "668e0fa61dd8523c62d581f45555ec405d69f55e",
      "new_mode": 33188,
      "new_path": "version/version.go"
    }
  ]
}
