]> go.fuhry.dev Git - runtime.git/commitdiff
template-ize dbus policy in runtime-utils, fix systemd unit path main
authorDan Fuhry <dan@fuhry.com>
Wed, 8 Jul 2026 12:06:37 +0000 (08:06 -0400)
committerDan Fuhry <dan@fuhry.com>
Wed, 8 Jul 2026 12:06:37 +0000 (08:06 -0400)
cmd/mtls_exporter/BUILD.bazel
metrics/metricbus/BUILD.bazel
metrics/metricbus/dbus-1/dev.fuhry.runtime.metrics.conf [deleted file]
metrics/metricbus/dbus.conf.in [new file with mode: 0644]
pkg/BUILD.bazel
pkg/nfpmgen/config_generator.go
pkg/nfpmgen/main.go
pkg/runtime-utils.yaml

index 5b4786a208855ee975c1c1ca08c0024c39706599..1f4b6ecbe64677526e9a99aa5fa437ee4670c3a2 100644 (file)
@@ -26,6 +26,9 @@ systemd_service(
     group = "root",
     type = "notify",
     user = "root",
+    args = [
+        "--mtls.id=node-exporter",
+    ],
     deps = [
         "${const:ExePrefix}metric-collector.service",
     ],
index 54cbb3a1ca0fb3ab394c80099e6d1ab53fc00aa4..31855b8b988bae9d48e0baefc89d6bb44e149b35 100644 (file)
@@ -1,4 +1,5 @@
 load("//bazel:go.bzl", "go_multi_library")
+load("//bazel:subst.bzl", "subst")
 
 go_multi_library(
     name = "metricbus",
@@ -10,3 +11,12 @@ go_multi_library(
         "@com_github_godbus_dbus_v5//:dbus",
     ],
 )
+
+subst(
+    name = "dbus_conf",
+    src = "dbus.conf.in",
+    out = "dbus.conf",
+    visibility = [
+        "//pkg:__pkg__",
+    ],
+)
diff --git a/metrics/metricbus/dbus-1/dev.fuhry.runtime.metrics.conf b/metrics/metricbus/dbus-1/dev.fuhry.runtime.metrics.conf
deleted file mode 100644 (file)
index 8978141..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?> <!--*-nxml-*-->
-<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
-        "https://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
-
-<busconfig>
-    <policy user="node_exporter">
-        <allow own="dev.fuhry.runtime.metrics.MetricCollector.v1" />
-        <allow send_destination="dev.fuhry.runtime.metrics.MetricCollector.v1" />
-        <allow receive_sender="dev.fuhry.runtime.metrics.MetricCollector.v1" />
-    </policy>
-
-    <policy context="default">
-        <allow send_destination="dev.fuhry.runtime.metrics.MetricCollector.v1"
-            send_interface="dev.fuhry.runtime.metrics.MetricCollector.v1"
-            send_member="Ping" />
-
-        <allow send_destination="dev.fuhry.runtime.metrics.MetricCollector.v1"
-            send_interface="dev.fuhry.runtime.metrics.MetricCollector.v1"
-            send_member="Hello" />
-        
-        <allow send_destination="dev.fuhry.runtime.metrics.MetricCollector.v1"
-            send_interface="dev.fuhry.runtime.metrics.MetricCollector.v1"
-            send_member="Goodbye" />
-        
-        <allow send_destination="dev.fuhry.runtime.metrics.MetricCollector.v1"
-            send_interface="dev.fuhry.runtime.metrics.MetricCollector.v1"
-            send_member="Declare" />
-        
-        <allow send_destination="dev.fuhry.runtime.metrics.MetricCollector.v1"
-            send_interface="dev.fuhry.runtime.metrics.MetricCollector.v1"
-            send_member="Post" />
-    </policy>
-</busconfig>
diff --git a/metrics/metricbus/dbus.conf.in b/metrics/metricbus/dbus.conf.in
new file mode 100644 (file)
index 0000000..5d85331
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0"?> <!--*-nxml-*-->
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+        "https://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+
+<busconfig>
+    <policy user="node_exporter">
+        <allow own="${const:DbusPrefix}.metrics.MetricCollector.v1" />
+        <allow send_destination="${const:DbusPrefix}.metrics.MetricCollector.v1" />
+        <allow receive_sender="${const:DbusPrefix}.metrics.MetricCollector.v1" />
+    </policy>
+
+    <policy context="default">
+        <allow send_destination="${const:DbusPrefix}.metrics.MetricCollector.v1"
+            send_interface="${const:DbusPrefix}.metrics.MetricCollector.v1"
+            send_member="Ping" />
+
+        <allow send_destination="${const:DbusPrefix}.metrics.MetricCollector.v1"
+            send_interface="${const:DbusPrefix}.metrics.MetricCollector.v1"
+            send_member="Hello" />
+
+        <allow send_destination="${const:DbusPrefix}.metrics.MetricCollector.v1"
+            send_interface="${const:DbusPrefix}.metrics.MetricCollector.v1"
+            send_member="Goodbye" />
+
+        <allow send_destination="${const:DbusPrefix}.metrics.MetricCollector.v1"
+            send_interface="${const:DbusPrefix}.metrics.MetricCollector.v1"
+            send_member="Declare" />
+
+        <allow send_destination="${const:DbusPrefix}.metrics.MetricCollector.v1"
+            send_interface="${const:DbusPrefix}.metrics.MetricCollector.v1"
+            send_member="Post" />
+    </policy>
+</busconfig>
index a171e568e571b141dfc9ad4f391ef0d82c718b7f..6618f23c9cc2518e64bfd1ff85be6b68f00fd637 100644 (file)
@@ -17,6 +17,7 @@ nfpm_package(
         "//cmd/sd_register:sd_register@_systemd_service",
         "//cmd/sd_register:sd_register_systemd_service",
         "//cmd/sd_watcher",
+        "//metrics/metricbus:dbus_conf",
     ],
 )
 
