diff options
author | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2018-10-23 03:48:49 +0300 |
---|---|---|
committer | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2018-10-30 04:59:15 +0300 |
commit | 4f045d0b1bd11f4529a4b25c69a95ac043fe9e76 (patch) | |
tree | e076890092af8dbda6f57726c534e8f317e1c74b | |
parent | 24dc4d718b07918a78407cacc7d2612850ddd863 (diff) | |
download | openbmc-4f045d0b1bd11f4529a4b25c69a95ac043fe9e76.tar.xz |
phosphor-mapper: Add service namespaces
The c++ mapper implements a dbus service namespace whitelist instead of
a path namespace whitelist. A service namespace whitelist significantly
reduces the amount of introspection required by the mapper as compared
to path namespaces.
Add the service namespace whitelist to the mapper command line in the
mapper systemd unit and extend the existing framework for specifying
mapper command line arguments to include a service namespace whitelist.
Note that support for a _service_ blacklist is added and _path_ and
_interface_ blacklists are not being re-introduced.
(From meta-phosphor rev: 385c63fee1d7ac4f34165de7095f2e76b10f1328)
Change-Id: I0cc8f7d7dd0c1196b2354118cf6ab89b2d30231f
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
7 files changed, 43 insertions, 4 deletions
diff --git a/meta-phosphor/classes/phosphor-mapper.bbclass b/meta-phosphor/classes/phosphor-mapper.bbclass index 7bafecb79..97da8503d 100644 --- a/meta-phosphor/classes/phosphor-mapper.bbclass +++ b/meta-phosphor/classes/phosphor-mapper.bbclass @@ -7,17 +7,23 @@ # 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 +# watch xyz.openbmc_project services, 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 service namespaces to be monitored: +# PHOSPHOR_MAPPER_SERVICE_append = " foo.bar" + # Add interfaces to be monitored: # PHOSPHOR_MAPPER_INTERFACE_append = " foo.bar" +# Blacklist services from being monitored: +# PHOSPHOR_MAPPER_SERVICE_BLACKLIST_append = " foo.bar" + inherit phosphor-mapperdir inherit obmc-phosphor-utils @@ -34,9 +40,13 @@ python phosphor_mapper_do_postinst() { pass process_var(d, 'PHOSPHOR_MAPPER_NAMESPACE', 'namespace_dir') + process_var(d, 'PHOSPHOR_MAPPER_SERVICE', 'service_dir') process_var(d, 'PHOSPHOR_MAPPER_INTERFACE', 'interface_dir') + process_var(d, 'PHOSPHOR_MAPPER_SERVICE_BLACKLIST', 'serviceblacklist_dir') } do_install[vardeps] += "PHOSPHOR_MAPPER_NAMESPACE" +do_install[vardeps] += "PHOSPHOR_MAPPER_SERVICE" do_install[vardeps] += "PHOSPHOR_MAPPER_INTERFACE" +do_install[vardeps] += "PHOSPHOR_MAPPER_SERVICE_BLACKLIST" do_install[postfuncs] += "phosphor_mapper_do_postinst" diff --git a/meta-phosphor/classes/phosphor-mapperdir.bbclass b/meta-phosphor/classes/phosphor-mapperdir.bbclass index 33962f257..ed686287a 100644 --- a/meta-phosphor/classes/phosphor-mapperdir.bbclass +++ b/meta-phosphor/classes/phosphor-mapperdir.bbclass @@ -1,2 +1,4 @@ namespace_dir="${datadir}/phosphor-mapper/namespace" +service_dir="${datadir}/phosphor-mapper/service" interface_dir="${datadir}/phosphor-mapper/interface" +serviceblacklist_dir="${datadir}/phosphor-mapper/serviceblacklist" diff --git a/meta-phosphor/recipes-phosphor/dbus/phosphor-dbus-interfaces-mapper-config-native.bb b/meta-phosphor/recipes-phosphor/dbus/phosphor-dbus-interfaces-mapper-config-native.bb index c39e0a34f..e87f22546 100644 --- a/meta-phosphor/recipes-phosphor/dbus/phosphor-dbus-interfaces-mapper-config-native.bb +++ b/meta-phosphor/recipes-phosphor/dbus/phosphor-dbus-interfaces-mapper-config-native.bb @@ -8,4 +8,5 @@ inherit native inherit obmc-phosphor-license PHOSPHOR_MAPPER_NAMESPACE_append = " /xyz/openbmc_project" +PHOSPHOR_MAPPER_SERVICE_append = " xyz.openbmc_project" PHOSPHOR_MAPPER_INTERFACE_append = " xyz.openbmc_project" diff --git a/meta-phosphor/recipes-phosphor/dbus/phosphor-legacy-namespace-mapper-config-native.bb b/meta-phosphor/recipes-phosphor/dbus/phosphor-legacy-namespace-mapper-config-native.bb index 67199f9f0..69c777944 100644 --- a/meta-phosphor/recipes-phosphor/dbus/phosphor-legacy-namespace-mapper-config-native.bb +++ b/meta-phosphor/recipes-phosphor/dbus/phosphor-legacy-namespace-mapper-config-native.bb @@ -7,4 +7,5 @@ inherit native inherit obmc-phosphor-license PHOSPHOR_MAPPER_NAMESPACE_append = " /org/openbmc" +PHOSPHOR_MAPPER_SERVICE_append = " org.openbmc" PHOSPHOR_MAPPER_INTERFACE_append = " org.openbmc" diff --git a/meta-phosphor/recipes-phosphor/dbus/phosphor-mapper-config-native.bb b/meta-phosphor/recipes-phosphor/dbus/phosphor-mapper-config-native.bb index dcc5bd3c1..9e2f43f24 100644 --- a/meta-phosphor/recipes-phosphor/dbus/phosphor-mapper-config-native.bb +++ b/meta-phosphor/recipes-phosphor/dbus/phosphor-mapper-config-native.bb @@ -24,10 +24,17 @@ DEPENDS += "${PHOSPHOR_MAPPER_CONFIGS}" # Add path namespaces to be monitored. PHOSPHOR_MAPPER_NAMESPACE = "" +# Add services to be monitored. +PHOSPHOR_MAPPER_SERVICE = "" + # Add interfaces to be monitored. PHOSPHOR_MAPPER_INTERFACE = "" +# Blacklist services from being monitored. +PHOSPHOR_MAPPER_SERVICE_BLACKLIST = "" + do_install() { install -d ${D}/${namespace_dir} install -d ${D}/${interface_dir} + install -d ${D}/${serviceblacklist_dir} } diff --git a/meta-phosphor/recipes-phosphor/dbus/phosphor-mapper/xyz.openbmc_project.ObjectMapper.service b/meta-phosphor/recipes-phosphor/dbus/phosphor-mapper/xyz.openbmc_project.ObjectMapper.service index 394e0edd1..69fb1e212 100644 --- a/meta-phosphor/recipes-phosphor/dbus/phosphor-mapper/xyz.openbmc_project.ObjectMapper.service +++ b/meta-phosphor/recipes-phosphor/dbus/phosphor-mapper/xyz.openbmc_project.ObjectMapper.service @@ -8,7 +8,9 @@ Restart=always Type=dbus ExecStart=/usr/bin/env phosphor-mapper \ --path_namespaces="${{MAPPER_NAMESPACES}}" \ - --interface_namespaces="${{MAPPER_INTERFACES}}" + --service_namespaces="${{MAPPER_SERVICES}}" \ + --interface_namespaces="${{MAPPER_INTERFACES}}" \ + --service_blacklists="${{MAPPER_SERVICEBLACKLISTS}}" SyslogIdentifier=phosphor-mapper BusName={BUSNAME} TimeoutStartSec=300 diff --git a/meta-phosphor/recipes-phosphor/dbus/phosphor-mapper_git.bb b/meta-phosphor/recipes-phosphor/dbus/phosphor-mapper_git.bb index 9e0e7c243..c4c7f51f8 100644 --- a/meta-phosphor/recipes-phosphor/dbus/phosphor-mapper_git.bb +++ b/meta-phosphor/recipes-phosphor/dbus/phosphor-mapper_git.bb @@ -59,11 +59,23 @@ python do_emit_env() { paths.append(os.sep.join(p.split('-'))) path = d.getVar('STAGING_DIR_NATIVE', True) + \ + d.getVar('service_dir', True) + services = [] + for s in os.listdir(path): + services.append('.'.join(s.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('serviceblacklist_dir', True) + service_blacklists = [] + for x in os.listdir(path): + service_blacklists.append('.'.join(x.split('-'))) + path = [d.getVar('D', True) + d.getVar('envfiledir', True)] path.append('obmc') path.append('mapper') @@ -75,8 +87,12 @@ python do_emit_env() { with open(path, 'w+') as fd: fd.write('MAPPER_NAMESPACES="{}"'.format(' '.join(paths))) fd.write('\n') + fd.write('MAPPER_SERVICES="{}"'.format(' '.join(services))) + fd.write('\n') fd.write('MAPPER_INTERFACES="{}"'.format(' '.join(interfaces))) fd.write('\n') + fd.write('MAPPER_SERVICEBLACKLISTS="{}"'.format(' '.join(service_blacklists))) + fd.write('\n') } do_install[postfuncs] += "do_emit_env" |