Switch to systemd state management

Enable systemd chassis and bmc state management support for Phosphor.

Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Change-Id: I180496eb8e48dfc617f944053b8e909210c6df7d
diff --git a/common/recipes-phosphor/host-ipmid/host-ipmid-fru.bb b/common/recipes-phosphor/host-ipmid/host-ipmid-fru.bb
index 2b19076..0d69af1 100644
--- a/common/recipes-phosphor/host-ipmid/host-ipmid-fru.bb
+++ b/common/recipes-phosphor/host-ipmid/host-ipmid-fru.bb
@@ -6,6 +6,7 @@
 RRECOMMENDS_${PN} = "virtual/obmc-phosphor-host-ipmi-hw"
 
 inherit obmc-phosphor-license
+inherit obmc-phosphor-systemd
 
 DEPENDS += " \
         systemd \
@@ -16,6 +17,7 @@
 
 TARGET_CXXFLAGS += " -fpic -std=gnu++14"
 TARGET_CFLAGS += " -fpic"
+SYSTEMD_SERVICE_${PN} += "obmc-read-eeprom@.service"
 
 SRC_URI += "git://github.com/openbmc/ipmi-fru-parser"
 
diff --git a/common/recipes-phosphor/obmc-phosphor-chassis/obmc-button-power.bb b/common/recipes-phosphor/obmc-phosphor-chassis/obmc-button-power.bb
index 7adda51..db995e1 100644
--- a/common/recipes-phosphor/obmc-phosphor-chassis/obmc-button-power.bb
+++ b/common/recipes-phosphor/obmc-phosphor-chassis/obmc-button-power.bb
@@ -3,5 +3,9 @@
 PR = "r1"
 
 inherit skeleton-gdbus
+inherit obmc-phosphor-dbus-service
 
 SKELETON_DIR = "pwrbutton"
+
+FMT = "org.openbmc.buttons.Power@{0}.service"
+DBUS_SERVICE_${PN} += "${@compose_list(d, 'FMT', 'OBMC_POWER_BUTTON_INSTANCES')}"
diff --git a/common/recipes-phosphor/obmc-phosphor-chassis/obmc-button-reset.bb b/common/recipes-phosphor/obmc-phosphor-chassis/obmc-button-reset.bb
index ba83a26..802e499 100644
--- a/common/recipes-phosphor/obmc-phosphor-chassis/obmc-button-reset.bb
+++ b/common/recipes-phosphor/obmc-phosphor-chassis/obmc-button-reset.bb
@@ -3,4 +3,9 @@
 PR = "r1"
 
 inherit skeleton-gdbus
+inherit obmc-phosphor-dbus-service
+
 SKELETON_DIR = "rstbutton"
+
+FMT = "org.openbmc.buttons.reset@{0}.service"
+DBUS_SERVICE_${PN} += "${@compose_list(d, 'FMT', 'OBMC_RESET_BUTTON_INSTANCES')}"
diff --git a/common/recipes-phosphor/obmc-phosphor-chassis/obmc-control-chassis.bb b/common/recipes-phosphor/obmc-phosphor-chassis/obmc-control-chassis.bb
index ca80715..0eff00c 100644
--- a/common/recipes-phosphor/obmc-phosphor-chassis/obmc-control-chassis.bb
+++ b/common/recipes-phosphor/obmc-phosphor-chassis/obmc-control-chassis.bb
@@ -3,6 +3,7 @@
 PR = "r1"
 
 inherit skeleton-python
+inherit obmc-phosphor-dbus-service
 
 RDEPENDS_${PN} += "\
         python-dbus \
@@ -12,3 +13,6 @@
         "
 
 SKELETON_DIR = "pychassisctl"
+
+FMT = "org.openbmc.control.Chassis@{0}.service"
+DBUS_SERVICE_${PN} += "${@compose_list(d, 'FMT', 'OBMC_CHASSIS_INSTANCES')}"
diff --git a/common/recipes-phosphor/obmc-phosphor-chassis/obmc-hostcheckstop.bb b/common/recipes-phosphor/obmc-phosphor-chassis/obmc-hostcheckstop.bb
index d054694..c4b3616 100644
--- a/common/recipes-phosphor/obmc-phosphor-chassis/obmc-hostcheckstop.bb
+++ b/common/recipes-phosphor/obmc-phosphor-chassis/obmc-hostcheckstop.bb
@@ -4,5 +4,9 @@
 PR = "r1"
 
 inherit skeleton-gdbus
