Configuration yaml changes for virtual sensors

Change-Id: I270a62022340d6be382091a6595859dafdb634ae
Signed-off-by: Dhruvaraj Subhashchandran <dhruvaraj@in.ibm.com>
diff --git a/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/ipmi/openpower-ipmi-oem-sensor-inventory-mrw-native.bb b/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/ipmi/openpower-ipmi-oem-sensor-inventory-mrw-native.bb
new file mode 100644
index 0000000..3e434b5
--- /dev/null
+++ b/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/ipmi/openpower-ipmi-oem-sensor-inventory-mrw-native.bb
@@ -0,0 +1,16 @@
+SUMMARY = "OEM sensor config for phosphor-host-ipmid"
+PR = "r1"
+
+inherit native
+inherit obmc-phosphor-license
+inherit phosphor-ipmi-host
+
+SRC_URI += "file://openpower-config.yaml"
+
+S = "${WORKDIR}"
+
+do_install() {
+        DEST=${D}${sensor_yamldir}
+        install -d ${DEST}
+        install openpower-config.yaml ${DEST}/openpower-config.yaml
+}
diff --git a/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/ipmi/openpower-ipmi-oem-sensor-inventory-mrw/openpower-config.yaml b/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/ipmi/openpower-ipmi-oem-sensor-inventory-mrw/openpower-config.yaml
new file mode 100644
index 0000000..d0082ff
--- /dev/null
+++ b/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/ipmi/openpower-ipmi-oem-sensor-inventory-mrw/openpower-config.yaml
@@ -0,0 +1,15 @@
+0x09:
+  path: /org/open_power/control/
+  serviceInterface: org.freedesktop.DBus.Properties
+  readingType: assertion
+  interfaces:
+    org.open_power.OCC.Status:
+      OccActive:
+        0x00:
+          type: "bool"
+          assert: "false"
+          deassert: "true"
+        0x01:
+          type: "bool"
+          assert: "true"
+          deassert: "false"
diff --git a/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/packagegroups/packagegroup-obmc-ipmi-sensors.bbappend b/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/packagegroups/packagegroup-obmc-ipmi-sensors.bbappend
new file mode 100644
index 0000000..7fac2dd
--- /dev/null
+++ b/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/packagegroups/packagegroup-obmc-ipmi-sensors.bbappend
@@ -0,0 +1 @@
+OBMC_IPMI_SENSORS_PROVIDERS_append=" openpower-ipmi-oem-sensor-inventory-mrw-native"
diff --git a/meta-phosphor/classes/phosphor-ipmi-host.bbclass b/meta-phosphor/classes/phosphor-ipmi-host.bbclass
index 9725782..6f0bad5 100644
--- a/meta-phosphor/classes/phosphor-ipmi-host.bbclass
+++ b/meta-phosphor/classes/phosphor-ipmi-host.bbclass
@@ -1,3 +1,4 @@
 sensor_datadir="${datadir}/phosphor-ipmi-host/sensor"
+sensor_yamldir="${datadir}/phosphor-ipmi-host/sensor-yamls"
 hostfw_datadir="${datadir}/phosphor-ipmi-fru/hostfw"
 config_datadir="${datadir}/phosphor-ipmi-host/config"
