)]}'
{
  "commit": "fe3d8fd61a81c09a1544d8cf1e13326c179c5972",
  "tree": "d1803d9e307e5aea697c02fcb17e82e2c4fb605d",
  "parents": [
    "90a70a0e1cab83ba1601d355d07f285dff0d4d55"
  ],
  "author": {
    "name": "Serge Bazanski",
    "email": "serge@monogon.tech",
    "time": "Tue May 30 20:50:09 2023 +0200"
  },
  "committer": {
    "name": "Serge Bazanski",
    "email": "serge@monogon.tech",
    "time": "Tue Jun 06 12:11:51 2023 +0000"
  },
  "message": "m/n/core/roleserve: rework cluster membership, reuse control plane connections\n\nThis changes up roleserver internals to simplify the handling of cluster\nmembership state. The end goal is to allow reusing control plane gRPC\nconnections across different components in a node, but the refactor goes\na bit beyond that.\n\nEver since the introduction of the rpc resolver, we have effectively\nsimplifies the control plane startup problem. This is because the\nresolver allows the rest of the system to dynamically switch between\ndifferent gRPC endpoints for the control plane.\n\nWhat this means is that some of the existing complexity in the\nroleserver (which predates the resolver) can be thrown away. Notably, we\nremove the ClusterMembership structure, and replace it with two\nsignificantly simpler structures that represent two separate facts about\nhe local node:\n\n1. localControlPlane carries information about whether this node has a\n   locally running control plane. This is only used by the statuspusher\n   (to report whether the control plane is running) and by the\n   Kubernetes control plane.\n\n2. curatorConnection carries the credentials, resolver and an open gRPC\n   connection to the control plane, and is the only roleserver\n   EventValue now used by the vast majority of the roleserver runnables.\n\nThe resulting code, especially inside the control plane roleserver\nrunnable, is now less complex, at the cost of a bit of an ugly refactor.\n\nChange-Id: Idbe1ff2ac3bfb2d570bed040a2f78ccabb66caba\nReviewed-on: https://review.monogon.dev/c/monogon/+/1749\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2d62ef42c8ee68e7ee817637502422610e00f294",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/roleserve/BUILD.bazel",
      "new_id": "ab843955a421385009cf6e0ac36e3baf56eaca34",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/roleserve/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "3af5319670ad0563f3e797b2b2273a8a83a772bb",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/roleserve/roleserve.go",
      "new_id": "68b9f59171080378e24010554f1d6b257b93a363",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/roleserve/roleserve.go"
    },
    {
      "type": "delete",
      "old_id": "f2ed06485f4830aa65126307dd08d6578a8e676e",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/roleserve/value_bootstrapdata.go",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "7801650759237ef2a1e6f36dce742a254052794f",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/roleserve/value_clustermembership.go",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "68580e7a47ff8e0b3f73ff653bea428d4404cf00",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/roleserve/value_kubernetes.go",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "26050ee1b94da77320545a4f924167d542be5620",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/roleserve/value_node.go",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3b7ff25dadb663951f64c954ecc506133de2b9a4",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/roleserve/values.go"
    },
    {
      "type": "modify",
      "old_id": "7dfeba6b74c02370d9c2f8fbb74bed274044fd58",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/roleserve/worker_clusternet.go",
      "new_id": "2e560986aacdd3c15c015fa61150d3435e979a9b",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/roleserve/worker_clusternet.go"
    },
    {
      "type": "modify",
      "old_id": "eb85f5d02e798fa13ccfa4e92f4af53ba754a88e",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/roleserve/worker_controlplane.go",
      "new_id": "a49343ff0b9d96970f4e5c82bd0647d37780b263",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/roleserve/worker_controlplane.go"
    },
    {
      "type": "modify",
      "old_id": "fdaa9be81ec069671c84fabd26a6d2c1c3e0f8c0",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/roleserve/worker_heartbeat.go",
      "new_id": "f79951c1698c13b85f843d7d667d539a92d17711",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/roleserve/worker_heartbeat.go"
    },
    {
      "type": "modify",
      "old_id": "6cc35cc83859cd8044893823a0806236c71b53dc",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/roleserve/worker_hostsfile.go",
      "new_id": "c454ff216bd0e98ccd6c14f5debb94dc60f8debf",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/roleserve/worker_hostsfile.go"
    },
    {
      "type": "modify",
      "old_id": "d8c1b1f9798cbfc0fd7f68fecd0572bed554aa55",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/roleserve/worker_kubernetes.go",
      "new_id": "14781e38fab1009fcd52a87c4a4b5aa79cedcf25",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/roleserve/worker_kubernetes.go"
    },
    {
      "type": "modify",
      "old_id": "9ffb112f09830f7d4e292b1daee813062ce458e7",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/roleserve/worker_nodemgmt.go",
      "new_id": "7516f2d359030b7f86fab217d51ff675dbfba3e3",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/roleserve/worker_nodemgmt.go"
    },
    {
      "type": "modify",
      "old_id": "5f64676151bbcd500fceed92b73fc354cc2486dc",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/roleserve/worker_rolefetch.go",
      "new_id": "fb1fb335cb27c5a40b20b6dcddc565e67e0adb90",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/roleserve/worker_rolefetch.go"
    },
    {
      "type": "modify",
      "old_id": "4cea7c9876edf462b045675711ac4ab3334cb5ed",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/roleserve/worker_statuspush.go",
      "new_id": "c27605f30b853b60d40fa42d52b3d5d77087fff4",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/roleserve/worker_statuspush.go"
    },
    {
      "type": "modify",
      "old_id": "a285c7789c429473de89143a2741eb4222e19c2a",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/roleserve/worker_statuspush_test.go",
      "new_id": "d8a0a8cc71cb608e254692844e24f5fe99f25f00",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/roleserve/worker_statuspush_test.go"
    }
  ]
}
