From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id E2691740057 for ; Fri, 22 Mar 2024 14:41:59 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=nPimmCeJYBMwCArPgQVbnREAfw2TzTb+UyyDELrhQ9g=; c=relaxed/simple; d=groups.io; h=Received-SPF:From:To:CC:Subject:Date:Message-ID:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Resent-Date:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding:Content-Type; s=20240206; t=1711118518; v=1; b=07DSvzAMh9yFcWlspZRNqbXgmhZMoFPwSElEswjM0op41gKSNDfZN0OK/PRiXuux73Io2UOY F+xyw2lC89DFnBTxviSTvd2JbMIHLeYNyG1QpFA0tQ47SvzNSoxxCI+pn7mI4I1JEm5kM2gcGAI Yw8UbywuAM0lJm1ZF/X0NBCwH46PzjILYD2sN/Ss3mtEbh6jvYqSTpsq0zsIqPl9l2ppmoKYLXY XXECIl8y3PnImSuXK6m2u8zIw+zKVM8YVrfoke5MMnE4JrMp56eDrcbMF5z3/RVr/YQg+xgt5N6 EqoOUr3D4AOww2yaPPM1HNv9T3mrTwHgZX/tjvX615mvg== X-Received: by 127.0.0.2 with SMTP id ZtXzYY7687511xsZywsIT5jl; Fri, 22 Mar 2024 07:41:58 -0700 X-Received: from NAM04-BN8-obe.outbound.protection.outlook.com (NAM04-BN8-obe.outbound.protection.outlook.com [40.107.100.56]) by mx.groups.io with SMTP id smtpd.web10.14918.1711118517655937182 for ; Fri, 22 Mar 2024 07:41:57 -0700 X-Received: from BL1PR13CA0199.namprd13.prod.outlook.com (2603:10b6:208:2be::24) by IA1PR12MB7686.namprd12.prod.outlook.com (2603:10b6:208:422::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.24; Fri, 22 Mar 2024 14:41:55 +0000 X-Received: from BL6PEPF0001AB52.namprd02.prod.outlook.com (2603:10b6:208:2be:cafe::1b) by BL1PR13CA0199.outlook.office365.com (2603:10b6:208:2be::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.13 via Frontend Transport; Fri, 22 Mar 2024 14:41:55 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C X-Received: from SATLEXMB04.amd.com (165.204.84.17) by BL6PEPF0001AB52.mail.protection.outlook.com (10.167.241.4) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7409.10 via Frontend Transport; Fri, 22 Mar 2024 14:41:55 +0000 X-Received: from TPE-L1-ABNCHANG.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Fri, 22 Mar 2024 09:41:52 -0500 From: "Chang, Abner via groups.io" To: CC: Igor Kulchytskyy , Nickle Wang Subject: [edk2-devel] [edk2-redfish-client][PATCH V5 1/2] RedfishClientPkg: Set SettingsObject URI as the config language Date: Fri, 22 Mar 2024 22:41:23 +0800 Message-ID: <20240322144124.1671-1-abner.chang@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB52:EE_|IA1PR12MB7686:EE_ X-MS-Office365-Filtering-Correlation-Id: ffeb6299-23d1-4358-25b4-08dc4a7e386a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Message-Info: Zj7Zj2NzeVc2VE3z8I/IFMZyRi9QjgHqooyBeBQiOgolOAsX9K3COc2J0dvb4BtsWGyX8cLLNL6T/cL8YFUBaN0ugNb7DY+FYziB5G0TDH27C36DFCpycUXqDxr+CUhg3+E+b6j7j8ZyO9AXlmGjPxrZ1ZwchrxazzJXE3JuUYOYhSspgX5fW7lAr0OfkVDPz6qGqmsbQVTL+0MvlxttLHUBWmw8yQRJxf5+xTTPj5R9KfA5WN8ShlV/eTCdiUvsdM4n6UK0v9NiX/nW3s4PKdeX8H3TqCX4MkXWw2wnqyF7IsIdmgrl1jUB/GgGMG/8PDoeKDnoCGbRjpgkrC291zXEpAGfSHVttW9jOAR4UEXKzn37Oo9uy3kpJR1q2ro1X3PLdrRELBgIwHQAx1y1PE0w5rXEgGMwufNMkNf1ot/sA82KACSF2945Xin2u6l0BYICnUu3ktbS6DNzpXHPcI1znX2sKKpw+coX0PKwDKeAS07cPeCliGt822N3z7gxHqdGRURcOZMCc7MJZMDf3vMjMIKI5UZ8e60h+MpGL4KKgWP0uBzpl/ECXgj4WrLp4/mx7Sbd0zY+mzKwOd2RpjodlJqR0dT6G1n64/trfBV0Gm5eS7bJlXw8awkmCKqkG2eVQ3WicGhvUvNzBsRJVJ14Ctdf8Z6kMhK3frzmb0EBfEsP4YPYnINnt96tvY/vHiD/VqYv0aRMj8VyqgKGJSrMA0IK3OWy8fKNNbovHxjzpStJDHRil/Aqo0QJQQmx X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2024 14:41:55.0864 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ffeb6299-23d1-4358-25b4-08dc4a7e386a X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB52.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB7686 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Resent-Date: Fri, 22 Mar 2024 07:41:57 -0700 Reply-To: devel@edk2.groups.io,abner.chang@amd.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: txthO13alpjUyPWBZPwWn4tOx7686176AA= Content-Transfer-Encoding: quoted-printable Content-Type: text/plain X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20240206 header.b=07DSvzAM; dmarc=pass (policy=none) header.from=groups.io; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io From: Abner Chang Set SettingsObject URI in @Redfish.Settings resource as the config language which is the same as the config language of parent URI that mandates @Redfish.Settings. With this, we can find the config language of the properties in SettingsObject URI. Signed-off-by: Abner Chang Cc: Igor Kulchytskyy Co-authored-by: Nickle Wang --- .../Library/RedfishFeatureUtilityLib.h | 17 ++++ .../RedfishFeatureUtilityLib.c | 89 ++++++++++++++++--- .../RedfishConfigLangMapDxe.c | 15 +++- 3 files changed, 104 insertions(+), 17 deletions(-) diff --git a/RedfishClientPkg/Include/Library/RedfishFeatureUtilityLib.h b/= RedfishClientPkg/Include/Library/RedfishFeatureUtilityLib.h index ba9ea01501..3c5f248eb7 100644 --- a/RedfishClientPkg/Include/Library/RedfishFeatureUtilityLib.h +++ b/RedfishClientPkg/Include/Library/RedfishFeatureUtilityLib.h @@ -369,6 +369,23 @@ RedfishSetRedfishUri ( IN EFI_STRING Uri ); =20 +/** + + Save Redfish SettingsObject URI in database for further use. + + @param[in] ParentUri Parent URI of @Redfish.Settings property= . + @param[in] SettingObjectUri Redfish SettingsObject Uri to save. + + @retval EFI_INVALID_PARAMETER SystemId is NULL or EMPTY + @retval EFI_SUCCESS Redfish uri is saved + +**/ +EFI_STATUS +SetRedfishSettingsObjectsUri ( + IN EFI_STRING ParentUri, + IN EFI_STRING SettingObjectUri + ); + /** =20 Get the property name by given Configure Language. diff --git a/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatu= reUtilityLib.c b/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishF= eatureUtilityLib.c index cc2b37b796..dda80c4608 100644 --- a/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtili= tyLib.c +++ b/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtili= tyLib.c @@ -2082,7 +2082,6 @@ GetConfigureLang ( EFI_STRING ResultStr; EFI_STRING UnicodeUri; EFI_STATUS Status; - EFI_STRING StrFound; =20 if (IS_EMPTY_STRING (Uri)) { return NULL; @@ -2101,18 +2100,6 @@ GetConfigureLang ( } =20 ConfigLang =3D RedfishGetConfigLanguage (UnicodeUri); - if (ConfigLang =3D=3D NULL) { - // - // @Redfish.Settings share the same schema as its parent. - // Remove "Settings" and try again. - // - StrFound =3D StrStr (UnicodeUri, L"/Settings"); - if (StrFound !=3D NULL) { - StrFound[0] =3D L'\0'; - DEBUG ((REDFISH_DEBUG_TRACE, "%a: \"Settings\" found in URI, try: %s= \n", __func__, UnicodeUri)); - ConfigLang =3D RedfishGetConfigLanguage (UnicodeUri); - } - } =20 FreePool (UnicodeUri); =20 @@ -2172,6 +2159,64 @@ RedfishSetRedfishUri ( return mConfigLangMapProtocol->Set (mConfigLangMapProtocol, ConfigLang, = Uri); } =20 +/** + + Save Redfish SettingsObject URI in database for further use. + + @param[in] ParentUri Parent URI of @Redfish.Settings property= . + @param[in] SettingObjectUri Redfish SettingsObject Uri to save. + + @retval EFI_INVALID_PARAMETER ParentUri or SettingObjectUri is NULL. + @retval EFI_NOT_FOUND Config language for ParentUri is not fou= nd. + @retval EFI_SUCCESS Redfish URI is saved with corresponding + config language. + +**/ +EFI_STATUS +SetRedfishSettingsObjectsUri ( + IN EFI_STRING ParentUri, + IN EFI_STRING SettingObjectUri + ) +{ + EFI_STATUS Status; + EFI_STRING ConfigLang; + + if ((ParentUri =3D=3D NULL) || (SettingObjectUri =3D=3D NULL)) { + return EFI_INVALID_PARAMETER; + } + + // + // Check if the SettingsObject URI already in the database. + // + Status =3D EFI_SUCCESS; + ConfigLang =3D RedfishGetConfigLanguage (SettingObjectUri); + if (ConfigLang =3D=3D NULL) { + // + // No config language of SettingsObject URI is found. + // Get the config language of parent URI because the data model of + // SettingsObject URI resource is the same as the data model of parent= URI. + // + ConfigLang =3D RedfishGetConfigLanguage (ParentUri); + if (ConfigLang =3D=3D NULL) { + DEBUG ((DEBUG_ERROR, "%a: Failed to get the config language of paren= t URI that mandates SettingsObject - %s.\n", __func__, ParentUri)); + Status =3D EFI_NOT_FOUND; + } else { + + // Set the config language of settings URI using parent's URI config= language. + Status =3D RedfishSetRedfishUri (ConfigLang, SettingObjectUri); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a: Fails to set the config language of Sett= ingsObject - %s.\n", __func__, SettingObjectUri)); + } else { + DEBUG ((DEBUG_INFO, "%a: Set the config language of SettingsObject= - %s: SUCCESS.\n", __func__, SettingObjectUri)); + } + FreePool (ConfigLang); // Free the ConfigLang of parent URI. + } + } else { + FreePool (ConfigLang); // Free the ConfigLang of SettingObject URI. + } + return Status; +} + /** =20 Get @odata.id from give HTTP payload. It's call responsibility to releas= e returned buffer. @@ -3532,6 +3577,7 @@ CompareRedfishBooleanArrayValues ( payload and URI to pending settings. Caller has to release "SettingPaylo= ad" and "SettingUri". =20 + @param[in] RedfishService Instance of REDFISH_SERVICE @param[in] Payload Payload that may contain "@Redfish.Settings" @param[out] SettingPayload Payload keeps pending settings. @param[out] SettingUri URI to pending settings. @@ -3552,6 +3598,7 @@ GetPendingSettings ( EDKII_JSON_VALUE JsonValue; UINTN Index; EFI_STATUS Status; + EFI_STRING StrFound; =20 if ((RedfishService =3D=3D NULL) || (Payload =3D=3D NULL) || (SettingRes= ponse =3D=3D NULL) || (SettingUri =3D=3D NULL)) { return EFI_INVALID_PARAMETER; @@ -3586,6 +3633,22 @@ GetPendingSettings ( return Status; } =20 + // + // Setting URI exists, check if settings URI is valid or not. + // + StrFound =3D StrStr (*SettingUri, L"/Settings"); + if (StrFound !=3D NULL) { + DEBUG ((REDFISH_DEBUG_TRACE, "%a: \"Settings\" found in URI: %s\n", = __func__, *SettingUri)); + } else { + StrFound =3D StrStr (*SettingUri, L"/SD"); + if (StrFound !=3D NULL) { + DEBUG ((REDFISH_DEBUG_TRACE, "%a: \"SD\" found in URI: %s\n", __fu= nc__, *SettingUri)); + } else { + DEBUG ((DEBUG_ERROR, "%a: Not an valid @redfish.settings URI\n", _= _func__, *SettingUri)); + ASSERT (FALSE); + } + } + return EFI_SUCCESS; } =20 diff --git a/RedfishClientPkg/RedfishConfigLangMapDxe/RedfishConfigLangMapD= xe.c b/RedfishClientPkg/RedfishConfigLangMapDxe/RedfishConfigLangMapDxe.c index 8c93044580..4071e30c17 100644 --- a/RedfishClientPkg/RedfishConfigLangMapDxe/RedfishConfigLangMapDxe.c +++ b/RedfishClientPkg/RedfishConfigLangMapDxe/RedfishConfigLangMapDxe.c @@ -2,6 +2,7 @@ =20 (C) Copyright 2022 Hewlett Packard Enterprise Development LP
Copyright (c) 2022-2023, NVIDIA CORPORATION & AFFILIATES. All rights res= erved. + Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved.
=20 SPDX-License-Identifier: BSD-2-Clause-Patent =20 @@ -606,10 +607,16 @@ RedfishConfigLangMapSet ( Status =3D EFI_NOT_FOUND; Target =3D FindConfigLangMapRecord (&Private->ConfigLangList.ListHeader,= ConfigLang, FALSE); if (Target !=3D NULL) { - // - // Remove old one and create new one. - // - Status =3D DeleteConfigLangMapRecord (&Private->ConfigLangList, Target= ); + if (Uri !=3D NULL) { + if (StrCmp (Uri, Target->Uri) =3D=3D 0) { + return EFI_SUCCESS; + } + } else { + // + // Remove old one and create new one. + // + Status =3D DeleteConfigLangMapRecord (&Private->ConfigLangList, Targ= et); + } } =20 // --=20 2.37.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 (#117052): https://edk2.groups.io/g/devel/message/117052 Mute This Topic: https://groups.io/mt/105086466/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-