diff --git a/meta-phosphor/common/recipes-phosphor/ipmi/phosphor-ipmi-host/merge_yamls.py b/meta-phosphor/common/recipes-phosphor/ipmi/phosphor-ipmi-host/merge_yamls.py
new file mode 100755
index 0000000..5e6c4b5
--- /dev/null
+++ b/meta-phosphor/common/recipes-phosphor/ipmi/phosphor-ipmi-host/merge_yamls.py
@@ -0,0 +1,59 @@
+#!/usr/bin/env python
+"""Copied from phosphor-settings-manager
+Loads a "target" YAML file and overwrites its values with values from
+"override" YAML files.
+
+Override files are processed in the order given.
+
+Usage:
+    merge_settings.py <target yaml> [override yamls]
+"""
+import sys
+import yaml
+import copy
+
+def dict_merge(target, source):
+    """Deep merge for dicts.
+
+    Works like dict.update() that recursively updates any dict values present in
+    both parameters.
+
+    Args:
+        target (dict): Values to be overwritten by corresponding values from
+            `source`.
+        source (dict): Overriding values. Not changed by call.
+
+    Returns:
+        `target` with values overwritten from those in `source` at any and all
+        levels of nested dicts.
+    """
+    if not isinstance(source, dict):
+        return source
+    for k, v in source.iteritems():
+        if k in target and isinstance(target[k], dict):
+            dict_merge(target[k], v)
+        else:
+            target[k] = copy.deepcopy(v)
+    return target
+
+if len(sys.argv) < 2:
+    sys.exit('Argument required: target yaml')
+
+if len(sys.argv) == 2:
+    # No overrides to handle
+    sys.exit(0)
+
+target_filename = sys.argv[1]
+with open(target_filename) as target_file:
+    data = yaml.safe_load(target_file)
+    print('Loaded target YAML file ' + target_filename)
+
+for override_filename in sys.argv[2:]:
+    with open(override_filename) as override_file:
+        override = yaml.safe_load(override_file)
+        dict_merge(data, override)
+        print('Merged override YAML file ' + override_filename)
+
+with open(target_filename, 'w') as target_file:
+    yaml.dump(data, target_file, default_flow_style=False)
+    print('Wrote merged target YAML file ' + target_filename)
diff --git a/meta-phosphor/common/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory-mrw-config-native.bb b/meta-phosphor/common/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory-mrw-config-native.bb
new file mode 100644
index 0000000..a33eb2b
--- /dev/null
+++ b/meta-phosphor/common/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory-mrw-config-native.bb
@@ -0,0 +1,17 @@
+SUMMARY = "sensor config for phosphor-host-ipmid"
+PR = "r1"
+
+inherit native
+inherit obmc-phosphor-license
+inherit phosphor-ipmi-host
+
+SRC_URI += "file://config.yaml"
+
+S = "${WORKDIR}"
+
+do_install() {
+        DEST=${D}${sensor_yamldir}
+        install -d ${DEST}
+        install config.yaml ${DEST}/config.yaml
+}
+
diff --git a/meta-phosphor/common/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory-mrw-config/config.yaml b/meta-phosphor/common/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory-mrw-config/config.yaml
new file mode 100644
index 0000000..32b4cff
--- /dev/null
+++ b/meta-phosphor/common/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory-mrw-config/config.yaml
@@ -0,0 +1,90 @@
+0xC3:
+  path: /xyz/openbmc_project/state/host0
+  serviceInterface: org.freedesktop.DBus.Properties
+  readingType: reading
+  interfaces:
+    xyz.openbmc_project.Control.Boot.RebootAttempts:
+      AttemptsLeft:
+        0xFF:
+          type: uint32_t
+0x1F:
+  path: /xyz/openbmc_project/state/host0
+  serviceInterface: org.freedesktop.DBus.Properties
+  readingType: assertion
+  interfaces:
+    xyz.openbmc_project.State.OperatingSystem.Status:
+      OperatingSystemState:
+        0x01:
+          assert: "xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.CBoot"
+          type: string
+        0x02:
+          assert: "xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.PXEBoot"
+          type: string
+        0x03:
+          assert: "xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.DiagBoot"
+          type: string
+        0x04:
+          assert: "xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.CDROMBoot"
+          type: string
+        0x05:
+          assert: "xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.ROMBoot"
+          type: string
+        0x06:
+          assert: "xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.BootComplete"
+          type: string
+0x0F:
+  path: /xyz/openbmc_project/state/host0
+  serviceInterface: org.freedesktop.DBus.Properties
+  readingType: eventdata2
+  interfaces:
+    xyz.openbmc_project.State.Boot.Progress:
+      BootProgress:
+        0x00:
+          type: string
+          set: "xyz.openbmc_project.State.Boot.Progress.ProgressStages.Unspecified"
+        0x01:
+          type: string
+          set: "xyz.openbmc_project.State.Boot.Progress.ProgressStages.MemoryInit"
+        0x03:
+          type: string
+          set: "xyz.openbmc_project.State.Boot.Progress.ProgressStages.SecondaryProcInit"
+        0x13:
+          type: string
+          set: "xyz.openbmc_project.State.Boot.Progress.ProgressStages.OSStart"
+        0x14:
+          type: string
+          set: "xyz.openbmc_project.State.Boot.Progress.ProgressStages.MotherboardInit"
+0x0C:
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
+  byteOffset: 0x00
+  interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+        0x04:
+          type:   "bool"
+          assert:  false
+          deassert: true
+    xyz.openbmc_project.Inventory.Item:
+      Present:
+        0x06:
+          type: "bool"
+          assert: true
+          deassert: false
+0x07:
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
+  byteOffset: 0x00
+  interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+        0x08:
+          type:   "bool"
+          assert: false
+          deassert: true
+    xyz.openbmc_project.Inventory.Item:
+      Present:
+        0x07:
+          type: "bool"
+          assert: true
+          deassert: false
diff --git a/meta-phosphor/common/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory-mrw-native.bb b/meta-phosphor/common/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory-mrw-native.bb
index db018c6..169b547 100644
--- a/meta-phosphor/common/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory-mrw-native.bb
+++ b/meta-phosphor/common/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory-mrw-native.bb
@@ -4,17 +4,19 @@
 inherit native
 inherit obmc-phosphor-license
 inherit phosphor-ipmi-host
