[AMD Official Use Only - General] Reviewed-by: Abner Chang <abner.ch...@hpe.com>
> -----Original Message----- > From: Nickle Wang <nick...@nvidia.com> > Sent: Thursday, May 4, 2023 10:22 PM > To: devel@edk2.groups.io > Cc: Chang, Abner <abner.ch...@amd.com>; Igor Kulchytskyy > <ig...@ami.com> > Subject: [edk2-redfish-client][PATCH 1/8] RedfishClientPkg: Facilities of EDK2 > Redfish Feature driver Env. > > Caution: This message originated from an External Source. Use proper > caution when opening attachments, clicking links, or responding. > > > Initial common header file and meta files for feature drivers. > > Signed-off-by: Nickle Wang <nick...@nvidia.com> > Cc: Abner Chang <abner.ch...@amd.com> > Cc: Igor Kulchytskyy <ig...@ami.com> > --- > RedfishClientPkg/RedfishClientPkg.dec | 5 +- > .../Include/Guid/RedfishClientPkgTokenSpace.h | 20 +++ > .../EdkIIRedfishResourceConfigProtocol.h | 127 ++++++++++++++++++ > .../Include/RedfishCollectionCommon.h | 53 ++++++++ > .../Include/RedfishResourceCommon.h | 121 +++++++++++++++++ > 5 files changed, 325 insertions(+), 1 deletion(-) create mode 100644 > RedfishClientPkg/Include/Guid/RedfishClientPkgTokenSpace.h > create mode 100644 > RedfishClientPkg/Include/Protocol/EdkIIRedfishResourceConfigProtocol.h > create mode 100644 RedfishClientPkg/Include/RedfishCollectionCommon.h > create mode 100644 RedfishClientPkg/Include/RedfishResourceCommon.h > > diff --git a/RedfishClientPkg/RedfishClientPkg.dec > b/RedfishClientPkg/RedfishClientPkg.dec > index 8fa92d5b..11eab386 100644 > --- a/RedfishClientPkg/RedfishClientPkg.dec > +++ b/RedfishClientPkg/RedfishClientPkg.dec > @@ -21,9 +21,12 @@ > > [Protocols] > ## Include/Protocol/EdkIIRedfishFeature.h > - gEdkIIRedfishFeatureProtocolGuid = { 0x785CC694, 0x4930, 0xEFBF, { 0x2A, > 0xCB, 0xA4, 0xB6, 0xA1, 0xCC, 0xAA, 0x34 } } > + gEdkIIRedfishFeatureProtocolGuid = { 0x785CC694, 0x4930, 0xEFBF, > { 0x2A, 0xCB, 0xA4, 0xB6, 0xA1, 0xCC, 0xAA, 0x34 } } > + ## Include/Protocol/EdkIIRedfishResourceConfigProtocol.h > + gEdkIIRedfishResourceConfigProtocolGuid = { 0x6f164c68, 0xfb09, > + 0x4646, { 0xa8, 0xd3, 0x24, 0x11, 0x5d, 0xab, 0x3e, 0xe7 } } > > [Guids] > + ## Include/Guid/RedfishClientPkgTokenSpace.h > gEfiRedfishClientPkgTokenSpaceGuid = { 0x8c444dae, 0x728b, 0x48ee, > { 0x9e, 0x19, 0x8f, 0x0a, 0x3d, 0x4e, 0x9c, 0xc8 } } > > [PcdsFixedAtBuild] > diff --git a/RedfishClientPkg/Include/Guid/RedfishClientPkgTokenSpace.h > b/RedfishClientPkg/Include/Guid/RedfishClientPkgTokenSpace.h > new file mode 100644 > index 00000000..7928e1a2 > --- /dev/null > +++ b/RedfishClientPkg/Include/Guid/RedfishClientPkgTokenSpace.h > @@ -0,0 +1,20 @@ > +/** @file > + GUID for RedfishClientPkg PCD Token Space > + > + (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR> > + > + SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > +#ifndef REDFISHCLIENTPKG_TOKEN_SPACE_GUID_H_ > +#define REDFISHCLIENTPKG_TOKEN_SPACE_GUID_H_ > + > +#define REDFISHCLIENTPKG_TOKEN_SPACE_GUID \ > + { \ > + 0x8c444dae, 0x728b, 0x48ee, { 0x9e, 0x19, 0x8f, 0x0a, 0x3d, 0x4e, > +0x9c, 0xc8 } \ > + } > + > +extern EFI_GUID gEfiRedfishClientPkgTokenSpaceGuid; > + > +#endif > diff --git > a/RedfishClientPkg/Include/Protocol/EdkIIRedfishResourceConfigProtocol.h > b/RedfishClientPkg/Include/Protocol/EdkIIRedfishResourceConfigProtocol.h > new file mode 100644 > index 00000000..814fa9f9 > --- /dev/null > +++ b/RedfishClientPkg/Include/Protocol/EdkIIRedfishResourceConfigProtoc > +++ ol.h > @@ -0,0 +1,127 @@ > +/** @file > + This file defines the EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL > interface. > + > + (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR> > + > + SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > +#ifndef EDKII_REDFISH_RESOURCE_CONFIG_H_ #define > +EDKII_REDFISH_RESOURCE_CONFIG_H_ > + > +typedef struct _EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL > +EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL; > + > +/** > + Provising redfish resource by given URI. > + > + @param[in] This Pointer to > EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL instance. > + @param[in] Uri Target URI to create resource. > + @param[in] HttpPostMode TRUE if resource does not exist, HTTP > POST method is used. > + FALSE if the resource exist but some of > properties are > missing, > + HTTP PUT method is used. > + > + @retval EFI_SUCCESS Value is returned successfully. > + @retval Others Some error happened. > + > +**/ > +typedef > +EFI_STATUS > +(EFIAPI > *EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL_PROVISIONING)( > + IN EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL *This, > + IN CHAR8 *Uri, > + IN BOOLEAN HttpPostMode > + ); > + > +/** > + Consume resource from given URI. > + > + @param[in] This Pointer to > EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL instance. > + @param[in] Uri The target URI to consume. > + > + @retval EFI_SUCCESS Value is returned successfully. > + @retval Others Some error happened. > + > +**/ > +typedef > +EFI_STATUS > +(EFIAPI *EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL_CONSUME)( > + IN EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL *This, > + IN CHAR8 *Uri > + ); > + > +/** > + Update resource to given URI. > + > + @param[in] This Pointer to > EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL instance. > + @param[in] Uri The target URI to consume. > + > + @retval EFI_SUCCESS Value is returned successfully. > + @retval Others Some error happened. > + > +**/ > +typedef > +EFI_STATUS > +(EFIAPI *EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL_UPDATE)( > + IN EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL *This, > + IN CHAR8 *Uri > + ); > + > +/** > + Check resource on given URI. > + > + @param[in] This Pointer to > EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL instance. > + @param[in] Uri The target URI to consume. > + > + @retval EFI_SUCCESS Value is returned successfully. > + @retval Others Some error happened. > + > +**/ > +typedef > +EFI_STATUS > +(EFIAPI *EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL_CHECK)( > + IN EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL *This, > + IN CHAR8 *Uri > + ); > + > +// > +// definition of REDFISH_SCHEMA_INFO > +// > +#define REDFISH_SCHEMA_STRING_SIZE (FixedPcdGet32 > (PcdMaxRedfishSchemaStringSize)) > +#define REDFISH_SCHEMA_VERSION_SIZE (FixedPcdGet32 > +(PcdMaxRedfishSchemaVersionSize)) > + > +typedef struct _SCHEMA_INFO { > + CHAR8 Schema[REDFISH_SCHEMA_STRING_SIZE]; > + CHAR8 Major[REDFISH_SCHEMA_VERSION_SIZE]; > + CHAR8 Minor[REDFISH_SCHEMA_VERSION_SIZE]; > + CHAR8 Errata[REDFISH_SCHEMA_VERSION_SIZE]; > +} REDFISH_SCHEMA_INFO; > + > +/** > + Get information about this protocol. > + > + @param[in] This Pointer to > EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL instance. > + @param[out] Info The schema information. > + > + @retval EFI_SUCCESS Value is returned successfully. > + @retval Others Some error happened. > + > +**/ > +typedef > +EFI_STATUS > +(EFIAPI *EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL_GET_INFO)( > + IN EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL *This, > + OUT REDFISH_SCHEMA_INFO *Info > + ); > + > +struct _EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL { > + EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL_PROVISIONING > Provisioning; > + EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL_CONSUME Consume; > + EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL_UPDATE Update; > + EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL_CHECK Check; > + EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL_GET_INFO GetInfo; > +}; > + > +extern EFI_GUID gEdkIIRedfishResourceConfigProtocolGuid; > + > +#endif > diff --git a/RedfishClientPkg/Include/RedfishCollectionCommon.h > b/RedfishClientPkg/Include/RedfishCollectionCommon.h > new file mode 100644 > index 00000000..b5735741 > --- /dev/null > +++ b/RedfishClientPkg/Include/RedfishCollectionCommon.h > @@ -0,0 +1,53 @@ > +/** @file > + Redfish feature driver collection common header file. > + > + (C) Copyright 2020-2021 Hewlett Packard Enterprise Development LP<BR> > + > + SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > +#ifndef EFI_REDFISH_COLLECTION_COMMON_H_ #define > +EFI_REDFISH_COLLECTION_COMMON_H_ > + > +// > +// Libraries > +// > +#include <Library/BaseMemoryLib.h> > +#include <Library/DebugLib.h> > +#include <Library/MemoryAllocationLib.h> #include <Library/PrintLib.h> > +#include <Library/PcdLib.h> #include <Library/RedfishLib.h> #include > +<Library/RedfishFeatureUtilityLib.h> > +#include <Library/UefiLib.h> > +#include <Library/UefiBootServicesTableLib.h> > + > +// > +// Protocols > +// > +#include <Protocol/EdkIIRedfishConfigHandler.h> > +#include <Protocol/EdkIIRedfishResourceConfigProtocol.h> > +#include <Protocol/EdkIIRedfishFeature.h> #include > +<Protocol/RestJsonStructure.h> #include <Protocol/RestEx.h> > + > +#define IS_EMPTY_STRING(a) ((a) == NULL || (a)[0] == '\0') #define > +REDFISH_DEBUG_TRACE DEBUG_INFO > + > +typedef struct _REDFISH_COLLECTION_PRIVATE { > + EFI_REST_JSON_STRUCTURE_PROTOCOL *JsonStructProtocol; > + EDKII_REDFISH_FEATURE_PROTOCOL *FeatureProtocol; > + REDFISH_SERVICE RedfishService; > + EDKII_REDFISH_CONFIG_HANDLER_PROTOCOL ConfigHandler; > + EFI_EVENT Event; > + CHAR8 *CollectionPath; > + CHAR8 *CollectionJson; > + REDFISH_PAYLOAD CollectionPayload; > + REDFISH_RESPONSE RedResponse; > +} REDFISH_COLLECTION_PRIVATE; > + > +#define REDFISH_COLLECTION_PRIVATE_DATA_FROM_PROTOCOL(This) \ > + BASE_CR ((This), REDFISH_COLLECTION_PRIVATE, ConfigHandler) > + > +#endif > diff --git a/RedfishClientPkg/Include/RedfishResourceCommon.h > b/RedfishClientPkg/Include/RedfishResourceCommon.h > new file mode 100644 > index 00000000..95e8004d > --- /dev/null > +++ b/RedfishClientPkg/Include/RedfishResourceCommon.h > @@ -0,0 +1,121 @@ > +/** @file > + Redfish feature driver common header file. > + > + (C) Copyright 2020-2021 Hewlett Packard Enterprise Development LP<BR> > + > + SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > +#ifndef EFI_REDFISH_RESOURCE_COMMON_H_ > +#define EFI_REDFISH_RESOURCE_COMMON_H_ > + > +#define MAX_RED_PATH_LEN 128 > +#define IS_EMPTY_STRING(a) ((a) == NULL || (a)[0] == '\0') #define > +REDFISH_DEBUG_TRACE DEBUG_INFO > + > +// > +// Libraries > +// > +#include <Library/DebugLib.h> > +#include <Library/BaseMemoryLib.h> > +#include <Library/MemoryAllocationLib.h> #include <Library/PrintLib.h> > +#include <Library/PcdLib.h> #include <Library/RedfishLib.h> #include > +<Library/RedfishFeatureUtilityLib.h> > +#include <Library/RedfishPlatformConfigLib.h> > +#include <Library/UefiLib.h> > +#include <Library/UefiBootServicesTableLib.h> > + > +// > +// Protocols > +// > +#include <Protocol/EdkIIRedfishConfigHandler.h> > +#include <Protocol/EdkIIRedfishResourceConfigProtocol.h> > +#include <Protocol/RestJsonStructure.h> #include <Protocol/RestEx.h> > + > +typedef struct _REDFISH_RESOURCE_COMMON_PRIVATE { > + REDFISH_SERVICE RedfishService; > + EFI_REST_JSON_STRUCTURE_PROTOCOL *JsonStructProtocol; > + EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL RedfishResourceConfig; > + EDKII_REDFISH_CONFIG_HANDLER_PROTOCOL ConfigHandler; > + EFI_EVENT Event; > + CHAR8 *Uri; > + CHAR8 *Json; > + REDFISH_PAYLOAD Payload; > +} REDFISH_RESOURCE_COMMON_PRIVATE; > + > +#define > REDFISH_RESOURCE_COMMON_PRIVATE_DATA_FROM_CONFIG_PROTOCO > L(This) \ > + BASE_CR ((This), REDFISH_RESOURCE_COMMON_PRIVATE, > +ConfigHandler) > + > +#define > REDFISH_RESOURCE_COMMON_PRIVATE_DATA_FROM_RESOURCE_PROTO > COL(This) \ > + BASE_CR ((This), REDFISH_RESOURCE_COMMON_PRIVATE, > +RedfishResourceConfig) > + > +/** > + Consume resource from given URI. > + > + @param[in] This Pointer to > REDFISH_RESOURCE_COMMON_PRIVATE instance. > + @param[in] Json The JSON to consume. > + > + @retval EFI_SUCCESS Value is returned successfully. > + @retval Others Some error happened. > + > +**/ > +EFI_STATUS > +RedfishConsumeResourceCommon ( > + IN REDFISH_RESOURCE_COMMON_PRIVATE *Private, > + IN CHAR8 *Json > + ); > + > +/** > + Provisioning redfish resource by given URI. > + > + @param[in] This Pointer to EFI_HP_REDFISH_HII_PROTOCOL > instance. > + @param[in] ResourceExist TRUE if resource exists, PUT method will > be > used. > + FALSE if resource does not exist POST > method is used. > + > + @retval EFI_SUCCESS Value is returned successfully. > + @retval Others Some error happened. > + > +**/ > +EFI_STATUS > +RedfishProvisioningResourceCommon ( > + IN REDFISH_RESOURCE_COMMON_PRIVATE *Private, > + IN BOOLEAN ResourceExist > + ); > + > +/** > + Check resource from given URI. > + > + @param[in] This Pointer to > REDFISH_RESOURCE_COMMON_PRIVATE instance. > + @param[in] Json The JSON to consume. > + > + @retval EFI_SUCCESS Value is returned successfully. > + @retval Others Some error happened. > + > +**/ > +EFI_STATUS > +RedfishCheckResourceCommon ( > + IN REDFISH_RESOURCE_COMMON_PRIVATE *Private, > + IN CHAR8 *Json > + ); > + > +/** > + Update resource to given URI. > + > + @param[in] This Pointer to > REDFISH_RESOURCE_COMMON_PRIVATE instance. > + @param[in] Json The JSON to consume. > + > + @retval EFI_SUCCESS Value is returned successfully. > + @retval Others Some error happened. > + > +**/ > +EFI_STATUS > +RedfishUpdateResourceCommon ( > + IN REDFISH_RESOURCE_COMMON_PRIVATE *Private, > + IN CHAR8 *Json > + ); > + > +#endif > -- > 2.17.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#104050): https://edk2.groups.io/g/devel/message/104050 Mute This Topic: https://groups.io/mt/98684696/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-