+inherit obmc-phosphor-dbus-service
 
 SKELETON_DIR = "hostcheckstop"
+
+FMT = "org.openbmc.control.Checkstop@{0}.service"
+DBUS_SERVICE_${PN} += "${@compose_list(d, 'FMT', 'OBMC_CHECKSTOP_INSTANCES')}"
diff --git a/common/recipes-phosphor/obmc-phosphor-chassis/obmc-mgr-inventory.bb b/common/recipes-phosphor/obmc-phosphor-chassis/obmc-mgr-inventory.bb
index 0b5aefc..910d905 100644
--- a/common/recipes-phosphor/obmc-phosphor-chassis/obmc-mgr-inventory.bb
+++ b/common/recipes-phosphor/obmc-phosphor-chassis/obmc-mgr-inventory.bb
@@ -3,6 +3,7 @@
 PR = "r1"
 
 inherit skeleton-python
+inherit obmc-phosphor-dbus-service
 
 VIRTUAL-RUNTIME_skeleton_workbook ?= ""
 
@@ -18,3 +19,5 @@
         "
 
 SKELETON_DIR = "pyinventorymgr"
+DBUS_SERVICE_${PN} += "org.openbmc.Inventory.service"
+SYSTEMD_SERVICE_${PN} += "obmc-sync-inventory-item@.service"
diff --git a/common/recipes-phosphor/obmc-phosphor-chassis/obmc-op-control-power.bb b/common/recipes-phosphor/obmc-phosphor-chassis/obmc-op-control-power.bb
index ac8fc33..a13c632 100644
--- a/common/recipes-phosphor/obmc-phosphor-chassis/obmc-op-control-power.bb
+++ b/common/recipes-phosphor/obmc-phosphor-chassis/obmc-op-control-power.bb
@@ -3,7 +3,45 @@
 PR = "r1"
 
 inherit skeleton-gdbus
+inherit obmc-phosphor-dbus-service
+
+DEPENDS += "obmc-mapper systemd"
 
 DEPENDS += "obmc-mapper systemd"
 
 SKELETON_DIR = "op-pwrctl"
+
+FMT = "org.openbmc.control.Power@{0}.service"
+DBUS_SERVICE_${PN} += "${@compose_list(d, 'FMT', 'OBMC_POWER_INSTANCES')}"
+
+SYSTEMD_SERVICE_${PN} += " \
+        op-power-start@.service \
+        op-wait-power-on@.service \
+        op-power-stop@.service \
+        op-wait-power-off@.service \
+        "
+
+SYSTEMD_ENVIRONMENT_FILE_${PN} += "obmc/power_control"
+
+START_TMPL = "op-power-start@.service"
+START_TGTFMT = "obmc-chassis-start@{1}.target"
+START_INSTFMT = "op-power-start@{0}.service"
+START_FMT = "../${START_TMPL}:${START_TGTFMT}.wants/${START_INSTFMT}"
+
+STOP_TMPL = "op-power-stop@.service"
+STOP_TGTFMT = "obmc-chassis-stop@{1}.target"
+STOP_INSTFMT = "op-power-stop@{0}.service"
+STOP_FMT = "../${STOP_TMPL}:${STOP_TGTFMT}.wants/${STOP_INSTFMT}"
+
+ON_TMPL = "op-wait-power-on@.service"
+ON_INSTFMT = "op-wait-power-on@{0}.service"
+ON_FMT = "../${ON_TMPL}:${START_TGTFMT}.wants/${ON_INSTFMT}"
+
+OFF_TMPL = "op-wait-ppower-off@.service"
+OFF_INSTFMT = "op-wait-power-off@{0}.service"
+OFF_FMT = "../${OFF_TMPL}:${STOP_TGTFMT}.wants/${OFF_INSTFMT}"
+
+SYSTEMD_LINK_${PN} += "${@compose_list_zip(d, 'START_FMT', 'OBMC_POWER_INSTANCES', 'OBMC_CHASSIS_INSTANCES')}"
+SYSTEMD_LINK_${PN} += "${@compose_list_zip(d, 'STOP_FMT', 'OBMC_POWER_INSTANCES', 'OBMC_CHASSIS_INSTANCES')}"
+SYSTEMD_LINK_${PN} += "${@compose_list_zip(d, 'ON_FMT', 'OBMC_POWER_INSTANCES', 'OBMC_CHASSIS_INSTANCES')}"
+SYSTEMD_LINK_${PN} += "${@compose_list_zip(d, 'OFF_FMT', 'OBMC_POWER_INSTANCES', 'OBMC_CHASSIS_INSTANCES')}"
diff --git a/common/recipes-phosphor/obmc-phosphor-chassis/obmc-pcie-detect.bb b/common/recipes-phosphor/obmc-phosphor-chassis/obmc-pcie-detect.bb
index e134cf0..7af067f 100644
--- a/common/recipes-phosphor/obmc-phosphor-chassis/obmc-pcie-detect.bb
+++ b/common/recipes-phosphor/obmc-phosphor-chassis/obmc-pcie-detect.bb
@@ -3,5 +3,14 @@
 PR = "r1"
 
 inherit skeleton-gdbus