-
-SRC_URI += "file://config.yaml"
+inherit pythonnative
 
 DEPENDS += " \
            mrw-native \
            mrw-perl-tools-native \
+           packagegroup-obmc-ipmi-sensors \
+           phosphor-ipmi-sensor-inventory-mrw-config-native \
            "
 
 PROVIDES += "virtual/phosphor-ipmi-sensor-inventory"
 
 S = "${WORKDIR}"
+SRC_URI += "file://merge_sensor_config.py"
 
 do_install() {
         DEST=${D}${sensor_datadir}
@@ -23,6 +25,30 @@
         ${bindir}/perl-native/perl \
             ${bindir}/gen_ipmi_sensor.pl \
             -i ${datadir}/obmc-mrw/${MACHINE}.xml \
-            -m config.yaml \
+            -m ${sensor_yamldir}/config.yaml \
             -o ${DEST}/sensor.yaml
 }
+
+python do_merge_sensor_config () {
+    import subprocess
+
+    # TODO: Perform the merge in a temporary directory?
+    workdir = d.getVar('WORKDIR', True)
+    nativedir = d.getVar('STAGING_DIR_NATIVE', True)
+    sensoryamldir = d.getVar('sensor_yamldir', True)
+    cmd = []
+    cmd.append(os.path.join(workdir, 'merge_sensor_config.py'))
+    cmd.append(os.path.join(sensoryamldir, 'config.yaml'))
+
+    fetch = os.listdir(sensoryamldir)
+    override_urls = filter(lambda f: f.endswith('-config.yaml'), fetch)
+    for url in override_urls:
+        bb.debug(2, 'Merging extra configurations: ' + url)
+        filename = os.path.join(sensoryamldir, url)
+        cmd.append(filename)
+
+    # Invoke the script and don't catch any resulting exception.
+    subprocess.check_call(cmd)
+}
+# python-pyyaml-native is installed by do_configure, so put this task after
+addtask merge_sensor_config after do_configure before do_compile
diff --git a/meta-phosphor/common/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory-mrw/config.yaml b/meta-phosphor/common/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory-mrw/config.yaml
deleted file mode 100644
index 1830611..0000000
--- a/meta-phosphor/common/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory-mrw/config.yaml
+++ /dev/null
@@ -1,27 +0,0 @@
-0x0C:
-  xyz.openbmc_project.State.Decorator.OperationalStatus:
-    Functional:
-      0x04:
-        type:   "bool"
-        assert:  false
-        deassert: true
-  xyz.openbmc_project.Inventory.Item:
-    Present:
-      0x06:
-        type: "bool"
-        assert: true
-        deassert: false
-
-0x07:
-  xyz.openbmc_project.State.Decorator.OperationalStatus:
-    Functional:
-      0x08:
-        type:   "bool"
-        assert: false
-        deassert: true
-  xyz.openbmc_project.Inventory.Item:
-    Present:
-      0x07:
-        type: "bool"
-        assert: true
-        deassert: false
diff --git a/meta-phosphor/common/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory-mrw/merge_sensor_config.py b/meta-phosphor/common/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory-mrw/merge_sensor_config.py
new file mode 120000
index 0000000..6ae3bca
--- /dev/null
+++ b/meta-phosphor/common/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory-mrw/merge_sensor_config.py
@@ -0,0 +1 @@
+../phosphor-ipmi-host/merge_yamls.py
\ No newline at end of file
diff --git a/meta-phosphor/common/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory/config.yaml b/meta-phosphor/common/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory/config.yaml
index bbd4ff1..0765f82 100644
--- a/meta-phosphor/common/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory/config.yaml
+++ b/meta-phosphor/common/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory/config.yaml
@@ -1,726 +1,1316 @@
+0x07:
+  sensorType: 0xC3
+  path: /xyz/openbmc_project/state/host0
+  sensorReadingType: 0x6F
+  serviceInterface: org.freedesktop.DBus.Properties
+  readingType: reading
+  interfaces:
+    xyz.openbmc_project.Control.Boot.RebootAttempts:
+      AttemptsLeft:
+          0xFF:
+            type: uint32_t
+0x03:
+  sensorType: 0x0F
+  path: /xyz/openbmc_project/state/host0
+  sensorReadingType: 0x6F
+  serviceInterface: org.freedesktop.DBus.Properties
+  readingType: eventdata2
+  interfaces:
+    xyz.openbmc_project.State.Boot.Progress:
+      BootProgress:
+          0x13:
+            type: string
+            set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.OSStart
+          0x00:
+            type: string
+            set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.Unspecified
+          0x01:
+            type: string
+            set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.MemoryInit
+          0x14:
+            type: string
+            set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.MotherboardInit
+          0x03:
+            type: string
+            set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.SecondaryProcInit
 0xa6:
   sensorType: 0x0C
   path: /system/chassis/motherboard/dimm0
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
     xyz.openbmc_project.State.Decorator.OperationalStatus:
       Functional:
