public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [edk2-devel] [edk2-redfish-client][PATCH] edk2-Redfish-client: Clarify HTTP method used for provisioning
@ 2024-02-26  4:55 Chang, Abner via groups.io
  2024-02-26 13:50 ` Nickle Wang via groups.io
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Chang, Abner via groups.io @ 2024-02-26  4:55 UTC (permalink / raw)
  To: devel; +Cc: Nickle Wang, Igor Kulchytskyy, Mike Maslenkin

From: Abner Chang <abner.chang@amd.com>

Clarify the HTTP method that is used to provision BIOS
managed Redfish resource.

Signed-off-by: Abner Chang <abner.chang@amd.com>
Cc: Nickle Wang <nicklew@nvidia.com>
Cc: Igor Kulchytskyy <igork@ami.com>
Cc: Mike Maslenkin <mike.maslenkin@gmail.com>
---
 RedfishClientPkg/Readme.md                    | 35 ++++++++++++-------
 .../Media/redfish-call-flow-provisioning.svg  |  2 +-
 .../Media/redfish-synchronization-design.svg  |  4 +--
 3 files changed, 26 insertions(+), 15 deletions(-)

diff --git a/RedfishClientPkg/Readme.md b/RedfishClientPkg/Readme.md
index 82cb9c8c99..1789dff6f8 100644
--- a/RedfishClientPkg/Readme.md
+++ b/RedfishClientPkg/Readme.md
@@ -310,21 +310,32 @@ job.
 
 Several interfaces defined in EDKII Redfish Resource Config Protocol work together to support Redfish synchronization:
 - Identify()
-  - This function is used to check if the given Redfish resource is the one the feature driver wants to manage. A platform
-    library `RedfishResourceIdentifyLib` is introduced for platform to implement its own policy to identify Redfish resource.
+  - This function is used to check if the given Redfish resource is the one the feature driver
+    wants to manage. A platform library `RedfishResourceIdentifyLib` is introduced for
+    platform to implement its own policy to identify Redfish resource.
 - Check()
-  - This function is used to check the attribute status on Redfish service. If all attributes the feature driver manages
-    are presented in Redfish service, feature driver must provision them already. Otherwise, Provisioning() will be called
-    to perform resource provisioning job.
+  - This function is used to check the attribute status on Redfish service. If all attributes
+    the feature driver manages are presented in Redfish service, feature driver must provision
+    them already. Otherwise, Provisioning() will be called to perform resource provisioning
+    job.
 - Provisioning()
-  - When this function is called, feature driver will provision all attributes that it managed to Redfish service. This
-    operation usually create new resource at Redfish service and require different operation that specified by Redfish service.
+  - When this function is called, feature driver will provision all attributes that it managed
+    to Redfish service. This operation usually creates the new Redfish properties at the
+    existing URI in Redfish service. Use HTTP PATCH to provision Redfish properties as BIOS
+    may only manage some but not all of the properties of the resource. See [Redfish-edk2 implementation](#Redfish-Service-Implementation-that-Incorporates-with-EDK2-Redfish) for
+    the details. HTTP POST is still used for creating a collection member, such as the
+    collection member of processor or memory for the Redfish inventory management.
+    However, HTTP PUT to overwrite an entire Redfish resource is not used in edk2 Redfish
+    implementation as edk2 Redfish implementation has no idea of whether the Redfish resource
+    is entirely managed by BIOS or not.
 - Consume()
-  - When there is pending settings in Redfish service, this function is called for feature driver to consume pending settings
-    requested by user.
+  - When there is pending settings in Redfish service, this function is called for feature
+    driver to consume pending settings requested by user. HTTP GET is the method used
+    to retrieve Redfish properties.
 - Update()
-  - When platform configuration is updated, this function is called to update configuration changes to Redfish service and
-    Redfish service can show the latest settings on platform.
+  - When platform configuration is updated, this function is called to update configuration
+    changes to Redfish service and Redfish service can show the latest settings on platform.
+    HTTP PATCH is the method used to update the properties of Redfish resource.
 
 The EDKII Redfish Resource Addendum Protocol is introduced to provide platform addendum data that Redfish service requires.
 This protocol will be called at Provisioning() and Update() functions so platform can add OEM attribute or any other attribute
@@ -338,7 +349,7 @@ struct _EDKII_REDFISH_RESOURCE_ADDENDUM_PROTOCOL {
 };
 ```
 
