Use Redfish Http cache library to query Redfish service.

Signed-off-by: Nickle Wang <nick...@nvidia.com>
Cc: Abner Chang <abner.ch...@amd.com>
Cc: Igor Kulchytskyy <ig...@ami.com>
Cc: Nick Ramirez <nrami...@nvidia.com>
---
 .../RedfishVersionLib/RedfishVersionLib.inf   |  3 ++
 .../RedfishVersionLib/RedfishVersionLib.c     | 30 ++++++++++++++-----
 2 files changed, 25 insertions(+), 8 deletions(-)

diff --git a/RedfishClientPkg/Library/RedfishVersionLib/RedfishVersionLib.inf 
b/RedfishClientPkg/Library/RedfishVersionLib/RedfishVersionLib.inf
index 34d13d64..10e335af 100644
--- a/RedfishClientPkg/Library/RedfishVersionLib/RedfishVersionLib.inf
+++ b/RedfishClientPkg/Library/RedfishVersionLib/RedfishVersionLib.inf
@@ -1,6 +1,7 @@
 ## @file
 #
 #  (C) Copyright 2022 Hewlett Packard Enterprise Development LP<BR>
+#  Copyright (c) 2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
 #
 #  SPDX-License-Identifier: BSD-2-Clause-Patent
 #
@@ -31,11 +32,13 @@
 
 [LibraryClasses]
   BaseLib
+  BaseMemoryLib
   DebugLib
   MemoryAllocationLib
   PcdLib
   RedfishLib
   JsonLib
+  RedfishHttpCacheLib
 
 [Protocols]
 
diff --git a/RedfishClientPkg/Library/RedfishVersionLib/RedfishVersionLib.c 
b/RedfishClientPkg/Library/RedfishVersionLib/RedfishVersionLib.c
index bcaca3c7..9a31c6a9 100644
--- a/RedfishClientPkg/Library/RedfishVersionLib/RedfishVersionLib.c
+++ b/RedfishClientPkg/Library/RedfishVersionLib/RedfishVersionLib.c
@@ -2,6 +2,7 @@
   Redfish version library implementation
 
   (C) Copyright 2022 Hewlett Packard Enterprise Development LP<BR>
+  Copyright (c) 2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
 
   SPDX-License-Identifier: BSD-2-Clause-Patent
 
@@ -10,15 +11,17 @@
 #include <Uefi.h>
 #include <RedfishBase.h>
 #include <Library/BaseLib.h>
+#include <Library/BaseMemoryLib.h>
 #include <Library/DebugLib.h>
 #include <Library/PcdLib.h>
 #include <Library/RedfishLib.h>
 #include <Library/JsonLib.h>
 #include <Library/MemoryAllocationLib.h>
 #include <Library/RedfishVersionLib.h>
+#include <Library/RedfishHttpCacheLib.h>
 
 #define REDFISH_VERSION_DEFAULT_STRING  L"v1"
-#define REDFISH_ROOT_URI                "/redfish"
+#define REDFISH_ROOT_URI                L"/redfish"
 
 REDFISH_SERVICE  *mCacheService;
 EFI_STRING       mVersionCache;
@@ -26,7 +29,7 @@ UINTN            mVersionStringSize;
 
 /**
   Cache the redfish service version for later use so we don't have to query
-  HTTP request everytime.
+  HTTP request every time.
 
   @param[in]   Service  Redfish service instance
   @param[in]   Version  Version string to cache
@@ -66,7 +69,7 @@ CacheVersion (
 
 /**
   Query HTTP request to BMC with given redfish service and return redfish
-  version information. If there is troulbe to get Redfish version on BMC,
+  version information. If there is trouble to get Redfish version on BMC,
   The value of PcdDefaultRedfishVersion is returned.
 
   It's call responsibility to release returned buffer.
@@ -90,6 +93,7 @@ RedfishGetVersion (
   EDKII_JSON_VALUE  Value;
 
   VersionString = NULL;
+  ZeroMem (&Response, sizeof (REDFISH_RESPONSE));
 
   if (Service == NULL) {
     goto ON_ERROR;
@@ -105,13 +109,14 @@ RedfishGetVersion (
   //
   // Get resource from redfish service.
   //
-  Status = RedfishGetByUri (
+  Status = RedfishHttpGetResource (
              Service,
              REDFISH_ROOT_URI,
-             &Response
+             &Response,
+             TRUE
              );
   if (EFI_ERROR (Status)) {
-    DEBUG ((DEBUG_ERROR, "%a, RedfishGetByService to %a failed: %r\n", 
__func__, REDFISH_ROOT_URI, Status));
+    DEBUG ((DEBUG_ERROR, "%a, RedfishGetByService to %s failed: %r\n", 
__func__, REDFISH_ROOT_URI, Status));
     if (Response.Payload != NULL) {
       RedfishDumpPayload (Response.Payload);
       RedfishFreeResponse (
@@ -151,18 +156,27 @@ ON_ERROR:
     VersionString = REDFISH_VERSION_DEFAULT_STRING;
   }
 
+  if (Response.Payload != NULL) {
+    RedfishFreeResponse (
+      Response.StatusCode,
+      Response.HeaderCount,
+      Response.Headers,
+      Response.Payload
+      );
+  }
+
   DEBUG ((DEBUG_MANAGEABILITY, "%a: Redfish version - %s\n", __func__, 
VersionString));
   return AllocateCopyPool (StrSize (VersionString), VersionString);
 }
 
 /**
 
-  Initial redfish version library instace.
+  Initial redfish version library instate.
 
   @param[in] ImageHandle     The image handle.
   @param[in] SystemTable     The system table.
 
-  @retval  EFI_SUCEESS  Install Boot manager menu success.
+  @retval  EFI_SUCCESS  Install Boot manager menu success.
   @retval  Other        Return error status.
 
 **/
-- 
2.34.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#113079): https://edk2.groups.io/g/devel/message/113079
Mute This Topic: https://groups.io/mt/103500391/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to