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 33CE7740041 for ; Fri, 22 Mar 2024 09:58:18 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=BDkz6EZsbB4Y6Fet3QFGDGn2HtCN+PbJ9BGc/9kqeTY=; 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=1711101497; v=1; b=B/3agtHJ7105FoZ3jm+rZc6Ai/9YqCP5erjjcHtPxliwxhuvN1k+3oP6i3GmTrjUKpSn/JQ8 dr1kk+5IVg0DOAkE7owbZ02x4nWSHPOKss+hi0114wjEI4/1cASnroiNHoqtAfLAt0rMjVT3OrI pbdEevEFwVELt2sLTpZc7+31XQyqJiUulQuujWatUGvMKiayqONIq6O99ow6UfGWpFEgqug/AJK NkDzP5W3cOtV3RjIk8UrVLT8++V187nO4L1mV7+g0QXknGIlptp1ZdpWWRilxqzQdjGd0Dw0PdB 1dutRPqE9BcvQfd14g4nMyxdSHjgGYukpKji6ckIGg5jA== X-Received: by 127.0.0.2 with SMTP id 9cyJYY7687511xfRDTY2anCr; Fri, 22 Mar 2024 02:58:17 -0700 X-Received: from NAM10-DM6-obe.outbound.protection.outlook.com (NAM10-DM6-obe.outbound.protection.outlook.com [40.107.93.72]) by mx.groups.io with SMTP id smtpd.web10.9124.1711101496935995379 for ; Fri, 22 Mar 2024 02:58:17 -0700 X-Received: from MN2PR08CA0002.namprd08.prod.outlook.com (2603:10b6:208:239::7) by PH8PR12MB7446.namprd12.prod.outlook.com (2603:10b6:510:216::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.29; Fri, 22 Mar 2024 09:58:14 +0000 X-Received: from BL02EPF0001A106.namprd05.prod.outlook.com (2603:10b6:208:239:cafe::ab) by MN2PR08CA0002.outlook.office365.com (2603:10b6:208:239::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.28 via Frontend Transport; Fri, 22 Mar 2024 09:58:13 +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 BL02EPF0001A106.mail.protection.outlook.com (10.167.241.139) 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 09:58:13 +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 04:58:11 -0500 From: "Chang, Abner via groups.io" To: CC: Igor Kulchytskyy , Nickle Wang Subject: [edk2-devel] [edk2-redfish-client][PATCH V4 1/2] RedfishClientPkg: Set SettingsObject URI as the config language Date: Fri, 22 Mar 2024 17:57:43 +0800 Message-ID: <20240322095744.1816-1-abner.chang@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF0001A106:EE_|PH8PR12MB7446:EE_ X-MS-Office365-Filtering-Correlation-Id: e929fb26-2ce4-496d-ba46-08dc4a5696d4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Message-Info: wudUv1Cwr1UJtozNoft/aMZQs650+Pd5vOrKBR8L2XXIfvgSKpjMs6naO7nhKLNYqx9QYqEXdoAtA3I0u8kKndzDHx7SVmbzygCHqh1DvaMO5UFxJXIKf4T9PO8wQ9ieHdkg4rH6yksdr3rxi3qYoSr5/RyQ7/PDTgibmWyGczFW08acUz4Zhp6I7vM3E0BBulO2u30ZW+H+JN4qpLSTJk0+qzXU5ENI0qGXso+0S4MahUS3AWdjfDtI32F5RuHC1dZe5EsBHtKgDg6EdJqN5Z9RPxjxDGPX+5JzBaPowtyVPnBxah+LdN6pf6xKLtiYmVP+kCsu+YyaIUIjBwn6sZ6l/QRTWajAUsbqsbmZTHVQyLXGwGIbdryeM3fzrpbtVBcFdtZC0BoYkBcnUYkKP7T2qpSO6YAFMYTwdoUpOPKtP+cLKAh7+wi9rzNn/RaVLMclrWX/iII8N8MovAxC8lxkX+uEfO7kgV4UgvP04NEVSBamZtP1PmQApt7hwjQMvNn6m1revchCMJw/qfQ6xBC2iqEdgWY5kKcO+Rt3s/AodTwg6Lo1799UqUWG7lLT9gnjSKdinzy39qHzPMIaGvUitDigIYiaA6t5nqaRlegOPBz5ST+Et3B8vT3adHaYC+4mcWwPsy7dJZwydwVkAG2DGlHbHHoKYZZRixaH2RXkHuUxCvQrk4VT4Qv1tjSB5zxSWcyMJV2CgX5KWE52SCQ33ajKOCE/dIlaQKZoPt3KKM6885DeMlGb0+BjETsT X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2024 09:58:13.7465 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e929fb26-2ce4-496d-ba46-08dc4a5696d4 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: BL02EPF0001A106.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR12MB7446 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 02:58:17 -0700 Reply-To: devel@edk2.groups.io,abner.chang@amd.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: qSXA9ugyOLJe8RIMXRwIcUV5x7686176AA= 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="B/3agtHJ"; 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 | 87 ++++++++++++++++--- .../RedfishConfigLangMapDxe.c | 15 +++- 3 files changed, 102 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..02dee89b36 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,62 @@ 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. + // + 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)); + return EFI_NOT_FOUND; + } + + // Set the config language of settings URI using parent's URI config l= anguage. + Status =3D RedfishSetRedfishUri (ConfigLang, SettingObjectUri); + if (EFI_ERROR (Status)) { + FreePool (ConfigLang); + DEBUG ((DEBUG_ERROR, "%a: Fails to set the config language of Settin= gsObject - %s.\n", __func__, SettingObjectUri)); + return Status; + } + + DEBUG ((DEBUG_INFO, "%a: Set the config language of SettingsObject - %= s: SUCCESS.\n", __func__, SettingObjectUri)); + } + + return EFI_SUCCESS; +} + /** =20 Get @odata.id from give HTTP payload. It's call responsibility to releas= e returned buffer. @@ -3532,6 +3575,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 +3596,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 +3631,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 (#117042): https://edk2.groups.io/g/devel/message/117042 Mute This Topic: https://groups.io/mt/105082315/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-