* [PATCH 0/1] RedfishClientPkg: Facilities of EDK2 Redfish Feature Driver @ 2021-10-13 8:31 Nickle Wang 2021-10-13 8:31 ` [PATCH 1/1] RedfishClientPkg: Facilities of EDK2 Redfish Feature driver Env Nickle Wang 0 siblings, 1 reply; 4+ messages in thread From: Nickle Wang @ 2021-10-13 8:31 UTC (permalink / raw) To: devel; +Cc: Nickle Wang, Abner Chang, Liming Gao This commit adds below protocol and common header files for Redfish feature drivers. - edk2 Redfish resource config protocol: this protocol is used by feature drivers for internal communication - Redfish collection and resource common header file: these two files are the common definition of Redfish client feature drivers. - Redfish client package token space: the GUID definition of Redfish client package token space. Signed-off-by: Nickle Wang <nickle.wang@hpe.com> Cc: Abner Chang <abner.chang@hpe.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Nickle Wang (1): RedfishClientPkg: Facilities of EDK2 Redfish Feature driver Env. .../Include/Guid/RedfishClientPkgTokenSpace.h | 20 +++ .../EdkIIRedfishResourceConfigProtocol.h | 129 ++++++++++++++++++ .../Include/RedfishCollectionCommon.h | 53 +++++++ .../Include/RedfishResourceCommon.h | 123 +++++++++++++++++ RedfishClientPkg/RedfishClientPkg.dec | 8 +- 5 files changed, 332 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 -- 2.31.1.windows.1 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/1] RedfishClientPkg: Facilities of EDK2 Redfish Feature driver Env. 2021-10-13 8:31 [PATCH 0/1] RedfishClientPkg: Facilities of EDK2 Redfish Feature Driver Nickle Wang @ 2021-10-13 8:31 ` Nickle Wang 2021-10-13 9:03 ` Abner Chang 0 siblings, 1 reply; 4+ messages in thread From: Nickle Wang @ 2021-10-13 8:31 UTC (permalink / raw) To: devel; +Cc: Nickle Wang, Abner Chang, Liming Gao Initial common header file and meta files for feature drivers. Signed-off-by: Nickle Wang <nickle.wang@hpe.com> Cc: Abner Chang <abner.chang@hpe.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> --- .../Include/Guid/RedfishClientPkgTokenSpace.h | 20 +++ .../EdkIIRedfishResourceConfigProtocol.h | 129 ++++++++++++++++++ .../Include/RedfishCollectionCommon.h | 53 +++++++ .../Include/RedfishResourceCommon.h | 123 +++++++++++++++++ RedfishClientPkg/RedfishClientPkg.dec | 8 +- 5 files changed, 332 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/Include/Guid/RedfishClientPkgTokenSpace.h b/RedfishClientPkg/Include/Guid/RedfishClientPkgTokenSpace.h new file mode 100644 index 0000000000..1cdf429da4 --- /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 0000000000..d6c41dda52 --- /dev/null +++ b/RedfishClientPkg/Include/Protocol/EdkIIRedfishResourceConfigProtocol.h @@ -0,0 +1,129 @@ +/** @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 0000000000..3962b361ed --- /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 0000000000..1ba992bb69 --- /dev/null +++ b/RedfishClientPkg/Include/RedfishResourceCommon.h @@ -0,0 +1,123 @@ +/** @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_PROTOCOL(This) \ + BASE_CR ((This), REDFISH_RESOURCE_COMMON_PRIVATE, ConfigHandler) + +#define REDFISH_RESOURCE_COMMON_PRIVATE_DATA_FROM_RESOURCE_PROTOCOL(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 diff --git a/RedfishClientPkg/RedfishClientPkg.dec b/RedfishClientPkg/RedfishClientPkg.dec index 8fa92d5b1e..f01509d78f 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] @@ -35,3 +38,6 @@ # gEfiRedfishClientPkgTokenSpaceGuid.PcdEdkIIRedfishFeatureDriverStartupEventGuid|{0xB3, 0x8F, 0xE8, 0x7C, 0xD7, 0x4B, 0x79, 0x46, 0x87, 0xA8, 0xA8, 0xD8, 0xDE, 0xE5, 0x0D, 0x2B}|VOID*|0x10000003 +[PcdsFixedAtBuild] + gEfiRedfishClientPkgTokenSpaceGuid.PcdMaxRedfishSchemaStringSize|32|UINT32|0x10000001 + gEfiRedfishClientPkgTokenSpaceGuid.PcdMaxRedfishSchemaVersionSize|8|UINT32|0x10000002 -- 2.31.1.windows.1 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 1/1] RedfishClientPkg: Facilities of EDK2 Redfish Feature driver Env. 2021-10-13 8:31 ` [PATCH 1/1] RedfishClientPkg: Facilities of EDK2 Redfish Feature driver Env Nickle Wang @ 2021-10-13 9:03 ` Abner Chang 2021-10-25 2:49 ` Nickle Wang 0 siblings, 1 reply; 4+ messages in thread From: Abner Chang @ 2021-10-13 9:03 UTC (permalink / raw) To: Wang, Nickle (HPS SW), devel@edk2.groups.io; +Cc: Liming Gao It's fine this time, but please add [staging/RedfishClientPkg] when next time send the patch against edk2-staging. Only one comment in below, others look good to me. Reviewed-by: Abner Chang <abner.chang@hpe.com> > -----Original Message----- > From: Wang, Nickle (HPS SW) > Sent: Wednesday, October 13, 2021 4:31 PM > To: devel@edk2.groups.io > Cc: Wang, Nickle (HPS SW) <nickle.wang@hpe.com>; Chang, Abner (HPS > SW/FW Technologist) <abner.chang@hpe.com>; Liming Gao > <gaoliming@byosoft.com.cn> > Subject: [PATCH 1/1] RedfishClientPkg: Facilities of EDK2 Redfish Feature > driver Env. > > Initial common header file and meta files for feature drivers. > > Signed-off-by: Nickle Wang <nickle.wang@hpe.com> > Cc: Abner Chang <abner.chang@hpe.com> > Cc: Liming Gao <gaoliming@byosoft.com.cn> > --- > .../Include/Guid/RedfishClientPkgTokenSpace.h | 20 +++ > .../EdkIIRedfishResourceConfigProtocol.h | 129 ++++++++++++++++++ > .../Include/RedfishCollectionCommon.h | 53 +++++++ > .../Include/RedfishResourceCommon.h | 123 +++++++++++++++++ > RedfishClientPkg/RedfishClientPkg.dec | 8 +- > 5 files changed, 332 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/Include/Guid/RedfishClientPkgTokenSpace.h > b/RedfishClientPkg/Include/Guid/RedfishClientPkgTokenSpace.h > new file mode 100644 > index 0000000000..1cdf429da4 > --- /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_ Please remove the prefix "_" Abner > > + > > +#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 0000000000..d6c41dda52 > --- /dev/null > +++ > b/RedfishClientPkg/Include/Protocol/EdkIIRedfishResourceConfigProtocol.h > @@ -0,0 +1,129 @@ > +/** @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 0000000000..3962b361ed > --- /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 0000000000..1ba992bb69 > --- /dev/null > +++ b/RedfishClientPkg/Include/RedfishResourceCommon.h > @@ -0,0 +1,123 @@ > +/** @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 > > diff --git a/RedfishClientPkg/RedfishClientPkg.dec > b/RedfishClientPkg/RedfishClientPkg.dec > index 8fa92d5b1e..f01509d78f 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] > > @@ -35,3 +38,6 @@ > # > > > gEfiRedfishClientPkgTokenSpaceGuid.PcdEdkIIRedfishFeatureDriverStartupE > ventGuid|{0xB3, 0x8F, 0xE8, 0x7C, 0xD7, 0x4B, 0x79, 0x46, 0x87, 0xA8, 0xA8, > 0xD8, 0xDE, 0xE5, 0x0D, 0x2B}|VOID*|0x10000003 > > > > +[PcdsFixedAtBuild] > > + > gEfiRedfishClientPkgTokenSpaceGuid.PcdMaxRedfishSchemaStringSize|32| > UINT32|0x10000001 > > + > gEfiRedfishClientPkgTokenSpaceGuid.PcdMaxRedfishSchemaVersionSize|8| > UINT32|0x10000002 > > -- > 2.31.1.windows.1 ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 1/1] RedfishClientPkg: Facilities of EDK2 Redfish Feature driver Env. 2021-10-13 9:03 ` Abner Chang @ 2021-10-25 2:49 ` Nickle Wang 0 siblings, 0 replies; 4+ messages in thread From: Nickle Wang @ 2021-10-25 2:49 UTC (permalink / raw) To: Chang, Abner (HPS SW/FW Technologist), devel@edk2.groups.io; +Cc: Liming Gao Thanks Abner. V2 patch is sent to fix this issue. Nickle -----Original Message----- From: Chang, Abner (HPS SW/FW Technologist) <abner.chang@hpe.com> Sent: Wednesday, October 13, 2021 5:03 PM To: Wang, Nickle (HPS SW) <nickle.wang@hpe.com>; devel@edk2.groups.io Cc: Liming Gao <gaoliming@byosoft.com.cn> Subject: RE: [PATCH 1/1] RedfishClientPkg: Facilities of EDK2 Redfish Feature driver Env. It's fine this time, but please add [staging/RedfishClientPkg] when next time send the patch against edk2-staging. Only one comment in below, others look good to me. Reviewed-by: Abner Chang <abner.chang@hpe.com> > -----Original Message----- > From: Wang, Nickle (HPS SW) > Sent: Wednesday, October 13, 2021 4:31 PM > To: devel@edk2.groups.io > Cc: Wang, Nickle (HPS SW) <nickle.wang@hpe.com>; Chang, Abner (HPS > SW/FW Technologist) <abner.chang@hpe.com>; Liming Gao > <gaoliming@byosoft.com.cn> > Subject: [PATCH 1/1] RedfishClientPkg: Facilities of EDK2 Redfish > Feature driver Env. > > Initial common header file and meta files for feature drivers. > > Signed-off-by: Nickle Wang <nickle.wang@hpe.com> > Cc: Abner Chang <abner.chang@hpe.com> > Cc: Liming Gao <gaoliming@byosoft.com.cn> > --- > .../Include/Guid/RedfishClientPkgTokenSpace.h | 20 +++ > .../EdkIIRedfishResourceConfigProtocol.h | 129 ++++++++++++++++++ > .../Include/RedfishCollectionCommon.h | 53 +++++++ > .../Include/RedfishResourceCommon.h | 123 +++++++++++++++++ > RedfishClientPkg/RedfishClientPkg.dec | 8 +- > 5 files changed, 332 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/Include/Guid/RedfishClientPkgTokenSpace.h > b/RedfishClientPkg/Include/Guid/RedfishClientPkgTokenSpace.h > new file mode 100644 > index 0000000000..1cdf429da4 > --- /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_ Please remove the prefix "_" Abner > > + > > +#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 0000000000..d6c41dda52 > --- /dev/null > +++ > b/RedfishClientPkg/Include/Protocol/EdkIIRedfishResourceConfigProtocol > .h > @@ -0,0 +1,129 @@ > +/** @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 0000000000..3962b361ed > --- /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 0000000000..1ba992bb69 > --- /dev/null > +++ b/RedfishClientPkg/Include/RedfishResourceCommon.h > @@ -0,0 +1,123 @@ > +/** @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 > > diff --git a/RedfishClientPkg/RedfishClientPkg.dec > b/RedfishClientPkg/RedfishClientPkg.dec > index 8fa92d5b1e..f01509d78f 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] > > @@ -35,3 +38,6 @@ > # > > > gEfiRedfishClientPkgTokenSpaceGuid.PcdEdkIIRedfishFeatureDriverStartup > E > ventGuid|{0xB3, 0x8F, 0xE8, 0x7C, 0xD7, 0x4B, 0x79, 0x46, 0x87, 0xA8, > ventGuid|0xA8, > 0xD8, 0xDE, 0xE5, 0x0D, 0x2B}|VOID*|0x10000003 > > > > +[PcdsFixedAtBuild] > > + > gEfiRedfishClientPkgTokenSpaceGuid.PcdMaxRedfishSchemaStringSize|32| > UINT32|0x10000001 > > + > gEfiRedfishClientPkgTokenSpaceGuid.PcdMaxRedfishSchemaVersionSize|8| > UINT32|0x10000002 > > -- > 2.31.1.windows.1 ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-10-25 2:49 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-10-13 8:31 [PATCH 0/1] RedfishClientPkg: Facilities of EDK2 Redfish Feature Driver Nickle Wang 2021-10-13 8:31 ` [PATCH 1/1] RedfishClientPkg: Facilities of EDK2 Redfish Feature driver Env Nickle Wang 2021-10-13 9:03 ` Abner Chang 2021-10-25 2:49 ` Nickle Wang
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox