Move the service files to the occ-control repo

To align with the OpenBMC direction, the OCC service files are being
moved into the owning repo, instead of in the meta-openpower directories
in openbmc.

Change-Id: Icef03a173249dd559f7ae41a8026b11656004d53
Signed-off-by: Chris Cain <cjcain@us.ibm.com>
diff --git a/gen/meson.build b/gen/meson.build
index 2756633..a7da0a7 100644
--- a/gen/meson.build
+++ b/gen/meson.build
@@ -2,12 +2,13 @@
 sdbuspp_gen_meson_ver = run_command(
     sdbuspp_gen_meson_prog,
     '--version',
+    check: true,
 ).stdout().strip().split('\n')[0]
 
-if sdbuspp_gen_meson_ver != 'sdbus++-gen-meson version 4'
+if sdbuspp_gen_meson_ver != 'sdbus++-gen-meson version 5'
     warning('Generated meson files from wrong version of sdbus++-gen-meson.')
     warning(
-        'Expected "sdbus++-gen-meson version 4", got:',
+        'Expected "sdbus++-gen-meson version 5", got:',
         sdbuspp_gen_meson_ver
     )
 endif
diff --git a/meson.build b/meson.build
index 73daee4..4f5b8d0 100644
--- a/meson.build
+++ b/meson.build
@@ -48,6 +48,16 @@
     configuration: conf_data
 )
 
+install_data('occ-active.sh',
+    install_mode: 'rwxr-xr-x',
+    install_dir: get_option('bindir')
+)
+
+systemd = dependency('systemd')
+systemd_system_unit_dir = systemd.get_variable(
+    pkgconfig : 'systemdsystemunitdir')
+subdir('service_files')
+
 sdbusplus_dep = dependency('sdbusplus')
 sdbusplusplus_prog = find_program('sdbus++')
 sdbuspp_gen_meson_prog = find_program('sdbus++-gen-meson')
diff --git a/occ-active.sh b/occ-active.sh
new file mode 100755
index 0000000..6edfdec
--- /dev/null
+++ b/occ-active.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+# set and unset occ active for all occ's in system
+
+if [ "$1" = "disable" ]; then
+    value='false'
+elif [ "$1" = "enable" ]; then
+    value='true'
+else
+    echo "Usage: occ-active.sh [argument]"
+    echo "  enable  - set occ's to active state"
+    echo "  disable - set occ's to inactive state"
+    exit 255
+fi
+
+OCC_CONTROL_SERVICE="org.open_power.OCC.Control"
+
+busctl tree $OCC_CONTROL_SERVICE --list | grep -i occ | xargs -r -n1 -I{} \
+    busctl set-property $OCC_CONTROL_SERVICE {} org.open_power.OCC.Status \
+    OccActive b $value
+exit 0
diff --git a/service_files/meson.build b/service_files/meson.build
new file mode 100644
index 0000000..4bbce89
--- /dev/null
+++ b/service_files/meson.build
@@ -0,0 +1,15 @@
+unit_files = [
+   'org.open_power.OCC.Control.service',
+   'op-occ-disable@.service',
+   'op-occ-enable@.service'
+]
+
+foreach u : unit_files
+    configure_file(
+        copy: true,
+        input: u,
+        install: true,
+        install_dir: systemd_system_unit_dir,
+        output: u,
+        )
+endforeach
diff --git a/service_files/op-occ-disable@.service b/service_files/op-occ-disable@.service
new file mode 100644
index 0000000..dfa3935
--- /dev/null
+++ b/service_files/op-occ-disable@.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=OpenPOWER OCC Active Disable
+Before=obmc-host-stop-pre@%i.target
+Before=op-enter-mpreboot@%i.service
+Before=op-stop-instructions@%i.service
+Conflicts=op-occ-enable@%i.service
+
+[Service]
+ExecStart=/usr/bin/occ-active.sh disable
+Type=oneshot
+
+[Install]
+WantedBy=obmc-host-stop@%i.target
diff --git a/service_files/op-occ-enable@.service b/service_files/op-occ-enable@.service
new file mode 100644
index 0000000..5431101
--- /dev/null
+++ b/service_files/op-occ-enable@.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=OpenPOWER OCC Active Enable for host %I
+Conflicts=obmc-host-stop@%i.target
+Conflicts=op-occ-disable@%i.service
+Wants=org.open_power.OCC.Control.service
+After=org.open_power.OCC.Control.service
+Wants=fsi-scan@%i.service
+After=fsi-scan@%i.service
+ConditionPathExists=/run/openbmc/host@%i-on
+
+[Service]
+ExecStart=/usr/bin/occ-active.sh enable
+Type=oneshot
+
+[Install]
+WantedBy=obmc-host-start@%i.target
diff --git a/service_files/org.open_power.OCC.Control.service b/service_files/org.open_power.OCC.Control.service
new file mode 100644
index 0000000..d371d6a
--- /dev/null
+++ b/service_files/org.open_power.OCC.Control.service
@@ -0,0 +1,19 @@
+[Unit]
+Description=OpenPOWER OCC controller
+Wants=mapper-wait@-xyz-openbmc_project-inventory.service
+After=mapper-wait@-xyz-openbmc_project-inventory.service
+Wants=obmc-host-reset-running@0.target
+After=obmc-host-reset-running@0.target
+Wants=xyz.openbmc_project.Logging.service
+After=xyz.openbmc_project.Logging.service
+Wants=xyz.openbmc_project.PLDM
+After=xyz.openbmc_project.PLDM
+
+[Service]
+ExecStart=/usr/bin/openpower-occ-control
+Restart=always
+Type=dbus
+BusName={BUSNAME}
+
+[Install]
+WantedBy=multi-user.target