HardwareIsolation: Added the "CreateWithErrorLog" method

In an OpenPOWER based system, an application can isolate hardware
in the error path if the hardware is faulty, and the respective
isolated hardware part will be ignored to init during the
next boot of the host.

This interface will be used to isolate hardware by using
the respective hardware path along with error log which is caused
the hardware isolation.

This method is not going to create an error log and the consumer
of this method need to pass the bmc error log which caused
the isolation.

The added method will throw below exceptions.
- xyz.openbmc_project.Common.Error.InvalidArgument
  - If the given parameters are invalid.
  - If the given hardware is not found to isolate.
- xyz.openbmc_project.Common.Error.TooManyResources
  - If the platforms are not allowed to isolate hardware
    when the isolated hardware count is reached to the maximum
    allowed size.
- xyz.openbmc_project.HardwareIsolation.Error.IsolatedAlready
  - If the isolating hardware is already isolated.
- xyz.openbmc_project.Common.Error.NotAllowed
  - If the given hardware cannot be isolated permanently.
- xyz.openbmc_project.Common.Error.Unavailable
  - If the given hardware cannot be isolated temporarily.

Please refer https://gerrit.openbmc-project.xyz/c/openbmc/docs/+/27804
to get more details of hardware isolation.

Signed-off-by: Ramesh Iyyar <rameshi1@in.ibm.com>
Change-Id: I10218466fd2e1bf956b6cbb97da2c91480d70642
diff --git a/yaml/xyz/openbmc_project/HardwareIsolation/Create.interface.yaml b/yaml/xyz/openbmc_project/HardwareIsolation/Create.interface.yaml
index 9a2b23e..ee8de8c 100644
--- a/yaml/xyz/openbmc_project/HardwareIsolation/Create.interface.yaml
+++ b/yaml/xyz/openbmc_project/HardwareIsolation/Create.interface.yaml
@@ -31,3 +31,38 @@
           - xyz.openbmc_project.HardwareIsolation.Error.IsolatedAlready
           - xyz.openbmc_project.Common.Error.NotAllowed
           - xyz.openbmc_project.Common.Error.Unavailable
+
+    - name: CreateWithErrorLog
+      description: >
+          Create an xyz.openbmc_project.HardwareIsolation.Entry object
+          if any of the hardware, needs to be isolated. This interface
+          can be used if the system wants to isolate hardware with
+          an error log that is caused to isolate hardware.
+          This method is not going to create an error log and the consumer
+          of this method need to pass the bmc error log which caused
+          the isolation.
+      parameters:
+        - name: IsolateHardware
+          type: path
+          description: >
+              The hardware inventory path which is needs to isolate.
+        - name: Severity
+          type: enum[xyz.openbmc_project.HardwareIsolation.Entry.Type]
+          description: >
+              The severity of hardware isolation.
+        - name: BmcErrorLog
+          type: path
+          description: >
+              The BMC error log caused the isolation of hardware.
+      returns:
+        - name: Path
+          type: path
+          description: >
+              The path of created xyz.openbmc_project.HardwareIsolation.Entry
+              object.
+      errors:
+          - xyz.openbmc_project.Common.Error.InvalidArgument
+          - xyz.openbmc_project.Common.Error.TooManyResources
+          - xyz.openbmc_project.HardwareIsolation.Error.IsolatedAlready
+          - xyz.openbmc_project.Common.Error.NotAllowed
+          - xyz.openbmc_project.Common.Error.Unavailable