-        0x04:
-          assert: "false"
-          deassert: "true"
-          type: bool
+          0x04:
+            assert: false
+            deassert: true
+            type: bool
+    xyz.openbmc_project.Inventory.Item:
+      Present:
+          0x06:
+            assert: true
+            deassert: false
+            type: bool
 0xa8:
   sensorType: 0x0C
   path: /system/chassis/motherboard/dimm1
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
     xyz.openbmc_project.State.Decorator.OperationalStatus:
       Functional:
-        0x04:
-          assert: "false"
-          deassert: "true"
-          type: bool
+          0x04:
+            assert: false
+            deassert: true
+            type: bool
+    xyz.openbmc_project.Inventory.Item:
+      Present:
+          0x06:
+            assert: true
+            deassert: false
+            type: bool
 0xba:
   sensorType: 0x0C
   path: /system/chassis/motherboard/dimm10
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
     xyz.openbmc_project.State.Decorator.OperationalStatus:
       Functional:
-        0x04:
-          assert: "false"
-          deassert: "true"
-          type: bool
+          0x04:
+            assert: false
+            deassert: true
+            type: bool
+    xyz.openbmc_project.Inventory.Item:
+      Present:
+          0x06:
+            assert: true
+            deassert: false
+            type: bool
 0xbc:
   sensorType: 0x0C
   path: /system/chassis/motherboard/dimm11
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
     xyz.openbmc_project.State.Decorator.OperationalStatus:
       Functional:
-        0x04:
-          assert: "false"
-          deassert: "true"
-          type: bool
+          0x04:
+            assert: false
+            deassert: true
+            type: bool
+    xyz.openbmc_project.Inventory.Item:
+      Present:
+          0x06:
+            assert: true
+            deassert: false
+            type: bool
 0xbe:
   sensorType: 0x0C
   path: /system/chassis/motherboard/dimm12
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
     xyz.openbmc_project.State.Decorator.OperationalStatus:
       Functional:
-        0x04:
-          assert: "false"
-          deassert: "true"
-          type: bool
+          0x04:
+            assert: false
+            deassert: true
+            type: bool
+    xyz.openbmc_project.Inventory.Item:
+      Present:
+          0x06:
+            assert: true
+            deassert: false
+            type: bool
 0xc0:
   sensorType: 0x0C
   path: /system/chassis/motherboard/dimm13
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
     xyz.openbmc_project.State.Decorator.OperationalStatus:
       Functional:
-        0x04:
-          assert: "false"
-          deassert: "true"
-          type: bool
+          0x04:
+            assert: false
+            deassert: true
+            type: bool
+    xyz.openbmc_project.Inventory.Item:
+      Present:
+          0x06:
+            assert: true
+            deassert: false
+            type: bool
 0xc2:
   sensorType: 0x0C
   path: /system/chassis/motherboard/dimm14
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
     xyz.openbmc_project.State.Decorator.OperationalStatus:
       Functional:
