)]}'
{
  "log": [
    {
      "commit": "89974c6f9e4f81d6d819d041a7f5286772df7124",
      "tree": "db0e768e42262a04ddb11fa3c1a85420e54b4796",
      "parents": [
        "6d563cac226b327d41d95bf0219b3ff972ab6952"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Jun 14 22:15:10 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Jun 15 10:02:31 2023 +0000"
      },
      "message": "m/n/c/cluster: set StorageSecurity in bootstrap path\n\nCurrently this is only set properly in the register path, causing the\nconfiguration of the bootstrap node to be inconsistent. This causes\nbootup to fail with `Node startup failed: sealed configuration has\ninvalid node unlock key (wanted 32 bytes, got 0)`.\nFix this by also persisting the chosen storage security option in the\nnode configuration when bootstrapping.\n\nChange-Id: I93bf75d412c9aa7c09b5a739ce65b6873d947fd5\nReviewed-on: https://review.monogon.dev/c/monogon/+/1815\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "6d563cac226b327d41d95bf0219b3ff972ab6952",
      "tree": "02c80c9ad94b0302ffed71fb3b4763104574c394",
      "parents": [
        "634a3cf16ecf4cd551847185e7b539d16ad52d2d"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Jun 14 13:44:20 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Jun 15 09:31:47 2023 +0000"
      },
      "message": "third_party/go: pull in node_exporter, add to metropolis rootfs\n\nChange-Id: I5efe5257e7740bf1721f3dd6f130a3c618e33381\nReviewed-on: https://review.monogon.dev/c/monogon/+/1806\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "634a3cf16ecf4cd551847185e7b539d16ad52d2d",
      "tree": "7653202205bd238b3d9d02c2bf87ae66e277d933",
      "parents": [
        "b37d7d8ef4e318c9d35d34eff79fa0a304ff35aa"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Jun 14 20:01:33 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Jun 14 19:19:16 2023 +0000"
      },
      "message": "metropolis/cli/metroctl: dont segfault on missing status\n\nChange-Id: Ib1a594e0ccca0f6a993e651b62e8adcfb9dc1ea4\nReviewed-on: https://review.monogon.dev/c/monogon/+/1814\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "b37d7d8ef4e318c9d35d34eff79fa0a304ff35aa",
      "tree": "d9426085481415352c83263204c81e2796032eed",
      "parents": [
        "c09327c6393202f0b425313a18a834954aeba572"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Jun 14 19:06:44 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Jun 14 18:18:30 2023 +0000"
      },
      "message": "metropolis/cli/metroctl: dont write hostPort and report correct context\n\nChange-Id: I9ddccf35cf7a1fe7ee839250ceab0925fe8f0138\nReviewed-on: https://review.monogon.dev/c/monogon/+/1811\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "c09327c6393202f0b425313a18a834954aeba572",
      "tree": "80eebf9133ee9126295b1f3aa1a80578854b830a",
      "parents": [
        "1600d9b3aa84c3259a3e8355cba7702825924b6d"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Jun 14 17:48:56 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Jun 14 18:18:30 2023 +0000"
      },
      "message": "metropolis/cli/metroctl: set storage security policy inside installer\n\nWithout it the installed metropolis node will fail initialization\n\nChange-Id: I137107260fc7c4f50052791f58454dd07b98c29c\nReviewed-on: https://review.monogon.dev/c/monogon/+/1809\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "1600d9b3aa84c3259a3e8355cba7702825924b6d",
      "tree": "89699bcfedda33bb6aa7a69a4a9b11d58e6009c6",
      "parents": [
        "98054a1ddb45d9e0246a0f7f7b93f9e90619a544"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Jun 14 20:00:59 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Jun 14 18:16:09 2023 +0000"
      },
      "message": "m/c/metroctl: add newline between unapproved nodes\n\nChange-Id: I1db00eb9396e597a4596ad2b491a75bbcebacd62\nReviewed-on: https://review.monogon.dev/c/monogon/+/1812\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "98054a1ddb45d9e0246a0f7f7b93f9e90619a544",
      "tree": "52ce0573faf5cddbb60c7ed99463837ba14426c8",
      "parents": [
        "0c2f9ded884f7f54d74a8c251c51231841f71728"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Jun 14 18:16:21 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Jun 14 17:07:27 2023 +0000"
      },
      "message": "metropolis/node: fix non-secure TPM/storage policy codepaths\n\nThis fixes enoug things to pass manually ran E2E tests with the initial\ncluster confiugration changed to a number of possible combinations\n(with/without TPM, with authenticated/encrypted/insecure storage).\n\nThese should, of course, be automatically tested. However, that is\npending on the extension of E2E test system that will let it run\nlong-term tests against real clusters. Otherwise we\u0027d just waste tons of\ntime running the entire matrix of possible combinations on every CR.\n\nChange-Id: I71a56f9a31c738ee2b2d4dfa10d2a58fd5cb0554\nReviewed-on: https://review.monogon.dev/c/monogon/+/1810\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "0c2f9ded884f7f54d74a8c251c51231841f71728",
      "tree": "9a084723cea0b9cc183b694386aa0e322b5d465f",
      "parents": [
        "b7ff592e4f08022df5d980a03a396f4ff5330b29"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Jun 14 15:19:27 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Jun 14 15:41:41 2023 +0000"
      },
      "message": "m/n/c/network: improve restartability\n\nDeletes all newly-added interfaces as well as sets all reconfigured\ninterfaces to down if an error occurs in an effort to improve\nrestartability.\n\nChange-Id: I715514c7f6b7a6f45a1c66333fd540556be2b29b\nReviewed-on: https://review.monogon.dev/c/monogon/+/1808\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "b7ff592e4f08022df5d980a03a396f4ff5330b29",
      "tree": "fb6173e39e0423c47f897939277ae68bd218e346",
      "parents": [
        "e59e6e1ec670e6315fb8ce7fefd7a8551aec75db"
      ],
      "author": {
        "name": "Leopold Schabel",
        "email": "leo@monogon.tech",
        "time": "Wed Jun 14 11:57:41 2023 +0200"
      },
      "committer": {
        "name": "Leopold Schabel",
        "email": "leo@monogon.tech",
        "time": "Wed Jun 14 11:18:26 2023 +0000"
      },
      "message": "intellij: update aspect path\n\nUpstream change:\nhttps://github.com/bazelbuild/intellij/commit/d1a5ccc3d4d971224faafc6684e0216855e59d47\n\nChange-Id: I287fae1dcff38164eaea3aeaecf768247b8302c5\nReviewed-on: https://review.monogon.dev/c/monogon/+/1805\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "e59e6e1ec670e6315fb8ce7fefd7a8551aec75db",
      "tree": "bc642135ff1f2911e55942c2f1246c94d2a97370",
      "parents": [
        "6c45434189e387b234109b68b1ed5a8f2cd5b439"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Jun 13 16:11:43 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Jun 13 18:52:29 2023 +0000"
      },
      "message": "cloud/bmaas: first round of indexes\n\nThese are based on inspecting the production database, and should be\nenough to get us out of the woods wrt. BMDB performance.\n\nChange-Id: Ice285f25bc1d2825a04750fc6d62ef0925b9d643\nReviewed-on: https://review.monogon.dev/c/monogon/+/1804\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "6c45434189e387b234109b68b1ed5a8f2cd5b439",
      "tree": "4cff8bb2fac00df28699559256ce7649b38877e1",
      "parents": [
        "46bf7d6c6437dfbf9dcc1e1d7d80fcc1c601f9b5"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Jun 01 12:23:38 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Jun 13 13:44:46 2023 +0000"
      },
      "message": "m/node: build Linux with modules\n\nThis introduces modules into our Linux build. I originally didn\u0027t want\nto do this, this is why this wasn\u0027t done until now. But various things\nin the kernel weren\u0027t set up for this, for example the AMD and Intel KVM\nmodules cannot both be loaded, only the first one loaded works. Also,\nthe Linux kernel cannot load firmware for built-in modules reliably as\nthe filesystem it tries to load it from is not always mounted first,\neven if the kernel itself mounts it.\n\nThe firmware issue was brought up multiple times on LKML, but Linus is\nof the opinion that the firmware should be next to the kernel module,\nthus either built-in (not viable for licensing and size reasons) or the\nmodules need to be loadable and on the same filesystem as the firmware.\n\nThus unless we want to carry signifcant patches against the Kernel in a\ndeadlock-prone area, we are forced to adopt a design with loadable\nmodules (or ship everything twice in an initramfs which is also not\ndesirable).\n\nThe kernel config currently only has the modules as non-builtin which\nrequire firmware, everything else has been left as-is. For boot-time\nperformance it would eventually be a good idea to move to a setup with\nmore modules once we\u0027re confident in the implementation and everything\ncan deal with late-loaded modules/devices.\n\nAs a drive-by fix this also moves the kernel builds to out-of-tree so\nthat we no longer pollute the source folder. Bazel protected us from\nserious issues due to this, but it\u0027s still bad practice.\n\nChange-Id: Iced8e12234565e5b7447e732716651e05e67d55b\nReviewed-on: https://review.monogon.dev/c/monogon/+/1791\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "46bf7d6c6437dfbf9dcc1e1d7d80fcc1c601f9b5",
      "tree": "19b26feaf61870790ce3b27dac3623cba40e6119",
      "parents": [
        "c7b036bca213962a7e60f3edb47624606799d074"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Jun 01 12:24:19 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Jun 13 13:44:46 2023 +0000"
      },
      "message": "m/n/c/devmgr: init\n\nAdd a minimal device manager based on kobject/uevents. Currently this\nonly loads kernel modules. Further functionality will be added in\nsubsequent CLs.\n\nChange-Id: I444ecdaff3f8ddb9ec169b094ba03e169dd70c4e\nReviewed-on: https://review.monogon.dev/c/monogon/+/1790\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "c7b036bca213962a7e60f3edb47624606799d074",
      "tree": "f0385f1ff6fe9a9fe41f62f32c0079006a1c5038",
      "parents": [
        "5832cd92957a6933c0fd644496d957ea2d8ef36d"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Jun 01 12:23:57 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Jun 13 13:44:46 2023 +0000"
      },
      "message": "m/p/kmod: init\n\nThis adds a package for working with Linux kernel loadable modules in\nGo. It contains syscall wrappers for loading and unloading modules, a\nmetadata format for fast lookup of modules handling devices using a\ncustom radix tree, parsers for module info metadata and various utility\nfunctions and data structures.\n\nA significant amount of the code in here has no formal spec and is\nwritten against behavior and information extracted from the reference\nkmod code as well as the Linux kernel itself.\n\nChange-Id: I3d527f3631f4dd1832b9cfba2d50aeb03a2b88a8\nReviewed-on: https://review.monogon.dev/c/monogon/+/1789\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "5832cd92957a6933c0fd644496d957ea2d8ef36d",
      "tree": "23d8faa7707807c1da543dbb91840c308790d694",
      "parents": [
        "0e291a193cbfd0b169e749e7f28adc954a58f560"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Jun 13 13:09:55 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Jun 13 13:26:12 2023 +0000"
      },
      "message": "cloud/bmaas/bmdb/webug: Use a flag for strict consistency\n\nChange-Id: I4ef6372108e4ada94a70525c6ec335e305dca320\nReviewed-on: https://review.monogon.dev/c/monogon/+/1801\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "0e291a193cbfd0b169e749e7f28adc954a58f560",
      "tree": "01b7ad51279b9060c3c967a0061826d37dbfaf01",
      "parents": [
        "4264b8c641109c05c4828b40cd2e01e686890903"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Jun 01 12:22:45 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Jun 13 13:03:53 2023 +0000"
      },
      "message": "m/node: clean up DNS service\n\nThe primary change in here is that CoreDNS now only listens on the\nloopback interface by default.\nThis fixes #217 as it cannot be accessed from the outside anymore.\nSince the containers do not share the host network namespace, they can\nnow no longer access the DNS service. This is solved by introducing a\nnew Network Service API to add listener IPs and using a link-local IP,\n169.254.77.53 for the container DNS.\nWhile at it, I cleaned up various parts of the DNS code.\n\nChange-Id: Id7b618f62690032db335e8478b9de84410c210a1\nReviewed-on: https://review.monogon.dev/c/monogon/+/1759\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "4264b8c641109c05c4828b40cd2e01e686890903",
      "tree": "c890d91434d3be41b12291338c55c7d0baf61315",
      "parents": [
        "44cacd6bd39f0d70aab912e4d02f2ef2e453bc4d"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Jun 12 23:54:58 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Jun 13 09:40:46 2023 +0000"
      },
      "message": "cloud: replace klog with klog/v2\n\nChange-Id: Ie54ef593825fdc72409da38ab1a6244e94db9eb9\nReviewed-on: https://review.monogon.dev/c/monogon/+/1799\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "44cacd6bd39f0d70aab912e4d02f2ef2e453bc4d",
      "tree": "1ab3deae3f63c854bf4e2a89f25937ad062a6130",
      "parents": [
        "f9e3a6558f8725123e4cde38098e80c1167fb47c"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Jun 12 23:54:45 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Jun 13 09:40:46 2023 +0000"
      },
      "message": "cloud: validate that there are not positional arguments\n\nflag.Parse() parses arguments after boolean flags as positional argument.\nThis produces unexpected behaviour like this:\n```\n\u003e -a \"true\" -b \"true\"\na: false\n\n\u003e -a -b \"true\"\nb: true\n```\n\nChange-Id: I0f8555fc45acf305a5efd365a6eae03eb8930942\nReviewed-on: https://review.monogon.dev/c/monogon/+/1798\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "f9e3a6558f8725123e4cde38098e80c1167fb47c",
      "tree": "7fb7d5397c0bf559e7d66f93565ac429cf489048",
      "parents": [
        "fe3d8fd61a81c09a1544d8cf1e13326c179c5972"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Jun 06 17:39:52 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Jun 07 11:43:47 2023 +0000"
      },
      "message": "cloud/bmaas: correctly format table\n\nChange-Id: Iafa4967d655c31f107167a82909eabc21bb4e2c5\nReviewed-on: https://review.monogon.dev/c/monogon/+/1792\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "fe3d8fd61a81c09a1544d8cf1e13326c179c5972",
      "tree": "d1803d9e307e5aea697c02fcb17e82e2c4fb605d",
      "parents": [
        "90a70a0e1cab83ba1601d355d07f285dff0d4d55"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue May 30 20:50:09 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Jun 06 12:11:51 2023 +0000"
      },
      "message": "m/n/core/roleserve: rework cluster membership, reuse control plane connections\n\nThis changes up roleserver internals to simplify the handling of cluster\nmembership state. The end goal is to allow reusing control plane gRPC\nconnections across different components in a node, but the refactor goes\na bit beyond that.\n\nEver since the introduction of the rpc resolver, we have effectively\nsimplifies the control plane startup problem. This is because the\nresolver allows the rest of the system to dynamically switch between\ndifferent gRPC endpoints for the control plane.\n\nWhat this means is that some of the existing complexity in the\nroleserver (which predates the resolver) can be thrown away. Notably, we\nremove the ClusterMembership structure, and replace it with two\nsignificantly simpler structures that represent two separate facts about\nhe local node:\n\n1. localControlPlane carries information about whether this node has a\n   locally running control plane. This is only used by the statuspusher\n   (to report whether the control plane is running) and by the\n   Kubernetes control plane.\n\n2. curatorConnection carries the credentials, resolver and an open gRPC\n   connection to the control plane, and is the only roleserver\n   EventValue now used by the vast majority of the roleserver runnables.\n\nThe resulting code, especially inside the control plane roleserver\nrunnable, is now less complex, at the cost of a bit of an ugly refactor.\n\nChange-Id: Idbe1ff2ac3bfb2d570bed040a2f78ccabb66caba\nReviewed-on: https://review.monogon.dev/c/monogon/+/1749\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "90a70a0e1cab83ba1601d355d07f285dff0d4d55",
      "tree": "d72351725c2d58ba3194e40f85fa5730ab2a798c",
      "parents": [
        "ce68ab953ef5501a3da3367372daf25801bc0ee7"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue May 30 15:15:27 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Jun 06 12:11:51 2023 +0000"
      },
      "message": "m/n/core/roleserve: do not store cluster directory, populate resolver earlier\n\nThis cleans up the roleserver code slightly, as I\u0027ve noticed the cluster\ndirectory actually does not need to be stored anymore now that we have\nthe rpc resolver.\n\nChange-Id: Ibe9f55691602bc937205c5fb54833683e80d4804\nReviewed-on: https://review.monogon.dev/c/monogon/+/1748\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "ce68ab953ef5501a3da3367372daf25801bc0ee7",
      "tree": "898dc33bb8a97345b6c3e1ace3ec29c1eb6a5234",
      "parents": [
        "3a3c517696210f23f2c1d74d766ddf5750a3f4b8"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Jun 06 03:32:39 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Jun 06 11:20:51 2023 +0000"
      },
      "message": "m/t/ktest: allow more memory and extra fssepcs\n\nktest until now used the QEMU default memory which is only 128MiB which\ncan be insufficent for tests with more data. Increase that to 1GiB\nwhich is a more reasonable limit. Since ktest doesn\u0027t use any filesystem\ncache in practice this shouldn\u0027t be using much more memory.\n\nAlso allow adding additional fsspecs to ktest which get integrated into\nthe test initramfs.\n\nChange-Id: Ib1a1611cb8e3fdce11a3fac7c0c1ed04097032ea\nReviewed-on: https://review.monogon.dev/c/monogon/+/1788\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "3a3c517696210f23f2c1d74d766ddf5750a3f4b8",
      "tree": "f20c99b0329b5895948e1cef5991dde8e5483a79",
      "parents": [
        "fd6d4ebffd699ed87cd8bb41dd7a74e40cbe519c"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Jun 01 19:54:17 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Jun 06 01:46:23 2023 +0000"
      },
      "message": "m/c/metroctl/test: deflake test\n\nThis test was flaky as the node picked to run takeownership against was\ndependent on map key order. Only the first node runs the relevant\ncontrol plane services, thus if the second node was iterated over first,\nthe test broke. Fix this by using the NodeIDs slice to get deterministic\nordering and always pick the first node.\n\nChange-Id: Id4ac162a8295be4e84ad439ac5b70ff5a968af04\nReviewed-on: https://review.monogon.dev/c/monogon/+/1784\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "fd6d4ebffd699ed87cd8bb41dd7a74e40cbe519c",
      "tree": "8cb613a43199be0dd5a93d98955c95f8d3e7779d",
      "parents": [
        "f1628ac0972b8ee7da19322514dc229872b5982b"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu May 25 14:45:48 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed May 31 12:25:21 2023 +0000"
      },
      "message": "m/node: introduce node storage setting and cluster policy\n\nThis adds NodeStorageSecurity and a corresponding\nClusterConfiguration.StorageSecurityPolicy, and pipes it into the\nMetropolis node bootstrap and registration flow.\n\nAll the various settings have so far only been tested manually. For now\nthe default behaviour (which is exercised by tests) is the same as\npreviously: require encryption and authentication.\n\nIn the future, we will have to expand our end-to-end testing to properly\nexercise all the various settings and verify their enforcement and\neffect. But that has to come in a follow-up CR as this one is already\nlarge enough as is.\n\nChange-Id: I76f3e37639ef02f4fc708af47ae5014408dc7c21\nReviewed-on: https://review.monogon.dev/c/monogon/+/1747\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "f1628ac0972b8ee7da19322514dc229872b5982b",
      "tree": "9720402ab66d83dbd69844ffea60403e73756f26",
      "parents": [
        "2b0f3d3df1fd3f71b57bb2ea581a649678b2451e"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu May 25 14:43:19 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed May 31 12:25:21 2023 +0000"
      },
      "message": "m/n/core/localstorage/crypt: support more enc/auth modes\n\nThis is in preparation for introducing configurable disk\nencryption/authentication policies in Metropolis (eg. low integrity\nmode).\n\nWe also use the opportunity to add some tests for the newly refactored\ncrypt library. All modes go through an end-to-end test making sure data\nis preserved and repeatedly mapping/unmapping the device works.\n\nThis change also disables insecure mode in debug builds. The equivalent\nfunctionality will be re-established at a higher level in the cluster\ncode in a subsequent change, alongside the encryption/authentication\npolicy code.\n\nChange-Id: I85db001c7c37a918cb491b1fcc3a51ea1d715817\nReviewed-on: https://review.monogon.dev/c/monogon/+/1724\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "2b0f3d3df1fd3f71b57bb2ea581a649678b2451e",
      "tree": "1018cd62c66bff7c239ae4df9ff076b4b4c832c9",
      "parents": [
        "886c386f9acf84d2600878c61e5f1822a5fb8c1b"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed May 03 15:39:11 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed May 31 11:29:13 2023 +0000"
      },
      "message": "m/n/c/network: set status with static config\n\nThis makes the static network service also set the network state if no\nautoconfiguration is in use.\nThis is currently quite hacky, it essentially checks if any interface\nuses  IPv4 autoconfig/DHCP and if not it choses the first IPv4 address\nand sets that as the external address.\n\nChange-Id: I53cebfaa373512eec3d26c59640c0328297acf32\nReviewed-on: https://review.monogon.dev/c/monogon/+/1644\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "886c386f9acf84d2600878c61e5f1822a5fb8c1b",
      "tree": "e7c747d479e3d9854233894db49dc0a77c9ed43f",
      "parents": [
        "8180de90e9b90601cb87feac51426e7f39abc747"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue May 23 16:47:41 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue May 30 20:37:36 2023 +0000"
      },
      "message": "c/s/e/cli: add equinix api cli tooling\n\nThis is a fairly simple and hacked together cli but it does its job for basic maintenance tasks\n\nChange-Id: I043c12b930546f9405b9f8190326724122f1c0aa\nReviewed-on: https://review.monogon.dev/c/monogon/+/1704\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "8180de90e9b90601cb87feac51426e7f39abc747",
      "tree": "dfe750f650d7d3b16972f541e521d3e01f3898f2",
      "parents": [
        "7c38eef75b395b0515e34e2059091f8b0f8d3daf"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu May 11 19:45:37 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue May 30 20:37:36 2023 +0000"
      },
      "message": "c/s/e/wrapngo: add more api wrappers\n\nChange-Id: I826a799cccc609d95b1ea3bd933b019558690c59\nReviewed-on: https://review.monogon.dev/c/monogon/+/1556\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "7c38eef75b395b0515e34e2059091f8b0f8d3daf",
      "tree": "636f2fa665d79f14109e10a3abc7d277b1ab73a3",
      "parents": [
        "f2af76024340e782002f5d07333e2f3d09031554"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed May 24 14:48:14 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue May 30 16:29:11 2023 +0000"
      },
      "message": "third_party/linux: refresh config\n\nRan oldconfig from 5.15.104, no functional changes intended.\n\nThis is to make subsequent changes easier to review.\n\nChange-Id: I420073d3c8fdc8ce96a4ec22061c4158d9f99a9e\nReviewed-on: https://review.monogon.dev/c/monogon/+/1709\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "f2af76024340e782002f5d07333e2f3d09031554",
      "tree": "fcdf868bbbd891404514b5ee06a6716ab8e8d9fb",
      "parents": [
        "2d1ebd3567567d9e6563776e637006c1d8d88e68"
      ],
      "author": {
        "name": "Florian Klink",
        "email": "flokli@flokli.de",
        "time": "Sat May 27 17:55:21 2023 +0300"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon May 29 21:11:43 2023 +0000"
      },
      "message": "metropolis/node/core/minit: update year in copyright header\n\nThis updates the copyright line to include 2023.\n\nChange-Id: I8442cb10d369ee1a13485f601242fee65c210ede\nReviewed-on: https://review.monogon.dev/c/monogon/+/1725\nVouch-Run-CI: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "2d1ebd3567567d9e6563776e637006c1d8d88e68",
      "tree": "00305a6b2ddf285998adc442a893e4ca9a22773e",
      "parents": [
        "c59c515435eff154d15c8f4f84ba9b83f93a94c8"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue May 23 01:53:12 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue May 23 13:25:20 2023 +0000"
      },
      "message": "build/toolchain: remove deprecated use of @bazel_tools\n\n@bazel_tools//platforms will be removed with bazel 6.\nhttps://github.com/bazelbuild/bazel/issues/8622\n\nChange-Id: Iee484f68d76d83ec6d874d0eb4457bb273dc5ed8\nReviewed-on: https://review.monogon.dev/c/monogon/+/1703\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "c59c515435eff154d15c8f4f84ba9b83f93a94c8",
      "tree": "b78a15dc2e31d881a8c03b4fb2ca4baad48d413a",
      "parents": [
        "c3b0828e6e3913eec277af22385f346bf0710bfa"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu May 11 16:15:30 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon May 15 10:59:19 2023 +0000"
      },
      "message": "cloud/bmaas: do not start/recover agent on installed machines\n\nThis prevents us from perpetually restarting machines (or otherwise\nattempting to get the agent running) on machines that have a \u0027fulfilled\u0027\ninstallation request, ie. machines with a machine generation in their\ninstallation request/report tags.\n\nThe recovery flow will still kick in when a new installation request\ncomes in after a machine has been sucesffuly installed, and that will\nstill cause a reboot loop (as even rebooting the machine does not allow\nus to start an agent anymore if it has been installed). But we\u0027ll fix\nthat later.\n\nChange-Id: I49bb81be5d35ef600e18021bdf98bb207bb8d5a7\nReviewed-on: https://review.monogon.dev/c/monogon/+/1672\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "c3b0828e6e3913eec277af22385f346bf0710bfa",
      "tree": "fc7b8d7130bff9f6167193c2060db4f6806ba29f",
      "parents": [
        "d03df119187ac7c00c07be585e20f790cc0daab4"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu May 04 16:39:15 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon May 08 12:21:25 2023 +0000"
      },
      "message": "cloud/bmaas/bmdb/webug: add color coding for host status\n\nTo allow easier understanding of a backoff without opening the machine itself,\nits handy to have a color coding for the provider host status. Currently it only displays\nrunning as green and everything else as red, but that should be fine for now.\n\nChange-Id: I5f16cd6a0b14dc595c94f6ca1e647d3ba1f21d95\nReviewed-on: https://review.monogon.dev/c/monogon/+/1647\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "d03df119187ac7c00c07be585e20f790cc0daab4",
      "tree": "62c90dc3f6de7de0f2d35818adb558b7a42b3baf",
      "parents": [
        "93b6fadb35d57b685ceb44530baaa79a7ed61fa4"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu May 04 16:38:49 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon May 08 12:21:25 2023 +0000"
      },
      "message": "cloud/bmaas/bmdb/webug: add location tag to host list\n\nChange-Id: I86e00fe3534cdc62fef73931647f15d6346ea1bf\nReviewed-on: https://review.monogon.dev/c/monogon/+/1646\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "93b6fadb35d57b685ceb44530baaa79a7ed61fa4",
      "tree": "adb4115e12e90bd836bcd4183d95a83aec4b7ecd",
      "parents": [
        "ab583b389efd2f334dda56e858fa298987d15cc8"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu May 04 16:35:17 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon May 08 12:21:25 2023 +0000"
      },
      "message": "cloud/bmaas/bmdb/webug: rename .html to .gohtml\n\nIntelliJ doesn\u0027t like overriding the type manually,\nso lets just stick to their standard.\n\nChange-Id: Ie533d884b06c62d6da6b8504051737b239fb8489\nReviewed-on: https://review.monogon.dev/c/monogon/+/1645\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "ab583b389efd2f334dda56e858fa298987d15cc8",
      "tree": "e9592d2a3173807168be265e3728fead655b0e1e",
      "parents": [
        "a3904fc44595376bc725fed7ac74dfa80d1ada94"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue May 02 22:41:45 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed May 03 13:31:56 2023 +0000"
      },
      "message": "m/n/core: always start network service\n\nFix logic bug causing the network service not to be started when\nstatic network config is in use.\n\nWe really need tests for this.\n\nChange-Id: I8ae29809ee453891f0781aa4e1b9f7a160610bff\nReviewed-on: https://review.monogon.dev/c/monogon/+/1643\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "a3904fc44595376bc725fed7ac74dfa80d1ada94",
      "tree": "47d1177071dd190b6409731959d7bc471aaa7229",
      "parents": [
        "ca9cfcf9cfbb0ae46ee4f6f0d207cdbd7085e460"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue May 02 19:33:52 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed May 03 09:47:02 2023 +0000"
      },
      "message": "m/n/c/l/crypt: select partitions more specifically\n\nThis changes partition selection to only consider block devices which\ncontain the ESP we booted from if known.\n\nThis prevents us from mounting spurious partitions sharing the same\ntype identifiers.\n\nWhile at it, convert to our GPT library.\n\nChange-Id: Ie9f5bd596f793439a467759d5066529f3912028b\nReviewed-on: https://review.monogon.dev/c/monogon/+/1641\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "ca9cfcf9cfbb0ae46ee4f6f0d207cdbd7085e460",
      "tree": "772b7ebfbdfb6c0544860a919a346bcb462874bd",
      "parents": [
        "0508c6df9ab35ebbf0f0367ba1f7ed74bdfb20c8"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue May 02 19:29:14 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed May 03 09:47:02 2023 +0000"
      },
      "message": "m/p/{efivars,sysfs}: use typed UUIDs\n\nThe functions ReadLoaderDevicePartUUID and DeviceByPartUUID passed\naround UUIDs as strings. This is inconvenient as UUID strings are not\nnormalized and thus require special care.\n\nSwitch to Google\u0027s uuid library and use their type, same as most other\nthings in the monorepo.\n\nChange-Id: I19deed804cff7036f756257fbf5689570cccc812\nReviewed-on: https://review.monogon.dev/c/monogon/+/1640\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "0508c6df9ab35ebbf0f0367ba1f7ed74bdfb20c8",
      "tree": "93f0a16c0770ad473d5ad0b89ddcf00bea652293",
      "parents": [
        "f0b22ff77c0126ac092aa1c6965f08a7c50002a1"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue May 02 18:56:03 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed May 03 09:47:02 2023 +0000"
      },
      "message": "m/n/c/cluster: fix logic error in bootstrap\n\nThere was a missing condition in there, causing the code to erroneously\nreturn with an error even though none occurred.\n\nChange-Id: Ib36f3f1606508655ed5990aed624ef51c45a3b97\nReviewed-on: https://review.monogon.dev/c/monogon/+/1638\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "f0b22ff77c0126ac092aa1c6965f08a7c50002a1",
      "tree": "e957358311a40371a2ab77f5c86d25035d03ed43",
      "parents": [
        "dea7cd0e3d0aeee571f25209d76b52cc495a389f"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue May 02 16:04:20 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue May 02 15:12:13 2023 +0000"
      },
      "message": "m/node: also log to ttyS1\n\nSome systems have their serial console connected to ttyS1, not ttyS0.\nWe currently have no way of passing this information to the system as we\nlock down boot parameters and\nthere is significant risk in letting people change this, both in terms\nof security (some kernel parameters can affect the integrity of the OS)\nas well as availability as such a setting needs to be respected by both\nA and B loaders, thus any misconfiguration could make the node\nnon-functional without an obvious way to roll back.\n\nThus this just adds ttyS1 to the list of serial consoles for the time\nbeing. When we have such a mechanism, we\u0027ll likely undo the hardcoding\nof all consoles anyways.\n\nFixes #216\n\nChange-Id: I2f35edad049ceae1bb5cfc22b89bf6a1664cfbf8\nReviewed-on: https://review.monogon.dev/c/monogon/+/1625\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "dea7cd0e3d0aeee571f25209d76b52cc495a389f",
      "tree": "9aa755c3488f2db6f15327a3f0feef7147a434a3",
      "parents": [
        "c50f69427b1bb1816fa1ae8ecbdd1f00651f1e7f"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Apr 26 13:58:17 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 27 12:34:43 2023 +0000"
      },
      "message": "cloud/shepherd: add equinix API metrics\n\nThis adds the following signals to our interaction with the Equinix API:\n\n 1. Latency\n 2. Traffic\n 3. Errors\n 4. Saturation\n\nChange-Id: Ic2d5e36a7a26ab906ac1c2fa6741ebf86b9e551a\nReviewed-on: https://review.monogon.dev/c/monogon/+/1606\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "c50f69427b1bb1816fa1ae8ecbdd1f00651f1e7f",
      "tree": "0db95195b72142bfbfd9054d2505d40c99ccc6a4",
      "parents": [
        "2bffb6fd2e9af6c4b0e79a1d69a4be1a3275ba40"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Apr 24 18:27:22 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Apr 25 12:45:16 2023 +0000"
      },
      "message": "cloud/bmaas/bmdb: implement BMDB client metrics\n\nThis implements some basic BMDB metrics exported by any client code\nusing the BMDB.\n\nIt also enables their use in the Shepherd and BMSRV.\n\nChange-Id: I1d5e82fd2c34a7bfd42f37fad540d69f7b23f347\nReviewed-on: https://review.monogon.dev/c/monogon/+/1600\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "2bffb6fd2e9af6c4b0e79a1d69a4be1a3275ba40",
      "tree": "f9b1d0995aba398b61f8de21be877ea50ecd1309",
      "parents": [
        "fbda89eeab18b56d0d9908829532e8c86c5e9e6b"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 24 19:06:10 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Apr 25 12:03:12 2023 +0000"
      },
      "message": "c/b/b/reflection: support bigint OSInstallationRequest\n\nChange-Id: Id677ec97f2acd8102bb0e8a5366d54db8dd53d13\nReviewed-on: https://review.monogon.dev/c/monogon/+/1604\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "fbda89eeab18b56d0d9908829532e8c86c5e9e6b",
      "tree": "df7d6823c4315c4d69b21def8f7ad5cbe5b10d55",
      "parents": [
        "00cf57dd411af5f5c9aa21ced2a2d6c67729297c"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Apr 24 17:43:58 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Apr 25 11:56:50 2023 +0000"
      },
      "message": "cloud: enable prometheus server\n\nThis makes cloud components start a Prometheus server on a separate port\n(:4243 by default) using either gRPC TLS credentials or plain HTTP.\n\nThe Prometheus server currently only export the standard Go/Process\nmetrics that the default Prometheus library exports.\n\nChange-Id: I9f2ae20c34446c0e10a946d4a93251764f5d2fce\nReviewed-on: https://review.monogon.dev/c/monogon/+/1599\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "00cf57dd411af5f5c9aa21ced2a2d6c67729297c",
      "tree": "bdd35f818c7aca6d2f0bac93501d7a56fcfc2911",
      "parents": [
        "afd3cf8bb5c99e9a8db23a5f435f7c1e31c96f91"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 20 11:19:00 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Apr 25 11:56:50 2023 +0000"
      },
      "message": "cloud/bmaas: split ShepherdAccess into Shepherd{AgentStart,Recovery}\n\nThis effectively undoes our previous attempted consolidation of all\nShepherd accesses under one tag. We now use two separate tags for the\ntwo main Shepherd work processes, and mutually exclude them in SQL.\n\nWe do this so that we can see more clearly in work history (and in\ngeneral when processing machines) what the Shepherd is actually trying\nto do to a machine.\n\nThe downside of this implementation is that we now extend the BMDB/ETP\nmodel to being able to mutually exclude different processes. This is\neasy enough to express in SQL, but might make future generic modelling\nmore difficult.\n\nAn alternative would be to add an extra field to work/work history that\nacts as an informative field for operators to know the details of a work\nitem. We might still want to do that in the future. However, that field\nbeing freeform, we could not really rely on it for machine parsing.\n\nChange-Id: I9578ac000f6112514fe587e9fddf7e85671c6437\nReviewed-on: https://review.monogon.dev/c/monogon/+/1584\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "afd3cf8bb5c99e9a8db23a5f435f7c1e31c96f91",
      "tree": "092e34305b19af962cac644a1551822c436f1060",
      "parents": [
        "fac487481bf56e9510ff9a528c6729b2427d42b1"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Apr 19 17:43:46 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Apr 25 11:56:50 2023 +0000"
      },
      "message": "cloud/shepherd/equinix: update provider extra data\n\nThis adds a new sub-component to the Equinix Shepherd, the Updater.\n\nThe Updater periodically scans all machines backed by the Equinix\nprovider in the BMDB and queries the Equinix API for their status. The\nstatus then populates the new \u0027Provided\u0027 row data.\n\nChange-Id: I99657545aabfb13d71e165d36ce549c852feaf49\nReviewed-on: https://review.monogon.dev/c/monogon/+/1578\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "fac487481bf56e9510ff9a528c6729b2427d42b1",
      "tree": "57134f773547af8a674215aee45dc53827373cd6",
      "parents": [
        "0b63df4c126e0ded722826b1cb612bad71822165"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 24 19:04:55 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Apr 25 10:58:55 2023 +0000"
      },
      "message": "cloud/agent: default to detected NetworkConfig installing OS\n\nThe agent should pick the detected NetworkConfig if the OSInstallRequest\ndoes not contain a NetworkConfig\n\nChange-Id: I27f75735907b7c993dcd7002a863cd8fe00699fa\nReviewed-on: https://review.monogon.dev/c/monogon/+/1602\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "0b63df4c126e0ded722826b1cb612bad71822165",
      "tree": "6b2e6b8114869313fbdfbd0df396f6bb6da7927c",
      "parents": [
        "9a627617dbcfdd5d998a68bfd8d38597c694af0a"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 24 19:04:07 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Apr 25 10:58:55 2023 +0000"
      },
      "message": "m/p/common: set visibility to public\n\nTo allow usage inside cloud tooling the visibility needs to be public\n\nChange-Id: Ibcc4ca969e2de31c95f8ab8479ce2d7f4fb740d7\nReviewed-on: https://review.monogon.dev/c/monogon/+/1601\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "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"
    }
  ],
  "next": "6963c63bace3dbc4c4f95d2837ac4cf271be8d78"
}