index e3c8396209c74fd5ce7b68c943ca6e4c9bcdc6a6..52b397e1470a6a9d2fafe440f29470c950d692da 100644 (file)
@@ -104,6 +104,28 @@ func LoadNfpmConfig(yamlPath string, fileAllowlist []string, varOverrides subst.
        return out, nil
 }
 
+func (c *NfpmConfig) DiscoverBuildArtifacts() error {
+       wd, err := os.Getwd()
+       if err != nil {
+               return err
+       }
+       for _, entry := range c.Contents {
+               if strings.HasPrefix(entry.Source, "//") {
+                       // FIXME: don't hardcode k8-fastbuild here, it's probably x86-specific
+                       newsrc := path.Join(wd, "bazel-out", "k8-fastbuild", "bin", entry.Source[2:])
+                       newsrc, err = os.Readlink(newsrc)
+                       if err != nil {
+                               return fmt.Errorf(
+                                       "failed reading runfile %q (abspath: %q): %v\nwd: %q",
+                                       entry.Source, newsrc, err, wd)
+                       }
+                       entry.Source = newsrc
+               }
+       }
+
+       return nil
+}
+
 func (c *NfpmConfig) DiscoverBinaries(bazelBinDirs []string) error {
        wd, err := os.Getwd()
        if err != nil {
@@ -252,7 +274,7 @@ func (c *NfpmConfig) DiscoverSystemdUnits(bazelBinDirs []string) error {
 
                c.Config.Contents = append(c.Config.Contents, &files.Content{
                        Source:      f,
-                       Destination: "/usr/lib/systemd/" + destName,
+                       Destination: "/usr/lib/systemd/system/" + destName,
                        FileInfo: &files.ContentFileInfo{
                                Owner: "root",
                                Group: "root",
index 55c72fe2114b8c44ee6579e96f78c21aed1647c5..004614275a703eaed9f1fe069fc57a031d4da455 100644 (file)
@@ -73,6 +73,10 @@ func main() {
        debug("loaded nfpm config template: %s\ncwd: %s\nout: %s\nbazelBinDirs: %+v\n",
                *yamlFile, wd, *outFile, bazelBinDirs)
 
+       if err := c.DiscoverBuildArtifacts(); err != nil {
+               panic(err)
+       }
+
        if err := c.DiscoverBinaries(bazelBinDirs); err != nil {
                panic(err)
        }
index 763ca202ee720fe91056e971dcc80b8ea1770762..85e11d6f65b9a77004dd7bfbaccf708fc068a945 100644 (file)
@@ -14,7 +14,13 @@ description: Tools needed by virtually all ${const:OrgName} systems for service
 vendor: "${const:OrgName}"
 homepage: "https://go.fuhry.dev/runtime"
 license: "Proprietary"
-contents: []
+contents:
+  - src: "//metrics/metricbus/dbus.conf"
+    dst: "/usr/share/dbus-1/system.d/${const:DbusPrefix}.metrics.conf"
+    file_info:
+      owner: root
+      group: root
+      mode: 0644
 rename_rules:
   - src: "/usr/bin/${const:ExePrefix}ephs-client"
     dst: "/usr/bin/ephs"