+inherit obmc-phosphor-systemd
 
 SKELETON_DIR = "pciedetect"
+
+TMPL = "pcie-slot-detect@.service"
+TGTFMT = "obmc-chassis-start@{0}.target"
+INSTFMT = "pcie-slot-detect@{0}.service"
+FMT = "../${TMPL}:${TGTFMT}.wants/${INSTFMT}"
+
+SYSTEMD_SERVICE_${PN} += "pcie-slot-detect@.service"
+SYSTEMD_LINK_${PN} += "${@compose_list(d, 'FMT', 'OBMC_CHASSIS_INSTANCES')}"
diff --git a/common/recipes-phosphor/obmc-phosphor-chassis/obmc-watchdog.bb b/common/recipes-phosphor/obmc-phosphor-chassis/obmc-watchdog.bb
index 821b7f0..5586903 100644
--- a/common/recipes-phosphor/obmc-phosphor-chassis/obmc-watchdog.bb
+++ b/common/recipes-phosphor/obmc-phosphor-chassis/obmc-watchdog.bb
@@ -3,5 +3,23 @@
 PR = "r1"
 
 inherit skeleton-gdbus
+inherit obmc-phosphor-dbus-service
 
 SKELETON_DIR = "hostwatchdog"
+
+FMT = "org.openbmc.watchdog.Host@{0}.service"
+DBUS_SERVICE_${PN} += "${@compose_list(d, 'FMT', 'OBMC_WATCHDOG_INSTANCES')}"
+SYSTEMD_SERVICE_${PN} += "obmc-start-watchdog@.service obmc-stop-watchdog@.service"
+
+START_TMPL = "obmc-start-watchdog@.service"
+START_TGTFMT = "obmc-chassis-start@{1}.target"
+START_INSTFMT = "obmc-start-watchdog@{0}.service"
+START_FMT = "../${START_TMPL}:${START_TGTFMT}.wants/${START_INSTFMT}"
+
+STOP_TMPL = "obmc-stop-watchdog@.service"
+STOP_TGTFMT = "obmc-chassis-stop@{1}.target"
+STOP_INSTFMT = "obmc-stop-watchdog@{0}.service"
+STOP_FMT = "../${STOP_TMPL}:${STOP_TGTFMT}.wants/${STOP_INSTFMT}"
+
+SYSTEMD_LINK_${PN} += "${@compose_list_zip(d, 'START_FMT', 'OBMC_WATCHDOG_INSTANCES', 'OBMC_CHASSIS_INSTANCES')}"
+SYSTEMD_LINK_${PN} += "${@compose_list_zip(d, 'STOP_FMT', 'OBMC_WATCHDOG_INSTANCES', 'OBMC_CHASSIS_INSTANCES')}"
diff --git a/common/recipes-phosphor/obmc-phosphor-fan/obmc-control-fan.bb b/common/recipes-phosphor/obmc-phosphor-fan/obmc-control-fan.bb
index a4bd005..d4504a6 100644
--- a/common/recipes-phosphor/obmc-phosphor-fan/obmc-control-fan.bb
+++ b/common/recipes-phosphor/obmc-phosphor-fan/obmc-control-fan.bb
@@ -3,6 +3,7 @@
 PR = "r1"
 
 inherit skeleton-python
