Rename RedfishMemoryCollectionDxe by removing Redfish prefix. Update memory collection driver to support "Identify" action and also have code refactoring to support Redfish operation.
Signed-off-by: Nickle Wang <nickle.w...@hpe.com> Cc: Abner Chang <abner.ch...@amd.com> Cc: Yang Atom <atom.y...@amd.com> Cc: Nick Ramirez <nrami...@nvidia.com> --- .../MemoryCollectionDxe.c} | 259 +++++++++--------- .../MemoryCollectionDxe.h} | 7 +- .../MemoryCollectionDxe.inf} | 19 +- .../Include/RedfishCollectionCommon.h | 14 +- RedfishClientPkg/RedfishClient.fdf.inc | 2 +- .../RedfishClientComponents.dsc.inc | 2 +- 6 files changed, 164 insertions(+), 139 deletions(-) rename RedfishClientPkg/Features/{RedfishMemoryCollectionDxe/RedfishMemoryCollectionDxe.c => MemoryCollectionDxe/MemoryCollectionDxe.c} (66%) rename RedfishClientPkg/Features/{RedfishMemoryCollectionDxe/RedfishMemoryCollectionDxe.h => MemoryCollectionDxe/MemoryCollectionDxe.h} (64%) rename RedfishClientPkg/Features/{RedfishMemoryCollectionDxe/RedfishMemoryCollectionDxe.inf => MemoryCollectionDxe/MemoryCollectionDxe.inf} (71%) diff --git a/RedfishClientPkg/Features/RedfishMemoryCollectionDxe/RedfishMemoryCollectionDxe.c b/RedfishClientPkg/Features/MemoryCollectionDxe/MemoryCollectionDxe.c similarity index 66% rename from RedfishClientPkg/Features/RedfishMemoryCollectionDxe/RedfishMemoryCollectionDxe.c rename to RedfishClientPkg/Features/MemoryCollectionDxe/MemoryCollectionDxe.c index d97f0f161e..43426a78af 100644 --- a/RedfishClientPkg/Features/RedfishMemoryCollectionDxe/RedfishMemoryCollectionDxe.c +++ b/RedfishClientPkg/Features/MemoryCollectionDxe/MemoryCollectionDxe.c @@ -1,67 +1,98 @@ /** @file - Redfish feature driver implementation - memory collection - (C) Copyright 2020-2021 Hewlett Packard Enterprise Development LP<BR> + Redfish feature driver implementation - MemoryCollection + + (C) Copyright 2020-2022 Hewlett Packard Enterprise Development LP<BR> SPDX-License-Identifier: BSD-2-Clause-Patent **/ -#include "RedfishMemoryCollectionDxe.h" +#include "MemoryCollectionDxe.h" REDFISH_COLLECTION_PRIVATE *mRedfishCollectionPrivate = NULL; EFI_STATUS -ProcessResource ( +HandleResource ( IN REDFISH_COLLECTION_PRIVATE *Private, - IN CHAR8 *Uri + IN EFI_STRING Uri ) { - EFI_STATUS Status; - EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL *RedfishResrouceProtocol; - REDFISH_SCHEMA_INFO SchemaInfo; + EFI_STATUS Status; + REDFISH_SCHEMA_INFO SchemaInfo; + EFI_STRING ConfigLang; + EFI_STRING ReturnedConfigLang; + UINTN Index; if (Private == NULL || IS_EMPTY_STRING (Uri)) { return EFI_INVALID_PARAMETER; } - DEBUG ((REDFISH_DEBUG_TRACE, "%a, process resource for: %a\n", __FUNCTION__, Uri)); + // + // Resource match + // + + DEBUG ((REDFISH_DEBUG_TRACE, "%a, process resource for: %s\n", __FUNCTION__, Uri)); Status = GetRedfishSchemaInfo (Private->RedfishService, Private->JsonStructProtocol, Uri, &SchemaInfo); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "%a, failed to get schema information from: %a %r\n", __FUNCTION__, Uri, Status)); + DEBUG ((DEBUG_ERROR, "%a, failed to get schema information from: %s %r\n", __FUNCTION__, Uri, Status)); return Status; } + // + // Check and see if this is target resource that we want to handle. + // Some resource is handled by other provider so we have to make sure this first. + // + DEBUG ((REDFISH_DEBUG_TRACE, "%s Identify for %s\n", __FUNCTION__, Uri)); + ConfigLang = RedfishGetConfigLanguage (Uri); + if (ConfigLang == NULL) { + Status = EdkIIRedfishResourceConfigIdentify (&SchemaInfo, Uri, Private->InformationExchange); + if (EFI_ERROR (Status)) { + if (Status == EFI_UNSUPPORTED) { + DEBUG ((DEBUG_INFO, "%a, \"%s\" is not handled by us\n", __FUNCTION__, Uri)); + return EFI_SUCCESS; + } - RedfishResrouceProtocol = GetRedfishResourceConfigProtocol ( - SchemaInfo.Schema, - SchemaInfo.Major, - SchemaInfo.Minor, - SchemaInfo.Errata - ); - if (RedfishResrouceProtocol == NULL) { - return EFI_DEVICE_ERROR; + DEBUG ((DEBUG_ERROR, "%a, fail to identify resource: \"%s\": %r\n", __FUNCTION__, Uri, Status)); + return Status; + } + } else { + DEBUG ((REDFISH_DEBUG_TRACE, "%a, history record found: %s\n", __FUNCTION__, ConfigLang)); + // + // Set exchange information + // + Status = GetArrayIndexFromArrayTypeConfigureLang (ConfigLang, &ReturnedConfigLang, &Index); + if (!EFI_ERROR (Status) || Status == EFI_NOT_FOUND) { + Private->InformationExchange->ReturnedInformation.Type = InformationTypeCollectionMemberConfigLanguage; + Private->InformationExchange->ReturnedInformation.ConfigureLanguageList.Count = 1; + Private->InformationExchange->ReturnedInformation.ConfigureLanguageList.List = + AllocateZeroPool(sizeof (REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG)); + + if (Private->InformationExchange->ReturnedInformation.ConfigureLanguageList.List == NULL) { + DEBUG ((DEBUG_ERROR, "%a, Fail to allocate memory for REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG.\n", __FUNCTION__)); + return EFI_OUT_OF_RESOURCES; + } + Private->InformationExchange->ReturnedInformation.ConfigureLanguageList.List [Index].Index = Index; + Private->InformationExchange->ReturnedInformation.ConfigureLanguageList.List [Index].ConfigureLang = + (EFI_STRING)AllocateCopyPool(StrSize(ReturnedConfigLang), (VOID *)ReturnedConfigLang); + } else { + DEBUG ((DEBUG_ERROR, "%a, GetArrayIndexFromArrayTypeConfigureLang fail: %r\n", __FUNCTION__, Status)); + } + FreePool (ConfigLang); } // // Check and see if target property exist or not even when collection memeber exists. // If not, we sill do provision. // - DEBUG ((REDFISH_DEBUG_TRACE, "%a Check for %a\n", __FUNCTION__, Uri)); - Status = RedfishResrouceProtocol->Check ( - RedfishResrouceProtocol, - Uri - ); + DEBUG ((REDFISH_DEBUG_TRACE, "%a Check for %s\n", __FUNCTION__, Uri)); + Status = EdkIIRedfishResourceConfigCheck (&SchemaInfo, Uri); if (EFI_ERROR (Status)) { // // The target property does not exist, do the provision to create property. // - DEBUG ((REDFISH_DEBUG_TRACE, "%a provision for %a\n", __FUNCTION__, Uri)); - Status = RedfishResrouceProtocol->Provisioning ( - RedfishResrouceProtocol, - Uri, - FALSE - ); + DEBUG ((REDFISH_DEBUG_TRACE, "%a provision for %s\n", __FUNCTION__, Uri)); + Status = EdkIIRedfishResourceConfigProvisionging (&SchemaInfo, Uri, Private->InformationExchange, FALSE); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a, failed to provision with GET mode: %r\n", __FUNCTION__, Status)); } @@ -72,41 +103,36 @@ ProcessResource ( // // Consume first. // - DEBUG ((REDFISH_DEBUG_TRACE, "%a consume for %a\n", __FUNCTION__, Uri)); - Status = RedfishResrouceProtocol->Consume ( - RedfishResrouceProtocol, - Uri - ); + DEBUG ((REDFISH_DEBUG_TRACE, "%a consume for %s\n", __FUNCTION__, Uri)); + Status = EdkIIRedfishResourceConfigConsume (&SchemaInfo, Uri); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "%a, failed to consume resoruce for: %a %r\n", __FUNCTION__, Uri, Status)); + DEBUG ((DEBUG_ERROR, "%a, failed to consume resoruce for: %s: %r\n", __FUNCTION__, Uri, Status)); } // // Patch. // - DEBUG ((REDFISH_DEBUG_TRACE, "%a update for %a\n", __FUNCTION__, Uri)); - Status = RedfishResrouceProtocol->Update ( - RedfishResrouceProtocol, - Uri - ); + DEBUG ((REDFISH_DEBUG_TRACE, "%a update for %s\n", __FUNCTION__, Uri)); + Status = EdkIIRedfishResourceConfigUpdate (&SchemaInfo, Uri); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a, failed to update resoruce for: %s: %r\n", __FUNCTION__, Uri, Status)); + } return Status; } EFI_STATUS -ProcessCollection ( +HandleCollectionResource ( IN REDFISH_COLLECTION_PRIVATE *Private ) { EFI_STATUS Status; - EFI_REDFISH_MEMORYCOLLECTION *Memory; + EFI_REDFISH_MEMORYCOLLECTION *Collection; EFI_REDFISH_MEMORYCOLLECTION_CS *CollectionCs; RedfishCS_Link *List; RedfishCS_Header *Header; RedfishCS_Type_Uri_Data *UriData; - CHAR8 *ConfigureLang; - UINTN Size; - UINTN Count; + EFI_STRING MemberUri; if (Private == NULL) { return EFI_INVALID_PARAMETER; @@ -116,7 +142,7 @@ ProcessCollection ( return EFI_NOT_READY; } - DEBUG ((REDFISH_DEBUG_TRACE, "%a, process collection for: %a\n", __FUNCTION__, Private->CollectionPath)); + DEBUG ((REDFISH_DEBUG_TRACE, "%a, process collection for: %s\n", __FUNCTION__, Private->CollectionUri)); // // Convert JSON text to C structure. @@ -125,14 +151,14 @@ ProcessCollection ( Private->JsonStructProtocol, NULL, Private->CollectionJson, - (EFI_REST_JSON_STRUCTURE_HEADER **)&Memory + (EFI_REST_JSON_STRUCTURE_HEADER **)&Collection ); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a, ToStructure() failed: %r\n", __FUNCTION__, Status)); return Status; } - CollectionCs = Memory->MemoryCollection; + CollectionCs = Collection->MemoryCollection; if (*CollectionCs->Membersodata_count == 0) { return EFI_NOT_FOUND; @@ -142,23 +168,22 @@ ProcessCollection ( return EFI_NOT_FOUND; } - Count = 0; List = GetFirstLink (&CollectionCs->Members); while (TRUE) { Header = (RedfishCS_Header *)List; if (Header->ResourceType == RedfishCS_Type_Uri) { UriData = (RedfishCS_Type_Uri_Data *)Header; - - ++Count; - Size = AsciiStrLen (Private->CollectionPath) + 5; - ConfigureLang = AllocatePool (Size); - ASSERT (ConfigureLang != NULL); - AsciiSPrint (ConfigureLang, Size, "%a[%d]", Private->CollectionPath, Count); - - Status = ProcessResource (Private, ConfigureLang); - if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "%a, process memory resource: %a failed: %r\n", __FUNCTION__, UriData->Uri, Status)); + MemberUri = NULL; + MemberUri = StrAsciiToUnicode (UriData->Uri); + ASSERT (MemberUri != NULL); + if (MemberUri != NULL) { + Status = HandleResource (Private, MemberUri); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a, process MemoryCollection resource: %a failed: %r\n", __FUNCTION__, UriData->Uri, Status)); + } + + FreePool (MemberUri); } } @@ -172,25 +197,24 @@ ProcessCollection ( // // Release resource. // - Private->JsonStructProtocol->DestoryStructure (Private->JsonStructProtocol, (EFI_REST_JSON_STRUCTURE_HEADER *)Memory); + Private->JsonStructProtocol->DestoryStructure (Private->JsonStructProtocol, (EFI_REST_JSON_STRUCTURE_HEADER *)Collection); return EFI_SUCCESS; } EFI_STATUS -CreateCollection ( +CreateCollectionResource ( IN REDFISH_COLLECTION_PRIVATE *Private ) { EFI_STATUS Status; - EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL *RedfishResrouceProtocol; REDFISH_SCHEMA_INFO SchemaInfo; if (Private == NULL) { return EFI_INVALID_PARAMETER; } - DEBUG ((REDFISH_DEBUG_TRACE, "%a, create resource for collection for: %a\n", __FUNCTION__, Private->CollectionPath)); + DEBUG ((REDFISH_DEBUG_TRACE, "%a, create resource for collection for: %s\n", __FUNCTION__, Private->CollectionUri)); Status = GetSupportedSchemaVersion (REDFISH_SCHEMA_NAME, &SchemaInfo); if (EFI_ERROR (Status)) { @@ -200,18 +224,9 @@ CreateCollection ( DEBUG ((REDFISH_DEBUG_TRACE, "%a, supported schema: %a %a.%a.%a\n", __FUNCTION__, SchemaInfo.Schema, SchemaInfo.Major, SchemaInfo.Minor, SchemaInfo.Errata)); - RedfishResrouceProtocol = GetRedfishResourceConfigProtocol (SchemaInfo.Schema, SchemaInfo.Major, SchemaInfo.Minor, SchemaInfo.Errata); - if (RedfishResrouceProtocol == NULL) { - return EFI_DEVICE_ERROR; - } - - Status = RedfishResrouceProtocol->Provisioning ( - RedfishResrouceProtocol, - Private->CollectionPath, - TRUE - ); + Status = EdkIIRedfishResourceConfigProvisionging (&SchemaInfo, Private->CollectionUri, Private->InformationExchange, TRUE); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "%a, failed to create resoruce for: %a %r\n", __FUNCTION__, Private->CollectionPath, Status)); + DEBUG ((DEBUG_ERROR, "%a, failed to create resoruce for: %s: %r\n", __FUNCTION__, Private->CollectionUri, Status)); } return Status; @@ -248,6 +263,11 @@ ReleaseCollectionResource ( Private->CollectionJson = NULL; } + if (Private->RedfishVersion != NULL) { + FreePool (Private->RedfishVersion); + Private->RedfishVersion = NULL; + } + return EFI_SUCCESS; } @@ -257,49 +277,19 @@ CollectionHandler ( ) { EFI_STATUS Status; - CHAR8 *SystemRootPath; - CHAR8 *PathBuffer; - UINTN BufferSize; if (Private == NULL) { return EFI_INVALID_PARAMETER; } - SystemRootPath = NULL; - PathBuffer = NULL; - - SystemRootPath = RedfishGetSystemRootPath (); - if (SystemRootPath == NULL) { - DEBUG ((DEBUG_ERROR, "%a, can not find system root path\n", __FUNCTION__)); - return EFI_DEVICE_ERROR; - } - - BufferSize = AsciiStrSize (SystemRootPath) + AsciiStrSize (REDFISH_SCHEMA_NAME); - PathBuffer = AllocatePool (BufferSize); - if (PathBuffer == NULL) { - Status = EFI_OUT_OF_RESOURCES; - goto ON_RELEASE; - } - - AsciiSPrint (PathBuffer, BufferSize, "%a/%a", SystemRootPath, REDFISH_SCHEMA_NAME); - - DEBUG ((REDFISH_DEBUG_TRACE, "%a, collection handler for %a\n", __FUNCTION__, PathBuffer)); - - // - // Initialize collection path - // - Private->CollectionPath = RedfishBuildPathWithSystemUuid (PathBuffer, TRUE, NULL); - if (Private->CollectionPath == NULL) { - Status = EFI_OUT_OF_RESOURCES; - goto ON_RELEASE; - } + DEBUG ((REDFISH_DEBUG_TRACE, "%a, collection handler for %s\n", __FUNCTION__, Private->CollectionUri)); // // Query collection from Redfish service. // - Status = GetResourceByPath (Private->RedfishService, Private->CollectionPath, &Private->RedResponse); + Status = GetResourceByUri (Private->RedfishService, Private->CollectionUri, &Private->RedResponse); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "%a, unable to get resource from: %a :%r\n", __FUNCTION__, Private->CollectionPath, Status)); + DEBUG ((DEBUG_ERROR, "%a, unable to get resource from: %s :%r\n", __FUNCTION__, Private->CollectionUri, Status)); goto ON_RELEASE; } @@ -309,21 +299,13 @@ CollectionHandler ( Private->CollectionJson = JsonDumpString (RedfishJsonInPayload (Private->CollectionPayload), EDKII_JSON_COMPACT); ASSERT (Private->CollectionJson != NULL); - Status = ProcessCollection (Private); + Status = HandleCollectionResource (Private); if (EFI_ERROR (Status) && Status == EFI_NOT_FOUND) { - Status = CreateCollection (Private); + Status = CreateCollectionResource (Private); } ON_RELEASE: - if (SystemRootPath != NULL) { - FreePool (SystemRootPath); - } - - if (PathBuffer != NULL) { - FreePool (PathBuffer); - } - ReleaseCollectionResource (Private); return Status; @@ -334,10 +316,12 @@ ON_RELEASE: @param[in] This Pointer to EDKII_REDFISH_FEATURE_PROTOCOL instance. @param[in] FeatureAction The action Redfish feature driver should take. + @param[in] Uri The collection URI. @param[in] Context The context of Redfish feature driver. - @param[in,out] InformationReturned The pointer to retrive the pointer to - FEATURE_RETURNED_INFOMATION. The memory block of this - information should be freed by caller. + @param[in,out] InformationExchange The pointer to RESOURCE_INFORMATION_EXCHANGE + + @retval EFI_SUCCESS Redfish feature driver callback is executed successfully. + @retval Others Some errors happened. @retval EFI_SUCCESS Redfish feature driver callback is executed successfully. @retval Others Some errors happened. @@ -349,12 +333,13 @@ RedfishCollectionFeatureCallback ( IN EDKII_REDFISH_FEATURE_PROTOCOL *This, IN FEATURE_CALLBACK_ACTION FeatureAction, IN VOID *Context, - IN OUT FEATURE_RETURNED_INFORMATION **InformationReturned + IN OUT RESOURCE_INFORMATION_EXCHANGE *InformationExchange ) { EFI_STATUS Status; REDFISH_SERVICE RedfishService; REDFISH_COLLECTION_PRIVATE *Private; + EFI_STRING ResourceUri; if (FeatureAction != CallbackActionStartOperation) { return EFI_UNSUPPORTED; @@ -367,6 +352,36 @@ RedfishCollectionFeatureCallback ( return EFI_NOT_READY; } + // + // Save in private structure. + // + Private->InformationExchange = InformationExchange; + + // + // Find Redfish version on BMC + // + Private->RedfishVersion = RedfishGetVersion (RedfishService); + + // + // Create the full URI from Redfish service root. + // + ResourceUri = (EFI_STRING)AllocateZeroPool (MAX_URI_LENGTH * sizeof(CHAR16)); + if (ResourceUri == NULL) { + DEBUG ((DEBUG_ERROR, "%a, Fail to allocate memory for full URI.\n", __FUNCTION__)); + return EFI_OUT_OF_RESOURCES; + } + StrCatS (ResourceUri, MAX_URI_LENGTH, Private->RedfishVersion); + StrCatS (ResourceUri, MAX_URI_LENGTH, InformationExchange->SendInformation.FullUri); + + // + // Initialize collection path + // + Private->CollectionUri = RedfishGetUri (ResourceUri); + if (Private->CollectionUri == NULL) { + ASSERT (FALSE); + return EFI_OUT_OF_RESOURCES; + } + Status = CollectionHandler (Private); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a, CollectionHandler failure: %r\n", __FUNCTION__, Status)); @@ -549,7 +564,7 @@ RedfishCollectionUnload ( ) { EFI_STATUS Status; - EDKII_REDFISH_CONFIG_HANDLER_PROTOCOL *ConfigHandler; + EDKII_REDFISH_CONFIG_HANDLER_PROTOCOL *ConfigHandler; if (mRedfishCollectionPrivate == NULL) { return EFI_NOT_READY; diff --git a/RedfishClientPkg/Features/RedfishMemoryCollectionDxe/RedfishMemoryCollectionDxe.h b/RedfishClientPkg/Features/MemoryCollectionDxe/MemoryCollectionDxe.h similarity index 64% rename from RedfishClientPkg/Features/RedfishMemoryCollectionDxe/RedfishMemoryCollectionDxe.h rename to RedfishClientPkg/Features/MemoryCollectionDxe/MemoryCollectionDxe.h index 83ca836941..75b4a123ff 100644 --- a/RedfishClientPkg/Features/RedfishMemoryCollectionDxe/RedfishMemoryCollectionDxe.h +++ b/RedfishClientPkg/Features/MemoryCollectionDxe/MemoryCollectionDxe.h @@ -1,7 +1,8 @@ /** @file + Redfish feature driver implementation - internal header file - (C) Copyright 2020-2021 Hewlett Packard Enterprise Development LP<BR> + (C) Copyright 2020-2022 Hewlett Packard Enterprise Development LP<BR> SPDX-License-Identifier: BSD-2-Clause-Patent @@ -14,5 +15,7 @@ #include <RedfishCollectionCommon.h> #define REDFISH_SCHEMA_NAME "Memory" -#define REDFISH_MANAGED_URI L"/redfish/v1/systems/{1}/memory" +#define REDFISH_MANAGED_URI L"Chassis/{}/Memory/{};Systems/{}/Memory/{}" +#define MAX_URI_LENGTH 256 + #endif diff --git a/RedfishClientPkg/Features/RedfishMemoryCollectionDxe/RedfishMemoryCollectionDxe.inf b/RedfishClientPkg/Features/MemoryCollectionDxe/MemoryCollectionDxe.inf similarity index 71% rename from RedfishClientPkg/Features/RedfishMemoryCollectionDxe/RedfishMemoryCollectionDxe.inf rename to RedfishClientPkg/Features/MemoryCollectionDxe/MemoryCollectionDxe.inf index e7bcf49bdb..05e05712e7 100644 --- a/RedfishClientPkg/Features/RedfishMemoryCollectionDxe/RedfishMemoryCollectionDxe.inf +++ b/RedfishClientPkg/Features/MemoryCollectionDxe/MemoryCollectionDxe.inf @@ -1,15 +1,18 @@ ## @file # -# (C) Copyright 2020-2021 Hewlett Packard Enterprise Development LP<BR> +# Redfish MemoryCollection collection driver. +# +# (C) Copyright 2020-2022 Hewlett Packard Enterprise Development LP<BR> # # SPDX-License-Identifier: BSD-2-Clause-Patent # ## + [Defines] INF_VERSION = 0x00010005 - BASE_NAME = RedfishMemoryCollectionDxe - FILE_GUID = 9323359C-11E2-49BC-B501-D6280B6DAE1A + BASE_NAME = MemoryCollectionDxe + FILE_GUID = 22facf8f-a007-462c-9be4-638043a26858 MODULE_TYPE = DXE_DRIVER VERSION_STRING = 1.0 ENTRY_POINT = RedfishCollectionEntryPoint @@ -22,8 +25,8 @@ RedfishClientPkg/RedfishClientPkg.dec [Sources] - RedfishMemoryCollectionDxe.h - RedfishMemoryCollectionDxe.c + MemoryCollectionDxe.h + MemoryCollectionDxe.c [LibraryClasses] DebugLib @@ -35,19 +38,19 @@ UefiLib UefiDriverEntryPoint UefiBootServicesTableLib + EdkIIRedfishResourceConfigLib + RedfishVersionLib [Protocols] gEdkIIRedfishConfigHandlerProtocolGuid ## CONSUMED gEfiRestJsonStructureProtocolGuid ## CONSUMED - gEdkIIRedfishResourceConfigProtocolGuid ## CONSUMED gEdkIIRedfishFeatureProtocolGuid ## CONSUMED [Guids] - gEfiEventReadyToBootGuid [Pcd] gEfiRedfishClientPkgTokenSpaceGuid.PcdMaxRedfishSchemaStringSize gEfiRedfishClientPkgTokenSpaceGuid.PcdMaxRedfishSchemaVersionSize [Depex] - TRUE \ No newline at end of file + TRUE diff --git a/RedfishClientPkg/Include/RedfishCollectionCommon.h b/RedfishClientPkg/Include/RedfishCollectionCommon.h index 05a0f672f3..d4adcedd1f 100644 --- a/RedfishClientPkg/Include/RedfishCollectionCommon.h +++ b/RedfishClientPkg/Include/RedfishCollectionCommon.h @@ -1,7 +1,7 @@ /** @file Redfish feature driver collection common header file. - (C) Copyright 2020-2021 Hewlett Packard Enterprise Development LP<BR> + (C) Copyright 2020-2022 Hewlett Packard Enterprise Development LP<BR> SPDX-License-Identifier: BSD-2-Clause-Patent @@ -10,6 +10,8 @@ #ifndef EFI_REDFISH_COLLECTION_COMMON_H_ #define EFI_REDFISH_COLLECTION_COMMON_H_ +#include <RedfishBase.h> + // // Libraries // @@ -22,28 +24,30 @@ #include <Library/RedfishFeatureUtilityLib.h> #include <Library/UefiLib.h> #include <Library/UefiBootServicesTableLib.h> +#include <Library/EdkIIRedfishResourceConfigLib.h> +#include <Library/RedfishVersionLib.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 +#define REDFISH_MAX_COLLECTION_INDEX_LEN 8 typedef struct _REDFISH_COLLECTION_PRIVATE { EFI_REST_JSON_STRUCTURE_PROTOCOL *JsonStructProtocol; EDKII_REDFISH_FEATURE_PROTOCOL *FeatureProtocol; REDFISH_SERVICE RedfishService; + RESOURCE_INFORMATION_EXCHANGE *InformationExchange; EDKII_REDFISH_CONFIG_HANDLER_PROTOCOL ConfigHandler; - CHAR8 *CollectionPath; + EFI_STRING CollectionUri; CHAR8 *CollectionJson; REDFISH_PAYLOAD CollectionPayload; REDFISH_RESPONSE RedResponse; + EFI_STRING RedfishVersion; } REDFISH_COLLECTION_PRIVATE; #define REDFISH_COLLECTION_PRIVATE_DATA_FROM_PROTOCOL(This) \ diff --git a/RedfishClientPkg/RedfishClient.fdf.inc b/RedfishClientPkg/RedfishClient.fdf.inc index 6292de4e81..3619d2a20f 100644 --- a/RedfishClientPkg/RedfishClient.fdf.inc +++ b/RedfishClientPkg/RedfishClient.fdf.inc @@ -15,7 +15,7 @@ INF RedfishClientPkg/RedfishETagDxe/RedfishETagDxe.inf INF RedfishClientPkg/RedfishConfigLangMapDxe/RedfishConfigLangMapDxe.inf INF RedfishClientPkg/Features/Memory/V1_7_1/Dxe/RedfishMemoryDxe.inf - INF RedfishClientPkg/Features/RedfishMemoryCollectionDxe/RedfishMemoryCollectionDxe.inf + INF RedfishClientPkg/Features/MemoryCollectionDxe/MemoryCollectionDxe.inf !include RedfishClientPkg/RedfishJsonStructureDxe.fdf.inc # diff --git a/RedfishClientPkg/RedfishClientComponents.dsc.inc b/RedfishClientPkg/RedfishClientComponents.dsc.inc index ee4602fe79..5f1aff3c4b 100644 --- a/RedfishClientPkg/RedfishClientComponents.dsc.inc +++ b/RedfishClientPkg/RedfishClientComponents.dsc.inc @@ -20,7 +20,7 @@ # Below two modules should be pulled in by build tool. # RedfishClientPkg/Features/Memory/V1_7_1/Dxe/RedfishMemoryDxe.inf - RedfishClientPkg/Features/RedfishMemoryCollectionDxe/RedfishMemoryCollectionDxe.inf + RedfishClientPkg/Features/MemoryCollectionDxe/MemoryCollectionDxe.inf !include RedfishClientPkg/RedfishJsonStructureDxe.dsc.inc -- 2.32.0.windows.2 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#91878): https://edk2.groups.io/g/devel/message/91878 Mute This Topic: https://groups.io/mt/92641652/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-