<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Yes, it should work, although it’s relatively new, so it’s possible there are bugs or corner cases we haven’t hit yet.  If you find new issues, it would be great
 if you could file them against the bmcweb project.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">To use the endpoint, it should just be a matter of sending a POST request to the update URL containing the tarred image with the manifest in the body.  It works
 very similarly to the existing update endpoints, it just meets the Redfish specifications.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">One thing to watch out for is payload size.  Bmcweb imposes appropriate payload limits, but if you’re reverse proxying the server behind nginx, you might have
 nginx payload limits imposed and that’ll need to be updated.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">-Ed<o:p></o:p></span></p>
<p class="MsoNormal"><a name="_MailEndCompose"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></a></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><a name="_____replyseparator"></a><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Henbin Chang [mailto:henbinchang@gmail.com]
<br>
<b>Sent:</b> Tuesday, August 21, 2018 1:02 AM<br>
<b>To:</b> Tanous, Ed <ed.tanous@intel.com>; OpenBMC Maillist <openbmc@lists.ozlabs.org><br>
<b>Subject:</b> UpdateService in Redfish<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">Hi Ed,<o:p></o:p></p>
<div>
<p class="MsoNormal">I search the below commit in the bmcweb REPO.<o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">commit acb7cfb4b571bd2045b1d269625ba054806a466d<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Author: Jennifer Lee <<a href="mailto:jennifer1.lee@intel.com">jennifer1.lee@intel.com</a>><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Date:   Thu Jun 7 16:08:15 2018 -0700<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">    Implement POST for redfish UpdateService<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">    - POST an image file to /redfish/v1/UpdateServer uri will upload the<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">      image and activate it<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    - Modified SoftwareInventoryCollection to list items with<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">      xyz.openbmc_project.Software.Activation/Activation property as<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    "xyz.openbmc_project.Software.Activation.Activations.Active"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    - SoftwareInventory <a href="http://odata.id">odata.id</a> is identified with DBus generated uuid<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">May I know if BMC FW can be updated through UpdateService in Redfish? <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">If yes, could you share how to use it?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Besides that, I add some debug message in the redfish-core/lib/update_service.hpp but output nothing <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Could you give some suggestion?  <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">...<o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">private:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  void doGet(crow::Response &res, const crow::Request &req,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">             const std::vector<std::string> &params) override {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    std::cout << "Henbin=" << __FILE__<< ": "<<__LINE__ << "\n";<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">          BMCWEB_LOG_INFO << "Henbin=" << __FILE__<< ": "<<__LINE__ << "\n";<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    res.jsonValue = Node::json;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    res.end();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  }<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal">...<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Thanks.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">BRs,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Henbin.<o:p></o:p></p>
</div>
</div>
</div>
</div>
</body>
</html>