+inherit obmc-phosphor-dbus-service
 
 RDEPENDS_${PN} += "\
         python-dbus \
@@ -10,3 +11,5 @@
         pyphosphor \
         "
 SKELETON_DIR = "pyfanctl"
+DBUS_SERVICE_${PN} += "org.openbmc.control.Fans.service"
+SYSTEMD_SERVICE_${PN} += "obmc-max-fans.service"
diff --git a/common/recipes-phosphor/obmc-phosphor-flash/obmc-flash-bios.bb b/common/recipes-phosphor/obmc-phosphor-flash/obmc-flash-bios.bb
index 8f7b766..c425027 100644
--- a/common/recipes-phosphor/obmc-phosphor-flash/obmc-flash-bios.bb
+++ b/common/recipes-phosphor/obmc-phosphor-flash/obmc-flash-bios.bb
@@ -5,5 +5,8 @@
 PR = "r1"
 
 inherit skeleton-gdbus
+inherit obmc-phosphor-dbus-service
 
 SKELETON_DIR = "flashbios"
+DBUS_SERVICE_${PN} += "org.openbmc.control.Flash.service"
+SYSTEMD_SERVICE_${PN} += "obmc-flash-init.service"
diff --git a/common/recipes-phosphor/obmc-phosphor-flash/obmc-flash-bmc.bb b/common/recipes-phosphor/obmc-phosphor-flash/obmc-flash-bmc.bb
index 3c41220..2de28e0 100644
--- a/common/recipes-phosphor/obmc-phosphor-flash/obmc-flash-bmc.bb
+++ b/common/recipes-phosphor/obmc-phosphor-flash/obmc-flash-bmc.bb
@@ -3,6 +3,7 @@
 PR = "r1"
 
 inherit skeleton-python
+inherit obmc-phosphor-dbus-service
 
 RDEPENDS_${PN} += "\
         python-dbus \
@@ -15,3 +16,4 @@
         "
 
 SKELETON_DIR = "pyflashbmc"
+DBUS_SERVICE_${PN} += "org.openbmc.control.BmcFlash.service"
diff --git a/common/recipes-phosphor/obmc-phosphor-flash/obmc-mgr-download.bb b/common/recipes-phosphor/obmc-phosphor-flash/obmc-mgr-download.bb
index ca531e1..72a6350 100644
--- a/common/recipes-phosphor/obmc-phosphor-flash/obmc-mgr-download.bb
+++ b/common/recipes-phosphor/obmc-phosphor-flash/obmc-mgr-download.bb
@@ -3,6 +3,7 @@
 PR = "r1"
 
 inherit skeleton-python
+inherit obmc-phosphor-dbus-service
 
 RDEPENDS_${PN} += "\
         python-dbus \
@@ -12,3 +13,4 @@
         "
 
 SKELETON_DIR = "pydownloadmgr"
+DBUS_SERVICE_${PN} += "org.openbmc.managers.Download.service"
diff --git a/common/recipes-phosphor/obmc-phosphor-host/obmc-op-control-host.bb b/common/recipes-phosphor/obmc-phosphor-host/obmc-op-control-host.bb
index b301101..dabc4a8 100644
--- a/common/recipes-phosphor/obmc-phosphor-host/obmc-op-control-host.bb
+++ b/common/recipes-phosphor/obmc-phosphor-host/obmc-op-control-host.bb
@@ -3,5 +3,17 @@
 PR = "r1"
 
 inherit skeleton-gdbus
+inherit obmc-phosphor-dbus-service
 
 SKELETON_DIR = "op-hostctl"
