)]}'
{
  "commit": "52f7f291c1987fe98bd10d3ad79d4a0c8772ad03",
  "tree": "eaf212647f9bab001e62bb35647255b5f107bd2e",
  "parents": [
    "3ff5af330857b2aadcdae9d9e6ca37b7e5d2c56e"
  ],
  "author": {
    "name": "Lorenz Brun",
    "email": "lorenz@nexantic.com",
    "time": "Wed Jun 24 16:42:02 2020 +0200"
  },
  "committer": {
    "name": "Lorenz Brun",
    "email": "lorenz@nexantic.com",
    "time": "Wed Jun 24 16:42:02 2020 +0200"
  },
  "message": "Add nanoswitch and cluster testing\n\nAdds nanoswitch and the `switched-multi2` launch target to launch two Smalltown instances on a switched\nnetwork and enroll them into a single cluster. Nanoswitch contains a Linux bridge and a minimal DHCP server\nand connects to the two Smalltown instances over virtual Ethernet cables. Also moves out the DHCP client into\na package since nanoswitch needs it.\n\nTest Plan:\nManually tested using `bazel run //:launch -- switched-multi2` and observing that the second VM\n(whose serial port is mapped to stdout) prints that it is enrolled. Also validated by `bazel run //core/cmd/dbg -- kubectl get node -o wide` returning two ready nodes.\n\nX-Origin-Diff: phab/D572\nGitOrigin-RevId: 9f6e2b3d8268749dd81588205646ae3976ad14b3\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3d7283c44b40f5d1eb70843947b28c3ecc5dc2e9",
      "old_mode": 33188,
      "old_path": "BUILD",
      "new_id": "af967780695e1374d78c13e9e80d7489cfcc45a7",
      "new_mode": 33188,
      "new_path": "BUILD"
    },
    {
      "type": "modify",
      "old_id": "875d5f7b930e847287692da33f81f6d34595679b",
      "old_mode": 33188,
      "old_path": "build/fietsje/main.go",
      "new_id": "55fc23898709a507c49dea790d989a82d39b28a8",
      "new_mode": 33188,
      "new_path": "build/fietsje/main.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3e3e57096932dc25c82e3595203a63f0d9dea7a8",
      "new_mode": 33188,
      "new_path": "core/cmd/launch-multi2/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0b7ef4e962de6e7b740534056c8f6d7d705426a4",
      "new_mode": 33188,
      "new_path": "core/cmd/launch-multi2/main.go"
    },
    {
      "type": "modify",
      "old_id": "100d35075bc33be89d3d21e091fafda87f77d186",
      "old_mode": 33188,
      "old_path": "core/cmd/launch/main.go",
      "new_id": "ff5c4d5da49a030e11639d545ab95cae7c810230",
      "new_mode": 33188,
      "new_path": "core/cmd/launch/main.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c70e20fcad3693e6eb6e454a6b1f600ca189f132",
      "new_mode": 33188,
      "new_path": "core/cmd/nanoswitch/BUILD"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "73e513525f42bda5f8cccc4b4c3f488d53ff37b2",
      "new_mode": 33188,
      "new_path": "core/cmd/nanoswitch/nanoswitch.go"
    },
    {
      "type": "modify",
      "old_id": "e8623409f3c0a28762e7fda86938b3b3b09e7a86",
      "old_mode": 33188,
      "old_path": "core/internal/api/BUILD.bazel",
      "new_id": "2f25fe6c555ee109ebc85c9682843cf4fbcc6bc3",
      "new_mode": 33188,
      "new_path": "core/internal/api/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "0a3614e57de867562b2b2f13b5f135cbd69536f1",
      "old_mode": 33188,
      "old_path": "core/internal/api/nodemanagement.go",
      "new_id": "4bc4659fce841b3c9982716df03fbfce70950972",
      "new_mode": 33188,
      "new_path": "core/internal/api/nodemanagement.go"
    },
    {
      "type": "modify",
      "old_id": "db00692370be47878bbc877e383af7ad5ce457d9",
      "old_mode": 33188,
      "old_path": "core/internal/common/setup.go",
      "new_id": "531b6888f1b8086afa57b3f7366762084c25d0f8",
      "new_mode": 33188,
      "new_path": "core/internal/common/setup.go"
    },
    {
      "type": "modify",
      "old_id": "5952b6f07ce216bd4a84b4596035d20643d21eec",
      "old_mode": 33188,
      "old_path": "core/internal/consensus/ca/ca.go",
      "new_id": "20f7c31b12d4fc5d865ad8ece30c07665599611f",
      "new_mode": 33188,
      "new_path": "core/internal/consensus/ca/ca.go"
    },
    {
      "type": "modify",
      "old_id": "d401c1ab78f1fad7bb8d19d4e83481d7c0382693",
      "old_mode": 33188,
      "old_path": "core/internal/consensus/consensus.go",
      "new_id": "5885aa83761f77cb59c209c74c59a04165255311",
      "new_mode": 33188,
      "new_path": "core/internal/consensus/consensus.go"
    },
    {
      "type": "modify",
      "old_id": "7e45086c12f3e2f82e0321472e2e4805d93ae3cb",
      "old_mode": 33188,
      "old_path": "core/internal/network/BUILD.bazel",
      "new_id": "9eefc1b3fff60a715427cade127144336d549fc0",
      "new_mode": 33188,
      "new_path": "core/internal/network/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "40ac372e85c8b4676b476d7ea9f19ec9e2d59692",
      "new_mode": 33188,
      "new_path": "core/internal/network/dhcp/BUILD.bazel"
    },
    {
      "type": "rename",
      "old_id": "983c25c06fa8fb41af230c13d0565e7d19a3e031",
      "old_mode": 33188,
      "old_path": "core/internal/network/dhcp.go",
      "new_id": "0eef2cc4c822d867d2c07c85468d33bf6d9e2da3",
      "new_mode": 33188,
      "new_path": "core/internal/network/dhcp/dhcp.go",
      "score": 70
    },
    {
      "type": "modify",
      "old_id": "00d7fb2d4c2f43ab07688af839d68b5517bc0db4",
      "old_mode": 33188,
      "old_path": "core/internal/network/main.go",
      "new_id": "2466e05d627815670a23d17f8185620277e88a9c",
      "new_mode": 33188,
      "new_path": "core/internal/network/main.go"
    },
    {
      "type": "modify",
      "old_id": "2cf88f4345277cdc4ff05a7b7bc32c3f8aab6f57",
      "old_mode": 33188,
      "old_path": "core/internal/node/main.go",
      "new_id": "8c40e9fd4bae7de7b8283ad023aa3a8161c8d5f2",
      "new_mode": 33188,
      "new_path": "core/internal/node/main.go"
    },
    {
      "type": "modify",
      "old_id": "cbbfd4d940a336ff1891b95c016ae125c6333d19",
      "old_mode": 33188,
      "old_path": "core/internal/node/setup.go",
      "new_id": "a9e841c91908df0f672237c2c960ba63f87c4949",
      "new_mode": 33188,
      "new_path": "core/internal/node/setup.go"
    },
    {
      "type": "modify",
      "old_id": "da3dcfa62dbc06513ffb02b5026ae7ab9a82c03e",
      "old_mode": 33188,
      "old_path": "core/internal/storage/blockdev.go",
      "new_id": "fc556e1e38672dadf34944b9b7b0f34c207953e1",
      "new_mode": 33188,
      "new_path": "core/internal/storage/blockdev.go"
    },
    {
      "type": "modify",
      "old_id": "9f5b6af09bd7d7a5493ba0ce9e5050f869e3d081",
      "old_mode": 33188,
      "old_path": "third_party/go/repositories.bzl",
      "new_id": "d2f9089c2f7a13860980a0315d40e3e03a953a1a",
      "new_mode": 33188,
      "new_path": "third_party/go/repositories.bzl"
    },
    {
      "type": "modify",
      "old_id": "99755c87a62effb1c73ff318ec103745ffd622d4",
      "old_mode": 33188,
      "old_path": "third_party/go/shelf.pb.text",
      "new_id": "dc58b2025a25b6196800aa6360b23efca5e5cd45",
      "new_mode": 33188,
      "new_path": "third_party/go/shelf.pb.text"
    },
    {
      "type": "modify",
      "old_id": "2d07037db64ab9919f5677a362e3fab2a1dcb62b",
      "old_mode": 33188,
      "old_path": "third_party/linux/linux-smalltown.config",
      "new_id": "b4f2df176f8419b0ec529822b71c2570b9ee45c4",
      "new_mode": 33188,
      "new_path": "third_party/linux/linux-smalltown.config"
    }
  ]
}
