schemas: extract exposes_record.json

Extract a separate schema file to define the schema for an EM 'Exposes'
record.

This helps to reduce the file size for the global schema.

Tested: Schema Validator Pass

Change-Id: Id6be88a4a41c7f859dda4a7e92facd2a52f9f228
Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>
diff --git a/schemas/exposes_record.json b/schemas/exposes_record.json
new file mode 100644
index 0000000..03ebf08
--- /dev/null
+++ b/schemas/exposes_record.json
@@ -0,0 +1,168 @@
+{
+    "$schema": "http://json-schema.org/draft-07/schema#",
+    "$defs": {
+        "EMExposesElement": {
+            "description": "The exposes property element schema.  An element of the exposes property is always an array where elements are of type exposes entry.",
+            "allOf": [
+                {
+                    "oneOf": [
+                        {
+                            "$ref": "ibm.json#/$defs/PowerModeProperties"
+                        },
+                        {
+                            "$ref": "ibm.json#/$defs/IBMCompatibleSystem"
+                        },
+                        {
+                            "$ref": "ibm.json#/$defs/IBMCFFPSConnector"
+                        },
+                        {
+                            "$ref": "intel.json#/$defs/IntelFanConnector"
+                        },
+                        {
+                            "$ref": "mctp.json#/$defs/MCTPI2CTarget"
+                        },
+                        {
+                            "$ref": "mctp.json#/$defs/MCTPI3CTarget"
+                        },
+                        {
+                            "$ref": "pid.json#/$defs/Pid"
+                        },
+                        {
+                            "$ref": "pid_zone.json#/$defs/PidZone"
+                        },
+                        {
+                            "$ref": "satellite_controller.json#/$defs/SatelliteController"
+                        },
+                        {
+                            "$ref": "stepwise.json#/$defs/Stepwise"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/ExitAirTempSensor"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/CFMSensor"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/FanRedundancy"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/PURedundancy"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/ChassisIntrusionSensor"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/AspeedFan"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/I2CFan"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/NuvotonFan"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/XeonCPU"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/IpmbSensor"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/I2CMux"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/Gpio"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/MultiNodeID"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/MultiNodePresence"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/HostCpuUtilization"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/ExternalSensor"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/Port"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/DownstreamPort"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/PSUPresence"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/EmmcDevice"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/IpmbDevice"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/IpmbPowerMonitor"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/ADC"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/TempSensor"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/NVME1000"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/EEPROM"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/PSUSensor"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/NMSensor"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/IntelHsbpFruDevice"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/IntelHsbpTempSensor"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/IntelHsbpCPLD"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/GenericSMBusMux"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/BMC"
+                        },
+                        {
+                            "$ref": "legacy.json#/$defs/UCD90XXX"
+                        },
+                        {
+                            "$ref": "virtual_sensor.json#/$defs/VirtualSensor"
+                        },
+                        {
+                            "$ref": "leak_detector.json#/$defs/GPIOLeakDetector"
+                        },
+                        {
+                            "$ref": "firmware.json#/$defs/XDPE1X2XXFirmware"
+                        }
+                    ]
+                },
+                {
+                    "title": "Missing 'Name'",
+                    "description": "Ensure the schema does not validate when an element does not define a Name",
+                    "required": ["Name"]
+                },
+                {
+                    "title": "Missing 'Type'",
+                    "description": "Ensure the schema does not validate when an element does not define a Type",
+                    "required": ["Type"]
+                }
+            ],
+            "title": "Exposes Property Element"
+        }
+    },
+    "title": "Entity Manager Exposes Record",
+    "description": "The schema for an entity manager exposes record."
+}
diff --git a/schemas/global.json b/schemas/global.json
index ba54428..a001b26 100644
--- a/schemas/global.json
+++ b/schemas/global.json
@@ -1,167 +1,6 @@
 {
     "$schema": "http://json-schema.org/draft-07/schema#",
     "$defs": {
-        "EMExposesElement": {
-            "description": "The exposes property element schema.  An element of the exposes property is always an array where elements are of type exposes entry.",
-            "allOf": [
-                {
-                    "oneOf": [
-                        {
-                            "$ref": "ibm.json#/$defs/PowerModeProperties"
-                        },
-                        {
-                            "$ref": "ibm.json#/$defs/IBMCompatibleSystem"
-                        },
-                        {
-                            "$ref": "ibm.json#/$defs/IBMCFFPSConnector"
-                        },
-                        {
-                            "$ref": "intel.json#/$defs/IntelFanConnector"
-                        },
-                        {
-                            "$ref": "mctp.json#/$defs/MCTPI2CTarget"
-                        },
-                        {
-                            "$ref": "mctp.json#/$defs/MCTPI3CTarget"
-                        },
-                        {
-                            "$ref": "pid.json#/$defs/Pid"
-                        },
-                        {
-                            "$ref": "pid_zone.json#/$defs/PidZone"
-                        },
-                        {
-                            "$ref": "satellite_controller.json#/$defs/SatelliteController"
-                        },
-                        {
-                            "$ref": "stepwise.json#/$defs/Stepwise"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/ExitAirTempSensor"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/CFMSensor"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/FanRedundancy"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/PURedundancy"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/ChassisIntrusionSensor"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/AspeedFan"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/I2CFan"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/NuvotonFan"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/XeonCPU"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/IpmbSensor"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/I2CMux"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/Gpio"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/MultiNodeID"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/MultiNodePresence"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/HostCpuUtilization"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/ExternalSensor"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/Port"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/DownstreamPort"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/PSUPresence"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/EmmcDevice"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/IpmbDevice"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/IpmbPowerMonitor"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/ADC"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/TempSensor"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/NVME1000"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/EEPROM"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/PSUSensor"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/NMSensor"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/IntelHsbpFruDevice"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/IntelHsbpTempSensor"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/IntelHsbpCPLD"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/GenericSMBusMux"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/BMC"
-                        },
-                        {
-                            "$ref": "legacy.json#/$defs/UCD90XXX"
-                        },
-                        {
-                            "$ref": "virtual_sensor.json#/$defs/VirtualSensor"
-                        },
-                        {
-                            "$ref": "leak_detector.json#/$defs/GPIOLeakDetector"
-                        },
-                        {
-                            "$ref": "firmware.json#/$defs/XDPE1X2XXFirmware"
-                        }
-                    ]
-                },
-                {
-                    "title": "Missing 'Name'",
-                    "description": "Ensure the schema does not validate when an element does not define a Name",
-                    "required": ["Name"]
-                },
-                {
-                    "title": "Missing 'Type'",
-                    "description": "Ensure the schema does not validate when an element does not define a Type",
-                    "required": ["Type"]
-                }
-            ],
-            "title": "Exposes Property Element"
-        },
         "EMConfig": {
             "title": "Entity Manager Configuration",
             "description": "The schema for an entity manager configuration. An entity manager configuration describes an association between a match condition, also known as a probe, and an array of heterogeneous configuration data.  When a probe match occurs, the configuration data is exported to DBus.",
@@ -175,7 +14,7 @@
                     "description": "The schema for the exposes property. The exposes property must be an array where elements are of type EMExposesElement.  The exposes property is the heterogeneous configuration data exported to DBus upon a probe match.",
                     "type": "array",
                     "items": {
-                        "$ref": "#/$defs/EMExposesElement"
+                        "$ref": "exposes_record.json#/$defs/EMExposesElement"
                     }
                 },
                 "Logging": {