+
+FMT = "org.openbmc.control.Host@{0}.service"
+DBUS_SERVICE_${PN} += "${@compose_list(d, 'FMT', 'OBMC_HOST_INSTANCES')}"
+SYSTEMD_SERVICE_${PN} = "op-start-host@.service"
+
+START_TMPL = "op-start-host@.service"
+START_TGTFMT = "obmc-chassis-start@{1}.target"
+START_INSTFMT = "obmc-start-host@{0}.service"
+START_FMT = "../${START_TMPL}:${START_TGTFMT}.wants/${START_INSTFMT}"
+
+SYSTEMD_LINK_${PN} += "${@compose_list_zip(d, 'START_FMT', 'OBMC_HOST_INSTANCES', 'OBMC_CHASSIS_INSTANCES')}"
diff --git a/common/recipes-phosphor/obmc-phosphor-led/obmc-control-led.bb b/common/recipes-phosphor/obmc-phosphor-led/obmc-control-led.bb
index 94fa7cb..292b9fd 100644
--- a/common/recipes-phosphor/obmc-phosphor-led/obmc-control-led.bb
+++ b/common/recipes-phosphor/obmc-phosphor-led/obmc-control-led.bb
@@ -4,7 +4,10 @@
 PR = "r1"
 
 inherit skeleton-sdbus
+inherit obmc-phosphor-dbus-service
 
 RDEPENDS_${PN} += "libsystemd"
 
 SKELETON_DIR = "ledctl"
+DBUS_SERVICE_${PN} += "org.openbmc.control.led.service"
+SYSTEMD_SERVICE_${PN} += "obmc-led-start@.service obmc-led-stop@.service"
diff --git a/common/recipes-phosphor/obmc-phosphor-sensor/obmc-hwmon.bb b/common/recipes-phosphor/obmc-phosphor-sensor/obmc-hwmon.bb
index 78442b8..7d437cf 100644
--- a/common/recipes-phosphor/obmc-phosphor-sensor/obmc-hwmon.bb
+++ b/common/recipes-phosphor/obmc-phosphor-sensor/obmc-hwmon.bb
@@ -3,6 +3,7 @@
 PR = "r1"
 
 inherit skeleton-python
+inherit obmc-phosphor-systemd
 
 VIRTUAL-RUNTIME_skeleton_workbook ?= ""
 
@@ -16,3 +17,8 @@
         "
 
 SKELETON_DIR = "pyhwmon"
+TMPL = "mapper-wait@.service"
+TGT = "obmc-fans-ready.target"
+INSTFMT = "mapper-wait@-org-openbmc-sensors-speed-fan{0}.service"
+FMT = "../${TMPL}:${TGT}.wants/${INSTFMT}"
+SYSTEMD_LINK_${PN} += "${@compose_list(d, 'FMT', 'OBMC_FAN_INSTANCES')}"
diff --git a/common/recipes-phosphor/obmc-phosphor-sensor/obmc-mgr-sensor.bb b/common/recipes-phosphor/obmc-phosphor-sensor/obmc-mgr-sensor.bb
index ca90c43..d6b416b 100644
--- a/common/recipes-phosphor/obmc-phosphor-sensor/obmc-mgr-sensor.bb
+++ b/common/recipes-phosphor/obmc-phosphor-sensor/obmc-mgr-sensor.bb
@@ -3,6 +3,7 @@
 PR = "r1"
 
 inherit skeleton-python
+inherit obmc-phosphor-dbus-service
 
 VIRTUAL-RUNTIME_skeleton_workbook ?= ""
 
@@ -15,3 +16,4 @@
         "
 
 SKELETON_DIR = "pysensormgr"
+DBUS_SERVICE_${PN} += "org.openbmc.Sensors.service"
diff --git a/common/recipes-phosphor/obmc-phosphor-sys/obmc-control-bmc.bb b/common/recipes-phosphor/obmc-phosphor-sys/obmc-control-bmc.bb
index bfc3326..99f5618 100644
--- a/common/recipes-phosphor/obmc-phosphor-sys/obmc-control-bmc.bb
+++ b/common/recipes-phosphor/obmc-phosphor-sys/obmc-control-bmc.bb
@@ -4,5 +4,9 @@
 PR = "r1"
 
 inherit skeleton-gdbus
