[AMD Official Use Only - General] Correct email address Reviewed-by: Abner Chang <abner.ch...@amd.com>
> -----Original Message----- > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Chang, > Abner via groups.io > Sent: Friday, May 5, 2023 8:56 AM > To: Nickle Wang <nick...@nvidia.com>; devel@edk2.groups.io > Cc: Igor Kulchytskyy <ig...@ami.com> > Subject: Re: [edk2-devel] [edk2-redfish-client][PATCH 5/8] RedfishClientPkg: > Add RedfishLib.h > > Caution: This message originated from an External Source. Use proper > caution when opening attachments, clicking links, or responding. > > > [AMD Official Use Only - General] > > Reviewed-by: Abner Chang <abner.ch...@hpe.com> > > > -----Original Message----- > > From: Nickle Wang <nick...@nvidia.com> > > Sent: Thursday, May 4, 2023 10:25 PM > > To: devel@edk2.groups.io > > Cc: Chang, Abner <abner.ch...@amd.com>; Igor Kulchytskyy > > <ig...@ami.com> > > Subject: [edk2-redfish-client][PATCH 5/8] RedfishClientPkg: Add > > RedfishLib.h > > > > Caution: This message originated from an External Source. Use proper > > caution when opening attachments, clicking links, or responding. > > > > > > RedfishLib.h is the header file of RedfishLib library under > > RedfishClientPkg. > > RedfishLib is used by EDKII Redfish feature drivers. > > > > Signed-off-by: Nickle Wang <nick...@nvidia.com> > > Cc: Abner Chang <abner.ch...@amd.com> > > Cc: Igor Kulchytskyy <ig...@ami.com> > > --- > > .../PrivateInclude/Library/RedfishLib.h | 616 ++++++++++++++++++ > > 1 file changed, 616 insertions(+) > > create mode 100644 > > RedfishClientPkg/PrivateInclude/Library/RedfishLib.h > > > > diff --git a/RedfishClientPkg/PrivateInclude/Library/RedfishLib.h > > b/RedfishClientPkg/PrivateInclude/Library/RedfishLib.h > > new file mode 100644 > > index 00000000..b2488abb > > --- /dev/null > > +++ b/RedfishClientPkg/PrivateInclude/Library/RedfishLib.h > > @@ -0,0 +1,616 @@ > > +/** @file > > + This library provides a set of utility APIs that allow to > > +create/read/update/delete > > + (CRUD) Redfish resources and provide basic query abilities by using > > +[URI/RedPath] > > + (https://github.com/DMTF/libredfish). > > + > > + The query language is based on XPath > > + (https://www.w3.org/TR/1999/REC- > > xpath-19991116/). > > + This library and query language essentially treat the entire > > + Redfish Service like it was a single JSON document. In other words > > + whenever it encounters an odata.id in JSON document, it will > > + retrieve the new JSON document (if needed). We name the path as > > + RedPath: > > + > > + Expression Description > > + > > + nodename Selects the JSON entity with the name "nodename". > > + If the value of nodename is an object with "@odata.id", > > + it will continue get the value from "@odata.id". > > + > > + / Selects from the root node > > + > > + [index] Selects the index number JSON entity from an array or > > + object. If the JSON entity is one collection (has > > + Members & Members@odata.count), means to get the index > > + member in "Members". Index number >=1, 1 means to return > > + the first instance. > > + > > + [XXX] Operation on JSON entity. > > + If the JSON entity is one collection (has Members & > > + Members@odata.count), means to get all elements in > > + "Members". If the JSON entity is one array, means to > > + get all elements in array. Others will match the > > nodename > > + directly (e.g. JSON_OBJECT, JSON_STRING, JSON_TRUE, > > + JSON_FALSE, JSON_INTEGER). > > + > > + [nodename] Selects all the elements from an JSON entity that > > + contain a property named "nodename" > > + > > + [name=value] Selects all the elements from an JSON entity where > > + the property "name" is equal to "value" > > + > > + [name~value] Selects all the elements from an JSON entity where > > + the string property "name" is equal to "value" using > > + case insensitive comparison. > > + > > + [name<value] Selects all the elements from an JSON entity where > > + the property "name" is less than "value" > > + > > + [name<=value] Selects all the elements from an JSON entity where > > + the property "name" is less than or equal to "value" > > + > > + [name>value] Selects all the elements from an JSON entity where > > + the property "name" is greater than "value" > > + > > + [name>=value] Selects all the elements from an JSON entity where > > + the property "name" is greater than or equal to "value" > > + > > + Some examples: > > + > > + /v1/Chassis[1] - Will return the first Chassis instance. > > + /v1/Chassis[SKU=1234] - Will return all Chassis instances with a > > + SKU field > > equal to 1234. > > + /v1/Systems[Storage] - Will return all the System instances that > > + have > > Storage field populated. > > + > > + Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> > > + (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR> > > + > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > + > > +**/ > > + > > +#ifndef REDFISH_LIB_H_ > > +#define REDFISH_LIB_H_ > > + > > +#include <Library/JsonLib.h> > > + > > +#include <Protocol/Http.h> > > +#include <Protocol/EdkIIRedfishConfigHandler.h> > > + > > +#define ODATA_TYPE_NAME_MAX_SIZE 128 > > +#define ODATA_TYPE_MAX_SIZE 128 > > + > > +/// > > +/// Library class public defines > > +/// > > +typedef VOID *REDFISH_SERVICE; > > +typedef VOID *REDFISH_PAYLOAD; > > + > > +/// > > +/// Library class public structures/unions /// typedef struct { > > + EFI_HTTP_STATUS_CODE *StatusCode; > > + UINTN HeaderCount; > > + EFI_HTTP_HEADER *Headers; > > + REDFISH_PAYLOAD Payload; > > +} REDFISH_RESPONSE; > > + > > +/// > > +/// Odata type-name mapping structure. > > +/// > > +typedef struct { > > + CONST CHAR8 OdataTypeName[ODATA_TYPE_NAME_MAX_SIZE]; > > + CONST CHAR8 OdataType[ODATA_TYPE_MAX_SIZE]; > > +} REDFISH_ODATA_TYPE_MAPPING; > > + > > +/** > > + This function uses REST EX protocol provided in RedfishConfigServiceInfo. > > + The service enumerator will also handle the authentication flow > > +automatically > > + if HTTP basic auth or Redfish session login is configured to use. > > + > > + Callers are responsible for freeing the returned service by > > RedfishCleanupService(). > > + > > + @param[in] RedfishConfigServiceInfo Redfish service information > > + the EFI > > Redfish > > + feature driver communicates with. > > + > > + @return New created Redfish Service, or NULL if error happens. > > + > > +**/ > > +REDFISH_SERVICE > > +EFIAPI > > +RedfishCreateService ( > > + IN REDFISH_CONFIG_SERVICE_INFORMATION > *RedfishConfigServiceInfo > > + ); > > + > > +/** > > + Free the Service and all its related resources. > > + > > + @param[in] RedfishService The Service to access the Redfish > resources. > > + > > +**/ > > +VOID > > +EFIAPI > > +RedfishCleanupService ( > > + IN REDFISH_SERVICE RedfishService > > + ); > > + > > +/** > > + Create REDFISH_PAYLOAD instance in local with JSON represented > > +resource value and > > + the Redfish Service. > > + > > + The returned REDFISH_PAYLOAD can be used to create or update > > + Redfish resource in server side. > > + > > + Callers are responsible for freeing the returned payload by > > RedfishCleanupPayload(). > > + > > + @param[in] Value JSON Value of the redfish resource. > > + @param[in] RedfishService The Service to access the Redfish > > resources. > > + > > + @return REDFISH_PAYLOAD instance of the resource, or NULL if error > > happens. > > + > > +**/ > > +REDFISH_PAYLOAD > > +EFIAPI > > +RedfishCreatePayload ( > > + IN EDKII_JSON_VALUE Value, > > + IN REDFISH_SERVICE RedfishService > > + ); > > + > > +/** > > + Free the RedfishPayload and all its related resources. > > + > > + @param[in] Payload Payload to be freed. > > + > > +**/ > > +VOID > > +EFIAPI > > +RedfishCleanupPayload ( > > + IN REDFISH_PAYLOAD Payload > > + ); > > + > > +/** > > + This function returns the decoded JSON value of a REDFISH_PAYLOAD. > > + > > + Caller doesn't need to free the returned JSON value because it will > > + be released in corresponding RedfishCleanupPayload() function. > > + > > + @param[in] Payload A REDFISH_PAYLOAD instance. > > + > > + @return Decoded JSON value of the payload. > > + > > +**/ > > +EDKII_JSON_VALUE > > +EFIAPI > > +RedfishJsonInPayload ( > > + IN REDFISH_PAYLOAD Payload > > + ); > > + > > +/** > > + Fill the input RedPath string with system UUID from SMBIOS table or > > +use the customized > > + ID if FromSmbios == FALSE. > > + > > + This is a helper function to build a RedPath string which can be > > + used to address a Redfish resource for this computer system. The > > + input PathString must have a Systems note in format of > > + "Systems[UUID=%g]" or > > "Systems[UUID~%g]" to fill the UUID value. > > + > > + Example: > > + Use "/v1/Systems[UUID=%g]/Bios" to build a RedPath to address the > > "Bios" resource > > + for this computer system. > > + > > + @param[in] RedPath RedPath format to be build. > > + @param[in] FromSmbios Get system UUID from SMBIOS as > computer > > system instance ID. > > + @param[in] IdString The computer system instance ID. > > + > > + @return Full RedPath with system UUID inside, or NULL if error > happens. > > + > > +**/ > > +CHAR8 * > > +EFIAPI > > +RedfishBuildPathWithSystemUuid ( > > + IN CONST CHAR8 *RedPath, > > + IN BOOLEAN FromSmbios, > > + IN CHAR8 *IdString OPTIONAL > > + ); > > + > > +/** > > + Get a redfish response addressed by a RedPath string, 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] RedPath RedPath string to address a > > resource, must > > start > > + 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 > > + 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. > > + @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 Payload is NULL, > > + indicates any error > > happen. > > + 2. If the returned StatusCode is > > + NULL, indicates any error > > happen. > > + 3. If the returned StatusCode is > > + not 2XX, indicates any error > > happen. > > +**/ > > +EFI_STATUS > > +EFIAPI > > +RedfishGetByService ( > > + IN REDFISH_SERVICE RedfishService, > > + IN CONST CHAR8 *RedPath, > > + OUT REDFISH_RESPONSE *RedResponse > > + ); > > + > > +/** > > + Get a redfish response addressed by URI, 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 URI resources. > > + @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 > > + 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. > > + @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 Payload is NULL, > > + indicates any error > > happen. > > + 2. If the returned StatusCode is > > + NULL, indicates any error > > happen. > > + 3. If the returned StatusCode is > > + not 2XX, indicates any error > > happen. > > +**/ > > +EFI_STATUS > > +EFIAPI > > +RedfishGetByUri ( > > + IN REDFISH_SERVICE RedfishService, > > + IN CONST CHAR8 *Uri, > > + OUT REDFISH_RESPONSE *RedResponse > > + ); > > + > > +/** > > + Get a redfish response addressed by the input Payload and relative > > +RedPath string, > > + 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] Payload A existing REDFISH_PAYLOAD instance. > > + @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: > > + 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. > > + 2. The HTTP StatusCode is not NULL and > > the value is 2XX, > > + indicates the corresponding redfish > > + resource has been > > returned > > + in Payload within RedResponse. > > + @retval EFI_INVALID_PARAMETER Payload, RedPath, 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 Payload is NULL, > > + indicates any error > > happen. > > + 2. If StatusCode is not NULL and > > + the returned value of > > StatusCode > > + is not 2XX, indicates any error > > happen. > > +**/ > > +EFI_STATUS > > +EFIAPI > > +RedfishGetByPayload ( > > + IN REDFISH_PAYLOAD Payload, > > + IN CONST CHAR8 *RedPath, > > + OUT REDFISH_RESPONSE *RedResponse > > + ); > > + > > +/** > > + Use HTTP PATCH to perform updates on pre-existing Redfish resource. > > + > > + This function uses the RedfishService to patch 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[out] RedResponse Pointer to the Redfish response data. > > + > > + @retval EFI_SUCCESS The opeartion 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 > > +RedfishPatchToUri ( > > + IN REDFISH_SERVICE RedfishService, > > + IN CONST CHAR8 *Uri, > > + IN CONST CHAR8 *Content, > > + OUT REDFISH_RESPONSE *RedResponse > > + ); > > + > > +/** > > + Use HTTP PATCH to perform updates on target payload. Patch to > > +odata.id > > in Payload directly. > > + > > + This function uses the Payload to patch the Target. Changes to one > > + or more properties within the target resource are represented in > > + the input Payload, properties not specified in Payload 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] Target The target payload to be updated. > > + @param[in] Payload Palyoad 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 > > + 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 Target, Payload, 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 > > +RedfishPatchToPayload ( > > + IN REDFISH_PAYLOAD Target, > > + IN REDFISH_PAYLOAD Payload, > > + OUT REDFISH_RESPONSE *RedResponse > > + ); > > + > > +/** > > + Use HTTP POST to create a new resource in target payload. > > + > > + The POST request should be submitted to the Resource Collection in > > + which the new resource is to belong. The Resource Collection is > > + addressed by Target payload. The Redfish may ignore any service > > + controlled properties. 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] Target Target payload of the Resource Collection. > > + @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 > > + 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 Target, Payload, 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 > > +RedfishPostToPayload ( > > + IN REDFISH_PAYLOAD Target, > > + IN REDFISH_PAYLOAD Payload, > > + OUT REDFISH_RESPONSE *RedResponse > > + ); > > + > > +/** > > + Use HTTP DELETE to remove a resource. > > + > > + This function uses the RedfishService to remove a Redfish resource > > + which is addressed by input Uri (only the relative path is required). > > + 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[out] RedResponse Pointer to the Redfish response data. > > + > > + @retval EFI_SUCCESS The opeartion 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. > > + @retval EFI_INVALID_PARAMETER RedfishService, Uri, 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 > > +RedfishDeleteByUri ( > > + IN REDFISH_SERVICE RedfishService, > > + IN CONST CHAR8 *Uri, > > + OUT REDFISH_RESPONSE *RedResponse > > + ); > > + > > +/** > > + Dump text in fractions. > > + > > + @param[in] String ASCII string to dump. > > + > > +**/ > > +VOID > > +RedfishDumpJsonStringFractions ( > > + IN CHAR8 *String > > + ); > > + > > +/** > > + Extract the JSON text content from REDFISH_PAYLOAD and dump to > > +debug > > console. > > + > > + @param[in] Payload The Redfish payload to dump. > > + > > +**/ > > +VOID > > +RedfishDumpPayload ( > > + IN REDFISH_PAYLOAD Payload > > + ); > > + > > +/** > > + Dump text in JSON value. > > + > > + @param[in] JsonValue The Redfish JSON value to dump. > > + > > +**/ > > +VOID > > +RedfishDumpJson ( > > + IN EDKII_JSON_VALUE JsonValue > > + ); > > + > > +/** > > + This function will cleanup the HTTP header and Redfish payload > resources. > > + > > + @param[in] StatusCode The status code in HTTP response message. > > + @param[in] HeaderCount Number of HTTP header structures in > > Headers list. > > + @param[in] Headers Array containing list of HTTP headers. > > + @param[in] Payload The Redfish payload to dump. > > + > > +**/ > > +VOID > > +RedfishFreeResponse ( > > + IN EFI_HTTP_STATUS_CODE *StatusCode, > > + IN UINTN HeaderCount, > > + IN EFI_HTTP_HEADER *Headers, > > + IN REDFISH_PAYLOAD Payload > > + ); > > + > > +/** > > + 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] OdataTypeMappingList The list of OdataType. > > + @param[in] OdataTypeMappingListSize The number of mapping list > > + > > + @return TRUE if the "@odata.type" in Payload is valid, otherwise FALSE. > > + > > +**/ > > +BOOLEAN > > +RedfishIsValidOdataType ( > > + IN REDFISH_PAYLOAD Payload, > > + IN CONST CHAR8 *OdataTypeName, > > + IN REDFISH_ODATA_TYPE_MAPPING *OdataTypeMappingList, > > + IN UINTN OdataTypeMappingListSize > > + ); > > + > > +/** > > + Check if the payload is collection > > + > > + @param[in] Payload The Redfish payload to be checked. > > + > > + @return TRUE if the payload is collection. > > + > > +**/ > > +BOOLEAN > > +RedfishIsPayloadCollection ( > > + IN REDFISH_PAYLOAD Payload > > + ); > > + > > +/** > > + Get collection size. > > + > > + @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_INVALID_PARAMETER The payload is not a collection. > > +**/ > > +EFI_STATUS > > +RedfishGetCollectionSize ( > > + IN REDFISH_PAYLOAD Payload, > > + IN UINTN *CollectionSize > > + ); > > + > > +/** > > + Get Redfish payload of collection member > > + > > + @param[in] Payload The Redfish collection payload > > + @param[in] Index Index of collection member > > + > > + @return NULL Fail to get collection member. > > + @return Non NULL Payload is returned. > > +**/ > > +REDFISH_PAYLOAD > > +RedfishGetPayloadByIndex ( > > + IN REDFISH_PAYLOAD Payload, > > + IN UINTN Index > > + ); > > + > > +/** > > + Check and return Redfish resource of the given Redpath. > > + > > + @param[in] RedfishService Pointer to REDFISH_SERVICE > > + @param[in] Redpath Redpath of the resource. > > + @param[in] Response Optional return the resource. > > + > > + @return EFI_STATUS > > +**/ > > +EFI_STATUS > > +RedfishCheckIfRedpathExist ( > > + IN REDFISH_SERVICE RedfishService, > > + IN CHAR8 *Redpath, > > + IN REDFISH_RESPONSE *Response OPTIONAL > > + ); > > + > > +/** > > + This function returns the string of Redfish service version. > > + > > + @param[in] RedfishService Redfish service instance. > > + @param[out] ServiceVersionStr Redfish service string. > > + > > + @return EFI_STATUS > > + > > +**/ > > +EFI_STATUS > > +RedfishGetServiceVersion ( > > + IN REDFISH_SERVICE RedfishService, > > + OUT CHAR8 **ServiceVersionStr > > + ); > > + > > +/** > > + This function returns the string of Redfish service version. > > + > > + @param[in] ServiceVerisonStr 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 > > + the memory allocated for this string. > > + @return EFI_STATUS > > + > > +**/ > > +EFI_STATUS > > +RedfishBuildRedpathUseId ( > > + IN CHAR8 *ServiceVerisonStr, > > + IN CHAR8 *Url, > > + IN CHAR8 *Id, > > + OUT CHAR8 **Redpath > > + ); > > + > > +#endif > > -- > > 2.17.1 > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#104059): https://edk2.groups.io/g/devel/message/104059 Mute This Topic: https://groups.io/mt/98684805/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-