)]}'
{
  "log": [
    {
      "commit": "3a3c517696210f23f2c1d74d766ddf5750a3f4b8",
      "tree": "f20c99b0329b5895948e1cef5991dde8e5483a79",
      "parents": [
        "fd6d4ebffd699ed87cd8bb41dd7a74e40cbe519c"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Jun 01 19:54:17 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Jun 06 01:46:23 2023 +0000"
      },
      "message": "m/c/metroctl/test: deflake test\n\nThis test was flaky as the node picked to run takeownership against was\ndependent on map key order. Only the first node runs the relevant\ncontrol plane services, thus if the second node was iterated over first,\nthe test broke. Fix this by using the NodeIDs slice to get deterministic\nordering and always pick the first node.\n\nChange-Id: Id4ac162a8295be4e84ad439ac5b70ff5a968af04\nReviewed-on: https://review.monogon.dev/c/monogon/+/1784\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "e4a4ce1dbbc8abc8a0817f80fcb27437a9e6ca63",
      "tree": "1d2fc878f2e74e1e077dd8848c983c00e6ffcb6d",
      "parents": [
        "5df62bae21bd89f15321a54a33a2ff59f5cbdce8"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Mar 22 18:29:54 2023 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Apr 17 09:14:54 2023 +0000"
      },
      "message": "metropolis: finish implementing TPMMode\n\nThis wraps up the implementation of TPMMode in ClusterConfiguration,\nallowing operators to select whether nodes should or should not use\ntheir TPM, based on local availability.\n\nWe keep the default behaviour to require a TPM, as we\u0027d like to be\nsecure by default.\n\nChange-Id: Ic8ac76d88ecc9de51f58ca99c92daede79d78ad7\nReviewed-on: https://review.monogon.dev/c/monogon/+/1495\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "2cfafc9a4c34152dd93b58aa82df1720fb4dd6d6",
      "tree": "7a944999ab576f4b421651c2c4d513b0b572a1be",
      "parents": [
        "d0be371ea905c3729f98d91d255d775b7c5193d3"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Mar 21 16:42:47 2023 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 13 14:03:02 2023 +0000"
      },
      "message": "metropolis/node/kubernetes: move worker services to KubernetesWorker nodes\n\nThis finalizes the Big Split. After this change, nodes will only run a\nkubelet (and related services) if they have a KubernetesWorker role\nattached.\n\nThe first node in a new cluster now starts out with KubernetesController\nand ConsensusMember. All joined nodes start with no roles attached.\n\nChange-Id: I25a059318450b7d2dd3c19f3653fc15367867693\nReviewed-on: https://review.monogon.dev/c/monogon/+/1380\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "e012b728d98e51e6b5564873f10c06c4f4c81415",
      "tree": "65d21fa881c46451a2c8234ef10cd4283e2f85b5",
      "parents": [
        "cff8eb9db471c6dd85f92e1828ecd268c2737dda"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Mar 29 17:49:04 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Apr 04 16:51:11 2023 +0000"
      },
      "message": "metropolis: implement NodeManagement.Logs\n\nThis takes the implementation from the debug service, dusts it off a\nbit, adds tests and moves eerything to the new node mgmt service.\n\nChange-Id: Id3b70126a2551775d8328c0c4e424ec0e675f40f\nReviewed-on: https://review.monogon.dev/c/monogon/+/1439\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "cfbbbdba0e7fa60c87ea6119697dff4e5e84a6ee",
      "tree": "30432c52dd18343481633e08806ee38305f2e6f1",
      "parents": [
        "504ea31137ab223b11d40469887ba7ab91f999ab"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Mar 22 17:48:08 2023 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Mar 27 17:19:31 2023 +0000"
      },
      "message": "m/cli/metroctl: refactor, use tabular layout\n\nThis lays out the files to make it more obvious what command each file\nimplements, and uses the newly implemented tabular formatting for\nlisting/describing nodes.\n\nChange-Id: I90feeae67de0f78090dd5440cbad4cb9aa6bb6bc\nReviewed-on: https://review.monogon.dev/c/monogon/+/1392\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "15f7f637d6885b471f52fd0aa04d04998366a7f9",
      "tree": "b1884808d565ce0736993939f4f6b482aab0874d",
      "parents": [
        "e00a89da1c62e20c2528dadb0543a4578680b073"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Mar 14 17:17:20 2023 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Mar 14 20:07:36 2023 +0000"
      },
      "message": "metropolis: rename KubernetesWorker to KubernetesController, add no-op KubernetesWorker\n\nThis is in preparation for actually splitting the Kubernetes service\ninto a control plane and data plane / worker. The new Worker service is\na no-op: it can be enabled/disabled, but has no practical effect.\n\nSince we plan on keeping the control plane stuff mostly as is, and add\nsplit worker functionality as a new codebase, it makes sense to rename\nthe existing role to Controller, and createa brand new Worker one (to\nmake future diffs smaller).\n\nChange-Id: I79de3219f3c190d38469a0a8d7371820471c100d\nReviewed-on: https://review.monogon.dev/c/monogon/+/1325\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "e15fee1b7f2258fb677e824ad1e30fdf81279495",
      "tree": "c0b3ee3c658370a6e3922a4532b2fca8240266d5",
      "parents": [
        "b838e05983828a443390479691dba3de086bcb53"
      ],
      "author": {
        "name": "Mateusz Zalega",
        "email": "mateusz@monogon.tech",
        "time": "Fri Aug 12 18:48:40 2022 +0200"
      },
      "committer": {
        "name": "Mateusz Zalega",
        "email": "mateusz@monogon.tech",
        "time": "Thu Aug 25 11:26:58 2022 +0000"
      },
      "message": "m/c/metroctl: implement add, remove role commands\n\nThis adds commands accomodating node role modification.\n\nChange-Id: I3532081fa5e7ce521c3bd90cc4ebf46fec4bf168\nReviewed-on: https://review.monogon.dev/c/monogon/+/851\nReviewed-by: Sergiusz Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "b838e05983828a443390479691dba3de086bcb53",
      "tree": "14eef15338691f9764f3e93452bc27fc0834f29c",
      "parents": [
        "9c315f1116567df934cf7fce5f3f341c70cb9b66"
      ],
      "author": {
        "name": "Mateusz Zalega",
        "email": "mateusz@monogon.tech",
        "time": "Fri Aug 12 18:08:10 2022 +0200"
      },
      "committer": {
        "name": "Mateusz Zalega",
        "email": "mateusz@monogon.tech",
        "time": "Thu Aug 25 11:26:58 2022 +0000"
      },
      "message": "m/c/metroctl: implement the \"describe\" command\n\nThis implements metroctl\u0027s \"describe\".\n\ncmd.TerminateIfFound was adjusted to meet new test needs.\n\nChange-Id: If86f35bc648d99396e7d5be48ab459d6b13334ce\nReviewed-on: https://review.monogon.dev/c/monogon/+/850\nReviewed-by: Sergiusz Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "db75e21d4826eac4e0177995dff64c9ff6a64064",
      "tree": "52199cdff810e06ca271a8d1e6f05a88b343277f",
      "parents": [
        "2f7790dfe7a93f5f048e914d0c1d61af61dbdfba"
      ],
      "author": {
        "name": "Mateusz Zalega",
        "email": "mateusz@monogon.tech",
        "time": "Thu Aug 04 17:31:34 2022 +0200"
      },
      "committer": {
        "name": "Mateusz Zalega",
        "email": "mateusz@monogon.tech",
        "time": "Thu Aug 25 11:26:58 2022 +0000"
      },
      "message": "m/c/metroctl: implement the \"list\" command\n\nlist prints node IDs of existing nodes.\n\nIf no positional arguments are passed, or the only positional argument\nequals \"all\", all existing nodes will be processed.\n\nOtherwise, if any positional arguments are used, the output set will\nbe limited to node IDs matching the positional arguments. Nonexistent\nnodes will not be listed.\n\nThe node set can be further narrowed with an optional CEL node filter\nexpression, set with the new --filter flag.\n\nThe output format can be adjusted using the --format (-f) flag.\nCurrently, only plaintext output is available.\n\nThe output will be saved to a file, if a path is specified with the\n--output (-o) flag.\n\nChange-Id: I44d57ad52805924673354c70e54cd299a88ad75f\nReviewed-on: https://review.monogon.dev/c/monogon/+/848\nTested-by: Jenkins CI\nReviewed-by: Sergiusz Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "6cdc976f681edc51f68454a76e7d7af64417ca7e",
      "tree": "dfcfa01566c2c82f41616cdc654937a3fbee0e31",
      "parents": [
        "18a67b033fd8ccd5dacb7c7e1f0c1a9c21eb0a6b"
      ],
      "author": {
        "name": "Mateusz Zalega",
        "email": "mateusz@monogon.tech",
        "time": "Wed Aug 03 17:15:01 2022 +0200"
      },
      "committer": {
        "name": "Mateusz Zalega",
        "email": "mateusz@monogon.tech",
        "time": "Thu Aug 25 11:26:58 2022 +0000"
      },
      "message": "m/p/cmd: use predicates in RunCommand\n\nThis generalizes RunCommand by making it accept any completion\npredicate function.\n\nChange-Id: Ic6b911244aaecd16c01000050fca618a8c8e09d7\nReviewed-on: https://review.monogon.dev/c/monogon/+/846\nReviewed-by: Sergiusz Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "fed8fe5222c929b9ac5d5ccc0c0b95a8532cf892",
      "tree": "fdff787672761a817889b204ca6686565e65484a",
      "parents": [
        "1846450067dc73e906f77a41e7e8f23095dc45e7"
      ],
      "author": {
        "name": "Mateusz Zalega",
        "email": "mateusz@monogon.tech",
        "time": "Thu Jul 14 16:19:35 2022 +0200"
      },
      "committer": {
        "name": "Mateusz Zalega",
        "email": "mateusz@monogon.tech",
        "time": "Thu Aug 25 11:26:58 2022 +0000"
      },
      "message": "m/c/metroctl: exercise the takeownership command\n\nThis introduces a new test harness together with a test exercising\ntakeownership.\n\nChange-Id: I998506093c25e489d8cb2810e90b4c94530bf4a6\nReviewed-on: https://review.monogon.dev/c/monogon/+/839\nTested-by: Jenkins CI\nReviewed-by: Sergiusz Bazanski \u003cserge@monogon.tech\u003e\n"
    }
  ]
}
