group = "root",
type = "notify",
user = "root",
+ args = [
+ "--mtls.id=node-exporter",
+ ],
deps = [
"${const:ExePrefix}metric-collector.service",
],
load("//bazel:go.bzl", "go_multi_library")
+load("//bazel:subst.bzl", "subst")
go_multi_library(
name = "metricbus",
"@com_github_godbus_dbus_v5//:dbus",
],
)
+
+subst(
+ name = "dbus_conf",
+ src = "dbus.conf.in",
+ out = "dbus.conf",
+ visibility = [
+ "//pkg:__pkg__",
+ ],
+)
+++ /dev/null
-<?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>
--- /dev/null
+<?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>
"//cmd/sd_register:sd_register@_systemd_service",
"//cmd/sd_register:sd_register_systemd_service",
"//cmd/sd_watcher",
+ "//metrics/metricbus:dbus_conf",
],
)
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 {
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",
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)
}
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"