From nobody Fri Apr 26 00:58:10 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+81868+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+81868+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=hpe.com ARC-Seal: i=1; a=rsa-sha256; t=1634113932; cv=none; d=zohomail.com; s=zohoarc; b=b5LTei6Qbt4iNoN1ArM0w4nLMtlgl7M5dFQwPV9aQdlesVjXWSc2XcVDvNb8c0t9xrTZaBWi0qV2A+J+SYx21KrJ0lCxtX2857s4e3jkE1gOpp1Z90my4GEly0laxtoTdIpxn9bhU/kKou4KE91w8LQRIVt+EGlpAylItD3892M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1634113932; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=bDDYl2qJLkNzCMJBj3hWCR1IA1DTIMupxXu9INHoqp4=; b=QqroXnZ76/38zRSYMhDJ8fMzBPOGJCLM3ZEoq4TRKykBwjPN3yGsZaUefvjts/Acfb+GO54b5OiXwBcVKlbeoxg7Rw+idyWyX/Fenp8WZ5csxH7D1z84PGT2DVW8tY06VjRLx6+o+7xNVdaWidd2XbFoj+YoU2SKbbsvL2qyGlg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+81868+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1634113932378615.570990356222; Wed, 13 Oct 2021 01:32:12 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id tzDsYY1788612xW2FAJ1BGcx; Wed, 13 Oct 2021 01:32:11 -0700 X-Received: from mx0a-002e3701.pphosted.com (mx0a-002e3701.pphosted.com [148.163.147.86]) by mx.groups.io with SMTP id smtpd.web10.5361.1634113919242010535 for ; Wed, 13 Oct 2021 01:32:11 -0700 X-Received: from pps.filterd (m0150241.ppops.net [127.0.0.1]) by mx0a-002e3701.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 19CMcSmx001092; Wed, 13 Oct 2021 08:31:54 GMT X-Received: from g4t3427.houston.hpe.com (g4t3427.houston.hpe.com [15.241.140.73]) by mx0a-002e3701.pphosted.com with ESMTP id 3bnkb0khny-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 13 Oct 2021 08:31:54 +0000 X-Received: from g4t3433.houston.hpecorp.net (g4t3433.houston.hpecorp.net [16.208.49.245]) by g4t3427.houston.hpe.com (Postfix) with ESMTP id 9D7AA7B; Wed, 13 Oct 2021 08:31:53 +0000 (UTC) X-Received: from WVE00YQZQF.asiapacific.hpqcorp.net (unknown [16.168.161.152]) by g4t3433.houston.hpecorp.net (Postfix) with ESMTP id 5510F4B; Wed, 13 Oct 2021 08:31:50 +0000 (UTC) From: "Nickle Wang" To: devel@edk2.groups.io Cc: Nickle Wang , Abner Chang , Liming Gao Subject: [edk2-devel] [PATCH 1/1] RedfishClientPkg: Facilities of EDK2 Redfish Feature driver Env. Date: Wed, 13 Oct 2021 16:31:05 +0800 Message-Id: <20211013083105.1993-2-nickle.wang@hpe.com> In-Reply-To: <20211013083105.1993-1-nickle.wang@hpe.com> References: <20211013083105.1993-1-nickle.wang@hpe.com> MIME-Version: 1.0 X-Proofpoint-GUID: G9uA6LpwdBgZ4SYf2Y-JKtMl6r6l1wRt X-Proofpoint-ORIG-GUID: G9uA6LpwdBgZ4SYf2Y-JKtMl6r6l1wRt X-HPE-SCL: -1 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,nickle.wang@hpe.com X-Gm-Message-State: fV0XgzNzQdSMmX11q1EEeEwXx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1634113931; bh=3ru4pGTf922+T5vZ0BFLctWVUA6eDGHShuyF+M45tqk=; h=Cc:Date:From:Reply-To:Subject:To; b=kMyXXwLT9FI1b8ZKfTn1rGLlcMU1G4H0tZ5ZJUwLgN+K7LKK2cm04A1BGmwX9LA37Vg mun1xLX5HxoYfcCIvuYA0nPE6zl7n8ctlarTJ5ZCq6XuwNjbkjDHvzCPlpD/lIXVlIwk7 qcHTwsgdnrKL2UV/BiqxJzWioqIozCKoG5w= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1634113934328100001 Content-Type: text/plain; charset="utf-8" Initial common header file and meta files for feature drivers. Signed-off-by: Nickle Wang Cc: Abner Chang Cc: Liming Gao Reviewed-by: Abner Chang --- .../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/RedfishClientPkgTokenSpac= e.h create mode 100644 RedfishClientPkg/Include/Protocol/EdkIIRedfishResourceC= onfigProtocol.h create mode 100644 RedfishClientPkg/Include/RedfishCollectionCommon.h create mode 100644 RedfishClientPkg/Include/RedfishResourceCommon.h diff --git a/RedfishClientPkg/Include/Guid/RedfishClientPkgTokenSpace.h b/R= edfishClientPkg/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
+ + 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/EdkIIRedfishResourceConfigPr= otocol.h b/RedfishClientPkg/Include/Protocol/EdkIIRedfishResourceConfigProt= ocol.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
+ + 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_RESOU= RCE_CONFIG_PROTOCOL; + +/** + Provising redfish resource by given URI. + + @param[in] This Pointer to EDKII_REDFISH_RESOURCE_CONFI= G_PROTOCOL instance. + @param[in] Uri Target URI to create resource. + @param[in] HttpPostMode TRUE if resource does not exist, HTTP P= OST 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_CONFI= G_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_CONFI= G_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_CONFI= G_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 (PcdMaxRedfishSchemaStr= ingSize)) +#define REDFISH_SCHEMA_VERSION_SIZE (FixedPcdGet32 (PcdMaxRedfishSchemaVer= sionSize)) + +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_CONFI= G_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/RedfishCl= ientPkg/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
+ + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef EFI_REDFISH_COLLECTION_COMMON_H_ +#define EFI_REDFISH_COLLECTION_COMMON_H_ + +// +// Libraries +// +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// +// Protocols +// +#include +#include +#include +#include +#include + +#define IS_EMPTY_STRING(a) ((a) =3D=3D NULL || (a)[0] =3D=3D = '\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/RedfishClie= ntPkg/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
+ + 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) =3D=3D NULL || (a)[0] =3D=3D '\0') +#define REDFISH_DEBUG_TRACE DEBUG_INFO + +// +// Libraries +// +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// +// Protocols +// +#include +#include +#include +#include + + +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, RedfishResourc= eConfig) + + +/** + Consume resource from given URI. + + @param[in] This Pointer to REDFISH_RESOURCE_COMMON_PRIV= ATE 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 wil= l be used. + FALSE if resource does not exist POST m= ethod 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_PRIV= ATE 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_PRIV= ATE 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/Redfi= shClientPkg.dec index 8fa92d5b1e..f01509d78f 100644 --- a/RedfishClientPkg/RedfishClientPkg.dec +++ b/RedfishClientPkg/RedfishClientPkg.dec @@ -21,9 +21,12 @@ =20 [Protocols] ## Include/Protocol/EdkIIRedfishFeature.h - gEdkIIRedfishFeatureProtocolGuid =3D { 0x785CC694, 0x4930, 0xEFBF, { 0x2= A, 0xCB, 0xA4, 0xB6, 0xA1, 0xCC, 0xAA, 0x34 } } + gEdkIIRedfishFeatureProtocolGuid =3D { 0x785CC694, 0x4930, 0xEFBF= , { 0x2A, 0xCB, 0xA4, 0xB6, 0xA1, 0xCC, 0xAA, 0x34 } } + ## Include/Protocol/EdkIIRedfishResourceConfigProtocol.h + gEdkIIRedfishResourceConfigProtocolGuid =3D { 0x6f164c68, 0xfb09, 0x4646= , { 0xa8, 0xd3, 0x24, 0x11, 0x5d, 0xab, 0x3e, 0xe7 } } =20 [Guids] + ## Include/Guid/RedfishClientPkgTokenSpace.h gEfiRedfishClientPkgTokenSpaceGuid =3D { 0x8c444dae, 0x728b, 0x48ee, = { 0x9e, 0x19, 0x8f, 0x0a, 0x3d, 0x4e, 0x9c, 0xc8 } } =20 [PcdsFixedAtBuild] @@ -35,3 +38,6 @@ # gEfiRedfishClientPkgTokenSpaceGuid.PcdEdkIIRedfishFeatureDriverStartupEv= entGuid|{0xB3, 0x8F, 0xE8, 0x7C, 0xD7, 0x4B, 0x79, 0x46, 0x87, 0xA8, 0xA8, = 0xD8, 0xDE, 0xE5, 0x0D, 0x2B}|VOID*|0x10000003 =20 +[PcdsFixedAtBuild] + gEfiRedfishClientPkgTokenSpaceGuid.PcdMaxRedfishSchemaStringSize|32|UINT= 32|0x10000001 + gEfiRedfishClientPkgTokenSpaceGuid.PcdMaxRedfishSchemaVersionSize|8|UINT= 32|0x10000002 --=20 2.31.1.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#81868): https://edk2.groups.io/g/devel/message/81868 Mute This Topic: https://groups.io/mt/86283310/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-