-        0x04:
-          assert: "false"
-          deassert: "true"
-          type: bool
+          0x04:
+            assert: false
+            deassert: true
+            type: bool
+    xyz.openbmc_project.Inventory.Item:
+      Present:
+          0x06:
+            assert: true
+            deassert: false
+            type: bool
 0xc4:
   sensorType: 0x0C
   path: /system/chassis/motherboard/dimm15
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
     xyz.openbmc_project.State.Decorator.OperationalStatus:
       Functional:
-        0x04:
-          assert: "false"
-          deassert: "true"
-          type: bool
+          0x04:
+            assert: false
+            deassert: true
+            type: bool
+    xyz.openbmc_project.Inventory.Item:
+      Present:
+          0x06:
+            assert: true
+            deassert: false
+            type: bool
 0xaa:
   sensorType: 0x0C
   path: /system/chassis/motherboard/dimm2
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
     xyz.openbmc_project.State.Decorator.OperationalStatus:
       Functional:
-        0x04:
-          assert: "false"
-          deassert: "true"
-          type: bool
+          0x04:
+            assert: false
+            deassert: true
+            type: bool
+    xyz.openbmc_project.Inventory.Item:
+      Present:
+          0x06:
+            assert: true
+            deassert: false
+            type: bool
 0xac:
   sensorType: 0x0C
   path: /system/chassis/motherboard/dimm3
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
     xyz.openbmc_project.State.Decorator.OperationalStatus:
       Functional:
-        0x04:
-          assert: "false"
-          deassert: "true"
-          type: bool
+          0x04:
+            assert: false
+            deassert: true
+            type: bool
+    xyz.openbmc_project.Inventory.Item:
+      Present:
+          0x06:
+            assert: true
+            deassert: false
+            type: bool
 0xae:
   sensorType: 0x0C
   path: /system/chassis/motherboard/dimm4
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
     xyz.openbmc_project.State.Decorator.OperationalStatus:
       Functional:
-        0x04:
-          assert: "false"
-          deassert: "true"
-          type: bool
+          0x04:
+            assert: false
+            deassert: true
+            type: bool
+    xyz.openbmc_project.Inventory.Item:
+      Present:
+          0x06:
+            assert: true
+            deassert: false
+            type: bool
 0xb0:
   sensorType: 0x0C
   path: /system/chassis/motherboard/dimm5
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
     xyz.openbmc_project.State.Decorator.OperationalStatus:
       Functional:
-        0x04:
-          assert: "false"
-          deassert: "true"
-          type: bool
+          0x04:
+            assert: false
+            deassert: true
+            type: bool
+    xyz.openbmc_project.Inventory.Item:
+      Present:
+          0x06:
+            assert: true
+            deassert: false
+            type: bool
 0xb2:
   sensorType: 0x0C
   path: /system/chassis/motherboard/dimm6
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
     xyz.openbmc_project.State.Decorator.OperationalStatus:
       Functional:
-        0x04:
-          assert: "false"
-          deassert: "true"
-          type: bool
+          0x04:
+            assert: false
+            deassert: true
+            type: bool
+    xyz.openbmc_project.Inventory.Item:
+      Present:
+          0x06:
+            assert: true
+            deassert: false
+            type: bool
 0xb4:
   sensorType: 0x0C
   path: /system/chassis/motherboard/dimm7
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
     xyz.openbmc_project.State.Decorator.OperationalStatus:
       Functional:
-        0x04:
-          assert: "false"
-          deassert: "true"
-          type: bool
+          0x04:
+            assert: false
+            deassert: true
+            type: bool
+    xyz.openbmc_project.Inventory.Item:
+      Present:
+          0x06:
+            assert: true
+            deassert: false
+            type: bool
 0xb6:
   sensorType: 0x0C
   path: /system/chassis/motherboard/dimm8
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
     xyz.openbmc_project.State.Decorator.OperationalStatus:
       Functional:
