summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta-openbmc-machines/meta-openpower/common/recipes-phosphor/dbus/openpower-dbus-interfaces-mapper-config-native.bb11
-rw-r--r--meta-openbmc-machines/meta-openpower/common/recipes-phosphor/dbus/phosphor-mapper-config-native%.bbappend1
-rw-r--r--meta-phosphor/classes/phosphor-mapper.bbclass52
-rw-r--r--meta-phosphor/classes/phosphor-mapperdir.bbclass4
-rw-r--r--meta-phosphor/common/recipes-phosphor/dbus/phosphor-dbus-interfaces-mapper-config-native.bb11
-rw-r--r--meta-phosphor/common/recipes-phosphor/dbus/phosphor-legacy-namespace-mapper-config-native.bb10
-rw-r--r--meta-phosphor/common/recipes-phosphor/dbus/phosphor-mapper-config-native.bb41
-rw-r--r--meta-phosphor/common/recipes-phosphor/dbus/phosphor-mapper.bb52
-rw-r--r--meta-phosphor/common/recipes-phosphor/dbus/phosphor-mapper/xyz.openbmc_project.ObjectMapper.service7
9 files changed, 188 insertions, 1 deletions
diff --git a/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/dbus/openpower-dbus-interfaces-mapper-config-native.bb b/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/dbus/openpower-dbus-interfaces-mapper-config-native.bb
new file mode 100644
index 000000000..1ef4adca2
--- /dev/null
+++ b/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/dbus/openpower-dbus-interfaces-mapper-config-native.bb
@@ -0,0 +1,11 @@
+SUMMARY="Add /org/open_power namespace to phosphor-mapper"
+DESCRIPTION="Add the /org/open_power path namespace and \
+org.open_power interface prefix to the mapper \
+watch list."
+
+inherit phosphor-mapper
+inherit native
+inherit obmc-phosphor-license
+
+PHOSPHOR_MAPPER_NAMESPACE_append = " /org/open_power"
+PHOSPHOR_MAPPER_INTERFACE_append = " org.open_power"
diff --git a/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/dbus/phosphor-mapper-config-native%.bbappend b/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/dbus/phosphor-mapper-config-native%.bbappend
new file mode 100644
index 000000000..d4a9d9187
--- /dev/null
+++ b/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/dbus/phosphor-mapper-config-native%.bbappend
@@ -0,0 +1 @@
+PHOSPHOR_MAPPER_CONFIGS_append = " openpower-dbus-interfaces-mapper-config-native"
diff --git a/meta-phosphor/classes/phosphor-mapper.bbclass b/meta-phosphor/classes/phosphor-mapper.bbclass
new file mode 100644
index 000000000..26f369b14
--- /dev/null
+++ b/meta-phosphor/classes/phosphor-mapper.bbclass
@@ -0,0 +1,52 @@
+# Common code for recipes that modify the phosphor-mapper
+# configuration.
+#
+# Typically it is not desired to monitor all dbus traffic
+# on a system and as such, the phosphor-mapper has command
+# line options to control what path namespaces and dbus
+# interfaces it will keep track of.
+#
+# The Phosphor layer by default configures the mapper to
+# watch xyz.openbmc_project interfaces and paths only. This
+# configuration file is intended to be inherited by
+# native recipes in other layers that wish to add namespaces
+# or interfaces to the mapper watchlist.
+
+# Add path namespaces to be monitored:
+# PHOSPHOR_MAPPER_NAMESPACE_append = " /foo/bar"
+
+# Add interfaces to be monitored:
+# PHOSPHOR_MAPPER_INTERFACE_append = " foo.bar"
+
+# Blacklist paths from being monitored:
+# PHOSPHOR_MAPPER_NAMESPACE_BLACKLIST_append = " /foo/bar/baz"
+
+# Blacklist interfaces from being monitored:
+# PHOSPHOR_MAPPER_INTERFACE_BLACKLIST_append = " foo.bar.baz"
+
+inherit phosphor-mapperdir
+
+python phosphor_mapper_do_postinst() {
+ def process_var(d, var, dir):
+ for p in listvar_to_list(d, var):
+ parent = d.getVar('D', True) + d.getVar(dir, True)
+ if not os.path.exists(parent):
+ os.makedirs(parent)
+ path = os.path.join(
+ parent,
+ '-'.join(p[1:].split(os.sep)))
+ with open(path, 'w+') as fd:
+ pass
+
+ process_var(d, 'PHOSPHOR_MAPPER_NAMESPACE', 'namespace_dir')
+ process_var(d, 'PHOSPHOR_MAPPER_INTERFACE', 'interface_dir')
+ process_var(d, 'PHOSPHOR_MAPPER_NAMESPACE_BLACKLIST', 'blacklist_dir')
+ process_var(
+ d, 'PHOSPHOR_MAPPER_INTERFACE_BLACKLIST', 'interfaceblacklist_dir')
+}
+
+do_install[vardeps] += "PHOSPHOR_MAPPER_NAMESPACE"
+do_install[vardeps] += "PHOSPHOR_MAPPER_INTERFACE"
+do_install[vardeps] += "PHOSPHOR_MAPPER_NAMESPACE_BLACKLIST"
+do_install[vardeps] += "PHOSPHOR_MAPPER_INTERFACE_BLACKLIST"
+do_install[postfuncs] += "phosphor_mapper_do_postinst"
diff --git a/meta-phosphor/classes/phosphor-mapperdir.bbclass b/meta-phosphor/classes/phosphor-mapperdir.bbclass
new file mode 100644
index 000000000..591b63d4d
--- /dev/null
+++ b/meta-phosphor/classes/phosphor-mapperdir.bbclass
@@ -0,0 +1,4 @@
+namespace_dir="${datadir}/phosphor-mapper/namespace"
+interface_dir="${datadir}/phosphor-mapper/interface"
+blacklist_dir="${datadir}/phosphor-mapper/blacklist"
+interfaceblacklist_dir="${datadir}/phosphor-mapper/interfaceblacklist"
diff --git a/meta-phosphor/common/recipes-phosphor/dbus/phosphor-dbus-interfaces-mapper-config-native.bb b/meta-phosphor/common/recipes-phosphor/dbus/phosphor-dbus-interfaces-mapper-config-native.bb
new file mode 100644
index 000000000..c39e0a34f
--- /dev/null
+++ b/meta-phosphor/common/recipes-phosphor/dbus/phosphor-dbus-interfaces-mapper-config-native.bb
@@ -0,0 +1,11 @@
+SUMMARY="Add /xyz/openbmc_project namespace to phosphor-mapper"
+DESCRIPTION="Add the /xyz/openbmc_project path namespace and \
+xyz.openbmc_project interface prefix to the mapper \
+watch list."
+
+inherit phosphor-mapper
+inherit native
+inherit obmc-phosphor-license
+
+PHOSPHOR_MAPPER_NAMESPACE_append = " /xyz/openbmc_project"
+PHOSPHOR_MAPPER_INTERFACE_append = " xyz.openbmc_project"
diff --git a/meta-phosphor/common/recipes-phosphor/dbus/phosphor-legacy-namespace-mapper-config-native.bb b/meta-phosphor/common/recipes-phosphor/dbus/phosphor-legacy-namespace-mapper-config-native.bb
new file mode 100644
index 000000000..67199f9f0
--- /dev/null
+++ b/meta-phosphor/common/recipes-phosphor/dbus/phosphor-legacy-namespace-mapper-config-native.bb
@@ -0,0 +1,10 @@
+SUMMARY="Add /org/openbmc namespace to phosphor-mapper"
+DESCRIPTION="Add the legacy /org/openbmc path namespace and \
+org.openbmc nterface prefix to the mapper watch list."
+
+inherit phosphor-mapper
+inherit native
+inherit obmc-phosphor-license
+
+PHOSPHOR_MAPPER_NAMESPACE_append = " /org/openbmc"
+PHOSPHOR_MAPPER_INTERFACE_append = " org.openbmc"
diff --git a/meta-phosphor/common/recipes-phosphor/dbus/phosphor-mapper-config-native.bb b/meta-phosphor/common/recipes-phosphor/dbus/phosphor-mapper-config-native.bb
new file mode 100644
index 000000000..976c59b9c
--- /dev/null
+++ b/meta-phosphor/common/recipes-phosphor/dbus/phosphor-mapper-config-native.bb
@@ -0,0 +1,41 @@
+SUMMARY = "Phosphor Mapper Configuration"
+DESCRIPTION = "Meta-recipe, pulling in native recipes that wish to add \
+configuration files to the native /usr/share/phosphor-mapper filesystem."
+HOMEPAGE = "http://github.com/openbmc/phosphor-objmgr"
+PR = "r1"
+
+inherit obmc-phosphor-license
+inherit native
+inherit phosphor-mapper
+
+PHOSPHOR_MAPPER_CONFIGS = " \
+ phosphor-dbus-interfaces-mapper-config-native \
+ phosphor-legacy-namespace-mapper-config-native \
+ "
+
+DEPENDS += "${PHOSPHOR_MAPPER_CONFIGS}"
+
+# To add namespaces and blacklists to the mapper configuration,
+# create a native recipe in your layer, and add it to
+# PHOSPHOR_MAPPER_CONFIGS with a bbappend to this recipe.
+# Recipes should set one of the variables below.
+# Consult phosphor-mapper.bbclass for additional information.
+
+# Add path namespaces to be monitored.
+PHOSPHOR_MAPPER_NAMESPACE = ""
+
+# Add interfaces to be monitored.
+PHOSPHOR_MAPPER_INTERFACE = ""
+
+# Blacklist paths from being monitored.
+PHOSPHOR_MAPPER_NAMESPACE_BLACKLIST = ""
+
+# Blacklist interfaces from being monitored.
+PHOSPHOR_MAPPER_INTERFACE_BLACKLIST = ""
+
+do_install() {
+ install -d ${D}/${namespace_dir}
+ install -d ${D}/${interface_dir}
+ install -d ${D}/${blacklist_dir}
+ install -d ${D}/${interfaceblacklist_dir}
+}
diff --git a/meta-phosphor/common/recipes-phosphor/dbus/phosphor-mapper.bb b/meta-phosphor/common/recipes-phosphor/dbus/phosphor-mapper.bb
index ba9f15641..c515a099a 100644
--- a/meta-phosphor/common/recipes-phosphor/dbus/phosphor-mapper.bb
+++ b/meta-phosphor/common/recipes-phosphor/dbus/phosphor-mapper.bb
@@ -9,11 +9,13 @@ inherit autotools pkgconfig
inherit obmc-phosphor-python-autotools
inherit obmc-phosphor-dbus-service
inherit obmc-phosphor-systemd
+inherit phosphor-mapperdir
DEPENDS += "systemd"
DEPENDS += "autoconf-archive-native"
DEPENDS += "sdbusplus"
DEPENDS += "phosphor-logging"
+DEPENDS += "${PN}-config-native"
DBUS_SERVICE_${PN} += "xyz.openbmc_project.ObjectMapper.service"
SYSTEMD_SERVICE_${PN} += " \
@@ -22,6 +24,7 @@ SYSTEMD_SERVICE_${PN} += " \
"
RDEPENDS_libmapper += "libsystemd"
RDEPENDS_${PN} += " \
+ python-argparse \
python-xml \
python-dbus \
python-pygobject \
@@ -41,3 +44,52 @@ python populate_packages_prepend () {
}
PACKAGES_DYNAMIC += "^libmapper.*"
FILES_${PN}_remove = "${libdir}/lib*.so.* ${libdir}/*"
+
+# Construct a systemd environment file with mapper commandline
+# from the native sysroot /usr/share/phosphor-mapper filesystem.
+python do_emit_env() {
+ path = d.getVar('STAGING_DIR_NATIVE', True) + \
+ d.getVar('namespace_dir', True)
+ paths = []
+ for p in os.listdir(path):
+ paths.append(os.sep + os.sep.join(p.split('-')))
+
+ path = d.getVar('STAGING_DIR_NATIVE', True) + \
+ d.getVar('interface_dir', True)
+ interfaces = []
+ for i in os.listdir(path):
+ interfaces.append('.'.join(i.split('-')))
+
+ path = d.getVar('STAGING_DIR_NATIVE', True) + \
+ d.getVar('blacklist_dir', True)
+ blacklists = []
+ for b in os.listdir(path):
+ blacklists.append(os.sep + os.sep.join(b.split('-')))
+
+ path = d.getVar('STAGING_DIR_NATIVE', True) + \
+ d.getVar('interfaceblacklist_dir', True)
+ interface_blacklists = []
+ for ib in os.listdir(path):
+ interface_blacklists.append('.'.join(ib.split('-')))
+
+ path = [d.getVar('D', True) + d.getVar('envfiledir', True)]
+ path.append('obmc')
+ path.append('mapper')
+ parent = os.path.join(*path[:-1])
+ path = os.path.join(*path)
+
+ if not os.path.exists(parent):
+ os.makedirs(parent)
+ with open(path, 'w+') as fd:
+ fd.write('MAPPER_NAMESPACES="{}"'.format(' '.join(paths)))
+ fd.write('\n')
+ fd.write('MAPPER_INTERFACES="{}"'.format(' '.join(interfaces)))
+ fd.write('\n')
+ fd.write('MAPPER_BLACKLISTS="{}"'.format(' '.join(blacklists)))
+ fd.write('\n')
+ fd.write('MAPPER_INTERFACEBLACKLISTS="{}"'.format(' '.join(interface_blacklists)))
+ fd.write('\n')
+}
+
+do_install[postfuncs] += "do_emit_env"
+do_install[vardeps] += "PHOSPHOR_MAPPER_NAMESPACES"
diff --git a/meta-phosphor/common/recipes-phosphor/dbus/phosphor-mapper/xyz.openbmc_project.ObjectMapper.service b/meta-phosphor/common/recipes-phosphor/dbus/phosphor-mapper/xyz.openbmc_project.ObjectMapper.service
index 5d86fcfff..a9a798485 100644
--- a/meta-phosphor/common/recipes-phosphor/dbus/phosphor-mapper/xyz.openbmc_project.ObjectMapper.service
+++ b/meta-phosphor/common/recipes-phosphor/dbus/phosphor-mapper/xyz.openbmc_project.ObjectMapper.service
@@ -5,9 +5,14 @@ Before=obmc-mapper.target
[Service]
Restart=always
Type=dbus
-ExecStart={sbindir}/phosphor-mapper
+ExecStart={sbindir}/phosphor-mapper \
+ --path_namespaces="${{MAPPER_NAMESPACES}}" \
+ --interface_namespaces="${{MAPPER_INTERFACES}}"
+ --blacklists="${{MAPPER_BLACKLISTS}}" \
+ --interface_blacklists="${{MAPPER_INTERFACEBLACKLISTS}}"
BusName={BUSNAME}
TimeoutStartSec=300
+EnvironmentFile={envfiledir}/obmc/mapper
Environment="PYTHONUNBUFFERED=1"
[Install]
OpenPOWER on IntegriCloud