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:
committed by
mergify[bot]
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
|
||||
|
Reference in New Issue
Block a user