c/agent: add hardware report

This adds an agent which currently just gathers hardware information and
dumps it to stdout.

Change-Id: Idb8518d3e40096dd3dd881808bc6ac98082083a0
Reviewed-on: https://review.monogon.dev/c/monogon/+/1067
Tested-by: Jenkins CI
Reviewed-by: Serge Bazanski <serge@monogon.tech>
diff --git a/cloud/agent/BUILD.bazel b/cloud/agent/BUILD.bazel
new file mode 100644
index 0000000..dbf3603
--- /dev/null
+++ b/cloud/agent/BUILD.bazel
@@ -0,0 +1,38 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library", "go_test")
+
+go_library(
+    name = "agent_lib",
+    srcs = [
+        "hwreport.go",
+        "main.go",
+    ],
+    importpath = "source.monogon.dev/cloud/agent",
+    visibility = ["//visibility:private"],
+    deps = [
+        "//cloud/agent/api",
+        "//metropolis/pkg/nvme",
+        "//metropolis/pkg/scsi",
+        "//metropolis/pkg/smbios",
+        "@com_github_mdlayher_ethtool//:ethtool",
+        "@com_github_vishvananda_netlink//:netlink",
+        "@org_golang_google_protobuf//encoding/prototext",
+        "@org_golang_x_sys//unix",
+    ],
+)
+
+go_binary(
+    name = "agent",
+    embed = [":agent_lib"],
+    visibility = ["//visibility:public"],
+)
+
+go_test(
+    name = "agent_test",
+    srcs = ["hwreport_test.go"],
+    data = glob(["testdata/**"]),
+    embed = [":agent_lib"],
+    deps = [
+        "//cloud/agent/api",
+        "@com_github_stretchr_testify//assert",
+    ],
+)