+inherit obmc-phosphor-dbus-service
 
 SKELETON_DIR = "bmcctl"
+
+FMT = "org.openbmc.control.Bmc@{0}.service"
+DBUS_SERVICE_${PN} += "${@compose_list(d, 'FMT', 'OBMC_BMC_INSTANCES')}"
diff --git a/common/recipes-phosphor/obmc-phosphor-sys/obmc-mgr-state.bb b/common/recipes-phosphor/obmc-phosphor-sys/obmc-mgr-state.bb
index 125fd65..464cf11 100644
--- a/common/recipes-phosphor/obmc-phosphor-sys/obmc-mgr-state.bb
+++ b/common/recipes-phosphor/obmc-phosphor-sys/obmc-mgr-state.bb
@@ -3,6 +3,7 @@
 PR = "r1"
 
 inherit skeleton-python
+inherit obmc-phosphor-systemd
 
 VIRTUAL-RUNTIME_skeleton_workbook ?= ""
 
@@ -14,3 +15,14 @@
         "
 
 SKELETON_DIR = "pystatemgr"
+SYSTEMD_SERVICE_${PN} += "obmc-mgr-state.service obmc-mgr-state.target"
+
+TMPL = "mapper-wait@.service"
+TGT = "obmc-mgr-state.target"
+HOST_FMT = "../${TMPL}:${TGT}.wants/mapper-wait@-org-openbmc-settings-host{0}.service"
+CHASSIS_FMT = "../${TMPL}:${TGT}.wants/mapper-wait@-org-openbmc-control-chassis{0}.service"
+POWER_FMT = "../${TMPL}:${TGT}.wants/mapper-wait@-org-openbmc-control-power{0}.service"
+
+SYSTEMD_LINK_${PN} += "${@compose_list_zip(d, 'HOST_FMT', 'OBMC_HOST_INSTANCES')}"
+SYSTEMD_LINK_${PN} += "${@compose_list_zip(d, 'CHASSIS_FMT', 'OBMC_CHASSIS_INSTANCES')}"
+SYSTEMD_LINK_${PN} += "${@compose_list_zip(d, 'POWER_FMT', 'OBMC_POWER_INSTANCES')}"
diff --git a/common/recipes-phosphor/obmc-phosphor-sys/obmc-mgr-system.bb b/common/recipes-phosphor/obmc-phosphor-sys/obmc-mgr-system.bb
index accd7da..b59833e 100644
--- a/common/recipes-phosphor/obmc-phosphor-sys/obmc-mgr-system.bb
+++ b/common/recipes-phosphor/obmc-phosphor-sys/obmc-mgr-system.bb
@@ -3,7 +3,7 @@
 PR = "r1"
 
 inherit skeleton-python
-inherit obmc-phosphor-systemd
+inherit obmc-phosphor-dbus-service
 
 VIRTUAL-RUNTIME_skeleton_workbook ?= ""
 
@@ -25,3 +25,6 @@
 do_install_append() {
 	oe_runmake -C ../hacks install DESTDIR=${D}
 }
+
+DBUS_SERVICE_${PN} += "org.openbmc.managers.System.service"
+SYSTEMD_SERVICE_${PN} += "startup-hacks.service"
diff --git a/common/recipes-phosphor/obmc-phosphor-sys/obmc-mgr-system/obmc-mgr-system.service b/common/recipes-phosphor/obmc-phosphor-sys/obmc-mgr-system/obmc-mgr-system.service
deleted file mode 100644
index 076a60a..0000000
--- a/common/recipes-phosphor/obmc-phosphor-sys/obmc-mgr-system/obmc-mgr-system.service
+++ /dev/null
@@ -1,11 +0,0 @@
-[Unit]
-Description=OpenBMC system manager
-Requires=org.openbmc.ObjectMapper.service
-After=org.openbmc.ObjectMapper.service
-
-[Service]
-Restart=always
-ExecStart=/usr/sbin/system_manager.py
-
-[Install]
-WantedBy=multi-user.target