From: "Abner Chang" <abner.chang@hpe.com>
To: "Wang, Nickle (Server BIOS)" <nickle.wang@hpe.com>,
"devel@edk2.groups.io" <devel@edk2.groups.io>
Subject: Re: [edk2-staging][PATCH] edk2-staging/RedfishClientPkg: Introduce Redfish event library
Date: Wed, 18 May 2022 03:18:13 +0000 [thread overview]
Message-ID: <PH0PR84MB16471C35A6A4967555A29CAAFFD19@PH0PR84MB1647.NAMPRD84.PROD.OUTLOOK.COM> (raw)
In-Reply-To: <20220517024003.718-1-nickle.wang@hpe.com>
Few minor issues.
> -----Original Message-----
> From: Wang, Nickle (Server BIOS) <nickle.wang@hpe.com>
> Sent: Tuesday, May 17, 2022 10:40 AM
> To: devel@edk2.groups.io
> Cc: Wang, Nickle (Server BIOS) <nickle.wang@hpe.com>; Chang, Abner (HPS
> SW/FW Technologist) <abner.chang@hpe.com>
> Subject: [edk2-staging][PATCH] 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 <nickle.wang@hpe.com>
> Cc: Abner Chang <abner.chang@hpe.com>
> ---
> .../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 0000000000..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<BR>
>
> +
>
> + 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 0000000000..1f3d0acf19
> --- /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<BR>
>
> +
>
> + SPDX-License-Identifier: BSD-2-Clause-Patent
>
> +
>
> +**/
>
> +
>
> +#ifndef REDFISH_EVENT_LIB_H_
>
> +#define REDFISH_EVENT_LIB_H_
>
> +
>
> +#include <Uefi.h>
>
> +
>
> +/**
>
> + Create an EFI event before Redfish provisioning start.
>
> +
>
> + @param NotifyFunction The 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 NotifyFunction The 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 (
>
> + IN VOID
Please remove IN.
>
> + );
>
> +
>
> +/**
>
> + Signal after provisioning event.
>
> +
>
> + @retval EFI_SUCCESS Event was created.
>
> + @retval Other Event was not created.
>
> +
>
> +**/
>
> +EFI_STATUS
>
> +SignalAfterProvisioningEvent (
>
> + IN VOID
Please remove IN.
>
> + );
>
> +
>
> +#endif
>
> diff --git a/RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.c
> b/RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.c
> new file mode 100644
> index 0000000000..1c8cfe53c7
> --- /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<BR>
>
> +
>
> + SPDX-License-Identifier: BSD-2-Clause-Patent
>
> +
>
> +**/
>
> +
>
> +#include <Uefi.h>
>
> +
>
> +#include <Guid/RedfishClientEventGroup.h>
>
> +
>
> +#include <Library/UefiLib.h>
>
> +#include <Library/BaseLib.h>
>
> +#include <Library/DebugLib.h>
>
> +#include <Library/UefiBootServicesTableLib.h>
>
> +#include <Library/RedfishEventLib.h>
>
> +
>
> +/**
>
> + Create an EFI event before Redfish provisioning start.
>
> +
>
> + @param NotifyFunction The 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
>
> + )
>
> +{
>
> + EFI_STATUS Status;
>
> +
>
> + Status = gBS->CreateEventEx (
>
> + EVT_NOTIFY_SIGNAL,
>
> + TPL_CALLBACK,
>
> + (NotifyFunction == NULL ? EfiEventEmptyFunction :
> NotifyFunction),
>
> + NotifyContext,
>
> + &gEfiRedfishClientFeatureReadyToProvisioningGuid,
>
> + ReadyToProvisioningEvent
>
> + );
>
> +
>
> + return Status;
>
> +}
>
> +
>
> +/**
>
> + Create an EFI event after Redfish provisioning finished.
>
> +
>
> + @param NotifyFunction The 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
>
> + )
>
> +{
>
> + EFI_STATUS Status;
>
> +
>
> + Status = gBS->CreateEventEx (
>
> + EVT_NOTIFY_SIGNAL,
>
> + TPL_CALLBACK,
>
> + (NotifyFunction == NULL ? EfiEventEmptyFunction :
> NotifyFunction),
>
> + NotifyContext,
>
> + &gEfiRedfishClientFeatureAfterProvisioningGuid,
>
> + ReadyToProvisioningEvent
>
> + );
>
> +
>
> + return Status;
>
> +}
>
> +
>
> +/**
>
> + Signal ready to provisioning event.
>
> +
>
> + @retval EFI_SUCCESS Event was created.
>
> + @retval Other Event was not created.
>
> +
>
> +**/
>
> +EFI_STATUS
>
> +SignalReadyToProvisioningEvent (
>
> + IN VOID
Please remove IN.
> + )
>
> +{
>
> + EFI_STATUS Status;
>
> + EFI_EVENT Event;
>
> +
>
> + Status = CreateReadyToProvisioningEvent (NULL, NULL, &Event);
>
> + if (EFI_ERROR (Status)) {
>
> + DEBUG ((DEBUG_ERROR, "%a, failed to create after provisioning event\n",
> __FUNCTION__));
>
> + return Status;
>
> + }
>
> +
>
> + gBS->SignalEvent (Event);
>
> + gBS->CloseEvent (Event);
>
> +
>
> + return EFI_SUCCESS;
>
> +}
>
> +
>
> +/**
>
> + Signal after provisioning event.
>
> +
>
> + @retval EFI_SUCCESS Event was created.
>
> + @retval Other Event was not created.
>
> +
>
> +**/
>
> +EFI_STATUS
>
> +SignalAfterProvisioningEvent (
>
> + IN VOID
Please remove IN.
Abner
>
> + )
>
> +{
>
> + EFI_STATUS Status;
>
> + EFI_EVENT Event;
>
> +
>
> + Status = CreateAfterProvisioningEvent (NULL, NULL, &Event);
>
> + if (EFI_ERROR (Status)) {
>
> + DEBUG ((DEBUG_ERROR, "%a, failed to create after provisioning event\n",
> __FUNCTION__));
>
> + return Status;
>
> + }
>
> +
>
> + gBS->SignalEvent (Event);
>
> + gBS->CloseEvent (Event);
>
> +
>
> + return EFI_SUCCESS;
>
> +}
>
> +
>
> diff --git a/RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.inf
> b/RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.inf
> new file mode 100644
> index 0000000000..edafca0c65
> --- /dev/null
> +++ b/RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.inf
> @@ -0,0 +1,38 @@
> +## @file
>
> +#
>
> +# (C) Copyright 2022 Hewlett Packard Enterprise Development LP<BR>
>
> +#
>
> +# SPDX-License-Identifier: BSD-2-Clause-Patent
>
> +#
>
> +##
>
> +
>
> +[Defines]
>
> + INF_VERSION = 0x00010006
>
> + BASE_NAME = RedfishEventLib
>
> + FILE_GUID = C4F7E27D-2338-43EA-9D1F-D10960E36521
>
> + MODULE_TYPE = DXE_DRIVER
>
> + VERSION_STRING = 1.0
>
> + LIBRARY_CLASS = RedfishEventLib| DXE_DRIVER UEFI_DRIVER
>
> +
>
> +#
>
> +# VALID_ARCHITECTURES = IA32 X64 EBC
>
> +#
>
> +
>
> +[Sources]
>
> + RedfishEventLib.c
>
> +
>
> +[Packages]
>
> + MdePkg/MdePkg.dec
>
> + MdeModulePkg/MdeModulePkg.dec
>
> + RedfishPkg/RedfishPkg.dec
>
> + RedfishClientPkg/RedfishClientPkg.dec
>
> +
>
> +[LibraryClasses]
>
> + BaseLib
>
> + DebugLib
>
> + UefiBootServicesTableLib
>
> + UefiLib
>
> +
>
> +[Guids]
>
> + gEfiRedfishClientFeatureReadyToProvisioningGuid
>
> + gEfiRedfishClientFeatureAfterProvisioningGuid
>
> diff --git a/RedfishClientPkg/RedfishClientLibs.dsc.inc
> b/RedfishClientPkg/RedfishClientLibs.dsc.inc
> index 5467acedd0..91e5de4296 100644
> --- a/RedfishClientPkg/RedfishClientLibs.dsc.inc
> +++ b/RedfishClientPkg/RedfishClientLibs.dsc.inc
> @@ -27,4 +27,4 @@
>
> RedfishPlatformConfigLib|RedfishPkg/Library/RedfishPlatformConfigLib/Red
> fishPlatformConfigLib.inf
>
>
> RedfishContentCodingLib|RedfishPkg/Library/RedfishContentCodingLibNull/
> RedfishContentCodingLibNull.inf
>
>
> ConverterCommonLib|RedfishClientPkg/ConverterLib/edk2library/Converte
> rCommonLib/ConverterCommonLib.inf
>
> -
>
> +
> RedfishEventLib|RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.i
> nf
>
> diff --git a/RedfishClientPkg/RedfishClientPkg.dec
> b/RedfishClientPkg/RedfishClientPkg.dec
> index 09df062dd3..56e542f03c 100644
> --- a/RedfishClientPkg/RedfishClientPkg.dec
> +++ b/RedfishClientPkg/RedfishClientPkg.dec
> @@ -1,7 +1,7 @@
> ## @file
>
> # Redfish Client Package
>
> #
>
> -# (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
>
> +# (C) Copyright 2021-2022 Hewlett Packard Enterprise Development LP<BR>
>
> #
>
> # SPDX-License-Identifier: BSD-2-Clause-Patent
>
> ##
>
> @@ -21,6 +21,7 @@
>
>
> [LibraryClasses]
>
> RedfishFeatureUtilityLib|Include/Library/RedfishFeatureUtilityLib.h
>
> + RedfishEventLib|Include/Library/RedfishEventLib.h
>
>
>
> [LibraryClasses.Common.Private]
>
> ## @libraryclass Redfish Helper Library
>
> @@ -39,6 +40,10 @@
> ## Include/Guid/RedfishClientPkgTokenSpace.h
>
> gEfiRedfishClientPkgTokenSpaceGuid = { 0x8c444dae, 0x728b, 0x48ee,
> { 0x9e, 0x19, 0x8f, 0x0a, 0x3d, 0x4e, 0x9c, 0xc8 } }
>
>
>
> + ## Include/Guid/RedfishClientEventGroup.h
>
> + gEfiRedfishClientFeatureReadyToProvisioningGuid = { 0x77E4FC1C, 0x2428,
> 0x47EE, { 0x9E, 0xEC, 0x8B, 0x77, 0xEF, 0x9D, 0x4E, 0xF0 } }
>
> + gEfiRedfishClientFeatureAfterProvisioningGuid = { 0xE547CB6F, 0x306F,
> 0x4226, { 0xAB, 0x70, 0xA0, 0x6E, 0x26, 0xF1, 0x2E, 0xD0 } }
>
> +
>
> [PcdsFixedAtBuild]
>
>
> gEfiRedfishClientPkgTokenSpaceGuid.PcdMaxRedfishSchemaStringSize|32|
> UINT32|0x10000001
>
>
> gEfiRedfishClientPkgTokenSpaceGuid.PcdMaxRedfishSchemaVersionSize|8|
> UINT32|0x10000002
>
> --
> 2.32.0.windows.2
prev parent reply other threads:[~2022-05-18 3:18 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-17 2:40 [edk2-staging][PATCH] edk2-staging/RedfishClientPkg: Introduce Redfish event library Nickle Wang
2022-05-18 3:18 ` Abner Chang [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=PH0PR84MB16471C35A6A4967555A29CAAFFD19@PH0PR84MB1647.NAMPRD84.PROD.OUTLOOK.COM \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox