From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (NAM10-BN7-obe.outbound.protection.outlook.com [40.107.92.79]) by mx.groups.io with SMTP id smtpd.web11.25213.1683612404410177109 for ; Mon, 08 May 2023 23:06:44 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@amd.com header.s=selector1 header.b=sAdrjR4E; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: amd.com, ip: 40.107.92.79, mailfrom: abner.chang@amd.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DrAEAatUogY0qtxEe9ByJ09VydrGbqHzDDNZEekSWCnEeLwkzqJ/m5SzqER1KHaxP+IpP+wR9UARaaX0dA42nWL3jq8+OMs9Jj3+nmbYNf1nEsE/X5WqftwW0gjGWfMwZrH12ZL3Gq+inzzOkC2EmNU14u+QG9lB+9TkvtGznOOv0dWQNO/uOqRaX1uxrs6VhhYZ73qEMI/2n0D7YP6jERguwKWayvN2nplayJ5XNt77hYJQkcBxKVfShhvglvxK1MKp04EHI+76WkoDqdRO3oUvqpWaJO+uz4mjItmaFoud3kFyfHAGcvcH4hrVUeUp8uG7sOISZx34wYFPGWy8jA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=xv1UNK5PvLm2QnL5AgAy6tcv/FmKsX/IacA2DMrd6vA=; b=UvMTUXgR3nOtaoAJiv6Tex+HmRYO2EEmsyBWyolBOFv5ML3xqP/bwI5XzwVRmjowm5tTMZJbZRrINfzciy1TZ72eNHq66Axtu5ua/lUXjeKfLSHCZpUKBpfeWyR6FDzgL7KCJZt0r3iBDqXGuexB5bqHNY+AuvOQZoHmByq3ENzG1qVxk/9eohM86o46UCN96FeL/Qxw+Q5BeZPiujH1u5ILma1iXeIfK7RF6KFQ5AT+LVCFcU+tnYhM3fXbii2vZzdj23kSa+1KqXVDMf+OWepk1usoh2RxZqmBrseS7G2P8KUFI7+oJ8XwE1wo2G4MgKWNp9E7uIECMUoKKhO0EQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xv1UNK5PvLm2QnL5AgAy6tcv/FmKsX/IacA2DMrd6vA=; b=sAdrjR4EO57FTh2/aXJUmuT3Q1r7BccxRWkrt/iOIrudN/IfMd0TXV3amRh2B6O9ZmSxL2b3f5kXerGCBtkZ2hXKWG/BZpw2KvQp3Ya/XF36U5u4uSBN3nJ1XOEUf3VxM+miAtusbeO8J+7sKWTbdNvmQkXI80yXtqCPL+rU5yg= Received: from MN2PR12MB3966.namprd12.prod.outlook.com (2603:10b6:208:165::18) by BN9PR12MB5065.namprd12.prod.outlook.com (2603:10b6:408:132::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6363.33; Tue, 9 May 2023 06:06:42 +0000 Received: from MN2PR12MB3966.namprd12.prod.outlook.com ([fe80::46f1:bdce:a4bc:29e3]) by MN2PR12MB3966.namprd12.prod.outlook.com ([fe80::46f1:bdce:a4bc:29e3%3]) with mapi id 15.20.6363.032; Tue, 9 May 2023 06:06:42 +0000 From: "Chang, Abner" To: Nickle Wang , "devel@edk2.groups.io" CC: Igor Kulchytskyy Subject: Re: [edk2-redfish-client][PATCH 4/6] Tool/Redfish-Profile-Simulator: Add ETag support Thread-Topic: [edk2-redfish-client][PATCH 4/6] Tool/Redfish-Profile-Simulator: Add ETag support Thread-Index: AQHZgbyrAmQajm7zw0SHfPMgSnBWj69RdVzg Date: Tue, 9 May 2023 06:06:42 +0000 Message-ID: References: <20230508145155.16858-1-nicklew@nvidia.com> In-Reply-To: <20230508145155.16858-1-nicklew@nvidia.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Enabled=true; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SetDate=2023-05-09T06:06:40Z; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Method=Standard; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Name=General; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ActionId=46855a78-bdeb-4ded-8a86-77910fb248bb; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ContentBits=1 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN2PR12MB3966:EE_|BN9PR12MB5065:EE_ x-ms-office365-filtering-correlation-id: 6f3f38af-7981-4518-5975-08db50538fa4 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: K4aIw/0yCk8W2cBajpaVfXk4lVMBKGr15fUTnxwg369TQMC+HLypV1EohGf6yJGFT7dj6Ta9jbn130aI0KWE3c9cve3M0cCoq2KIFqcFh6jdjbXgvMDNNMe7MwPrE6JIkav+amf70RGKWFaonqdiW6rKIEYxGGJHs58Y8OXrvOlnveVR7dNJJ1ZwVkAFeOMmAFFf0AL4q1Ig9bFGLXerfPsETgZ7qDrcMruaUaM1TxepK3Ma1cMbbk08e/xWVk0XxEfpIfi4mAk3Z6HpYN4tGYwXkA02C/giHyXwc6JAIsJe9kHUFoNqLxq/5NCAfC8xiQsd6EMoaGfY6jfvWkgoPYz5WCsHCW1IXiucAE3TQUv1/NKF1HwoZMHf2qhHB29xwtCQ3okR1yvlLdAEw/nWke26rSDmB6ub5T/TBd9W5odFXYT+b085ABS2OkDNgHNCjVMPZaacHcQq8Ce++OQRSUVR8efjNugWhAkXyBYSXbiSUHCwKn9tNd3DxIiPvk69/KGMeOo/ea6eXcO2SlGDp3H41DeWWA1AItIkqf/adAchVZx5LsBdf/7Ad1MokMqhwudts4gBWQ4cdMQMgcBhHpdFdZj87d8izJyT90IzDHaYa+46yfNAq2OyxAFl8DZH x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR12MB3966.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(376002)(136003)(346002)(396003)(39860400002)(366004)(451199021)(38070700005)(4326008)(52536014)(316002)(5660300002)(41300700001)(38100700002)(66446008)(64756008)(86362001)(26005)(122000001)(71200400001)(53546011)(9686003)(66476007)(66556008)(66946007)(110136005)(6506007)(2906002)(76116006)(8936002)(19627235002)(8676002)(33656002)(186003)(7696005)(478600001)(83380400001)(55016003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?aiCWzHskstxNtqeILB5ek9KcAGlWsToUSM0n+81mDMyX4XiSDfeUq8g3XUAB?= =?us-ascii?Q?iQcx0kaBsBcrNlwlfNOk/2/6Q4OIAt849Xmhw+qETck5pwDE1+g4FiDvGzG9?= =?us-ascii?Q?ReF7haNA3krCTHTCht2nB9V094M+3Lel0N9dmnajUqSMjeQegjhn1ECA9HaK?= =?us-ascii?Q?IRMqoFZTuwnq8DCHuCK3hkk1wGxtLEnNZdXO/mN4r6i4NQYKiHrRXS5Ccp3T?= =?us-ascii?Q?BTNIlLVm1wDrmF/IFjBkr77hMmudaCulTELVXpbtamN4oeqIYU5FOHTAaLXc?= =?us-ascii?Q?Vh4ngFX1c4qVPN4KTWNJhKAEjl/En2neaYe10u0Kk7p2CVaGTCBOiBeGFXzR?= =?us-ascii?Q?WC5vhF4h5f+3RojS8KxNtrcXuV6XJ2THe5md7ixaB26s6SKbqzkO1Sp2G/OK?= =?us-ascii?Q?z0qF1dZ9Iuhu+r5egNC+iIXDYPnPlt79lotZilLbgZocsqOM7x5tPAzm9lkt?= =?us-ascii?Q?r1VaRtM6oo52crnPhH8yhmd9CFqxfn6qogI8DCJk/n4jjvIgnAl30k5STL44?= =?us-ascii?Q?Yr4Tk3FNkKNozovLtBnTIjbyaSsKppB3c+GtTTL/JvfyIx/nJW6TLMN/+lAg?= =?us-ascii?Q?xCnbXF3kPEWUv1braErjlCy0QZJfVvMIkYJpdOjB0FepboAk2rl7/B7pTVbZ?= =?us-ascii?Q?0772MB4e8ljhFEij1g1xBMIWMRaMvtPN7vfpkU6/ROO9G2hRzjF8Lq266Cc2?= =?us-ascii?Q?yk9SmDSOb/AY0Cg5pf7kq1SV2UZf66XvBlM0a5qfSvueBwdJ8LpIce7Kr3r/?= =?us-ascii?Q?ljs6NuGHBUyZ6LD2f8bOn5esjN4RnVklKImxuA7b7G30P2GeBLXN31eJPXUN?= =?us-ascii?Q?XkYsDUi+T2AkEevQ+GqwHoy0qUiMwpQ/tX8PO+JNSwZiNjQxHhBVgFAQ3SY8?= =?us-ascii?Q?mleZialTQVCp2fQFmPTMUIiyG55reewbHtdDXP2TC8qWjJbEWpDdyLOmSnxq?= =?us-ascii?Q?gYVdev2LKJpcivHtHetLjeaPZC1mNs/gFuZXUfKpEqIiW2U8pic9iO0mIWEs?= =?us-ascii?Q?UOtkuUKNJdFsnX3nFFGofPl7iOpwB4hW0OjouR7VzEiKFPxGRESH0Yd1P7b8?= =?us-ascii?Q?2aDJFDfmh0V9BcxmJMinwYRD9vRnz4ouZ+Dd3NBWnS9bTG5hCSc2M8BpyVUM?= =?us-ascii?Q?er+bv7k4Chgdyi2qCvfhxknFfNttwaZ0wz43R2ihy/RZvnRklunstV8LVLQj?= =?us-ascii?Q?6tbVOVEO4SdeUxIDLeUpSZ2DUj9tjNDPAzAB7HG+zyjvlDdsppD43SEkL1Ky?= =?us-ascii?Q?OxrWZgiSwIwqho9jsnfBfqkP5Czhuz+gzCF+FKQKjcoC6rojbI0xthNFaVkS?= =?us-ascii?Q?DGVW4QqZaJVDQ0OroZWFXPfjNMIzPvfHXNvMVtjzbne5fABKVEY6BkRz8mjx?= =?us-ascii?Q?F273i3sdSYQce78Qug7IxQ5Y5saI+fkBLW3BAGKaASgcf9ClQXlyEHjES/mW?= =?us-ascii?Q?6yA/ETDVrgO8vBkYB9jHnD0qVAyN6s/Zm1rJqArdnyU4XgHyT6R9FdM3mxHh?= =?us-ascii?Q?ThC6jt47AsXKTS6suA51O1NijDS0TQbHvQBFsvtspmBnlotBocGbLP0NI4Zw?= =?us-ascii?Q?Zqg+vsZMldT0ZwWUhXE=3D?= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR12MB3966.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6f3f38af-7981-4518-5975-08db50538fa4 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 May 2023 06:06:42.5044 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: XstYpzbrTUr26bbAlQKcWvnyDd5ebcYsSGGA8z8h/xDSbJfBscYNR5hSFJqIg4ZQRkczZZSbl3Jb2dM7Z9ax7w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN9PR12MB5065 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable [AMD Official Use Only - General] Reviewed-by: Abner Chang > -----Original Message----- > From: Nickle Wang > Sent: Monday, May 8, 2023 10:52 PM > To: devel@edk2.groups.io > Cc: Chang, Abner ; Igor Kulchytskyy > > Subject: [edk2-redfish-client][PATCH 4/6] Tool/Redfish-Profile-Simulator: > Add ETag support >=20 > Caution: This message originated from an External Source. Use proper > caution when opening attachments, clicking links, or responding. >=20 >=20 > Implement ETag support in HTTP header >=20 > Signed-off-by: Nickle Wang > Cc: Abner Chang > Cc: Igor Kulchytskyy > --- > .../v1sim/resource.py | 10 +++++-- > .../v1sim/systems.py | 28 +++++++++++-------- > 2 files changed, 25 insertions(+), 13 deletions(-) >=20 > diff --git a/Tools/Redfish-Profile-Simulator/v1sim/resource.py > b/Tools/Redfish-Profile-Simulator/v1sim/resource.py > index e722d16a..0c7a8382 100644 > --- a/Tools/Redfish-Profile-Simulator/v1sim/resource.py > +++ b/Tools/Redfish-Profile-Simulator/v1sim/resource.py > @@ -36,6 +36,12 @@ class RfResource: > self.final_init_processing(base_path, rel_path) > else: > self.res_data =3D {} > + self.generate_etag(json.dumps(self.res_data)) > + > + def generate_etag(self, context): > + md5 =3D hashlib.md5() > + md5.update(context.encode('utf-8')) > + self.etag =3D 'W/"' + md5.hexdigest() + '"' >=20 > def create_sub_objects(self, base_path, rel_path): > pass > @@ -49,8 +55,8 @@ class RfResource: > # SHA1 should generate well-behaved etags > response =3D flask.make_response(self.response) > response.mimetype =3D 'application/json' > - etag =3D hashlib.sha1(self.response.encode('utf-8')).hexdige= st() > - response.set_etag(etag) > + response.headers["ETag"] =3D self.etag > + > return response > except KeyError: > flask.abort(404) > diff --git a/Tools/Redfish-Profile-Simulator/v1sim/systems.py > b/Tools/Redfish-Profile-Simulator/v1sim/systems.py > index 6305a51e..5adf81be 100644 > --- a/Tools/Redfish-Profile-Simulator/v1sim/systems.py > +++ b/Tools/Redfish-Profile-Simulator/v1sim/systems.py > @@ -92,7 +92,11 @@ class RfSystemObj(RfResource): > if "BootOrder" in boot_data: > self.res_data['Boot']['BootOrder'] =3D boot_data['BootOr= der'] >=20 > - resp =3D flask.Response(json.dumps(self.res_data,indent=3D4), > mimetype=3D"application/json") > + context =3D json.dumps(self.res_data,indent=3D4) > + self.generate_etag(context) > + resp =3D flask.Response(context, mimetype=3D"application/json") > + resp.headers["ETag"] =3D self.etag > + > return 0, 200, None, resp >=20 > def reset_resource(self, reset_data): > @@ -136,26 +140,28 @@ class RfMemoryCollection(RfCollection): >=20 > post_data["@odata.id"] =3D newMemoryUrl >=20 > - md5 =3D hashlib.md5() > - md5.update(json.dumps(post_data).encode("utf-8")) > - etag_str =3D 'W/"' + md5.hexdigest() + '"' > - post_data["@odata.etag"] =3D etag_str > + self.generate_etag(json.dumps(post_data,indent=3D4)) > + > + post_data["@odata.etag"] =3D self.etag > self.elements[str(newMemoryIdx)] =3D post_data >=20 > resp =3D flask.Response(json.dumps(post_data,indent=3D4), > mimetype=3D"application/json") > resp.headers["Location"] =3D newMemoryUrl > - resp.headers["ETag"] =3D etag_str > - > + resp.headers["ETag"] =3D self.etag > return 0, 200, None, resp >=20 > def patch_memory(self, Idx, patch_data): > - md5 =3D hashlib.md5() > - md5.update(json.dumps(patch_data).encode("utf-8")) > - etag_str =3D 'W/"' + md5.hexdigest() + '"' > - patch_data["@odata.etag"] =3D etag_str >=20 > + > + self.elements[str(Idx)] =3D {**self.elements[str(Idx)], **patch_= data} > + > + context =3D json.dumps(self.elements[str(Idx)],indent=3D4) > + self.generate_etag(context) > + patch_data["@odata.etag"] =3D self.etag > self.elements[str(Idx)] =3D {**self.elements[str(Idx)], **patch_= data} > + > resp =3D flask.Response(json.dumps(self.elements[str(Idx)],inden= t=3D4), > mimetype=3D"application/json") > + resp.headers["ETag"] =3D self.etag > return 0, 200, None, resp >=20 > def get_memory(self, Idx): > -- > 2.17.1