[edk2-devel] [edk2-redfish-client][PATCH 1/8] RedfishClientPkg: Facilities of EDK2 Redfish Feature driver Env.

Chang, Abner via groups.io abner.chang=amd.com at groups.io
Fri May 5 01:14:29 UTC 2023


[AMD Official Use Only - General]

Correct email address
Reviewed-by: Abner Chang <abner.chang at amd.com>

> -----Original Message-----
> From: devel at edk2.groups.io <devel at edk2.groups.io> On Behalf Of Chang,
> Abner via groups.io
> Sent: Friday, May 5, 2023 8:55 AM
> To: Nickle Wang <nicklew at nvidia.com>; devel at edk2.groups.io
> Cc: Igor Kulchytskyy <igork at ami.com>
> Subject: Re: [edk2-devel] [edk2-redfish-client][PATCH 1/8] RedfishClientPkg:
> Facilities of EDK2 Redfish Feature driver Env.
> 
> 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.chang at hpe.com>
> 
> > -----Original Message-----
> > From: Nickle Wang <nicklew at nvidia.com>
> > Sent: Thursday, May 4, 2023 10:22 PM
> > To: devel at edk2.groups.io
> > Cc: Chang, Abner <Abner.Chang at amd.com>; Igor Kulchytskyy
> > <igork at ami.com>
> > Subject: [edk2-redfish-client][PATCH 1/8] RedfishClientPkg: Facilities
> > of EDK2 Redfish Feature driver Env.
> >
> > Caution: This message originated from an External Source. Use proper
> > caution when opening attachments, clicking links, or responding.
> >
> >
> > Initial common header file and meta files for feature drivers.
> >
> > Signed-off-by: Nickle Wang <nicklew at nvidia.com>
> > Cc: Abner Chang <abner.chang at amd.com>
> > Cc: Igor Kulchytskyy <igork at ami.com>
> > ---
> >  RedfishClientPkg/RedfishClientPkg.dec         |   5 +-
> >  .../Include/Guid/RedfishClientPkgTokenSpace.h |  20 +++
> >  .../EdkIIRedfishResourceConfigProtocol.h      | 127 ++++++++++++++++++
> >  .../Include/RedfishCollectionCommon.h         |  53 ++++++++
> >  .../Include/RedfishResourceCommon.h           | 121 +++++++++++++++++
> >  5 files changed, 325 insertions(+), 1 deletion(-)  create mode 100644
> > RedfishClientPkg/Include/Guid/RedfishClientPkgTokenSpace.h
> >  create mode 100644
> > RedfishClientPkg/Include/Protocol/EdkIIRedfishResourceConfigProtocol.h
> >  create mode 100644
> RedfishClientPkg/Include/RedfishCollectionCommon.h
> >  create mode 100644
> RedfishClientPkg/Include/RedfishResourceCommon.h
> >
> > diff --git a/RedfishClientPkg/RedfishClientPkg.dec
> > b/RedfishClientPkg/RedfishClientPkg.dec
> > index 8fa92d5b..11eab386 100644
> > --- a/RedfishClientPkg/RedfishClientPkg.dec
> > +++ b/RedfishClientPkg/RedfishClientPkg.dec
> > @@ -21,9 +21,12 @@
> >
> >  [Protocols]
> >    ## Include/Protocol/EdkIIRedfishFeature.h
> > -  gEdkIIRedfishFeatureProtocolGuid = { 0x785CC694, 0x4930, 0xEFBF, {
> > 0x2A, 0xCB, 0xA4, 0xB6, 0xA1, 0xCC, 0xAA, 0x34 } }
> > +  gEdkIIRedfishFeatureProtocolGuid        = { 0x785CC694, 0x4930, 0xEFBF,
> > { 0x2A, 0xCB, 0xA4, 0xB6, 0xA1, 0xCC, 0xAA, 0x34 } }
> > +  ## Include/Protocol/EdkIIRedfishResourceConfigProtocol.h
> > +  gEdkIIRedfishResourceConfigProtocolGuid = { 0x6f164c68, 0xfb09,
> > + 0x4646, { 0xa8, 0xd3, 0x24, 0x11, 0x5d, 0xab, 0x3e, 0xe7 } }
> >
> >  [Guids]
> > +  ## Include/Guid/RedfishClientPkgTokenSpace.h
> >    gEfiRedfishClientPkgTokenSpaceGuid    = { 0x8c444dae, 0x728b, 0x48ee,
> > { 0x9e, 0x19, 0x8f, 0x0a, 0x3d, 0x4e, 0x9c, 0xc8 } }
> >
> >  [PcdsFixedAtBuild]
> > diff --git
> > a/RedfishClientPkg/Include/Guid/RedfishClientPkgTokenSpace.h
> > b/RedfishClientPkg/Include/Guid/RedfishClientPkgTokenSpace.h
> > new file mode 100644
> > index 00000000..7928e1a2
> > --- /dev/null
> > +++ b/RedfishClientPkg/Include/Guid/RedfishClientPkgTokenSpace.h
> > @@ -0,0 +1,20 @@
> > +/** @file
> > +  GUID for RedfishClientPkg PCD Token Space
> > +
> > +  (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
> > +
> > +  SPDX-License-Identifier: BSD-2-Clause-Patent
> > +
> > +**/
> > +
> > +#ifndef REDFISHCLIENTPKG_TOKEN_SPACE_GUID_H_
> > +#define REDFISHCLIENTPKG_TOKEN_SPACE_GUID_H_
> > +
> > +#define REDFISHCLIENTPKG_TOKEN_SPACE_GUID \
> > +  { \
> > +    0x8c444dae, 0x728b, 0x48ee, { 0x9e, 0x19, 0x8f, 0x0a, 0x3d, 0x4e,
> > +0x9c, 0xc8 } \
> > +  }
> > +
> > +extern EFI_GUID  gEfiRedfishClientPkgTokenSpaceGuid;
> > +
> > +#endif
> > diff --git
> > a/RedfishClientPkg/Include/Protocol/EdkIIRedfishResourceConfigProtocol
> > .h
> > b/RedfishClientPkg/Include/Protocol/EdkIIRedfishResourceConfigProtocol
> > .h
> > new file mode 100644
> > index 00000000..814fa9f9
> > --- /dev/null
> > +++ b/RedfishClientPkg/Include/Protocol/EdkIIRedfishResourceConfigProt
> > +++ oc
> > +++ ol.h
> > @@ -0,0 +1,127 @@
> > +/** @file
> > +  This file defines the EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL
> > interface.
> > +
> > +  (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
> > +
> > +  SPDX-License-Identifier: BSD-2-Clause-Patent
> > +
> > +**/
> > +
> > +#ifndef EDKII_REDFISH_RESOURCE_CONFIG_H_ #define
> > +EDKII_REDFISH_RESOURCE_CONFIG_H_
> > +
> > +typedef struct _EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL
> > +EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL;
> > +
> > +/**
> > +  Provising redfish resource by given URI.
> > +
> > +  @param[in]   This                Pointer to
> > EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL instance.
> > +  @param[in]   Uri                 Target URI to create resource.
> > +  @param[in]   HttpPostMode        TRUE if resource does not exist, HTTP
> > POST method is used.
> > +                                   FALSE if the resource exist but
> > + some of properties are
> > missing,
> > +                                   HTTP PUT method is used.
> > +
> > +  @retval EFI_SUCCESS              Value is returned successfully.
> > +  @retval Others                   Some error happened.
> > +
> > +**/
> > +typedef
> > +EFI_STATUS
> > +(EFIAPI
> > *EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL_PROVISIONING)(
> > +  IN     EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL  *This,
> > +  IN     CHAR8                                   *Uri,
> > +  IN     BOOLEAN                                 HttpPostMode
> > +  );
> > +
> > +/**
> > +  Consume resource from given URI.
> > +
> > +  @param[in]   This                Pointer to
> > EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL instance.
> > +  @param[in]   Uri                 The target URI to consume.
> > +
> > +  @retval EFI_SUCCESS              Value is returned successfully.
> > +  @retval Others                   Some error happened.
> > +
> > +**/
> > +typedef
> > +EFI_STATUS
> > +(EFIAPI *EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL_CONSUME)(
> > +  IN     EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL  *This,
> > +  IN     CHAR8                                   *Uri
> > +  );
> > +
> > +/**
> > +  Update resource to given URI.
> > +
> > +  @param[in]   This                Pointer to
> > EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL instance.
> > +  @param[in]   Uri                 The target URI to consume.
> > +
> > +  @retval EFI_SUCCESS              Value is returned successfully.
> > +  @retval Others                   Some error happened.
> > +
> > +**/
> > +typedef
> > +EFI_STATUS
> > +(EFIAPI *EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL_UPDATE)(
> > +  IN     EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL  *This,
> > +  IN     CHAR8                                   *Uri
> > +  );
> > +
> > +/**
> > +  Check resource on given URI.
> > +
> > +  @param[in]   This                Pointer to
> > EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL instance.
> > +  @param[in]   Uri                 The target URI to consume.
> > +
> > +  @retval EFI_SUCCESS              Value is returned successfully.
> > +  @retval Others                   Some error happened.
> > +
> > +**/
> > +typedef
> > +EFI_STATUS
> > +(EFIAPI *EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL_CHECK)(
> > +  IN     EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL  *This,
> > +  IN     CHAR8                                   *Uri
> > +  );
> > +
> > +//
> > +// definition of REDFISH_SCHEMA_INFO
> > +//
> > +#define REDFISH_SCHEMA_STRING_SIZE   (FixedPcdGet32
> > (PcdMaxRedfishSchemaStringSize))
> > +#define REDFISH_SCHEMA_VERSION_SIZE  (FixedPcdGet32
> > +(PcdMaxRedfishSchemaVersionSize))
> > +
> > +typedef struct _SCHEMA_INFO {
> > +  CHAR8    Schema[REDFISH_SCHEMA_STRING_SIZE];
> > +  CHAR8    Major[REDFISH_SCHEMA_VERSION_SIZE];
> > +  CHAR8    Minor[REDFISH_SCHEMA_VERSION_SIZE];
> > +  CHAR8    Errata[REDFISH_SCHEMA_VERSION_SIZE];
> > +} REDFISH_SCHEMA_INFO;
> > +
> > +/**
> > +  Get information about this protocol.
> > +
> > +  @param[in]   This                Pointer to
> > EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL instance.
> > +  @param[out]  Info                The schema information.
> > +
> > +  @retval EFI_SUCCESS              Value is returned successfully.
> > +  @retval Others                   Some error happened.
> > +
> > +**/
> > +typedef
> > +EFI_STATUS
> > +(EFIAPI *EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL_GET_INFO)(
> > +  IN     EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL  *This,
> > +  OUT    REDFISH_SCHEMA_INFO                     *Info
> > +  );
> > +
> > +struct _EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL {
> > +  EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL_PROVISIONING
> > Provisioning;
> > +  EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL_CONSUME
> Consume;
> > +  EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL_UPDATE          Update;
> > +  EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL_CHECK           Check;
> > +  EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL_GET_INFO        GetInfo;
> > +};
> > +
> > +extern EFI_GUID  gEdkIIRedfishResourceConfigProtocolGuid;
> > +
> > +#endif
> > diff --git a/RedfishClientPkg/Include/RedfishCollectionCommon.h
> > b/RedfishClientPkg/Include/RedfishCollectionCommon.h
> > new file mode 100644
> > index 00000000..b5735741
> > --- /dev/null
> > +++ b/RedfishClientPkg/Include/RedfishCollectionCommon.h
> > @@ -0,0 +1,53 @@
> > +/** @file
> > +  Redfish feature driver collection common header file.
> > +
> > +  (C) Copyright 2020-2021 Hewlett Packard Enterprise Development
> > + LP<BR>
> > +
> > +  SPDX-License-Identifier: BSD-2-Clause-Patent
> > +
> > +**/
> > +
> > +#ifndef EFI_REDFISH_COLLECTION_COMMON_H_ #define
> > +EFI_REDFISH_COLLECTION_COMMON_H_
> > +
> > +//
> > +// Libraries
> > +//
> > +#include <Library/BaseMemoryLib.h>
> > +#include <Library/DebugLib.h>
> > +#include <Library/MemoryAllocationLib.h> #include
> > +<Library/PrintLib.h> #include <Library/PcdLib.h> #include
> > +<Library/RedfishLib.h> #include <Library/RedfishFeatureUtilityLib.h>
> > +#include <Library/UefiLib.h>
> > +#include <Library/UefiBootServicesTableLib.h>
> > +
> > +//
> > +// Protocols
> > +//
> > +#include <Protocol/EdkIIRedfishConfigHandler.h>
> > +#include <Protocol/EdkIIRedfishResourceConfigProtocol.h>
> > +#include <Protocol/EdkIIRedfishFeature.h> #include
> > +<Protocol/RestJsonStructure.h> #include <Protocol/RestEx.h>
> > +
> > +#define IS_EMPTY_STRING(a)  ((a) == NULL || (a)[0] == '\0') #define
> > +REDFISH_DEBUG_TRACE  DEBUG_INFO
> > +
> > +typedef struct _REDFISH_COLLECTION_PRIVATE {
> > +  EFI_REST_JSON_STRUCTURE_PROTOCOL         *JsonStructProtocol;
> > +  EDKII_REDFISH_FEATURE_PROTOCOL           *FeatureProtocol;
> > +  REDFISH_SERVICE                          RedfishService;
> > +  EDKII_REDFISH_CONFIG_HANDLER_PROTOCOL    ConfigHandler;
> > +  EFI_EVENT                                Event;
> > +  CHAR8                                    *CollectionPath;
> > +  CHAR8                                    *CollectionJson;
> > +  REDFISH_PAYLOAD                          CollectionPayload;
> > +  REDFISH_RESPONSE                         RedResponse;
> > +} REDFISH_COLLECTION_PRIVATE;
> > +
> > +#define REDFISH_COLLECTION_PRIVATE_DATA_FROM_PROTOCOL(This)
> \
> > +          BASE_CR ((This), REDFISH_COLLECTION_PRIVATE, ConfigHandler)
> > +
> > +#endif
> > diff --git a/RedfishClientPkg/Include/RedfishResourceCommon.h
> > b/RedfishClientPkg/Include/RedfishResourceCommon.h
> > new file mode 100644
> > index 00000000..95e8004d
> > --- /dev/null
> > +++ b/RedfishClientPkg/Include/RedfishResourceCommon.h
> > @@ -0,0 +1,121 @@
> > +/** @file
> > +  Redfish feature driver common header file.
> > +
> > +  (C) Copyright 2020-2021 Hewlett Packard Enterprise Development
> > + LP<BR>
> > +
> > +  SPDX-License-Identifier: BSD-2-Clause-Patent
> > +
> > +**/
> > +
> > +#ifndef EFI_REDFISH_RESOURCE_COMMON_H_ #define
> > +EFI_REDFISH_RESOURCE_COMMON_H_
> > +
> > +#define MAX_RED_PATH_LEN  128
> > +#define IS_EMPTY_STRING(a)  ((a) == NULL || (a)[0] == '\0') #define
> > +REDFISH_DEBUG_TRACE  DEBUG_INFO
> > +
> > +//
> > +// Libraries
> > +//
> > +#include <Library/DebugLib.h>
> > +#include <Library/BaseMemoryLib.h>
> > +#include <Library/MemoryAllocationLib.h> #include
> > +<Library/PrintLib.h> #include <Library/PcdLib.h> #include
> > +<Library/RedfishLib.h> #include <Library/RedfishFeatureUtilityLib.h>
> > +#include <Library/RedfishPlatformConfigLib.h>
> > +#include <Library/UefiLib.h>
> > +#include <Library/UefiBootServicesTableLib.h>
> > +
> > +//
> > +// Protocols
> > +//
> > +#include <Protocol/EdkIIRedfishConfigHandler.h>
> > +#include <Protocol/EdkIIRedfishResourceConfigProtocol.h>
> > +#include <Protocol/RestJsonStructure.h> #include <Protocol/RestEx.h>
> > +
> > +typedef struct _REDFISH_RESOURCE_COMMON_PRIVATE {
> > +  REDFISH_SERVICE                           RedfishService;
> > +  EFI_REST_JSON_STRUCTURE_PROTOCOL          *JsonStructProtocol;
> > +  EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL
> RedfishResourceConfig;
> > +  EDKII_REDFISH_CONFIG_HANDLER_PROTOCOL     ConfigHandler;
> > +  EFI_EVENT                                 Event;
> > +  CHAR8                                     *Uri;
> > +  CHAR8                                     *Json;
> > +  REDFISH_PAYLOAD                           Payload;
> > +} REDFISH_RESOURCE_COMMON_PRIVATE;
> > +
> > +#define
> >
> REDFISH_RESOURCE_COMMON_PRIVATE_DATA_FROM_CONFIG_PROTOCO
> > L(This) \
> > +          BASE_CR ((This), REDFISH_RESOURCE_COMMON_PRIVATE,
> > +ConfigHandler)
> > +
> > +#define
> >
> REDFISH_RESOURCE_COMMON_PRIVATE_DATA_FROM_RESOURCE_PROTO
> > COL(This) \
> > +          BASE_CR ((This), REDFISH_RESOURCE_COMMON_PRIVATE,
> > +RedfishResourceConfig)
> > +
> > +/**
> > +  Consume resource from given URI.
> > +
> > +  @param[in]   This                Pointer to
> > REDFISH_RESOURCE_COMMON_PRIVATE instance.
> > +  @param[in]   Json                The JSON to consume.
> > +
> > +  @retval EFI_SUCCESS              Value is returned successfully.
> > +  @retval Others                   Some error happened.
> > +
> > +**/
> > +EFI_STATUS
> > +RedfishConsumeResourceCommon (
> > +  IN     REDFISH_RESOURCE_COMMON_PRIVATE  *Private,
> > +  IN     CHAR8                            *Json
> > +  );
> > +
> > +/**
> > +  Provisioning redfish resource by given URI.
> > +
> > +  @param[in]   This                Pointer to EFI_HP_REDFISH_HII_PROTOCOL
> > instance.
> > +  @param[in]   ResourceExist       TRUE if resource exists, PUT method will
> be
> > used.
> > +                                   FALSE if resource does not exist POST method is used.
> > +
> > +  @retval EFI_SUCCESS              Value is returned successfully.
> > +  @retval Others                   Some error happened.
> > +
> > +**/
> > +EFI_STATUS
> > +RedfishProvisioningResourceCommon (
> > +  IN     REDFISH_RESOURCE_COMMON_PRIVATE  *Private,
> > +  IN     BOOLEAN                          ResourceExist
> > +  );
> > +
> > +/**
> > +  Check resource from given URI.
> > +
> > +  @param[in]   This                Pointer to
> > REDFISH_RESOURCE_COMMON_PRIVATE instance.
> > +  @param[in]   Json                The JSON to consume.
> > +
> > +  @retval EFI_SUCCESS              Value is returned successfully.
> > +  @retval Others                   Some error happened.
> > +
> > +**/
> > +EFI_STATUS
> > +RedfishCheckResourceCommon (
> > +  IN     REDFISH_RESOURCE_COMMON_PRIVATE  *Private,
> > +  IN     CHAR8                            *Json
> > +  );
> > +
> > +/**
> > +  Update resource to given URI.
> > +
> > +  @param[in]   This                Pointer to
> > REDFISH_RESOURCE_COMMON_PRIVATE instance.
> > +  @param[in]   Json                The JSON to consume.
> > +
> > +  @retval EFI_SUCCESS              Value is returned successfully.
> > +  @retval Others                   Some error happened.
> > +
> > +**/
> > +EFI_STATUS
> > +RedfishUpdateResourceCommon (
> > +  IN     REDFISH_RESOURCE_COMMON_PRIVATE  *Private,
> > +  IN     CHAR8                            *Json
> > +  );
> > +
> > +#endif
> > --
> > 2.17.1
> 
> 
> 
> 


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#104055): https://edk2.groups.io/g/devel/message/104055
Mute This Topic: https://groups.io/mt/98684696/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-




More information about the edk2-devel-archive mailing list