PEL: Adding the support for Systems Key in message registry

The current implementation has the support for adding system specific
callouts with the help of 'System' key in message_registry.json.

Adding one more key named 'Systems' where it can have array of system
names in the form of strings. The 'Systems' key can be used to define
the shared callouts for a group of systems.

A unique callout to a specific system can be added using the existing
System key. If both 'System' and 'Systems' are not present or not
matching with the system name, then the default calloutList will be
taken if configured.

Tested:

The test setup has the following names for the compatible interface.

```
busctl -j get-property xyz.openbmc_project.EntityManager
/xyz/openbmc_project/inventory/system/chassis/Rainier_2U_Chassis
xyz.openbmc_project.Inventory.Decorator.Compatible Names
{
	"type" : "as",
	"data" : [
		"com.ibm.Hardware.Chassis.Model.Rainier2U",
		"com.ibm.Hardware.Chassis.Model.Rainier"
	]
}
```
The callout section in the message_registry.json for TestError1 is
defined as below.
```
"Callouts": [
        {
            "Systems": ["com.ibm.Hardware.Chassis.Model.Rainier",
                     "com.ibm.Hardware.Chassis.Model.Blue_Ridge"],
            "CalloutList": [
                {"Priority": "medium", "SymbolicFRU": "service_docs"}
            ]
        },
        {
            "System": "com.ibm.Hardware.Chassis.Model.Rainier",
            "CalloutList": [
                {"Priority": "high", "Procedure": "BMC0001"}
            ]
        },
        {
             "CalloutList": [
                { "LocCode": "P0", "Priority": "high" },
                { "LocCode": "P0-C15","Priority": "low" }
            ]
        }
    ]
```

Leads to PEL callouts section as below:
```
"Callout Section": {
        "Callout Count":        "2",
        "Callouts": [{
            "FRU Type":         "Maintenance Procedure Required",
            "Priority":         "Mandatory, replace all with this type
                                 as a unit",
            "Procedure":        "BMC0001"
        }, {
            "FRU Type":         "Symbolic FRU",
            "Priority":         "Medium Priority",
            "Part Number":      "SVCDOCS"
        }]
    }
```

Signed-off-by: Arya K Padman <aryakpadman@gmail.com>
Change-Id: Iea65816dcb822bb07043897488a6251929548dc7
diff --git a/extensions/openpower-pels/registry/schema/schema.json b/extensions/openpower-pels/registry/schema/schema.json
index 429d3bf..d4fea9d 100644
--- a/extensions/openpower-pels/registry/schema/schema.json
+++ b/extensions/openpower-pels/registry/schema/schema.json
@@ -642,6 +642,15 @@
             "minLength": 1
         },
 
+        "systems": {
+            "description": "The Systems key can be defined and can be used to keep the name of the systems as an array of string if the systems possess same callout list.",
+            "type": "array",
+            "items": {
+                "type": "string"
+            },
+            "minItems": 1
+        },
+
         "callouts": {
             "description": "This contains callouts that can vary based on system type.  Each entry contains an optional System property and a required CalloutList property.  If the System property is left out it indicates that the CalloutList callouts are valid for every system type, unless there is another Callouts entry that has a matching System property, in which case that entry is valid.",
             "type": "array",
@@ -650,11 +659,22 @@
 
                 "properties": {
                     "System": { "$ref": "#/definitions/system" },
+                    "Systems": { "$ref": "#/definitions/systems" },
                     "CalloutList": { "$ref": "#/definitions/calloutList" }
                 },
-                "required": ["CalloutList"],
                 "additionalProperties": false
             },
+            "anyOf": [
+                {
+                    "required": ["System", "CalloutList"]
+                },
+                {
+                    "required": ["Systems", "CalloutList"]
+                },
+                {
+                    "required": ["CalloutList"]
+                }
+            ],
             "minItems": 1,
             "maxItems": 10,
 
@@ -665,6 +685,10 @@
                         "CalloutList": [{ "Priority": "high", "LocCode": "P1" }]
                     },
                     {
+                        "Systems": ["system1", "system2"],
+                        "CalloutList": [{ "Priority": "low", "LocCode": "P2" }]
+                    },
+                    {
                         "CalloutList": [
                             { "Priority": "high", "Procedure": "NEXTLVL" }
                         ]