-        0x04:
-          assert: "false"
-          deassert: "true"
-          type: bool
+          0x04:
+            assert: false
+            deassert: true
+            type: bool
+    xyz.openbmc_project.Inventory.Item:
+      Present:
+          0x06:
+            assert: true
+            deassert: false
+            type: bool
 0xb8:
   sensorType: 0x0C
   path: /system/chassis/motherboard/dimm9
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
     xyz.openbmc_project.State.Decorator.OperationalStatus:
       Functional:
-        0x04:
-          assert: "false"
-          deassert: "true"
-          type: bool
+          0x04:
+            assert: false
+            deassert: true
+            type: bool
+    xyz.openbmc_project.Inventory.Item:
+      Present:
+          0x06:
+            assert: true
+            deassert: false
+            type: bool
 0x5a:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu0
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x12:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu0/core0
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x15:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu0/core1
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x18:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu0/core2
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x1b:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu0/core3
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x1e:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu0/core4
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x21:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu0/core5
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x24:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu0/core6
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x27:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu0/core7
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x2a:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu0/core8
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x2d:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu0/core9
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x30:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu0/core10
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x33:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu0/core11
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x36:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu0/core12
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x39:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu0/core13
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x3c:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu0/core14
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x3f:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu0/core15
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x42:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu0/core16
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x45:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu0/core17
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x48:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu0/core18
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x4b:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu0/core19
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x4e:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu0/core20
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x51:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu0/core21
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x54:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu0/core22
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x57:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu0/core23
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0xa4:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu1
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x5c:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu1/core0
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x5f:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu1/core1
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x62:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu1/core2
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x65:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu1/core3
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x68:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu1/core4
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x6b:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu1/core5
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x6e:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu1/core6
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x71:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu1/core7
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x74:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu1/core8
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x77:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu1/core9
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x7a:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu1/core10
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x7d:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu1/core11
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x80:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu1/core12
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x83:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu1/core13
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x86:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu1/core14
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x89:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu1/core15
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x8c:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu1/core16
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x8f:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu1/core17
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x92:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu1/core18
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x95:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu1/core19
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x98:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu1/core20
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x9b:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu1/core21
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0x9e:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu1/core22
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
 0xa1:
   sensorType: 0x07
   path: /system/chassis/motherboard/cpu1/core23
   sensorReadingType: 0x6F
+  serviceInterface: xyz.openbmc_project.Inventory.Manager
+  readingType: assertion
   interfaces:
+    xyz.openbmc_project.State.Decorator.OperationalStatus:
+      Functional:
+          0x08:
+            assert: false
+            deassert: true
+            type: bool
     xyz.openbmc_project.Inventory.Item:
       Present:
-        0x07:
-          deassert: "false"
-          assert: "true"
-          type: bool
+          0x07:
+            assert: true
+            deassert: false
+            type: bool
+0x05:
+  sensorType: 0x1F
+  path: /xyz/openbmc_project/state/host0
+  sensorReadingType: 0x6F
+  serviceInterface: org.freedesktop.DBus.Properties
+  readingType: assertion
+  interfaces:
+    xyz.openbmc_project.State.OperatingSystem.Status:
+      OperatingSystemState:
+          0x02:
+            assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.PXEBoot
+            type: string
+          0x06:
+            assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.BootComplete
+            type: string
+          0x04:
+            assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.CDROMBoot
+            type: string
+          0x01:
+            assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.CBoot
+            type: string
+          0x03:
+            assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.DiagBoot
+            type: string
+          0x05:
+            assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.ROMBoot
+            type: string
diff --git a/meta-phosphor/common/recipes-phosphor/packagegroups/packagegroup-obmc-ipmi-sensors.bb b/meta-phosphor/common/recipes-phosphor/packagegroups/packagegroup-obmc-ipmi-sensors.bb
new file mode 100644
index 0000000..2fe7d1b
--- /dev/null
+++ b/meta-phosphor/common/recipes-phosphor/packagegroups/packagegroup-obmc-ipmi-sensors.bb
@@ -0,0 +1,12 @@
+SUMMARY = "OpenBMC - IPMI sensors"
+PR = "r1"
+
+inherit native
+inherit packagegroup
+inherit obmc-phosphor-license
+
+PROVIDES = "${PACKAGES}"
+
+OBMC_IPMI_SENSORS_PROVIDERS = "phosphor-ipmi-sensor-inventory-mrw-config-native"
+
+DEPENDS_append = " ${OBMC_IPMI_SENSORS_PROVIDERS} "