diff options
5 files changed, 86 insertions, 0 deletions
diff --git a/meta-phosphor/classes/obmc-phosphor-discovery-service.bbclass b/meta-phosphor/classes/obmc-phosphor-discovery-service.bbclass new file mode 100644 index 000000000..4c9db0f70 --- /dev/null +++ b/meta-phosphor/classes/obmc-phosphor-discovery-service.bbclass @@ -0,0 +1,76 @@ +inherit obmc-phosphor-utils +DISCOVERY_SVC_PACKAGES ?= "${PN}" + +python() { + avahi_enabled = bb.utils.contains( + 'DISTRO_FEATURES', 'avahi', 'true', 'false', d) + slp_enabled = False # later + + if not avahi_enabled and slp_enabled: + return + + syscnfdir = d.getVar('sysconfdir', True) + dest_dir = d.getVar('D', True) + set_append(d, 'AVAHI_SERVICES_DIR', os.path.join( + dest_dir+syscnfdir, + 'avahi', + 'services')) + + for pkg in listvar_to_list(d, 'DISCOVERY_SVC_PACKAGES'): + for service in listvar_to_list(d, 'REGISTERED_SERVICES_%s' % pkg): + if avahi_enabled: + set_append(d, 'RRECOMMENDS_%s' % pkg, 'avahi-daemon') + svc_name, svc_type, svc_port = service.split(':') + set_append(d, 'FILES_%s' % pkg, os.path.join( + syscnfdir, + 'avahi', + 'services', + '%s.service' % svc_name)) +} + +python discovery_services_postinstall() { + avahi_enabled = bb.utils.contains( + 'DISTRO_FEATURES', 'avahi', 'true', 'false', d) + slp_enabled = False # later + + if not avahi_enabled and slp_enabled: + return + + service_dir = d.getVar('AVAHI_SERVICES_DIR', True) + + if not os.path.exists(service_dir): + os.makedirs(service_dir) + + def register_service_avahi(d, service_name, service_type, service_port): + service_file = os.path.join( + service_dir, + '%s.service' % service_name) + with open(service_file, 'w') as fd: + fd.write('<?xml version="1.0" ?>\n') + fd.write('<!DOCTYPE service-group SYSTEM "avahi-service.dtd">\n') + fd.write('<service-group>\n') + fd.write(' <name>"%s"</name>\n' % service_name) + fd.write(' <service>\n') + fd.write(' <type>"%s"</type>\n' % service_type) + fd.write(' <port>"%s"</port>\n' % service_port) + fd.write(' </service>\n') + fd.write('</service-group>\n') + + def register_services(d,pkg): + for service in listvar_to_list(d, 'REGISTERED_SERVICES_%s' % pkg): + svc_info = service.split(":") + try: + svc_name, svc_type, svc_port = svc_info + svc_type = "_" + svc_name + "._" + svc_type + except: + continue + if avahi_enabled: + register_service_avahi(d, svc_name, svc_type, svc_port) + + for pkg in listvar_to_list(d, 'DISCOVERY_SVC_PACKAGES'): + register_services(d, pkg) + +} +do_install[postfuncs] += "discovery_services_postinstall" + + diff --git a/meta-phosphor/common/recipes-core/dropbear/dropbear_%.bbappend b/meta-phosphor/common/recipes-core/dropbear/dropbear_%.bbappend index 52a38bdd9..51a98d424 100644 --- a/meta-phosphor/common/recipes-core/dropbear/dropbear_%.bbappend +++ b/meta-phosphor/common/recipes-core/dropbear/dropbear_%.bbappend @@ -1,3 +1,7 @@ +inherit obmc-phosphor-discovery-service + FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" SRC_URI += "file://dropbearkey.service \ file://0001-dropbear-Add-c-command-option-to-force-a-specific-co.patch" + +REGISTERED_SERVICES_${PN} += "ssh:tcp:22 sftp:tcp:22" diff --git a/meta-phosphor/common/recipes-phosphor/console/obmc-console.bb b/meta-phosphor/common/recipes-phosphor/console/obmc-console.bb index 36c740385..f6c1db2d0 100644 --- a/meta-phosphor/common/recipes-phosphor/console/obmc-console.bb +++ b/meta-phosphor/common/recipes-phosphor/console/obmc-console.bb @@ -6,6 +6,7 @@ PR = "r1" inherit obmc-phosphor-license inherit obmc-phosphor-systemd inherit autotools +inherit obmc-phosphor-discovery-service TARGET_CFLAGS += "-fpic -O2" @@ -16,6 +17,8 @@ SRC_URI += "file://${PN}.conf" SRCREV = "44580de4e2170c8ee06dbf401315d3acfcf52b22" +REGISTERED_SERVICES_${PN} += "obmc_console:tcp:2200" + SYSTEMD_SERVICE_${PN} = " \ ${PN}.service \ ${PN}-ssh.socket \ diff --git a/meta-phosphor/common/recipes-phosphor/interfaces/phosphor-rest.bb b/meta-phosphor/common/recipes-phosphor/interfaces/phosphor-rest.bb index a8f82cb1a..8df4ca0ee 100644 --- a/meta-phosphor/common/recipes-phosphor/interfaces/phosphor-rest.bb +++ b/meta-phosphor/common/recipes-phosphor/interfaces/phosphor-rest.bb @@ -8,6 +8,7 @@ LIC_FILES_CHKSUM = "file://${WORKDIR}/git/LICENSE;md5=fa818a259cbed7ce8bc2a22d35 inherit allarch inherit obmc-phosphor-systemd inherit setuptools +inherit obmc-phosphor-discovery-service RRECOMMENDS_${PN} += "virtual-obmc-wsgihost" @@ -29,3 +30,4 @@ S = "${WORKDIR}/git/module" SYSTEMD_SERVICE_${PN} = "" SYSTEMD_OVERRIDE_${PN} += "rest-dbus.conf:obmc-mapper.target.d/rest-dbus.conf" SYSTEMD_ENVIRONMENT_FILE_${PN} += "obmc/wsgi_app" +REGISTERED_SERVICES_${PN} += "phosphor_rest:tcp:443" diff --git a/meta-phosphor/conf/distro/openbmc-phosphor.conf b/meta-phosphor/conf/distro/openbmc-phosphor.conf index 0b6278398..2f2916c6f 100644 --- a/meta-phosphor/conf/distro/openbmc-phosphor.conf +++ b/meta-phosphor/conf/distro/openbmc-phosphor.conf @@ -29,6 +29,7 @@ DISTRO_FEATURES = "\ obmc-settings-mgmt \ obmc-phosphor-system-mgmt \ obmc-host-ipmi \ + avahi \ ${DISTRO_FEATURES_LIBC} \ " |