diff --git a/engine/resources/hostname.go b/engine/resources/hostname.go index c767af69..7a2b42b3 100644 --- a/engine/resources/hostname.go +++ b/engine/resources/hostname.go @@ -23,6 +23,7 @@ import ( "github.com/purpleidea/mgmt/engine" "github.com/purpleidea/mgmt/engine/traits" + engineUtil "github.com/purpleidea/mgmt/engine/util" "github.com/purpleidea/mgmt/util" "github.com/godbus/dbus" @@ -36,7 +37,6 @@ func init() { const ( hostname1Path = "/org/freedesktop/hostname1" hostname1Iface = "org.freedesktop.hostname1" - dbusAddMatch = "org.freedesktop.DBus.AddMatch" ) // ErrResourceInsufficientParameters is returned when the configuration of the @@ -113,7 +113,7 @@ func (obj *HostnameRes) Watch() error { } defer bus.Close() callResult := bus.BusObject().Call( - "org.freedesktop.DBus.AddMatch", 0, + engineUtil.DBusAddMatch, 0, fmt.Sprintf("type='signal',path='%s',interface='org.freedesktop.DBus.Properties',member='PropertiesChanged'", hostname1Path)) if callResult.Err != nil { return errwrap.Wrap(callResult.Err, "Failed to subscribe to DBus events for hostname1") diff --git a/engine/resources/nspawn.go b/engine/resources/nspawn.go index 43661591..df8c4cff 100644 --- a/engine/resources/nspawn.go +++ b/engine/resources/nspawn.go @@ -25,6 +25,7 @@ import ( "github.com/purpleidea/mgmt/engine" "github.com/purpleidea/mgmt/engine/traits" + engineUtil "github.com/purpleidea/mgmt/engine/util" "github.com/purpleidea/mgmt/util" systemdDbus "github.com/coreos/go-systemd/dbus" @@ -154,7 +155,7 @@ func (obj *NspawnRes) Watch() error { defer bus.Close() // add a match rule to match messages going through the message bus - call := bus.BusObject().Call("org.freedesktop.DBus.AddMatch", 0, + call := bus.BusObject().Call(engineUtil.DBusAddMatch, 0, fmt.Sprintf("type='signal',interface='%s',eavesdrop='true'", dbusInterface)) // <-call.Done diff --git a/engine/resources/packagekit/packagekit.go b/engine/resources/packagekit/packagekit.go index e3a075fc..cc76212a 100644 --- a/engine/resources/packagekit/packagekit.go +++ b/engine/resources/packagekit/packagekit.go @@ -25,6 +25,7 @@ import ( "runtime" "strings" + engineUtil "github.com/purpleidea/mgmt/engine/util" "github.com/purpleidea/mgmt/util" "github.com/godbus/dbus" @@ -46,7 +47,6 @@ const ( PkPath = "/org/freedesktop/PackageKit" PkIface = "org.freedesktop.PackageKit" PkIfaceTransaction = PkIface + ".Transaction" - dbusAddMatch = "org.freedesktop.DBus.AddMatch" ) var ( @@ -197,10 +197,10 @@ func (obj *Conn) matchSignal(ch chan *dbus.Signal, path dbus.ObjectPath, iface s bus := obj.GetBus().BusObject() pathStr := fmt.Sprintf("%s", path) if len(signals) == 0 { - call = bus.Call(dbusAddMatch, 0, "type='signal',path='"+pathStr+"',interface='"+iface+"'") + call = bus.Call(engineUtil.DBusAddMatch, 0, "type='signal',path='"+pathStr+"',interface='"+iface+"'") } else { for _, signal := range signals { - call = bus.Call(dbusAddMatch, 0, "type='signal',path='"+pathStr+"',interface='"+iface+"',member='"+signal+"'") + call = bus.Call(engineUtil.DBusAddMatch, 0, "type='signal',path='"+pathStr+"',interface='"+iface+"',member='"+signal+"'") if call.Err != nil { break } diff --git a/engine/util/util.go b/engine/util/util.go index 79a93762..41af7379 100644 --- a/engine/util/util.go +++ b/engine/util/util.go @@ -36,6 +36,14 @@ import ( const ( // StructTag is the key we use in struct field names for key mapping. StructTag = "lang" + // DBusInterface is the dbus interface that contains genereal methods. + DBusInterface = "org.freedesktop.DBus" + // DBusAddMatch is the dbus method to receive a subset of dbus broadcast + // signals. + DBusAddMatch = DBusInterface + ".AddMatch" + // DBusRemoveMatch is the dbus method to remove a previously defined + // AddMatch rule. + DBusRemoveMatch = DBusInterface + ".RemoveMatch" ) // ResToB64 encodes a resource to a base64 encoded string (after serialization).