)]}'
{
  "log": [
    {
      "commit": "9a627617dbcfdd5d998a68bfd8d38597c694af0a",
      "tree": "c0ae1abfed99611bb0f633e63bac05dca47dd8a9",
      "parents": [
        "26c1817e12e9c55f7ab12b7741b16508a004e079"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Apr 24 17:40:18 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Apr 25 09:45:20 2023 +0000"
      },
      "message": "cloud/lib/component: fix gRPC client cert verification\n\nChange-Id: I5eda3e9e898c25a804ed8570150b6b05777b41e2\nReviewed-on: https://review.monogon.dev/c/monogon/+/1596\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "26c1817e12e9c55f7ab12b7741b16508a004e079",
      "tree": "f07ee5eb0ce7aaa3050590ffbc95be9a02b723a4",
      "parents": [
        "9fbe838dd02f301106d7cfcbbfd2a8ef9e458775"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Apr 24 17:40:48 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Apr 25 09:45:15 2023 +0000"
      },
      "message": "cloud/lib/component: make component devcerts client/server\n\nChange-Id: Ib2329e7788440222e1e5362e0f821ec431479025\nReviewed-on: https://review.monogon.dev/c/monogon/+/1597\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "9fbe838dd02f301106d7cfcbbfd2a8ef9e458775",
      "tree": "7ba195f5e57d342d54503569da5c08161f37db30",
      "parents": [
        "913a03a9eb220adfba3a9dd73bce1fba7ba5aeb1"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 24 19:05:10 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 24 19:32:34 2023 +0000"
      },
      "message": "c/b/server/api: fix typo\n\nChange-Id: I2fe54243b900d929c9b88159250d020a79088b08\nReviewed-on: https://review.monogon.dev/c/monogon/+/1603\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "913a03a9eb220adfba3a9dd73bce1fba7ba5aeb1",
      "tree": "0fbe31e31c68dff595121473f8e30c2d508c2ddb",
      "parents": [
        "cd7343ed524944d16a46edbccfaf47a113394f5f"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 24 15:57:02 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 24 19:16:26 2023 +0000"
      },
      "message": "c/s/e/manager: add sleep after reboot\n\nThis is required as Equinix doesn\u0027t reboot the machines synchronously\nduring the API call.\n\nChange-Id: Ie01b7ed5c57868e1c60a33af934a50e7338ce3ac\nReviewed-on: https://review.monogon.dev/c/monogon/+/1595\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "cd7343ed524944d16a46edbccfaf47a113394f5f",
      "tree": "42400aac5bd5c4b64a4f6065a7b7e722652ad261",
      "parents": [
        "cdb325ee1cd0b3f3e6db46d8d933d0ab519a5d14"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Apr 24 17:44:17 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Apr 24 17:17:55 2023 +0000"
      },
      "message": "c/bmaas/bmsrv: use clicontext\n\nChange-Id: Idb5e43ef38e1ae294409cf1c99d88426623f824e\nReviewed-on: https://review.monogon.dev/c/monogon/+/1598\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "cdb325ee1cd0b3f3e6db46d8d933d0ab519a5d14",
      "tree": "2eb92316a7168f5854a85d73e7c1c2faae47c475",
      "parents": [
        "00343808fb93a070f99c259e4ad9b7294e22e767"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Apr 19 15:36:38 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Apr 24 09:00:34 2023 +0000"
      },
      "message": "cloud/bmaas: add extra provider tags\n\nChange-Id: I403451f452a7c94a7661e49df06f4046f9f91422\nReviewed-on: https://review.monogon.dev/c/monogon/+/1577\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "00343808fb93a070f99c259e4ad9b7294e22e767",
      "tree": "8bbf40ac7ef5b2a580ae84e613fc5e2e0df26782",
      "parents": [
        "333cb8bd69852ebb2010fc821e525345f0e6a8a9"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Apr 20 17:04:32 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Fri Apr 21 10:21:02 2023 +0000"
      },
      "message": "c/agent: add timeout to Heartbeat RPCs\n\ngRPC recommends adding a deadline or timeout to all RPCs, let\u0027s also do\nthat here to avoid a single RPC from taking too long and causing the\nagent to be restarted because it missed a heartbeat.\n\nChange-Id: I99b413ce09fbfba93f1fc49fc5ca2da440f0d30e\nReviewed-on: https://review.monogon.dev/c/monogon/+/1590\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "333cb8bd69852ebb2010fc821e525345f0e6a8a9",
      "tree": "e558dea1d60afb41a0694ffd0bcd5db5134e4c6c",
      "parents": [
        "76e39d81415a51926e784d441760773574ecbdb9"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Apr 20 23:10:39 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Fri Apr 21 10:21:02 2023 +0000"
      },
      "message": "t/linux: patch out static virtual interfaces\n\nA few virtual drivers (bonding, dummy) predate netlink (~2003), which\nmeans that the kernel had no way to dynamically create network\ninterfaces.\nThe solution was kernel module paramter which statically precreated a\nlist of these virtual interfaces. The number was generally set to 1 by\ndefault, meaning that loading the module creates one of its interface.\n\nFor compatibility with legacy userspaces this is still kept around. We\ncould set the parameters to zero, but doing that everywhere is a pain.\nThis just patches the default values to zero.\n\nChange-Id: I605781b80fb8b20a7724e7fdfa5a4f75ca25eea1\nReviewed-on: https://review.monogon.dev/c/monogon/+/1589\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "76e39d81415a51926e784d441760773574ecbdb9",
      "tree": "f826797d76881dfdc21dbca5ea8ddd673ac3d5ff",
      "parents": [
        "f984e1eaea94cfdbd6bc23ab438f02028800fb9c"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Apr 20 22:55:15 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Fri Apr 21 10:21:02 2023 +0000"
      },
      "message": "m/n/c/network: fix add/modify condition\n\nThe unset value for Index is 0, not -1. This caused new links to\nincorrectly use the LinkModify path.\n\nChange-Id: I92f3fcaa8e4df9097251e3e27bd69c75a2ad878b\nReviewed-on: https://review.monogon.dev/c/monogon/+/1588\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "f984e1eaea94cfdbd6bc23ab438f02028800fb9c",
      "tree": "dc627288a4205590e3f441e9b0a4199f1d480834",
      "parents": [
        "213d90c4f27478bcdac4a9429422cf496f989431"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Apr 19 23:12:38 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 20 11:47:57 2023 +0000"
      },
      "message": "c/b/b/webug: add tag count table\n\nChange-Id: I9662f00629335a656c401f66c798575f7db57842\nReviewed-on: https://review.monogon.dev/c/monogon/+/1583\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "213d90c4f27478bcdac4a9429422cf496f989431",
      "tree": "dc98a19b90b1dbe36c6fd09aa241ccbb8c407f3f",
      "parents": [
        "4969fd72246bf4d50436a22acbb1bdcdaa72a0e9"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Apr 19 17:42:06 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 20 08:47:22 2023 +0000"
      },
      "message": "third_party: update sqlc and pganalyze\n\nChange-Id: I82e0d2dfe507c834f64b5cd9a64c5e0071c07620\nReviewed-on: https://review.monogon.dev/c/monogon/+/1575\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "4969fd72246bf4d50436a22acbb1bdcdaa72a0e9",
      "tree": "5373a7a45fe6920443aa3639ce72aaa5c34c8ec2",
      "parents": [
        "1cd2696d61071b072a24dbe127d9d95874377d66"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Apr 19 17:43:12 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 20 08:47:22 2023 +0000"
      },
      "message": "cloud/shepherd/equinix/wrapngo: allow specifying options when getting device\n\nChange-Id: Ib1f4a88d1a45d9c0da1c56bd8ee21bf18302d9f8\nReviewed-on: https://review.monogon.dev/c/monogon/+/1576\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "1cd2696d61071b072a24dbe127d9d95874377d66",
      "tree": "fd9103766990c64daecec87fc9625bc267ba1cc5",
      "parents": [
        "3ea40da4d6642593f7535dc71084b3367c6eb35e"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Apr 19 16:10:17 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Apr 19 18:24:40 2023 +0000"
      },
      "message": "c/agent: include EFI support in hardware report\n\nAdds firmware EFI support status to the hardware report.\nIt is represented as an enum which is populated based on two different\ndata sources. The ENABLED state is set if Linux has EFI runtime\nservices available. The SUPPORTED/UNSUPPORTED states depend on the\nSMBIOS tables provided by the firmware\nand are used if EFI runtime services are not available.\nIf neither are available, UNKNOWN is used.\n\nChange-Id: I7642ccda14d5494294a7463755de18e73a8a9c53\nReviewed-on: https://review.monogon.dev/c/monogon/+/1571\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "3ea40da4d6642593f7535dc71084b3367c6eb35e",
      "tree": "93e73362243369578733bd3755a8d059dadd7ae3",
      "parents": [
        "20312b40ed4644c64581b4cc8d93a0fc0035fc71"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Apr 19 14:32:37 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Apr 19 15:42:44 2023 +0000"
      },
      "message": "cloud/bmaas: test and document upgrades across migrations\n\nChange-Id: I1c405b0f2ecc10331b79d02deb8a63f3b148f502\nReviewed-on: https://review.monogon.dev/c/monogon/+/1566\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "20312b40ed4644c64581b4cc8d93a0fc0035fc71",
      "tree": "5b812982e0b5bfd7ef0c10659393d37ad0062d62",
      "parents": [
        "ff619354a126df5acffd78ee2f072a17d074e7ab"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Apr 19 13:49:47 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Apr 19 15:42:44 2023 +0000"
      },
      "message": "cloud/bmaas: implement exponential backoffs\n\nThis lets work fail with a proper exponential backoff. This is important\nnot just to not hammer external systems, but also to not end up with\nexteremely long and verbose historical logs for repeatedly failing\nprocesses.\n\nTo implement these, we have to slightly alter our model: instead of\nalways persisting backoffs for a given machine, we only persist them as\nlong as the last work for a given process has failed, deleting pertinent\nbackoffs (if any) on success. Then, the existence of a backoff item is\nused to calculate the value of the next backoff.\n\nThe change also introduces and explicit period, in seconds, to the\nbackoff item. It is currently implemented as a nullable field, but a\nfuture migration/update might make them non-nullable (and delete any\nstraggling backoffs that still don\u0027t have the period set).\n\nChange-Id: I958fcd957dae1156349224f07fb8d4836955d375\nReviewed-on: https://review.monogon.dev/c/monogon/+/1565\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "ff619354a126df5acffd78ee2f072a17d074e7ab",
      "tree": "a873c1feea47b816132f762178b8fb53e040955c",
      "parents": [
        "28fcddc459d020bebf32d1385e2c89fb86e42085"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Apr 19 15:46:08 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Apr 19 14:17:10 2023 +0000"
      },
      "message": "c/s/e/manager: add RID and hostname to log message\n\nChange-Id: I80f885461641b206e7a49165bade157599b405d9\nReviewed-on: https://review.monogon.dev/c/monogon/+/1570\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "28fcddc459d020bebf32d1385e2c89fb86e42085",
      "tree": "c8339f063a6b3c12dd64973698e4b49694635ee1",
      "parents": [
        "ae00468363b0006ecf1ae90ed3833bbe54820df5"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Apr 19 15:34:25 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Apr 19 14:12:57 2023 +0000"
      },
      "message": "c/s/e/manager: add UseProjectKeys flag\n\nWhen ProjectSSHKeys is set inside a DeviceCreateRequest, only the given SSH keys are added. For debug purposes it is useful to leave it empty and fall back to the default behaviour of equinix which adds all keys that are defined inside the project\n\nChange-Id: I5f4a0d4b3bdc4b183653afd715b4104af2c2a701\nReviewed-on: https://review.monogon.dev/c/monogon/+/1569\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "ae00468363b0006ecf1ae90ed3833bbe54820df5",
      "tree": "3dff4cdf264bed17e66f7aed2c8085b67738104d",
      "parents": [
        "86a714d6e81bb524dc59fda7baa63b45e7180489"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Apr 18 13:28:48 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Apr 19 13:55:01 2023 +0000"
      },
      "message": "cloud/shepherd/equinix: implement recoverer\n\nThis implements basic recovery functionality for \u0027stuck\u0027 agents. The\nshepherd will notice machines with a agent that either never sent a\nheartbeat, or stopped sending heartbeats, and will remove their agent\nstarted tags and reboot the machine. Then, the main agent start logic\nshould kick in again.\n\nMore complex recovery flows can be implemented later, this will do for\nnow.\n\nChange-Id: I2c1b0d0465e4e302cdecce950a041581c2dc8548\nReviewed-on: https://review.monogon.dev/c/monogon/+/1560\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "86a714d6e81bb524dc59fda7baa63b45e7180489",
      "tree": "1d1cadea7a23d82d40144e3d9988d31fbe26270f",
      "parents": [
        "42f13465aa2a2b57c2971d20219f15aeb2a21f3e"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Apr 17 15:54:21 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Apr 19 13:55:01 2023 +0000"
      },
      "message": "cloud/shepherd/equinix: split out control loop logic\n\nThis is in preparation for implementing the recoverer/rebooter inside\nthe shepherd.\n\nIn the future this will likely be split away from from the shepherd and\nend up as a generic bmdb library. But let\u0027s first wait for concrete\nusages outside of the shepherd component.\n\nChange-Id: I69b9a2e913dcefa2c6558e271b6853285c6120b3\nReviewed-on: https://review.monogon.dev/c/monogon/+/1559\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "42f13465aa2a2b57c2971d20219f15aeb2a21f3e",
      "tree": "39a77fc69f1ee325edad029bf15eb4277b1f30be",
      "parents": [
        "0d58cb9592852ddb9cc767a33958c65b5eab8deb"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Apr 19 15:00:06 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Apr 19 13:42:17 2023 +0000"
      },
      "message": "cloud/bmaas/server: do not start BMDB session per RPC\n\nFixes https://github.com/monogon-dev/monogon/issues/198\n\nChange-Id: Ia99b9a47bfc9ae6de0b9e12e13add891dea289a5\nReviewed-on: https://review.monogon.dev/c/monogon/+/1567\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "0d58cb9592852ddb9cc767a33958c65b5eab8deb",
      "tree": "dffec8a2fc8278408f3d22e35588b3ce024044cf",
      "parents": [
        "d1b174725e1fd9c40201bbd6047f6bc0755c8e34"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Apr 17 18:38:56 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Apr 18 16:13:46 2023 +0000"
      },
      "message": "c/shepherd/equinix/wrapngo: isolate live API tests\n\nSo far all wrapngo tests were fired directly against a live Equinix\nendpoint, and the entire test harness was skipped if such an endpoint\nwas not configured/available.\n\nThis consolidates all of the live tests into a single test with\nsub-tests, and only that test is skipped if endpoint data is not\nprovided.\n\nThis will in turn allow us to have some unit/regression tests for\nwrapngo that do not need to contact the live Equinix API.\n\nChange-Id: I2590a41b935b5d5417520d7510025f6289cece63\nReviewed-on: https://review.monogon.dev/c/monogon/+/1557\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "d1b174725e1fd9c40201bbd6047f6bc0755c8e34",
      "tree": "ea8bc7eddf418d30ed27e7b1847d0152b70abbb3",
      "parents": [
        "ea94663006eb84ab97d2097e989d5169c75deb2a"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Apr 18 03:49:12 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Apr 18 14:21:21 2023 +0000"
      },
      "message": "c/s/e/wrapngo: workaround for unstable pagination\n\nThe packngo API doesnt have a stable pagination. This leads to duplicate entries and invalid lists. To increase the chance of having a correct response, we sort the list by hostname and pray to the RNG gods\n\nChange-Id: Ie31b823eac8a3fef260ea56861894976b3354d71\nReviewed-on: https://review.monogon.dev/c/monogon/+/1555\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "ea94663006eb84ab97d2097e989d5169c75deb2a",
      "tree": "e51c56de04ff5aaf04ec77c2d09b10543f58206c",
      "parents": [
        "b44a5076cec5a8863ae9ff26fd641d6b62911aac"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Apr 18 03:46:58 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Apr 18 14:21:21 2023 +0000"
      },
      "message": "c/s/e/manager: print hardware reservation stats\n\nThis also removes a lookup to check if the machine is managed by the shepherd. We can skip that since already know that the hardware reservation has a device attached.\n\nChange-Id: Ic732a8152316cf5ba83e980451fd2a4b0f778d99\nReviewed-on: https://review.monogon.dev/c/monogon/+/1554\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "b44a5076cec5a8863ae9ff26fd641d6b62911aac",
      "tree": "97a2bde34377aa03feb368567ab851c19bda4ac3",
      "parents": [
        "ae7e3ed68433bc63fa038b8aa6499dff7ee12378"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Apr 18 13:14:33 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Apr 18 12:04:59 2023 +0000"
      },
      "message": "c/agent: do not stop retrying heartbeats\n\nThere is nothing better to do other than infinitely retrying.\n\nChange-Id: Ifda7e8d95120801f95f6fcf71124597cff086625\nReviewed-on: https://review.monogon.dev/c/monogon/+/1558\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "ae7e3ed68433bc63fa038b8aa6499dff7ee12378",
      "tree": "78277ced320474a4b0ca06f62cf9cd034b41750e",
      "parents": [
        "51350b0cc10f2647be9831832eabc3030f9181af"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 17 23:15:39 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Apr 18 11:59:09 2023 +0000"
      },
      "message": "cloud/bmaa/reflection: add ORDER BY machine_id\n\nChange-Id: Icfaf0f21ac4a1591c73a5fd3cc3d4a2cac01a8f6\nReviewed-on: https://review.monogon.dev/c/monogon/+/1550\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "51350b0cc10f2647be9831832eabc3030f9181af",
      "tree": "e7e58e87a3362453b8bb5bc0870dbeeeb895c6cb",
      "parents": [
        "28883b7d12852e85f03dc9c7f0bb4499cfccf22e"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Apr 18 00:34:53 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Apr 18 11:48:46 2023 +0000"
      },
      "message": "m/n/b/mkcpio: work around lib symlink bug\n\nThe library we\u0027re using to write these, github.com/cavaliergopher/cpio,\ndoes not handle writing symlinks. It does provide a field to put a\nsymlink target, but it only reads into it and ignores it while writing.\nThis causes symlinks in our initramfs to be broken. Work around this for\nthe time being by manually emitting the correct content.\n\nChange-Id: I3e78572d122e802d4a02b48bc87dab5152b2b913\nReviewed-on: https://review.monogon.dev/c/monogon/+/1552\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "28883b7d12852e85f03dc9c7f0bb4499cfccf22e",
      "tree": "e5ff99135a12ff747588f2488509734a2f85c2a0",
      "parents": [
        "4c825320dc1e02f98c40065494bb6ae11bf81835"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Apr 11 13:30:44 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Apr 18 11:48:46 2023 +0000"
      },
      "message": "m/n/c/network: configure given DNS servers\n\nActually configure the list of statically-configured DNS servers.\n\nChange-Id: I174be38195db4e63af2dfe7499e3e721f7b54556\nReviewed-on: https://review.monogon.dev/c/monogon/+/1524\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "4c825320dc1e02f98c40065494bb6ae11bf81835",
      "tree": "95ee82c569b0a6a61795bbe0429072241df3ef49",
      "parents": [
        "b902dfc271e2375d8928ad4faef0da7b1b75ec57"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Apr 11 13:25:14 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Apr 18 11:48:46 2023 +0000"
      },
      "message": "m/n/c/network: static networking fixes\n\nThis fixes three issues with static networking:\n\nIt joins interfaces to a master in down state as otherwise Linux\ncan return an error.\n\nIt takes up the automatically-created loopback interface as otherwise we\nhave no working loopback interface which causes some weird breakage.\n\nIt also patches netlink to use RTM_SETLINK instead of RTM_NEWLINK for\nreconfiguring interfaces as otherwise Linux sometimes returns an error.\n\nChange-Id: I512e38c6edc1a6d964feb552b1a3995165d74730\nReviewed-on: https://review.monogon.dev/c/monogon/+/1523\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "b902dfc271e2375d8928ad4faef0da7b1b75ec57",
      "tree": "8144257b867070adfe775916b418fe9c89d57cd3",
      "parents": [
        "e3032bd090603b0344727647028d03273bd7d3f5"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Fri Apr 07 01:20:31 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Apr 18 11:48:46 2023 +0000"
      },
      "message": "m/n/c/n/dns: fix race condition\n\nThis fixes a race condition where updates could be lost while CoreDNS\nis in the process of starting.\n\nChange-Id: I87e83e2fd2de1bba456f135697815f0ddeb226d9\nReviewed-on: https://review.monogon.dev/c/monogon/+/1520\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "e3032bd090603b0344727647028d03273bd7d3f5",
      "tree": "685a127ebd2955e1d586cc0a1277b8d464788fc8",
      "parents": [
        "bdc803b54b55b61bb07cd75ba966320e42a9c3b7"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Apr 13 14:43:41 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Apr 18 11:48:46 2023 +0000"
      },
      "message": "m/p/supervisor: allow signalling supervised processes\n\nUsing Command.Process.Signal to send signals to supervised processes\ncreates a data race between the Start function (called by Run) which\npopulates Command.Process and the access to that field.\nIntroduce a new option for RunCommand which takes a signal channel and\ninternally solves this race by first calling Start (at which point\nCommand.Process is populated and will not be mutated) and then spawning\na Goroutine which does the actual sending. This is safe at least on\nLinux since Go 1.7 [1].\n\n[1] https://github.com/golang/go/commit/cea29c4a358004d84d8711a07628c2f856b381e8\n\nChange-Id: Ibb76ef8a0434574c4df9ff85545987026518d8c0\nReviewed-on: https://review.monogon.dev/c/monogon/+/1540\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "bdc803b54b55b61bb07cd75ba966320e42a9c3b7",
      "tree": "9313f3d0c542c80150301718ca94ed3e2a143b84",
      "parents": [
        "b78919e7708904f042756e280015786caecf668c"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Mar 27 10:55:09 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Apr 18 08:20:57 2023 +0000"
      },
      "message": "metroctl: allow picking cluster TPM mode on bootstrap\n\nChange-Id: I3822a0daabdae381e817b0d52b50173889967ec8\nReviewed-on: https://review.monogon.dev/c/monogon/+/1496\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "b78919e7708904f042756e280015786caecf668c",
      "tree": "1593fe40c696e32ebcb6c509d34cb279ea4c08aa",
      "parents": [
        "e4a4ce1dbbc8abc8a0817f80fcb27437a9e6ca63"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Apr 17 15:51:58 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Apr 18 07:40:55 2023 +0000"
      },
      "message": "cloud/shepherd/wrapngo: don\u0027t crash on remote API errors\n\nA regression test for this will come in a subsequent CL.\n\nChange-Id: Ic2c1f872bcea510bef7adbdb6ed86f504733ecca\nReviewed-on: https://review.monogon.dev/c/monogon/+/1549\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\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": "5df62bae21bd89f15321a54a33a2ff59f5cbdce8",
      "tree": "45e397cafdbff558801e94c4c124bbb8e4d8a55b",
      "parents": [
        "10b2154450b4e43d2b959137f47bceeaf9c9f1f3"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Mar 22 17:56:46 2023 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Apr 17 09:14:54 2023 +0000"
      },
      "message": "metropolis: implement cluster configuration\n\nThis adds a cluster configuration to Metropolis. We\u0027ll be keeping any\nnon-node-specific options there. The config is stored in etcd by the\ncurator.\n\nAn initial cluster configuration can be specified when bootstrapping a\ncluster. By design the configuration is then immutable by default, but\nwe might add some purpose-specific management API calls to change some\nvalues if needed.\n\nWe initialize the cluster configuration with a setting for node TPM\npolicy, \u0027TPMMode\u0027. It\u0027s currently populated on cluster bootstrap, but\nnot used otherwise. That will come in a follow-up CR.\n\nChange-Id: I44ddcd099c9ae68c20519c77e3fa77c894cf5a20\nReviewed-on: https://review.monogon.dev/c/monogon/+/1494\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "10b2154450b4e43d2b959137f47bceeaf9c9f1f3",
      "tree": "610ba665e92e7763bf191fcbf7e04eddcfd85d86",
      "parents": [
        "1a38b8accc638a56704899e6e21238379511c5da"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 13 12:12:05 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Apr 17 09:14:47 2023 +0000"
      },
      "message": "cloud/bmaa/reflection: render known protos as prototext\n\nThis extends the type and value structures of the reflection code to\nsupport arbitrary Protobuf serialized messages. We currently identify\nwhat message type is contained in a column by a hardcoded lookup table.\n\nChange-Id: I31a260b7ed5582678803d27bf6ba30028cbea266\nReviewed-on: https://review.monogon.dev/c/monogon/+/1539\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "1a38b8accc638a56704899e6e21238379511c5da",
      "tree": "ea057482cd8987628f99747c25fa9221da3dbd85",
      "parents": [
        "5cd7ddf9b4f0b3f1bbc588af5d3c47d232385520"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 13 12:11:15 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Apr 17 09:14:47 2023 +0000"
      },
      "message": "cloud/bmaas/webug: render multiline tags correctly in machine view\n\nChange-Id: Ibaee208e01131a3b34d59368bb4718127a5f0d8a\nReviewed-on: https://review.monogon.dev/c/monogon/+/1538\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "5cd7ddf9b4f0b3f1bbc588af5d3c47d232385520",
      "tree": "5592f7c4f59d0a860335d1e9dbf9df85397fd43b",
      "parents": [
        "2cfafc9a4c34152dd93b58aa82df1720fb4dd6d6"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 13 12:09:53 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Apr 17 09:14:47 2023 +0000"
      },
      "message": "cloud/bmdb/reflection: copy byte slices\n\nThe pq driver doesn\u0027t allocate unique backing buffers for each slice\nhanded out as part of scanning, so we need to do a copy. Otherwise we\nend up with junk being written to the reflected field data if another\nSQL operation is performed later.\n\nChange-Id: I8f5a135ef3c5a3bb365098e1727e26572ddedcce\nReviewed-on: https://review.monogon.dev/c/monogon/+/1537\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@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": "d0be371ea905c3729f98d91d255d775b7c5193d3",
      "tree": "37aeb8f7a5674f6439521b227075fbbb5d4747d5",
      "parents": [
        "5d503b38fce16535f898b070e3ae7624e75d9bba"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Apr 11 13:22:25 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Apr 12 12:59:55 2023 +0000"
      },
      "message": "c/takeover: add fallback DNS servers\n\nAs it\u0027s not possible to reliably dump DNS servers from a Linux system,\nadd Google\u0027s and Cloudflare\u0027s public DNS servers if none were found.\n\nChange-Id: Id9dd3a884217cccc0260bd61514aeb545874c708\nReviewed-on: https://review.monogon.dev/c/monogon/+/1522\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "5d503b38fce16535f898b070e3ae7624e75d9bba",
      "tree": "212235a4876ae0cf148370f9fae44bf422df632a",
      "parents": [
        "d67eb4f7d6eff30320eac3fc564af2dbaff06a82"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Apr 11 13:20:23 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Apr 12 12:59:55 2023 +0000"
      },
      "message": "c/agent: log to extra kernel consoles\n\nCurrently the list of consoles to which logtree output is piped is\nhardcoded to be tty0 (the first virtual console) as well as ttyS0\n(the first platform serial port). On some platforms this is\ninsufficient, so also log to any kernel consoles defined.\n\nThe same problem exists for Metropolis itself, but there we first need a\nmechanism to pass a per-machine command line as for safety reasons it\u0027s\ncurrently hardcoded in the stub loader.\n\nChange-Id: I918525ed69a87323cbea561f3500b2166c842aae\nReviewed-on: https://review.monogon.dev/c/monogon/+/1511\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "d67eb4f7d6eff30320eac3fc564af2dbaff06a82",
      "tree": "5750b58d1139af063662b6b8a50dfafca5b3ed3a",
      "parents": [
        "23fa5c1f021739297bfc3def8514f3e1324503b7"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Apr 11 16:03:31 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Apr 12 12:59:55 2023 +0000"
      },
      "message": "m/p/bootparam: add Consoles param parser\n\nAdds the Consoles() helper function which processes all console params\nand puts them into a set.\n\nChange-Id: I7333bf5c22e6cd79bea0155c6a558e79bf6e824b\nReviewed-on: https://review.monogon.dev/c/monogon/+/1525\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "23fa5c1f021739297bfc3def8514f3e1324503b7",
      "tree": "f4600843b28aedf574563b55b137f94e168e39bc",
      "parents": [
        "8867b2ccc6d991abe4a765f5db4124e5f4c2a1a5"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 06 20:34:50 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 06 22:07:41 2023 +0000"
      },
      "message": "cloud/shepherd/equinix/manager: embed takeover agent\n\nChange-Id: Ibd3841dfe9d6e40042b1812d335eec3025841db1\nReviewed-on: https://review.monogon.dev/c/monogon/+/1510\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "8867b2ccc6d991abe4a765f5db4124e5f4c2a1a5",
      "tree": "63192b53756e83a9aa76a2e728b0c2f06c79eab3",
      "parents": [
        "51987d6cca3b619f365f978c1ce09012cdf23276"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 06 15:09:30 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 06 21:48:42 2023 +0000"
      },
      "message": "cloud/shepherd/equinix/manager: embed test_agent\n\nChange-Id: Iee2c1f68350412a49fae9fe2b80ab70a12b1a618\nReviewed-on: https://review.monogon.dev/c/monogon/+/1505\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "51987d6cca3b619f365f978c1ce09012cdf23276",
      "tree": "5790faeb4e218f790e1efc2c03c9fa7a94dea334",
      "parents": [
        "752fda3e5255bd6e0f08c4e2498b0bf7af15c321"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 06 16:35:35 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 06 21:48:42 2023 +0000"
      },
      "message": "c/shepherd/equinix/manager: add CA certificate path flag\n\nThis lets us specify a CA certificate that the Agent will then use to\nverify the endpoint it\u0027s connecting to.\n\nChange-Id: Iaa85caa156cbe8ad45ba6a3b8a820a40e15e012c\nReviewed-on: https://review.monogon.dev/c/monogon/+/1509\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "752fda3e5255bd6e0f08c4e2498b0bf7af15c321",
      "tree": "4d5988cda4a004cf5d217a481fc247fbee72df03",
      "parents": [
        "aadeb798a1f92b3d69ec7d6cde1b4567c2140452"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Apr 06 22:33:18 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 06 21:27:23 2023 +0000"
      },
      "message": "m/p/smbios: remove print\n\nThis was accidentally left in there from debugging.\n\nChange-Id: I20d9903e5d7ce67dbe171869848696a00f9711ed\nReviewed-on: https://review.monogon.dev/c/monogon/+/1517\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "aadeb798a1f92b3d69ec7d6cde1b4567c2140452",
      "tree": "6278ec3b6a732f2d27e7948bcba8e7a579d0e5b1",
      "parents": [
        "4bbd8b34a5e81a28219ae95bedf7915568557800"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Mar 27 15:53:56 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Apr 06 14:26:33 2023 +0000"
      },
      "message": "c/agent: implement\n\nImplement the currently-required agent functionality, i.e. running with\nboth autoconfigured as well as static network configuration, interacting\nwith the BMaaS API and installing Monogon OS.\n\nThe early-stage setup is similar to Monogon OS itself, but after setting\nup the root supervisor this instead calls into the agent runnable which\nthen performs the rest of the work.\nIn the process I made both logtree as well as supervisor public as they\nare very generic and I see no reason to keep them scoped so tightly.\nMaybe we should move them to go/ at some point.\n\nThis currently calls into osimage without the optimization the\nregular installer performs, this is intentional as I have code which\nwill replace osimage with a high-performance version, obviating the\nneed to manually make this fast here.\n\nThis also comes with an end-to-end test\nwhich exercises the whole flow, installing TestOS and checking if it\nlaunches.\n\nChange-Id: Iab3f89598a30072ea565ec2db3b198c8df7999ef\nReviewed-on: https://review.monogon.dev/c/monogon/+/1405\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "4bbd8b34a5e81a28219ae95bedf7915568557800",
      "tree": "a8d8c53c4e78858d139075d1573124218f68a0d5",
      "parents": [
        "85ad26a4389b926e2d4656f540257169eacdc4aa"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Mar 27 15:43:28 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Apr 06 14:26:33 2023 +0000"
      },
      "message": "c/b/s/api: extend agent API\n\nExtends the BMaaS API to cover the needs of the agent installing Monogon\nOS. This covers adding the hardware report, allowing reporting of errors\nwhile gathering it as well as adding installation request and response\ndata.\n\nChange-Id: I5b2a2768d36411ca8236ddcf016a102b6b847c7e\nReviewed-on: https://review.monogon.dev/c/monogon/+/1404\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "85ad26a4389b926e2d4656f540257169eacdc4aa",
      "tree": "ed69090952b8734c0d2dc2a52019921d34a9d75a",
      "parents": [
        "3ecb04a95b2d877ea4ef6adad0059183858af5a9"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Mar 27 17:00:00 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Apr 06 14:26:33 2023 +0000"
      },
      "message": "m/node: implement static network config\n\nAllows using a static network configuration in Monogon OS.\n\nThis plumbs in support for the new static network configuration mode of\nthe network service into Monogon OS. It introduces a new NodeParameter\nfield as well as an ESP file to persistently hold this configuration.\nThe file is not sealed or encrypted to allow recovery of nodes with\nbroken network configuration.\n\nChange-Id: Ia398368a8d1c0eef4bca53bb279a97a144bdbd20\nReviewed-on: https://review.monogon.dev/c/monogon/+/1403\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "3ecb04a95b2d877ea4ef6adad0059183858af5a9",
      "tree": "aa1d41084169ee9de32cd67837cbec8edd79b886",
      "parents": [
        "9ae5f77a472650a9f43186c585e395387cfc1f91"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Mar 16 20:41:20 2023 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Apr 06 14:26:33 2023 +0000"
      },
      "message": "m/n/c/network: add support for static network configuration\n\nFor certain network configurations autoconfiguration doesn\u0027t work or\nis not appropriate, so for these a static configuration needs to be\nused. The monorepo has recently gained net.proto, a Protobuf-based\nnetwork specification. This implements support for using this instead of\nautoconfiguration in the Monogon network service.\n\nChange-Id: Ifaec4e98b5a871308bde94c26fc09a7f0bcfd064\nReviewed-on: https://review.monogon.dev/c/monogon/+/1364\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "9ae5f77a472650a9f43186c585e395387cfc1f91",
      "tree": "29c4609795005a6ea517821013aef6b2e910d5ad",
      "parents": [
        "b565cc679cd5af598dc863890a3e1cce98eb1c57"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Apr 06 15:26:55 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Apr 06 14:26:08 2023 +0000"
      },
      "message": "g/a/toposort: add bad reference validation\n\nIn a lot of cases where toposort is used to build dependency trees it\nmight be necessary to validate that the edges which make up the tree\ndo not reference nodes which are not present.\n\nThis is implemented by still implicitly creating nodes when AddEdge is\ncalled, which allows arbitrary ordering of AddEdge/AddNode calls, but\non explicit calls to AddNode the node is also marked as being explicitly\nadded.\nThis information is later used to implement ImplicitNodeReferences which\nreturns all invalid references in the graph.\n\nChange-Id: Ia19560b98d00dcc10b5d0ad0e12b212bea586c04\nReviewed-on: https://review.monogon.dev/c/monogon/+/1507\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "b565cc679cd5af598dc863890a3e1cce98eb1c57",
      "tree": "eddf2b4b5636b0c5086cf8fb874927cdc73659c1",
      "parents": [
        "9104e381ab7a2c90087843de00204eed9ed7cf99"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Mar 30 18:43:51 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 06 14:19:17 2023 +0000"
      },
      "message": "m/n/core/clusternet: grab external IP address prefix from network service\n\nThis moves the logic for merging the node IP and node prefixes from the\nsubmitter of the prefixes into the clusternet logic itself.\n\nThis means clusternet now has two independent sources of prefix data:\nthe network service\u0027s external IP address, and the kubelet\u0027s node\nprefixes.\n\nThis simplifies use in a worker/controller split, where a controller\nnode normally doesn\u0027t submit any prefixes as it\u0027s not running a kubelet\nor kubelet-adjacent prefixes - but we still want it to submit its\nexternal IP address.\n\nChange-Id: I46c9430228ce966426d3a8d33a765ecfdfca0d29\nReviewed-on: https://review.monogon.dev/c/monogon/+/1479\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "9104e381ab7a2c90087843de00204eed9ed7cf99",
      "tree": "73bd733d7615f660d33ee8cae514782b66b53734",
      "parents": [
        "c09cca0e59c56f054a2f47872e54f83cad288c31"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Apr 04 20:08:21 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 06 14:19:04 2023 +0000"
      },
      "message": "metropolis/test/e2e: add self-test image for networking\n\nWe don\u0027t have any networking tests in our E2E tests. This adds an image\nwhich de-facto implements one. Or at least, will implement one once we\nmove to split workers/controllers and contacting a Kubernetes apiserver\nfrom a pod will mean we\u0027re actually testing cross-node traffic.\n\nChange-Id: I3d7be3824ac041d72e1c19cd468d30dbcb71fa03\nReviewed-on: https://review.monogon.dev/c/monogon/+/1481\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "c09cca0e59c56f054a2f47872e54f83cad288c31",
      "tree": "2bffc8eb4799fa63d1d74279d600e34f962dbabe",
      "parents": [
        "6963c63bace3dbc4c4f95d2837ac4cf271be8d78"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 06 15:09:27 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 06 13:17:22 2023 +0000"
      },
      "message": "c/bmaas/bmdb/webug: fix links to providers\n\nChange-Id: I606d368675dad4a46fa0b276ff8a109d08a745b6\nReviewed-on: https://review.monogon.dev/c/monogon/+/1506\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "6963c63bace3dbc4c4f95d2837ac4cf271be8d78",
      "tree": "ed45420a15af2e326cb864d80d890ec6496b02f3",
      "parents": [
        "77b11d3b440efb95cd29cbca5d56e63e5951ca17"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 06 14:55:49 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 06 13:12:28 2023 +0000"
      },
      "message": "cloud/lib/component: regression test for review/1502\n\nChange-Id: I8050ce31d7e5c6bd3e85a3d085052442a473881d\nReviewed-on: https://review.monogon.dev/c/monogon/+/1504\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "77b11d3b440efb95cd29cbca5d56e63e5951ca17",
      "tree": "c35a9c7b84c20ccb0d8f3cebf17272649ae34052",
      "parents": [
        "2fd37ea54317f23add3b8baa37ce3eaf33253479"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 06 14:43:19 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 06 12:53:42 2023 +0000"
      },
      "message": "c/shepherd/equinix: fix redundant agent path error\n\nObserved in prod:\n\ninvalid value \"/app/cloud/shepherd/equinix/manager/test_agent_/test_agent\" for flag -agent_executable_path: could not read -agent_executable_path: open /app/cloud/shepherd/equinix/manager/test_agent_/test_agent: no such file or directory\n\nThis changes it to:\n\ninvalid value \"/app/cloud/shepherd/equinix/manager/test_agent_/test_agent\" for flag -agent_executable_path: could not read: open /app/cloud/shepherd/equinix/manager/test_agent_/test_agent: no such file or directory\n\nChange-Id: I40a7bd97b37dd8cb72020d69ea4eabd6b3055198\nReviewed-on: https://review.monogon.dev/c/monogon/+/1503\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "2fd37ea54317f23add3b8baa37ce3eaf33253479",
      "tree": "71087f9d9690bc8e47a31edd2688053b87eb2c53",
      "parents": [
        "739f1d2cad73be305c54366a1f593a81c900120e"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 06 14:48:53 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 06 12:53:31 2023 +0000"
      },
      "message": "cloud/lib/component: don\u0027t fail when there\u0027s no migrations to run\n\nCurrently we always migrate the database schema up on every startup.\nHowever, the go-migrate API returns an error if Up() is called when\neverything is up to date.\n\nChange-Id: I245d3985719c5baee7d483c0cd9dc21c142b49af\nReviewed-on: https://review.monogon.dev/c/monogon/+/1502\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "739f1d2cad73be305c54366a1f593a81c900120e",
      "tree": "6f460654ffd22e4de8e5592aa31a14522e56abc4",
      "parents": [
        "c8480eedace7c915ebd82695945bf59e09588d83"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 06 13:19:39 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 06 11:35:55 2023 +0000"
      },
      "message": "cloud/bmaas/server/cmd: add container_image\n\nChange-Id: Iead21d276a81f01f72fc554ea6b5dec43137c883\nReviewed-on: https://review.monogon.dev/c/monogon/+/1501\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "c8480eedace7c915ebd82695945bf59e09588d83",
      "tree": "29aed38e5517510112eaeeb85c4aef0104cb05c1",
      "parents": [
        "98e05e1e5fd348ac07e221732251734256777ecd"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Apr 05 13:25:03 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 06 11:35:55 2023 +0000"
      },
      "message": "build/ci: add patch to Dockerfile\n\nChange-Id: I553bbaadd4bfcd0aefd838e2703548fc902c2b53\nReviewed-on: https://review.monogon.dev/c/monogon/+/1500\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "98e05e1e5fd348ac07e221732251734256777ecd",
      "tree": "d202ec3537c7f6faa903910bc5eb0258a8eb6f72",
      "parents": [
        "6c8ee0b3224934cf10b576e8caea15e4ad18a759"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Apr 05 12:44:14 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 06 10:13:54 2023 +0000"
      },
      "message": "metropolis/*: confine etcd output in tests\n\nThe etcd test cluster logic produces some very chatty logs that end up\nin stdout.\n\nThis confines the etcd logs themselves, as well as gRPC logs that the\ntest logic also always enables by default.\n\nChange-Id: I1070f14b20e870865b510ae24015402c0469ceff\nReviewed-on: https://review.monogon.dev/c/monogon/+/1487\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "6c8ee0b3224934cf10b576e8caea15e4ad18a759",
      "tree": "3aac6bea1d0d0d4a43e1ce9cbaedf88e141dfab5",
      "parents": [
        "29974f3ba444e129cc142133778d09fa61e9679b"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Apr 05 12:29:57 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 06 10:13:54 2023 +0000"
      },
      "message": "m/pkg/logtree: add Zap and gRPC facades\n\nChange-Id: I37a861edeba9b916e17598da559bd378e494ec35\nReviewed-on: https://review.monogon.dev/c/monogon/+/1486\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "29974f3ba444e129cc142133778d09fa61e9679b",
      "tree": "76fe13f1af556f1fbef15532025bba918c16150e",
      "parents": [
        "630fb5c5349b13330b7de6f8300b495b801db061"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Apr 05 12:29:09 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 06 10:13:54 2023 +0000"
      },
      "message": "m/p/logtree: pipe to t.Log in tests instead of stdout\n\nChange-Id: I12506a0553810d934872aa0dd03478a66ba6e95f\nReviewed-on: https://review.monogon.dev/c/monogon/+/1488\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "630fb5c5349b13330b7de6f8300b495b801db061",
      "tree": "9d946ba0dd34a6ba0567f4f7120174797e29a8fe",
      "parents": [
        "1fb2b10801eb4ea56a1e00f174923ec83f039623"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 06 10:50:24 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 06 09:55:51 2023 +0000"
      },
      "message": "m/test/e2e: deflake\n\nNow that nodes don\u0027t heartbeat before they have critical ESP data\npersisted, we can simply make sure they heartbeat before any disruptive\nreboot and that will remove our biggest source of flakiness in E2E\ntests.\n\nChange-Id: I9d4483015341157af6b27c8bd98f5df64da229d2\nReviewed-on: https://review.monogon.dev/c/monogon/+/1499\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "1fb2b10801eb4ea56a1e00f174923ec83f039623",
      "tree": "8e1ef90a747d7d9559088deb321af96b09d626bb",
      "parents": [
        "86afa224665bb3c465c0ff36d97baafebc673264"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 06 10:13:46 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 06 09:55:51 2023 +0000"
      },
      "message": "m/node/core: run hostsfile from roleserver, provide feedback on cluster directory\n\nNot providing a heartbeat and status until we save a cluster directory\nto ESP is a quick and dirty way to make sure we don\u0027t mark a node as\nHEALTHY until it has performed the bare minimum of setup to be\nrebootable.\n\nThis is important in our E2E tests to reduce flakiness.\n\nIn the future we should have some node status field or general \u0027sync\u0027\nAPI exposed, but this will do for now.\n\nChange-Id: Ibad9e91f01abeacdfe4400ef7cb36ca17f68ba0a\nReviewed-on: https://review.monogon.dev/c/monogon/+/1498\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "86afa224665bb3c465c0ff36d97baafebc673264",
      "tree": "d4cdce3099580c1b34b8855be47807bfbc05643a",
      "parents": [
        "7920852953a4b0846ddb16cb82a038b064ba473a"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 06 10:47:50 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 06 09:55:51 2023 +0000"
      },
      "message": "m/n/c/cluster: when registering, save node credentials before starting roleserver\n\nThis makes sure we don\u0027t start heartbeating (and generally running any\nproduction roles) before we have our newly generated credentials\npersisted into ESP.\n\nIn turn this should make our E2E tests less flaky.\n\nChange-Id: I6440c53b346080015e082d97af06f795f7b8ed60\nReviewed-on: https://review.monogon.dev/c/monogon/+/1497\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "7920852953a4b0846ddb16cb82a038b064ba473a",
      "tree": "afa919bc332a93bd0666714843632cffa1095170",
      "parents": [
        "4e6eae2bec769a565eece47438fcb594e7da2765"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Mar 28 20:14:58 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Apr 05 14:14:44 2023 +0000"
      },
      "message": "m/n/kubernetes: use node clusternet to submit cluster networking routes\n\nThis completes the work on using the new cluster networking service from\nKubernetes, thereby allowing non-worker nodes to participate in cluster\nnetworking.\n\nChange-Id: I7f3759186d7c8cc49833be29963f82a1714d293e\nReviewed-on: https://review.monogon.dev/c/monogon/+/1418\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "4e6eae2bec769a565eece47438fcb594e7da2765",
      "tree": "02991fb6c7a758e75c16aae2da84910a36aebede",
      "parents": [
        "c6367b9680d9157fbc8d6d1c7a04a715269c47ba"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Apr 04 22:53:28 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Apr 04 21:07:54 2023 +0000"
      },
      "message": "build/ci: call bazelisk from PATH instead ~\n\nChange-Id: Ic0cd685f81d763ad05418626d514f2a17d8cb524\nReviewed-on: https://review.monogon.dev/c/monogon/+/1482\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "c6367b9680d9157fbc8d6d1c7a04a715269c47ba",
      "tree": "c5a40f4b2aa3f23dbf4f98609fffaf425b1e84c7",
      "parents": [
        "e012b728d98e51e6b5564873f10c06c4f4c81415"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Apr 04 14:27:26 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Apr 04 18:02:35 2023 +0000"
      },
      "message": "build/ci: remove bazelisk update as the builder image got updated\n\nChange-Id: I5494d540dd89da32c3c05575d26d7af6b7fcf74e\nReviewed-on: https://review.monogon.dev/c/monogon/+/1480\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\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": "cff8eb9db471c6dd85f92e1828ecd268c2737dda",
      "tree": "c6eb023bb66d2c92d680ea38f6ab33391f2cc881",
      "parents": [
        "9ab3750dce088191a0af8f605246f81d863318c9"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Apr 04 12:21:00 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Apr 04 10:25:18 2023 +0000"
      },
      "message": "build/ci: add gcloud\n\nChange-Id: Idaa081ebc0ab23980bc4913a7afbd3c317086899\nReviewed-on: https://review.monogon.dev/c/monogon/+/1478\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "9ab3750dce088191a0af8f605246f81d863318c9",
      "tree": "3aebc52158a88409ea48bcf42ef89d48ea81287e",
      "parents": [
        "77b87a6eb9bdc659757ad8edae43ac1fd4b74821"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 03 19:05:07 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Apr 04 10:25:18 2023 +0000"
      },
      "message": "build: allow override of IMAGE_TAG\n\nChange-Id: I23637f1c0d6d0e7cd45ad160209399cc9bf8b1a1\nReviewed-on: https://review.monogon.dev/c/monogon/+/1477\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "77b87a6eb9bdc659757ad8edae43ac1fd4b74821",
      "tree": "5588a6c09cf9d40b9faef9cf917d0aba2a30043c",
      "parents": [
        "a6d8b39959427e4f7e922f7dc095687e07a0caaa"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Apr 03 15:24:27 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Apr 03 15:09:45 2023 +0000"
      },
      "message": "third_party/sandboxroot: add mirror tool\n\nThis mirrors the sandbox RPMs into a GCS bucket any time we regenerate\nit. Hopefully this stops the constant barrage of random 404s when Fedora\njust happened to bump a library and all the mirrors lost its previous\nversion.\n\nThis tool is currently specific to our bazeldnf-based sandboxroot setup,\nbut could be extended to mirror all of our dependencies at some point.\n\nAs our mirror is the last in the list, it should only be used when a\nfile is missing from other mirrors. In the future, we should have some\njob that alerts us when too many of our deps are missing from upstream\nmirrors.\n\nChange-Id: I08ccbdf99ec868363918e30f3d2ae94f463e045f\nReviewed-on: https://review.monogon.dev/c/monogon/+/1473\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "a6d8b39959427e4f7e922f7dc095687e07a0caaa",
      "tree": "820548670c0e392197a2d7603bb7659ccd9cd9ea",
      "parents": [
        "3fe6615bd837038023b9839fb7300030999c60ff"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Apr 03 15:23:57 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Apr 03 15:09:45 2023 +0000"
      },
      "message": "third_party/go: bump grpc-go\n\nWe\u0027re about to include some new-ish cloud.google.com/go packages, and\nthese want a fairly new grpc-go.\n\nThis version of grpc-go finally deprecates some resolver struct fields,\nwhich means we need to migrate away from them.\n\nThe changes also pull in a bunch of golang.org/x/ updates, including one\nthat breaks our importsort patch in goimports.\n\nChange-Id: I2570af45694a5bf18eb7fabb44120d19c5e487da\nReviewed-on: https://review.monogon.dev/c/monogon/+/1472\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "3fe6615bd837038023b9839fb7300030999c60ff",
      "tree": "e4b2764ab38362ca95b604f3d906a9c23383164b",
      "parents": [
        "6d6ed31da287a055b18dedaa1fd70420994c66ae"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Apr 03 15:14:07 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Apr 03 14:40:12 2023 +0000"
      },
      "message": "third_party/sandboxroot: bump, use our mirror\n\nThe tooling that was used to generate this mirror will come in another\nchange.\n\nChange-Id: Ib08e6908dc71201680a13ebb04136154ac5463a8\nReviewed-on: https://review.monogon.dev/c/monogon/+/1471\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "6d6ed31da287a055b18dedaa1fd70420994c66ae",
      "tree": "59de543dc0ad9bed120c29c62fdf19508b1ce341",
      "parents": [
        "1fdab13a2ea1411b332f67cfa9b1216753b9eb11"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Mar 27 11:04:14 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Apr 03 14:02:00 2023 +0000"
      },
      "message": "m/n/kubernetes/{clusternet,nfproxy}: log informer errors\n\nChange-Id: I9ea1444c7042dd25c25cecc6b6da054554010a85\nReviewed-on: https://review.monogon.dev/c/monogon/+/1447\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "1fdab13a2ea1411b332f67cfa9b1216753b9eb11",
      "tree": "34da6ed80b784c7ccd15e5ac611b03d604523795",
      "parents": [
        "ca4bbee8d21cbfc4cdc3bf6750d3bc2166c7c1ea"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Mar 30 15:04:16 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 03 12:07:27 2023 +0000"
      },
      "message": "cloud: add container_bundle\n\nChange-Id: I3101b02c570d90b77860a1d928f48139d7ce8889\nReviewed-on: https://review.monogon.dev/c/monogon/+/1444\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "ca4bbee8d21cbfc4cdc3bf6750d3bc2166c7c1ea",
      "tree": "209a1430b01e3cf2b8684d6f57a88fec26f50a7f",
      "parents": [
        "93d593b8b51a597a030d589d4f7435236a52b2c5"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Mar 30 17:15:59 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Mar 30 16:51:21 2023 +0000"
      },
      "message": "WORKSPACE: update rules_docker\n\nChange-Id: I7f4c8d3d289b78868bd59ae44a1e2ff7ed1da566\nReviewed-on: https://review.monogon.dev/c/monogon/+/1446\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "93d593b8b51a597a030d589d4f7435236a52b2c5",
      "tree": "8fb78b1c9951431b96150e0910420bb62fc15101",
      "parents": [
        "f50c31ff196d2d5ae6c73d732e3d241020cf7882"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Mar 28 16:43:47 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Mar 30 15:38:07 2023 +0000"
      },
      "message": "m/n/core/clusternet: init\n\nThis implements the new cluster networking daemon. This is just the\ndaemon itself with some tests. It\u0027s not yet used.\n\nChange-Id: Ida34b647db0d075fcaaf2d57c9a8a14701713552\nReviewed-on: https://review.monogon.dev/c/monogon/+/1416\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "f50c31ff196d2d5ae6c73d732e3d241020cf7882",
      "tree": "48024296472f235ea7cbd5b76c887fec1a2d7bff",
      "parents": [
        "ff95552a751ca68fb3834b7cdb101f1b7c421a05"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Mar 30 15:04:03 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Mar 30 14:43:15 2023 +0000"
      },
      "message": "cloud/shepherd/equinix/manager/server: add container_image\n\nChange-Id: I1788eb56ecb08394b3f82f9dd0973b18c2e72498\nReviewed-on: https://review.monogon.dev/c/monogon/+/1443\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "ff95552a751ca68fb3834b7cdb101f1b7c421a05",
      "tree": "337553cd953155d5b03dbda32765cd1bcfe8a21c",
      "parents": [
        "8e7df7b33ac88f5b20e28fdce6f6a43e6ca03a48"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Mar 30 15:03:54 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Mar 30 14:43:15 2023 +0000"
      },
      "message": "cloud/apigw: add container_image\n\nChange-Id: Ief8c8a0a7fc3e86cf4b4dba14981b8dd8239729b\nReviewed-on: https://review.monogon.dev/c/monogon/+/1442\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "8e7df7b33ac88f5b20e28fdce6f6a43e6ca03a48",
      "tree": "d0d48fd1f2ebd6690e320491bf03606152e8a955",
      "parents": [
        "b58102ce51699183af43248c88aa22b8407baa7c"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Mar 30 15:02:35 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Mar 30 14:42:55 2023 +0000"
      },
      "message": "third_party/sandboxroot: add libstdc++-static\n\nChange-Id: I5528cfe7a218be10448d7b000756ddcd196cdd4d\nReviewed-on: https://review.monogon.dev/c/monogon/+/1441\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "b58102ce51699183af43248c88aa22b8407baa7c",
      "tree": "ee5560579ec7b32636bb4d9eee4e77271c9d3459",
      "parents": [
        "da11486352f2aaccfa271a8aaf06a3bef09b0a3a"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Mar 29 17:48:18 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Mar 30 14:19:03 2023 +0000"
      },
      "message": "m/n/core/rpc: do not log RPC traces from NodeManagement.Logs\n\nChange-Id: I3106d7fe66a8cdd047e08af62844b20d11636bf5\nReviewed-on: https://review.monogon.dev/c/monogon/+/1438\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "da11486352f2aaccfa271a8aaf06a3bef09b0a3a",
      "tree": "c5a4f5488061d4c0a8660014bc4f4838361ee4aa",
      "parents": [
        "bc7397214147701d6e70141ff70bf6e84f9aab62"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Mar 29 17:46:42 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Mar 30 14:19:03 2023 +0000"
      },
      "message": "metropolis/proto: move log-related types to common\n\nHaving them in API is kinda weird, especially as we\u0027re\ngenerating/parsing them from a few libraries already.\n\nChange-Id: I87b4b51f151443c60b87e3e50753c395fcf6e845\nReviewed-on: https://review.monogon.dev/c/monogon/+/1437\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "bc7397214147701d6e70141ff70bf6e84f9aab62",
      "tree": "7be96e5fc859010fdf9bf9b381300fbd9d73d07f",
      "parents": [
        "a58047b542002a3045dc18c72ca8889f06b54329"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Mar 28 20:12:01 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Mar 30 14:18:53 2023 +0000"
      },
      "message": "m/n/core/curator: prevent nodes from sharing wireguard keys\n\nAs WireGuard keys nodes by public key, we must do our best to never let\ntwo nodes share the same public key.\n\nChange-Id: Ib8bc9b839355c1ee94dcf3ba42368055b47c2c21\nReviewed-on: https://review.monogon.dev/c/monogon/+/1415\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "a58047b542002a3045dc18c72ca8889f06b54329",
      "tree": "b43a79d58d50887b47473612a00880aec955ce2c",
      "parents": [
        "b91938fe16d74272c14e13cad5c6bd8f82391bc4"
      ],
      "author": {
        "name": "Leopold",
        "email": "leo@monogon.tech",
        "time": "Thu Mar 30 14:55:37 2023 +0200"
      },
      "committer": {
        "name": "Leopold Schabel",
        "email": "leo@monogon.tech",
        "time": "Thu Mar 30 13:15:50 2023 +0000"
      },
      "message": "third_party/sandboxroot: bump\n\nChange-Id: I9cca3fe15d8252fc2926968ef098a1434f4243dd\nReviewed-on: https://review.monogon.dev/c/monogon/+/1440\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "b91938fe16d74272c14e13cad5c6bd8f82391bc4",
      "tree": "c70a0acf239851748611957bee9d0275740b56ed",
      "parents": [
        "b40c008a6842a232c18b955375d4f1432b32cd53"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Mar 29 14:31:22 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Mar 29 17:18:22 2023 +0000"
      },
      "message": "metropolis: stub out log service\n\nThe server side and client-side implementations are not quite ready yet,\nbut we\u0027re commiting this early so that we can start implementing more\nnode-local management RPCs.\n\nChange-Id: I81b615b0f77dc7750cc738d60ee4923c3182721b\nReviewed-on: https://review.monogon.dev/c/monogon/+/1429\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "b40c008a6842a232c18b955375d4f1432b32cd53",
      "tree": "3fd188eb8b831102c9ab8997579554d200057ed3",
      "parents": [
        "8535cb5bc5437960430ff94d3ea7280ccf931340"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Mar 29 14:28:04 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Mar 29 17:18:22 2023 +0000"
      },
      "message": "m/n/core/mgmt: implement node-local management service\n\nChange-Id: I1e8a8ff46d1172e00f2d991ae3cc3af1929b6e4e\nReviewed-on: https://review.monogon.dev/c/monogon/+/1428\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "8535cb5bc5437960430ff94d3ea7280ccf931340",
      "tree": "57edb5cf064ad8b43aef52c1bbb974dd5cce7c26",
      "parents": [
        "30fd15406e2c9cba7391f6af96c775b313a115fa"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Mar 29 14:15:08 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Mar 29 17:18:22 2023 +0000"
      },
      "message": "m/n/core/rpc: implement node verification in authenticated connections\n\nThe current API of NewAuthenticatedCredentials is not easily extensible,\nso switch over to such an API now.\n\nThis then adds a WantRemoteNode option which verifies that the remote\nconnection is established to a node with a given ID.\n\nChange-Id: Ie9f6b33d8b032729181bae5591eba9856ea2f523\nReviewed-on: https://review.monogon.dev/c/monogon/+/1427\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "30fd15406e2c9cba7391f6af96c775b313a115fa",
      "tree": "cd19f1366d884c5b3110a7396b9cc5514dedecc2",
      "parents": [
        "8fab014d343633828dc4df3c670def9c75fa4485"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Mar 29 14:19:02 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Mar 29 17:18:22 2023 +0000"
      },
      "message": "m/n/core/curator: return denormalized node id in GetNodes\n\nThis is mostly useful when using filters to get just one node, eg.\n`node.id \u003d \"metropolis-1234567890\"`.\n\nChange-Id: I154508751b0e610742374b65915c07b64a7f7b71\nReviewed-on: https://review.monogon.dev/c/monogon/+/1426\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "8fab014d343633828dc4df3c670def9c75fa4485",
      "tree": "178e3a4a95189e85e618fb966320e805961cb666",
      "parents": [
        "3ac3a2ecfab884ff26939834578ce731ee1778ac"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Mar 29 16:48:16 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Mar 29 16:03:23 2023 +0000"
      },
      "message": "m/pkg/logtree: fix exact backlog fetch, head/tail confusion\n\nThis started off as \u0027hm, the backlog data returned seems wrong\u0027. I\nrealized we had no test for that, so I added one. It was indeed broken.\n\nThis was because we had two simultaneous bugs: we confused head/tail\nbetween docs and different parts of the code, and we forgot to do a\nreverse operation when scanning/retrieving journal entries.\n\nWith those two fixed, we also implement backlog retrieval in a optimized\nfashion, but not scanning/retrieving more entries that is necessary.\n\nFinally, we drive-by fix a massacred ASCII graphic in a comment.\n\nChange-Id: I2ec5dd9b5b58f66fbc015c142feb91bd92038e4f\nReviewed-on: https://review.monogon.dev/c/monogon/+/1430\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "3ac3a2ecfab884ff26939834578ce731ee1778ac",
      "tree": "4d0cc471eac7e2986a7bb3d0690b1b348930d6a1",
      "parents": [
        "03139ef5370599ee89add5d4733d18a7e902e8ab"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Mar 29 14:20:06 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Mar 29 14:09:47 2023 +0000"
      },
      "message": "m/n/core/identity: prevent crash when verifying nil CA certs\n\nWe have some \u0027ca \u003d\u003d nil means do not verify\u0027 logic around in our\ncodebase, and this prevents programming errors from panicking.\n\nChange-Id: I047a06984dd40d709294edaf5d658c61667cb954\nReviewed-on: https://review.monogon.dev/c/monogon/+/1423\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "03139ef5370599ee89add5d4733d18a7e902e8ab",
      "tree": "df9bd2236136a01df1cc6c377f9d2eb76cc98e1e",
      "parents": [
        "8b4a5ea7468f26c693f9497e61e722614a4617ac"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Mar 29 13:37:07 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Mar 29 14:09:38 2023 +0000"
      },
      "message": "m/n/c/curator: tell filter users what\u0027s wrong with their filter expression\n\nChange-Id: I994a76ba57e13a34a91b0e547b8173dbc583dd37\nReviewed-on: https://review.monogon.dev/c/monogon/+/1424\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "8b4a5ea7468f26c693f9497e61e722614a4617ac",
      "tree": "c0f5912709fff737b6c4edf6e1da0c9053066e95",
      "parents": [
        "4e6fe4aefa98b1c027c4e934472c94b60abe727e"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Mar 29 14:16:59 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Mar 29 14:09:32 2023 +0000"
      },
      "message": "m/n/core/rpc: shorten proto messages in traces\n\nWe\u0027ll have binary RPC logs in the future that will contain all RPC\nmessages. We definitely don\u0027t want kilobytes of prototext in our main\nlogtree or even in the RPC spans.\n\nChange-Id: I9abc5654ce977ff97a293b04f9c1fddfb71ed4a0\nReviewed-on: https://review.monogon.dev/c/monogon/+/1425\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "4e6fe4aefa98b1c027c4e934472c94b60abe727e",
      "tree": "0ca77bec8f3048ea67010756b8efa87e0852122f",
      "parents": [
        "677887828c5440ac794e2cbd892f2c3314f7b63e"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Mar 23 17:35:22 2023 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Mar 29 12:44:42 2023 +0000"
      },
      "message": "third_party/qemu: add qemu-img\n\nThis will be used to make our tests faster by using qcow2 images instead\nof copying the entire node disk on startup.\n\nTest with:\n\n    bazel run \u0027@qemu//:qemu-img\u0027\n\nChange-Id: If696ed9d26cf5de3318cba0d4bb8c58fd1f1d686\nReviewed-on: https://review.monogon.dev/c/monogon/+/1395\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "677887828c5440ac794e2cbd892f2c3314f7b63e",
      "tree": "4704995fc5fcd838f615efeaf3c6f2a4b578160e",
      "parents": [
        "e6bc2275053e06ea8d1274d132e5bb071aac6a75"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Mar 28 20:13:18 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Mar 29 12:34:59 2023 +0000"
      },
      "message": "m/n/core/curator: check that pubkey is given when expecting self-signed certificate\n\nPeerInfo.Unauthenticated does not imply Unauthenticated.SelfSigned,\nwhich might be nil if a client connects without a certificate at all.\nThis makes sure we don\u0027t crash when that happens.\n\nChange-Id: I52ceefe13f1eab9efe549e900a1ae715086b499e\nReviewed-on: https://review.monogon.dev/c/monogon/+/1414\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "e6bc2275053e06ea8d1274d132e5bb071aac6a75",
      "tree": "0b9147f9fef9610f7ca285e1457c90b8f292abd0",
      "parents": [
        "0731937d1f66230495e770fcdeaac16aaed8a0cb"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Mar 28 16:28:13 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Mar 28 18:22:38 2023 +0000"
      },
      "message": "m/n/c/curator: implement cluster networking storage\n\nThis is just the Curator side, the client implementation will come in a\nsubsequent change.\n\nChange-Id: I4a9b5ad5c77662e11122d0a1cea22d80ecfe4299\nReviewed-on: https://review.monogon.dev/c/monogon/+/1413\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "0731937d1f66230495e770fcdeaac16aaed8a0cb",
      "tree": "7e8bd6290ca88cd5630eacf9e87b1ef3a86f984a",
      "parents": [
        "50d39370424b5c8e28b72f976d3b57b7d23a6f8b"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Mar 27 17:56:41 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Mar 28 10:08:04 2023 +0000"
      },
      "message": "WORKSPACE: bump intel_ucode\n\nUpdate intel_ucode to get the latest microcode for newer Intel CPUs.\n\nChange-Id: I5035de1b84a6d190904c1d89258162a26f98774c\nReviewed-on: https://review.monogon.dev/c/monogon/+/1411\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "50d39370424b5c8e28b72f976d3b57b7d23a6f8b",
      "tree": "d645666a19b861e7f199bdf6fce3f19bcefc8a3f",
      "parents": [
        "48f92e19a60062b696660213d579795866e6e718"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Mar 27 22:20:15 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Mar 28 10:08:04 2023 +0000"
      },
      "message": "WORKSPACE: bump kernel to 5.15.104\n\nBumps the kernel to the latest patch release.\n\nHash verified against GPG signature from\n647F28654894E3BD457199BE38DBBDC86092693E alias Greg KH.\n\nChange-Id: I20d78d0492d1e869d684a1c045341f142f2039c8\nReviewed-on: https://review.monogon.dev/c/monogon/+/1410\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "48f92e19a60062b696660213d579795866e6e718",
      "tree": "9e36ffdf2899ff9c75e1ef156e265e43c6e09e1e",
      "parents": [
        "c271d6ee5ada79fdec874f5c82315ef7689f84f5"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Mar 27 17:50:26 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Mar 28 10:08:04 2023 +0000"
      },
      "message": "WORKSPACE: bump linux-firmware to 20230310\n\nUpdates our old linux-firmware to include newer firmware, especially\nnewer microcode which is relevant for us.\n\nVerified GPG signature for SHA256 hash against key\n4CDE8575E547BF835FE15807A31B6BD72486CFD6\n\nChange-Id: I73a63ba7f586e686f5c16960a4f3eb2b514022a5\nReviewed-on: https://review.monogon.dev/c/monogon/+/1409\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "c271d6ee5ada79fdec874f5c82315ef7689f84f5",
      "tree": "b9bac94f6dc3f3f217e7fedc200ad6dc54f926de",
      "parents": [
        "7da4d3c9ed62d5e88096422dafbecd1e0d7634cf"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Mar 27 17:43:24 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Mar 28 10:08:04 2023 +0000"
      },
      "message": "WORKSPACE: update Go to latest minor 1.18.10\n\nThis gets us a bunch of fixes including security fixes without needing\nto qualify a new Go version.\n\nChange-Id: I7d745b4963228066793486c637d411181c69b137\nReviewed-on: https://review.monogon.dev/c/monogon/+/1408\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "7da4d3c9ed62d5e88096422dafbecd1e0d7634cf",
      "tree": "8a85c0af0649428f1c58c9a7608e49881c708a2d",
      "parents": [
        "cfbbbdba0e7fa60c87ea6119697dff4e5e84a6ee"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Mar 27 17:38:47 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Mar 28 10:08:04 2023 +0000"
      },
      "message": "WORKSPACE: update CA root store\n\nUpdate our CA root store, which has become quite outdated.\n\ncurl.haxx.se is now curl.se, see\nhttps://curl.se/mail/lib-2020-11/0000.html\n\nChange-Id: Ic63908572ee64bb18451db9e0516f9a653152b3b\nReviewed-on: https://review.monogon.dev/c/monogon/+/1407\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    }
  ],
  "next": "cfbbbdba0e7fa60c87ea6119697dff4e5e84a6ee"
}
