From: "Chang, Abner via groups.io" <abner.chang=amd.com@groups.io>
To: Nickle Wang <nicklew@nvidia.com>,
"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: Igor Kulchytskyy <igork@ami.com>, Nick Ramirez <nramirez@nvidia.com>
Subject: Re: [edk2-devel] [PATCH 1/3] RedfishPkg/RedfishLib: introduce new interfaces.
Date: Thu, 26 Oct 2023 06:04:47 +0000 [thread overview]
Message-ID: <MN2PR12MB3966E80B069E59E4E27863D2EADDA@MN2PR12MB3966.namprd12.prod.outlook.com> (raw)
In-Reply-To: <20231024083857.16006-1-nicklew@nvidia.com>
[AMD Official Use Only - General]
Reviewed-by: Abner Chang <abner.chang@amd.com>
> -----Original Message-----
> From: Nickle Wang <nicklew@nvidia.com>
> Sent: Tuesday, October 24, 2023 4:39 PM
> To: devel@edk2.groups.io
> Cc: Chang, Abner <Abner.Chang@amd.com>; Igor Kulchytskyy
> <igork@ami.com>; Nick Ramirez <nramirez@nvidia.com>
> Subject: [PATCH 1/3] RedfishPkg/RedfishLib: introduce new interfaces.
>
> Caution: This message originated from an External Source. Use proper caution
> when opening attachments, clicking links, or responding.
>
>
> Add two new interface: RedfishServiceInPayload() and RedfishPutToUri()
> for Redfish HTTP protocol implementation. Fix several typos and add
> missing JsonLib in INF file.
>
> Signed-off-by: Nickle Wang <nicklew@nvidia.com>
> Cc: Abner Chang <abner.chang@amd.com>
> Cc: Igor Kulchytskyy <igork@ami.com>
> Cc: Nick Ramirez <nramirez@nvidia.com>
> ---
> .../PrivateLibrary/RedfishLib/RedfishLib.inf | 2 +
> RedfishPkg/Include/Library/RedfishLib.h | 95 +++++++++--
> .../PrivateLibrary/RedfishLib/RedfishLib.c | 153 ++++++++++++++++--
> .../PrivateLibrary/RedfishLib/RedfishMisc.c | 13 +-
> 4 files changed, 226 insertions(+), 37 deletions(-)
>
> diff --git a/RedfishPkg/PrivateLibrary/RedfishLib/RedfishLib.inf
> b/RedfishPkg/PrivateLibrary/RedfishLib/RedfishLib.inf
> index 128d511df7c9..124ecb1e3aae 100644
> --- a/RedfishPkg/PrivateLibrary/RedfishLib/RedfishLib.inf
> +++ b/RedfishPkg/PrivateLibrary/RedfishLib/RedfishLib.inf
> @@ -3,6 +3,7 @@
> #
> # Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
> # (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
> +# Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights
> reserved.
> #
> # SPDX-License-Identifier: BSD-2-Clause-Patent
> #
> @@ -42,6 +43,7 @@
> BaseLib
> BaseMemoryLib
> DebugLib
> + JsonLib
> HttpLib
> MemoryAllocationLib
> NetLib
> diff --git a/RedfishPkg/Include/Library/RedfishLib.h
> b/RedfishPkg/Include/Library/RedfishLib.h
> index 28c2b290e613..8309a67c769f 100644
> --- a/RedfishPkg/Include/Library/RedfishLib.h
> +++ b/RedfishPkg/Include/Library/RedfishLib.h
> @@ -61,6 +61,7 @@
>
> Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
> (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
> + Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights
> reserved.
>
> SPDX-License-Identifier: BSD-2-Clause-Patent
>
> @@ -183,6 +184,23 @@ RedfishJsonInPayload (
> IN REDFISH_PAYLOAD Payload
> );
>
> +/**
> + This function returns the Redfish service of a REDFISH_PAYLOAD.
> +
> + Caller doesn't need to free the returned JSON value because it will be
> released
> + in corresponding RedfishCleanupService() function.
> +
> + @param[in] Payload A REDFISH_PAYLOAD instance.
> +
> + @return Redfish service of the payload.
> +
> +**/
> +REDFISH_SERVICE
> +EFIAPI
> +RedfishServiceInPayload (
> + IN REDFISH_PAYLOAD Payload
> + );
> +
> /**
> Fill the input RedPath string with system UUID from SMBIOS table or use the
> customized
> ID if FromSmbios == FALSE.
> @@ -222,7 +240,7 @@ RedfishBuildPathWithSystemUuid (
> from the root node.
> @param[out] RedResponse Pointer to the Redfish response data.
>
> - @retval EFI_SUCCESS The opeartion is successful, indicates the HTTP
> StatusCode is not
> + @retval EFI_SUCCESS The operation is successful, indicates the HTTP
> StatusCode is not
> NULL and the value is 2XX. The corresponding redfish
> resource has
> been returned in Payload within RedResponse.
> @retval EFI_INVALID_PARAMETER RedfishService, RedPath, or
> RedResponse is NULL.
> @@ -252,7 +270,7 @@ RedfishGetByService (
> @param[in] URI String to address a resource.
> @param[out] RedResponse Pointer to the Redfish response data.
>
> - @retval EFI_SUCCESS The opeartion is successful, indicates the HTTP
> StatusCode is not
> + @retval EFI_SUCCESS The operation is successful, indicates the HTTP
> StatusCode is not
> NULL and the value is 2XX. The corresponding redfish
> resource has
> been returned in Payload within RedResponse.
> @retval EFI_INVALID_PARAMETER RedfishService, RedPath, or
> RedResponse is NULL.
> @@ -282,7 +300,7 @@ RedfishGetByUri (
> @param[in] RedPath Relative RedPath string to address a resource
> inside Payload.
> @param[out] RedResponse Pointer to the Redfish response data.
>
> - @retval EFI_SUCCESS The opeartion is successful:
> + @retval EFI_SUCCESS The operation is successful:
> 1. The HTTP StatusCode is NULL and the returned Payload in
> RedResponse is not NULL, indicates the Redfish resource has
> been parsed from the input payload directly.
> @@ -323,7 +341,7 @@ RedfishGetByPayload (
> @param[in] Content JSON represented properties to be update.
> @param[out] RedResponse Pointer to the Redfish response data.
>
> - @retval EFI_SUCCESS The opeartion is successful, indicates the HTTP
> StatusCode is not
> + @retval EFI_SUCCESS The operation is successful, indicates the HTTP
> StatusCode is not
> NULL and the value is 2XX. The Redfish resource will be
> returned
> in Payload within RedResponse if server send it back in the
> HTTP
> response message body.
> @@ -357,10 +375,10 @@ RedfishPatchToUri (
> redfish response data.
>
> @param[in] Target The target payload to be updated.
> - @param[in] Payload Palyoad with properties to be changed.
> + @param[in] Payload Payload with properties to be changed.
> @param[out] RedResponse Pointer to the Redfish response data.
>
> - @retval EFI_SUCCESS The opeartion is successful, indicates the HTTP
> StatusCode is not
> + @retval EFI_SUCCESS The operation is successful, indicates the HTTP
> StatusCode is not
> NULL and the value is 2XX. The Redfish resource will be
> returned
> in Payload within RedResponse if server send it back in the
> HTTP
> response message body.
> @@ -398,7 +416,7 @@ RedfishPatchToPayload (
> @param[in] ContentType Type of the Content to be send to Redfish
> service
> @param[out] RedResponse Pointer to the Redfish response data.
>
> - @retval EFI_SUCCESS The opeartion is successful, indicates the HTTP
> StatusCode is not
> + @retval EFI_SUCCESS The operation is successful, indicates the HTTP
> StatusCode is not
> NULL and the value is 2XX. The Redfish resource will be
> returned
> in Payload within RedResponse if server send it back in the
> HTTP
> response message body.
> @@ -416,8 +434,8 @@ RedfishPostToUri (
> IN REDFISH_SERVICE RedfishService,
> IN CONST CHAR8 *Uri,
> IN CONST CHAR8 *Content,
> - IN UINTN ContentSize,
> - IN CONST CHAR8 *ContentType,
> + IN UINTN ContentSize OPTIONAL,
> + IN CONST CHAR8 *ContentType OPTIONAL,
> OUT REDFISH_RESPONSE *RedResponse
> );
>
> @@ -436,7 +454,7 @@ RedfishPostToUri (
> @param[in] Payload The new resource to be created.
> @param[out] RedResponse Pointer to the Redfish response data.
>
> - @retval EFI_SUCCESS The opeartion is successful, indicates the HTTP
> StatusCode is not
> + @retval EFI_SUCCESS The operation is successful, indicates the HTTP
> StatusCode is not
> NULL and the value is 2XX. The Redfish resource will be
> returned
> in Payload within RedResponse if server send it back in the
> HTTP
> response message body.
> @@ -471,7 +489,7 @@ RedfishPostToPayload (
> @param[in] Uri Relative path to address the resource.
> @param[out] RedResponse Pointer to the Redfish response data.
>
> - @retval EFI_SUCCESS The opeartion is successful, indicates the HTTP
> StatusCode is not
> + @retval EFI_SUCCESS The operation is successful, indicates the HTTP
> StatusCode is not
> NULL and the value is 2XX, the Redfish resource has been
> removed.
> If there is any message returned from server, it will be
> returned
> in Payload within RedResponse.
> @@ -507,7 +525,7 @@ RedfishDeleteByUri (
> @param[in] Content JSON represented properties to be deleted.
> @param[out] RedResponse Pointer to the Redfish response data.
>
> - @retval EFI_SUCCESS The opeartion is successful, indicates the HTTP
> StatusCode is not
> + @retval EFI_SUCCESS The operation is successful, indicates the HTTP
> StatusCode is not
> NULL and the value is 2XX, the Redfish resource has been
> removed.
> If there is any message returned from server, it will be
> returned
> in Payload within RedResponse.
> @@ -528,6 +546,49 @@ RedfishDeleteByUriEx (
> OUT REDFISH_RESPONSE *RedResponse
> );
>
> +/**
> + Use HTTP PUT to create new Redfish resource in the Resource Collection.
> +
> + This function uses the RedfishService to put a Redfish resource addressed by
> + Uri (only the relative path is required). Changes to one or more properties
> within
> + the target resource are represented in the input Content, properties not
> specified
> + in Content won't be changed by this request. The corresponding redfish
> response will
> + returned, including HTTP StatusCode, Headers and Payload which record
> any HTTP response
> + messages.
> +
> + Callers are responsible for freeing the HTTP StatusCode, Headers and
> Payload returned in
> + redfish response data.
> +
> + @param[in] RedfishService The Service to access the Redfish resources.
> + @param[in] Uri Relative path to address the resource.
> + @param[in] Content JSON represented properties to be update.
> + @param[in] ContentSize Size of the Content to be send to Redfish
> service
> + @param[in] ContentType Type of the Content to be send to Redfish
> service
> + @param[out] RedResponse Pointer to the Redfish response data.
> +
> + @retval EFI_SUCCESS The operation is successful, indicates the HTTP
> StatusCode is not
> + NULL and the value is 2XX. The Redfish resource will be
> returned
> + in Payload within RedResponse if server send it back in the
> HTTP
> + response message body.
> + @retval EFI_INVALID_PARAMETER RedfishService, Uri, Content, or
> RedResponse is NULL.
> + @retval EFI_DEVICE_ERROR An unexpected system or network error
> occurred. Callers can get
> + more error info from returned HTTP StatusCode, Headers
> and Payload
> + within RedResponse:
> + 1. If the returned StatusCode is NULL, indicates any error
> happen.
> + 2. If the returned StatusCode is not NULL and the value is
> not 2XX,
> + indicates any error happen.
> +**/
> +EFI_STATUS
> +EFIAPI
> +RedfishPutToUri (
> + IN REDFISH_SERVICE RedfishService,
> + IN CONST CHAR8 *Uri,
> + IN CONST CHAR8 *Content,
> + IN UINTN ContentSize OPTIONAL,
> + IN CONST CHAR8 *ContentType OPTIONAL,
> + OUT REDFISH_RESPONSE *RedResponse
> + );
> +
> /**
> Dump text in fractions.
>
> @@ -582,7 +643,7 @@ RedfishFreeResponse (
> Check if the "@odata.type" in Payload is valid or not.
>
> @param[in] Payload The Redfish payload to be checked.
> - @param[in] OdataTypeName OdataType will be retrived from
> mapping list.
> + @param[in] OdataTypeName OdataType will be retrieved from
> mapping list.
> @param[in] OdataTypeMappingList The list of OdataType.
> @param[in] OdataTypeMappingListSize The number of mapping list
>
> @@ -616,7 +677,7 @@ RedfishIsPayloadCollection (
> @param[in] Payload The Redfish collection payload
> @param[in] CollectionSize Size of this collection
>
> - @return EFI_SUCCESS Coolection size is returned in CollectionSize
> + @return EFI_SUCCESS Collection size is returned in CollectionSize
> @return EFI_INVALID_PARAMETER The payload is not a collection.
> **/
> EFI_STATUS
> @@ -674,18 +735,18 @@ RedfishGetServiceVersion (
> /**
> This function returns the string of Redfish service version.
>
> - @param[in] ServiceVerisonStr The string of Redfish service version.
> + @param[in] ServiceVersionStr The string of Redfish service version.
> @param[in] Url The URL to build Redpath with ID.
> Start with "/", for example "/Registries"
> @param[in] Id ID string
> - @param[out] Redpath Pointer to retrive Redpath, caller has to free
> + @param[out] Redpath Pointer to retrieved Redpath, caller has to free
> the memory allocated for this string.
> @return EFI_STATUS
>
> **/
> EFI_STATUS
> RedfishBuildRedpathUseId (
> - IN CHAR8 *ServiceVerisonStr,
> + IN CHAR8 *ServiceVersionStr,
> IN CHAR8 *Url,
> IN CHAR8 *Id,
> OUT CHAR8 **Redpath
> diff --git a/RedfishPkg/PrivateLibrary/RedfishLib/RedfishLib.c
> b/RedfishPkg/PrivateLibrary/RedfishLib/RedfishLib.c
> index cca0ea774893..f4045044829a 100644
> --- a/RedfishPkg/PrivateLibrary/RedfishLib/RedfishLib.c
> +++ b/RedfishPkg/PrivateLibrary/RedfishLib/RedfishLib.c
> @@ -4,6 +4,7 @@
>
> Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
> (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
> + Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights
> reserved.
>
> SPDX-License-Identifier: BSD-2-Clause-Patent
>
> @@ -167,6 +168,30 @@ RedfishJsonInPayload (
> return ((redfishPayload *)Payload)->json;
> }
>
> +/**
> + This function returns the Redfish service of a REDFISH_PAYLOAD.
> +
> + Caller doesn't need to free the returned JSON value because it will be
> released
> + in corresponding RedfishCleanupService() function.
> +
> + @param[in] Payload A REDFISH_PAYLOAD instance.
> +
> + @return Redfish service of the payload.
> +
> +**/
> +REDFISH_SERVICE
> +EFIAPI
> +RedfishServiceInPayload (
> + IN REDFISH_PAYLOAD Payload
> + )
> +{
> + if (Payload == NULL) {
> + return NULL;
> + }
> +
> + return ((redfishPayload *)Payload)->service;
> +}
> +
> /**
> Fill the input RedPath string with system UUID from SMBIOS table or use the
> customized
> ID if FromSmbios == FALSE.
> @@ -244,7 +269,7 @@ RedfishBuildPathWithSystemUuid (
> from the root node.
> @param[out] RedResponse Pointer to the Redfish response data.
>
> - @retval EFI_SUCCESS The opeartion is successful, indicates the HTTP
> StatusCode is not
> + @retval EFI_SUCCESS The operation is successful, indicates the HTTP
> StatusCode is not
> NULL and the value is 2XX. The corresponding redfish
> resource has
> been returned in Payload within RedResponse.
> @retval EFI_INVALID_PARAMETER RedfishService, RedPath, or
> RedResponse is NULL.
> @@ -304,7 +329,7 @@ RedfishGetByService (
> @param[in] Uri String to address a resource.
> @param[out] RedResponse Pointer to the Redfish response data.
>
> - @retval EFI_SUCCESS The opeartion is successful, indicates the HTTP
> StatusCode is not
> + @retval EFI_SUCCESS The operation is successful, indicates the HTTP
> StatusCode is not
> NULL and the value is 2XX. The corresponding redfish
> resource has
> been returned in Payload within RedResponse.
> @retval EFI_INVALID_PARAMETER RedfishService, RedPath, or
> RedResponse is NULL.
> @@ -367,7 +392,7 @@ RedfishGetByUri (
> @param[in] RedPath Relative RedPath string to address a resource
> inside Payload.
> @param[out] RedResponse Pointer to the Redfish response data.
>
> - @retval EFI_SUCCESS The opeartion is successful:
> + @retval EFI_SUCCESS The operation is successful:
> 1. The HTTP StatusCode is NULL and the returned Payload in
> RedResponse is not NULL, indicates the Redfish resource has
> been parsed from the input payload directly.
> @@ -440,7 +465,7 @@ RedfishGetByPayload (
> @param[in] Content JSON represented properties to be update.
> @param[out] RedResponse Pointer to the Redfish response data.
>
> - @retval EFI_SUCCESS The opeartion is successful, indicates the HTTP
> StatusCode is not
> + @retval EFI_SUCCESS The operation is successful, indicates the HTTP
> StatusCode is not
> NULL and the value is 2XX. The Redfish resource will be
> returned
> in Payload within RedResponse if server send it back in the
> HTTP
> response message body.
> @@ -527,10 +552,10 @@ ON_EXIT:
> redfish response data.
>
> @param[in] Target The target payload to be updated.
> - @param[in] Payload Palyoad with properties to be changed.
> + @param[in] Payload Payload with properties to be changed.
> @param[out] RedResponse Pointer to the Redfish response data.
>
> - @retval EFI_SUCCESS The opeartion is successful, indicates the HTTP
> StatusCode is not
> + @retval EFI_SUCCESS The operation is successful, indicates the HTTP
> StatusCode is not
> NULL and the value is 2XX. The Redfish resource will be
> returned
> in Payload within RedResponse if server send it back in the
> HTTP
> response message body.
> @@ -601,7 +626,7 @@ RedfishPatchToPayload (
> @param[in] ContentType Type of the Content to be send to Redfish
> service
> @param[out] RedResponse Pointer to the Redfish response data.
>
> - @retval EFI_SUCCESS The opeartion is successful, indicates the HTTP
> StatusCode is not
> + @retval EFI_SUCCESS The operation is successful, indicates the HTTP
> StatusCode is not
> NULL and the value is 2XX. The Redfish resource will be
> returned
> in Payload within RedResponse if server send it back in the
> HTTP
> response message body.
> @@ -619,8 +644,8 @@ RedfishPostToUri (
> IN REDFISH_SERVICE RedfishService,
> IN CONST CHAR8 *Uri,
> IN CONST CHAR8 *Content,
> - IN UINTN ContentSize,
> - IN CONST CHAR8 *ContentType,
> + IN UINTN ContentSize OPTIONAL,
> + IN CONST CHAR8 *ContentType OPTIONAL,
> OUT REDFISH_RESPONSE *RedResponse
> )
> {
> @@ -694,7 +719,7 @@ ON_EXIT:
> @param[in] Payload The new resource to be created.
> @param[out] RedResponse Pointer to the Redfish response data.
>
> - @retval EFI_SUCCESS The opeartion is successful, indicates the HTTP
> StatusCode is not
> + @retval EFI_SUCCESS The operation is successful, indicates the HTTP
> StatusCode is not
> NULL and the value is 2XX. The Redfish resource will be
> returned
> in Payload within RedResponse if server send it back in the
> HTTP
> response message body.
> @@ -762,7 +787,7 @@ RedfishPostToPayload (
> @param[in] Uri Relative path to address the resource.
> @param[out] RedResponse Pointer to the Redfish response data.
>
> - @retval EFI_SUCCESS The opeartion is successful, indicates the HTTP
> StatusCode is not
> + @retval EFI_SUCCESS The operation is successful, indicates the HTTP
> StatusCode is not
> NULL and the value is 2XX, the Redfish resource has been
> removed.
> If there is any message returned from server, it will be
> returned
> in Payload within RedResponse.
> @@ -850,7 +875,7 @@ ON_EXIT:
> @param[in] Content JSON represented properties to be deleted.
> @param[out] RedResponse Pointer to the Redfish response data.
>
> - @retval EFI_SUCCESS The opeartion is successful, indicates the HTTP
> StatusCode is not
> + @retval EFI_SUCCESS The operation is successful, indicates the HTTP
> StatusCode is not
> NULL and the value is 2XX, the Redfish resource has been
> removed.
> If there is any message returned from server, it will be
> returned
> in Payload within RedResponse.
> @@ -1060,7 +1085,7 @@ RedfishFreeResponse (
> Check if the "@odata.type" in Payload is valid or not.
>
> @param[in] Payload The Redfish payload to be checked.
> - @param[in] OdataTypeName OdataType will be retrived from
> mapping list.
> + @param[in] OdataTypeName OdataType will be retrieved from
> mapping list.
> @param[in] OdataTypeMappingList The list of OdataType.
> @param[in] OdataTypeMappingListSize The number of mapping list
>
> @@ -1127,7 +1152,7 @@ RedfishIsPayloadCollection (
> @param[in] Payload The Redfish collection payload
> @param[in] CollectionSize Size of this collection
>
> - @return EFI_SUCCESS Coolection size is returned in CollectionSize
> + @return EFI_SUCCESS Collection size is returned in CollectionSize
> @return EFI_INVALID_PARAMETER The payload is not a collection.
> **/
> EFI_STATUS
> @@ -1217,3 +1242,103 @@ RedfishCheckIfRedpathExist (
>
> return EFI_SUCCESS;
> }
> +
> +/**
> + Use HTTP PUT to create new Redfish resource in the Resource Collection.
> +
> + This function uses the RedfishService to put a Redfish resource addressed by
> + Uri (only the relative path is required). Changes to one or more properties
> within
> + the target resource are represented in the input Content, properties not
> specified
> + in Content won't be changed by this request. The corresponding redfish
> response will
> + returned, including HTTP StatusCode, Headers and Payload which record
> any HTTP response
> + messages.
> +
> + Callers are responsible for freeing the HTTP StatusCode, Headers and
> Payload returned in
> + redfish response data.
> +
> + @param[in] RedfishService The Service to access the Redfish resources.
> + @param[in] Uri Relative path to address the resource.
> + @param[in] Content JSON represented properties to be update.
> + @param[in] ContentSize Size of the Content to be send to Redfish
> service
> + @param[in] ContentType Type of the Content to be send to Redfish
> service
> + @param[out] RedResponse Pointer to the Redfish response data.
> +
> + @retval EFI_SUCCESS The operation is successful, indicates the HTTP
> StatusCode is not
> + NULL and the value is 2XX. The Redfish resource will be
> returned
> + in Payload within RedResponse if server send it back in the
> HTTP
> + response message body.
> + @retval EFI_INVALID_PARAMETER RedfishService, Uri, Content, or
> RedResponse is NULL.
> + @retval EFI_DEVICE_ERROR An unexpected system or network error
> occurred. Callers can get
> + more error info from returned HTTP StatusCode, Headers
> and Payload
> + within RedResponse:
> + 1. If the returned StatusCode is NULL, indicates any error
> happen.
> + 2. If the returned StatusCode is not NULL and the value is
> not 2XX,
> + indicates any error happen.
> +**/
> +EFI_STATUS
> +EFIAPI
> +RedfishPutToUri (
> + IN REDFISH_SERVICE RedfishService,
> + IN CONST CHAR8 *Uri,
> + IN CONST CHAR8 *Content,
> + IN UINTN ContentSize OPTIONAL,
> + IN CONST CHAR8 *ContentType OPTIONAL,
> + OUT REDFISH_RESPONSE *RedResponse
> + )
> +{
> + EFI_STATUS Status;
> + EDKII_JSON_VALUE JsonValue;
> +
> + Status = EFI_SUCCESS;
> + JsonValue = NULL;
> +
> + if ((RedfishService == NULL) || (Uri == NULL) || (Content == NULL) ||
> (RedResponse == NULL)) {
> + return EFI_INVALID_PARAMETER;
> + }
> +
> + ZeroMem (RedResponse, sizeof (REDFISH_RESPONSE));
> +
> + JsonValue = (EDKII_JSON_VALUE)putUriFromServiceEx (
> + RedfishService,
> + Uri,
> + Content,
> + ContentSize,
> + ContentType,
> + &(RedResponse->Headers),
> + &(RedResponse->HeaderCount),
> + &(RedResponse->StatusCode)
> + );
> +
> + //
> + // 1. If the returned StatusCode is NULL, indicates any error happen.
> + //
> + if (RedResponse->StatusCode == NULL) {
> + Status = EFI_DEVICE_ERROR;
> + goto ON_EXIT;
> + }
> +
> + //
> + // 2. If the returned StatusCode is not NULL and the value is not 2XX,
> indicates any error happen.
> + // NOTE: If there is any error message returned from server, it will be
> returned in
> + // Payload within RedResponse.
> + //
> + if ((*(RedResponse->StatusCode) < HTTP_STATUS_200_OK) || \
> + (*(RedResponse->StatusCode) > HTTP_STATUS_206_PARTIAL_CONTENT))
> + {
> + Status = EFI_DEVICE_ERROR;
> + }
> +
> +ON_EXIT:
> + if (JsonValue != NULL) {
> + RedResponse->Payload = createRedfishPayload (JsonValue,
> RedfishService);
> + if (RedResponse->Payload == NULL) {
> + //
> + // Ignore the error when create RedfishPayload, just free the JsonValue
> since it's not what
> + // we care about if the returned StatusCode is 2XX.
> + //
> + JsonValueFree (JsonValue);
> + }
> + }
> +
> + return Status;
> +}
> diff --git a/RedfishPkg/PrivateLibrary/RedfishLib/RedfishMisc.c
> b/RedfishPkg/PrivateLibrary/RedfishLib/RedfishMisc.c
> index 0eb23196d2c2..b6e9a111785a 100644
> --- a/RedfishPkg/PrivateLibrary/RedfishLib/RedfishMisc.c
> +++ b/RedfishPkg/PrivateLibrary/RedfishLib/RedfishMisc.c
> @@ -3,6 +3,7 @@
>
> Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
> (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
> + Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights
> reserved.
>
> SPDX-License-Identifier: BSD-2-Clause-Patent
>
> @@ -168,18 +169,18 @@ RedfishGetAuthInfo (
> /**
> This function returns the string of Redfish service version.
>
> - @param[in] ServiceVerisonStr The string of Redfish service version.
> + @param[in] ServiceVersionStr The string of Redfish service version.
> @param[in] Url The URL to build Redpath with ID.
> Start with "/", for example "/Registries"
> @param[in] Id ID string
> - @param[out] Redpath Pointer to retrive Redpath, caller has to free
> + @param[out] Redpath Pointer to retrieved Redpath, caller has to free
> the memory allocated for this string.
> @return EFI_STATUS
>
> **/
> EFI_STATUS
> RedfishBuildRedpathUseId (
> - IN CHAR8 *ServiceVerisonStr,
> + IN CHAR8 *ServiceVersionStr,
> IN CHAR8 *Url,
> IN CHAR8 *Id,
> OUT CHAR8 **Redpath
> @@ -187,12 +188,12 @@ RedfishBuildRedpathUseId (
> {
> UINTN RedpathSize;
>
> - if ((Redpath == NULL) || (ServiceVerisonStr == NULL) || (Url == NULL) || (Id
> == NULL)) {
> + if ((Redpath == NULL) || (ServiceVersionStr == NULL) || (Url == NULL) || (Id
> == NULL)) {
> return EFI_INVALID_PARAMETER;
> }
>
> RedpathSize = AsciiStrLen ("/") +
> - AsciiStrLen (ServiceVerisonStr) +
> + AsciiStrLen (ServiceVersionStr) +
> AsciiStrLen (Url) +
> AsciiStrLen ("[Id=]") +
> AsciiStrLen (Id) + 1;
> @@ -201,6 +202,6 @@ RedfishBuildRedpathUseId (
> return EFI_OUT_OF_RESOURCES;
> }
>
> - AsciiSPrint (*Redpath, RedpathSize, "/%a%a[Id=%a]", ServiceVerisonStr, Url,
> Id);
> + AsciiSPrint (*Redpath, RedpathSize, "/%a%a[Id=%a]", ServiceVersionStr, Url,
> Id);
> return EFI_SUCCESS;
> }
> --
> 2.17.1
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#110074): https://edk2.groups.io/g/devel/message/110074
Mute This Topic: https://groups.io/mt/102154011/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
prev parent reply other threads:[~2023-10-26 6:04 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-24 8:38 [edk2-devel] [PATCH 1/3] RedfishPkg/RedfishLib: introduce new interfaces Nickle Wang via groups.io
2023-10-26 6:04 ` Chang, Abner via groups.io [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=MN2PR12MB3966E80B069E59E4E27863D2EADDA@MN2PR12MB3966.namprd12.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