mirror of https://github.com/acidanthera/audk.git
RedfishPkg/RedfishLib: introduce new interfaces.
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> Reviewed-by: Abner Chang <abner.chang@amd.com>
This commit is contained in:
parent
9bb5ef1287
commit
cf68ff6130
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue