cloud/bmaas/bmdb/scruffy: initialize, implement BMDB metrics
This creates a new BMaaS component, Scruffy the Janitor.
Scruffy will run a bunch of housekeeping jobs that aren't tied to a
particular provider or even region. Currently Scruffy just collects BMDB
metrics by periodically polling the BMDB SQL database.
Change-Id: Icafa714811757eaaf31fed43184ded8512bde067
Reviewed-on: https://review.monogon.dev/c/monogon/+/1819
Tested-by: Jenkins CI
Reviewed-by: Tim Windelschmidt <tim@monogon.tech>
diff --git a/cloud/bmaas/scruffy/cmd/BUILD.bazel b/cloud/bmaas/scruffy/cmd/BUILD.bazel
new file mode 100644
index 0000000..5e050bf
--- /dev/null
+++ b/cloud/bmaas/scruffy/cmd/BUILD.bazel
@@ -0,0 +1,18 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
+
+go_library(
+ name = "cmd_lib",
+ srcs = ["main.go"],
+ importpath = "source.monogon.dev/cloud/bmaas/scruffy/cmd",
+ visibility = ["//visibility:private"],
+ deps = [
+ "//cloud/bmaas/scruffy",
+ "//metropolis/cli/pkg/context",
+ ],
+)
+
+go_binary(
+ name = "cmd",
+ embed = [":cmd_lib"],
+ visibility = ["//visibility:public"],
+)
diff --git a/cloud/bmaas/scruffy/cmd/main.go b/cloud/bmaas/scruffy/cmd/main.go
new file mode 100644
index 0000000..e838834
--- /dev/null
+++ b/cloud/bmaas/scruffy/cmd/main.go
@@ -0,0 +1,19 @@
+package main
+
+import (
+ "context"
+ "flag"
+
+ "source.monogon.dev/cloud/bmaas/scruffy"
+ clicontext "source.monogon.dev/metropolis/cli/pkg/context"
+)
+
+func main() {
+ s := &scruffy.Server{}
+ s.Config.RegisterFlags()
+ flag.Parse()
+
+ ctx := clicontext.WithInterrupt(context.Background())
+ s.Start(ctx)
+ <-ctx.Done()
+}