-### Redfish Service Implementation that Incorporates with EDK2 Redfish
+### <a name="Redfish-Service-Implementation-that-Incorporates-with-EDK2-Redfish"></a>Redfish Service Implementation that Incorporates with EDK2 Redfish
 The idea of Redfish synchronization design is to manage Redfish resource directly by platform host
 firmware. To do this, Redfish synchronization functions have to work with Redfish service implementation
 in BMC firmware. This is because the mechanism between platform host firmware and BMC firmware is not
diff --git a/RedfishClientPkg/Documents/Media/redfish-call-flow-provisioning.svg b/RedfishClientPkg/Documents/Media/redfish-call-flow-provisioning.svg
index 70556152fe..d1d653b621 100755
--- a/RedfishClientPkg/Documents/Media/redfish-call-flow-provisioning.svg
+++ b/RedfishClientPkg/Documents/Media/redfish-call-flow-provisioning.svg
@@ -25,7 +25,7 @@
     <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif" font-weight="400" font-size="50" transform="matrix(1 0 0 1 2417.95 1202)">2. Follow Bios schema and </text>
     <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif" font-weight="400" font-size="50" transform="matrix(1 0 0 1 2479.82 1262)">create attribute list</text>
     <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif" font-weight="400" font-size="50" transform="matrix(1 0 0 1 2412.63 1795)">4. BIOS current settings is ready</text>
-    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif" font-weight="400" font-size="50" transform="matrix(1 0 0 1 2474.5 1855)">Issue HTTP “PUT” to /redfish/v1/systems/SYS/Bios</text>
+    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif" font-weight="400" font-size="50" transform="matrix(1 0 0 1 2474.5 1855)">Issue HTTP “PATCH” to /redfish/v1/systems/SYS/Bios</text>
     <path d="M2385 1906.14 3728.02 1906.14 3728.02 1911.86 2385 1911.86ZM3723.43 1895.25 3750.93 1909 3723.43 1922.75Z" fill="#8C8C8C"/>
     <rect x="342.5" y="1008.5" width="377" height="199" stroke="#CDCDCD" stroke-width="4.58333" stroke-linejoin="round" stroke-miterlimit="10" fill="#404040"/>
     <text fill="#FFFFFF" font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif" font-weight="400" font-size="55" transform="matrix(1 0 0 1 391.759 1095)">Chipset/HII </text>
diff --git a/RedfishClientPkg/Documents/Media/redfish-synchronization-design.svg b/RedfishClientPkg/Documents/Media/redfish-synchronization-design.svg
index 2dd1fb6109..5b95dcea0f 100755
--- a/RedfishClientPkg/Documents/Media/redfish-synchronization-design.svg
+++ b/RedfishClientPkg/Documents/Media/redfish-synchronization-design.svg
@@ -28,10 +28,10 @@
     <path d="M2497.82 1863.5 2497.82 2311.4C2497.82 2312.67 2496.79 2313.7 2495.53 2313.7L583.418 2313.7 583.418 2309.11 2495.53 2309.11 2493.23 2311.4 2493.23 1863.5ZM588 2325.15 560.5 2311.4 588 2297.65Z" fill="#008563"/>
     <path d="M2728 1074.17C2728 1059.72 2739.72 1048 2754.17 1048L3410.83 1048C3425.28 1048 3437 1059.72 3437 1074.17L3437 1178.83C3437 1193.28 3425.28 1205 3410.83 1205L2754.17 1205C2739.72 1205 2728 1193.28 2728 1178.83Z" fill="#0071C5" fill-rule="evenodd" fill-opacity="0.501961"/>
     <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-weight="700" font-size="64" transform="matrix(1 0 0 1 2869.23 1148)">HTTP </text>
