Re: [edk2-devel] [edk2-staging][PATCH v2 1/3] edk2-staging/RedfishClientPkg: Introduce Redfish event library

2022-05-24 Thread Abner Chang
Reviewed-by: Abner Chang 

> -Original Message-
> From: devel@edk2.groups.io  On Behalf Of Nickle
> Wang
> Sent: Wednesday, May 25, 2022 11:14 AM
> To: devel@edk2.groups.io
> Cc: Wang, Nickle (Server BIOS) ; Chang, Abner (HPS
> SW/FW Technologist) 
> Subject: [edk2-devel] [edk2-staging][PATCH v2 1/3] edk2-
> staging/RedfishClientPkg: Introduce Redfish event library
> 
> Add RedfishEventLib to Redfish client package. This library provides
> interface for Redfish feature drivers to listen to Redfish event
> such as the event before provisioning and the event after
> provisioning. Feature driver can perform additional operation before
> and after Redfish provisioning.
> 
> Signed-off-by: Nickle Wang 
> Cc: Abner Chang 
> ---
>  .../Include/Guid/RedfishClientEventGroup.h|  27 
>  .../Include/Library/RedfishEventLib.h |  77 ++
>  .../Library/RedfishEventLib/RedfishEventLib.c | 139 ++
>  .../RedfishEventLib/RedfishEventLib.inf   |  38 +
>  RedfishClientPkg/RedfishClientLibs.dsc.inc|   2 +-
>  RedfishClientPkg/RedfishClientPkg.dec |   7 +-
>  6 files changed, 288 insertions(+), 2 deletions(-)
>  create mode 100644
> RedfishClientPkg/Include/Guid/RedfishClientEventGroup.h
>  create mode 100644 RedfishClientPkg/Include/Library/RedfishEventLib.h
>  create mode 100644
> RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.c
>  create mode 100644
> RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.inf
> 
> diff --git a/RedfishClientPkg/Include/Guid/RedfishClientEventGroup.h
> b/RedfishClientPkg/Include/Guid/RedfishClientEventGroup.h
> new file mode 100644
> index 00..0d88dd4726
> --- /dev/null
> +++ b/RedfishClientPkg/Include/Guid/RedfishClientEventGroup.h
> @@ -0,0 +1,27 @@
> +/** @file
> +  GUID for Redfish Client Event Group GUID
> +
> +  (C) Copyright 2022 Hewlett Packard Enterprise Development LP
> +
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#ifndef REDFISH_CLIENT_EVENT_GROUP_GUID_H_
> +#define REDFISH_CLIENT_EVENT_GROUP_GUID_H_
> +
> +#define REDFISH_CLIENT_FEATURE_READY_TO_PROVISIONING_GUID \
> +  { \
> +0x77E4FC1C, 0x2428, 0x47EE, { 0x9E, 0xEC, 0x8B, 0x77, 0xEF, 0x9D, 0x4E,
> 0xF0 } \
> +  }
> +
> +extern EFI_GUID gEfiRedfishClientFeatureReadyToProvisioningGuid;
> +
> +#define REDFISH_CLIENT_FEATURE_AFTER_PROVISIONING_GUID \
> +  { \
> +0xE547CB6F, 0x306F, 0x4226, { 0xAB, 0x70, 0xA0, 0x6E, 0x26, 0xF1, 0x2E,
> 0xD0 } \
> +  }
> +
> +extern EFI_GUID gEfiRedfishClientFeatureAfterProvisioningGuid;
> +
> +#endif
> diff --git a/RedfishClientPkg/Include/Library/RedfishEventLib.h
> b/RedfishClientPkg/Include/Library/RedfishEventLib.h
> new file mode 100644
> index 00..9b553f4425
> --- /dev/null
> +++ b/RedfishClientPkg/Include/Library/RedfishEventLib.h
> @@ -0,0 +1,77 @@
> +/** @file
> +  This file defines the Redfish event library interface.
> +
> +  (C) Copyright 2022 Hewlett Packard Enterprise Development LP
> +
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#ifndef REDFISH_EVENT_LIB_H_
> +#define REDFISH_EVENT_LIB_H_
> +
> +#include 
> +
> +/**
> +  Create an EFI event before Redfish provisioning start.
> +
> +  @param  NotifyFunctionThe notification function to call when 
> the
> event is signaled.
> +  @param  NotifyContext The content to pass to NotifyFunction 
> when
> the event is signaled.
> +  @param  ReadyToProvisioningEvent  Returns the EFI event returned from
> gBS->CreateEvent(Ex).
> +
> +  @retval EFI_SUCCESS   Event was created.
> +  @retval Other Event was not created.
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +CreateReadyToProvisioningEvent (
> +  IN  EFI_EVENT_NOTIFY  NotifyFunction,  OPTIONAL
> +  IN  VOID  *NotifyContext,  OPTIONAL
> +  OUT EFI_EVENT *ReadyToProvisioningEvent
> +  );
> +
> +/**
> +  Create an EFI event after Redfish provisioning finished.
> +
> +  @param  NotifyFunctionThe notification function to call when 
> the
> event is signaled.
> +  @param  NotifyContext The content to pass to NotifyFunction 
> when
> the event is signaled.
> +  @param  ReadyToProvisioningEvent  Returns the EFI event returned from
> gBS->CreateEvent(Ex).
> +
> +  @retval EFI_SUCCESS   Event was created.
> +  @retval Other Event was not created.
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +CreateAfterProvisioningEvent (
> +  IN  EFI_EVENT_NOTIFY  NotifyFunction,  OPTIONAL
> +  IN  VOID  *NotifyContext,  OPTIONAL
> +  OUT EFI_EVENT *ReadyToPro

[edk2-devel] [edk2-staging][PATCH v2 1/3] edk2-staging/RedfishClientPkg: Introduce Redfish event library

2022-05-24 Thread Nickle Wang
Add RedfishEventLib to Redfish client package. This library provides
interface for Redfish feature drivers to listen to Redfish event
such as the event before provisioning and the event after
provisioning. Feature driver can perform additional operation before
and after Redfish provisioning.

Signed-off-by: Nickle Wang 
Cc: Abner Chang 
---
 .../Include/Guid/RedfishClientEventGroup.h|  27 
 .../Include/Library/RedfishEventLib.h |  77 ++
 .../Library/RedfishEventLib/RedfishEventLib.c | 139 ++
 .../RedfishEventLib/RedfishEventLib.inf   |  38 +
 RedfishClientPkg/RedfishClientLibs.dsc.inc|   2 +-
 RedfishClientPkg/RedfishClientPkg.dec |   7 +-
 6 files changed, 288 insertions(+), 2 deletions(-)
 create mode 100644 RedfishClientPkg/Include/Guid/RedfishClientEventGroup.h
 create mode 100644 RedfishClientPkg/Include/Library/RedfishEventLib.h
 create mode 100644 RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.c
 create mode 100644 RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.inf

diff --git a/RedfishClientPkg/Include/Guid/RedfishClientEventGroup.h 
b/RedfishClientPkg/Include/Guid/RedfishClientEventGroup.h
new file mode 100644
index 00..0d88dd4726
--- /dev/null
+++ b/RedfishClientPkg/Include/Guid/RedfishClientEventGroup.h
@@ -0,0 +1,27 @@
+/** @file
+  GUID for Redfish Client Event Group GUID
+
+  (C) Copyright 2022 Hewlett Packard Enterprise Development LP
+
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#ifndef REDFISH_CLIENT_EVENT_GROUP_GUID_H_
+#define REDFISH_CLIENT_EVENT_GROUP_GUID_H_
+
+#define REDFISH_CLIENT_FEATURE_READY_TO_PROVISIONING_GUID \
+  { \
+0x77E4FC1C, 0x2428, 0x47EE, { 0x9E, 0xEC, 0x8B, 0x77, 0xEF, 0x9D, 0x4E, 
0xF0 } \
+  }
+
+extern EFI_GUID gEfiRedfishClientFeatureReadyToProvisioningGuid;
+
+#define REDFISH_CLIENT_FEATURE_AFTER_PROVISIONING_GUID \
+  { \
+0xE547CB6F, 0x306F, 0x4226, { 0xAB, 0x70, 0xA0, 0x6E, 0x26, 0xF1, 0x2E, 
0xD0 } \
+  }
+
+extern EFI_GUID gEfiRedfishClientFeatureAfterProvisioningGuid;
+
+#endif
diff --git a/RedfishClientPkg/Include/Library/RedfishEventLib.h 
b/RedfishClientPkg/Include/Library/RedfishEventLib.h
new file mode 100644
index 00..9b553f4425
--- /dev/null
+++ b/RedfishClientPkg/Include/Library/RedfishEventLib.h
@@ -0,0 +1,77 @@
+/** @file
+  This file defines the Redfish event library interface.
+
+  (C) Copyright 2022 Hewlett Packard Enterprise Development LP
+
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#ifndef REDFISH_EVENT_LIB_H_
+#define REDFISH_EVENT_LIB_H_
+
+#include 
+
+/**
+  Create an EFI event before Redfish provisioning start.
+
+  @param  NotifyFunctionThe notification function to call when the 
event is signaled.
+  @param  NotifyContext The content to pass to NotifyFunction when 
the event is signaled.
+  @param  ReadyToProvisioningEvent  Returns the EFI event returned from 
gBS->CreateEvent(Ex).
+
+  @retval EFI_SUCCESS   Event was created.
+  @retval Other Event was not created.
+
+**/
+EFI_STATUS
+EFIAPI
+CreateReadyToProvisioningEvent (
+  IN  EFI_EVENT_NOTIFY  NotifyFunction,  OPTIONAL
+  IN  VOID  *NotifyContext,  OPTIONAL
+  OUT EFI_EVENT *ReadyToProvisioningEvent
+  );
+
+/**
+  Create an EFI event after Redfish provisioning finished.
+
+  @param  NotifyFunctionThe notification function to call when the 
event is signaled.
+  @param  NotifyContext The content to pass to NotifyFunction when 
the event is signaled.
+  @param  ReadyToProvisioningEvent  Returns the EFI event returned from 
gBS->CreateEvent(Ex).
+
+  @retval EFI_SUCCESS   Event was created.
+  @retval Other Event was not created.
+
+**/
+EFI_STATUS
+EFIAPI
+CreateAfterProvisioningEvent (
+  IN  EFI_EVENT_NOTIFY  NotifyFunction,  OPTIONAL
+  IN  VOID  *NotifyContext,  OPTIONAL
+  OUT EFI_EVENT *ReadyToProvisioningEvent
+  );
+
+/**
+  Signal ready to provisioning event.
+
+  @retval EFI_SUCCESS   Event was created.
+  @retval Other Event was not created.
+
+**/
+EFI_STATUS
+SignalReadyToProvisioningEvent (
+  VOID
+  );
+
+/**
+  Signal after provisioning event.
+
+  @retval EFI_SUCCESS   Event was created.
+  @retval Other Event was not created.
+
+**/
+EFI_STATUS
+SignalAfterProvisioningEvent (
+  VOID
+  );
+
+#endif
diff --git a/RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.c 
b/RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.c
new file mode 100644
index 00..34aa4cac46
--- /dev/null
+++ b/RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.c
@@ -0,0 +1,139 @@
+/** @file
+  Redfish event library implementation.
+
+  (C) Copyright 2022 Hewlett Packard Enterprise Development LP
+
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include 
+
+#include 
+
+#include 
+#include 
+#include 
+#include 
+#include 
+
+/**
+  Create an EFI event before Redfish