-    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-weight="700" font-size="64" transform="matrix(1 0 0 1 3021.62 1148)">POST/PUT</text>
+    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-weight="700" font-size="64" transform="matrix(1 0 0 1 3021.62 1148)">PATCH</text>
     <path d="M3112 2034.33C3112 2015.37 3127.37 2000 3146.33 2000L3786.67 2000C3805.63 2000 3821 2015.37 3821 2034.33L3821 2171.67C3821 2190.63 3805.63 2206 3786.67 2206L3146.33 2206C3127.37 2206 3112 2190.63 3112 2171.67Z" fill="#0071C5" fill-rule="evenodd" fill-opacity="0.501961"/>
     <text font-family="Arial,Arial_MSFontService,sans-serif" font-weight="400" font-size="64" transform="matrix(1 0 0 1 3191.74 2127)">HTTP </text>
-    <text fill="#FF0000" font-family="Arial,Arial_MSFontService,sans-serif" font-weight="400" font-size="64" transform="matrix(1 0 0 1 3376.79 2127)">PATCH/PUT</text>
+    <text fill="#FF0000" font-family="Arial,Arial_MSFontService,sans-serif" font-weight="400" font-size="64" transform="matrix(1 0 0 1 3376.79 2127)">PATCH</text>
     <rect x="1572" y="418" width="896" height="130" fill="#008564"/>
     <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-weight="700" font-size="64" transform="matrix(1 0 0 1 1655.98 505)">RedfishResourceIdentifyLib</text>
     <path d="M0.0452146-1.71815 11.9202-1.40565 23.8145-0.526554 35.5234 0.919242 46.906 2.80438 57.9272 5.19539 68.5072 8.02728 78.5249 11.2384 87.9266 14.8322 96.5836 18.7466 104.375 22.923 111.238 27.3016 117.131 31.9661 121.965 36.7847C122.036 36.8551 122.1 36.9316 122.157 37.0131L125.532 41.8256C125.598 41.9198 125.655 42.0203 125.701 42.1257L127.826 47.0007C127.885 47.1376 127.927 47.2817 127.949 47.4294L128.699 52.3669 129.449 57.3044 129.326 56.8757 131.451 61.7507 131.282 61.4506 134.657 66.2631 134.465 66.0347 139.153 70.7222 144.756 75.1536 151.363 79.3641 158.938 83.423 167.396 87.2466 176.555 90.7711 186.4 93.9259 196.82 96.7148 207.677 99.0704 218.967 100.929 231.233 102.16 230.889 105.58 218.408 104.321 206.948 102.43 195.93 100.035 185.35 97.1991 175.32 93.9789 165.979 90.3784 157.312 86.452 149.512 82.2609 142.619 77.8464 136.722 73.1528 132.035 68.4653C131.964 68.3949 131.9 68.3184 131.843 68.2369L128.468 63.4244C128.402 63.3302 128.345 63.2297 128.299 63.1243L126.174 58.2493C126.115 58.1124 126.073 57.9683 126.051 57.8206L125.301 52.8831 124.551 47.9456 124.674 48.3743 122.549 43.4993 122.718 43.7994 119.343 38.9869 119.535 39.2153 114.994 34.6589 109.387 30.1984 102.75 25.952 95.1664 21.8784 86.6984 18.0428 77.475 14.5116 67.6178 11.3477 57.1978 8.55461 46.344 6.19562 35.1016 4.33076 23.5605 2.90155 11.8298 2.03065-0.0452146 1.71815ZM227.312 89.8694 253.937 105.246 225.66 117.32Z" fill="#008563" transform="matrix(1 0 0 -1 1318.5 588.746)"/>
-- 
2.37.1.windows.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#115939): https://edk2.groups.io/g/devel/message/115939
Mute This Topic: https://groups.io/mt/104577338/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-02-28 17:59 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-26  4:55 [edk2-devel] [edk2-redfish-client][PATCH] edk2-Redfish-client: Clarify HTTP method used for provisioning Chang, Abner via groups.io
2024-02-26 13:50 ` Nickle Wang via groups.io
2024-02-27  1:06   ` Chang, Abner via groups.io
2024-02-27 14:26 ` Igor Kulchytskyy via groups.io
2024-02-28 17:59 ` Mike Maslenkin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox