<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:x="urn:schemas-microsoft-com:office:excel" 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=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";}
span.EmailStyle19
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle21
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle22
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle23
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle24
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle25
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle26
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle27
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle28
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle29
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle30
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle31
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle32
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle33
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle34
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle35
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle36
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1310327766;
        mso-list-type:hybrid;
        mso-list-template-ids:-1861562896 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></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="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><span style="color:#1F497D">Hi </span><span style="color:#1F497D">Shuicheng,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">First of all, thank you for supporting this change for us. It’s much appreciated.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Yes, please go with (what was in your spreadsheet)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="color:#1F497D">True: alarm is cleared<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="color:#1F497D">False: alarm is not found.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="color:#1F497D">Exception: there is operation failure.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Please apply that change to the other new APIs as well.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Looking at the code now more closely we need to ensure that the ‘clear_fault’, ‘get_fault’,’clear_all’ , ‘get_faults’ and ‘get_faults_by_id’ all follow this approach.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Interestingly I don’t see the get_faults_by_id returning an exception in my code in the case where there are none found. It is behaving properly but looking at the code I can only assume that fm_core.get_by_aid
 is returning None rather than False which would explain it.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Please test ‘each’ the APIs with the following conditions …<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-family:Symbol;color:#1F497D"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman"">        
</span></span></span><![endif]><span style="color:#1F497D">With applicable alarm present or success path<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-family:Symbol;color:#1F497D"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman"">        
</span></span></span><![endif]><span style="color:#1F497D">With applicable alarm not present.<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-family:Symbol;color:#1F497D"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman"">        
</span></span></span><![endif]><span style="color:#1F497D">With FM main process not running (you can do this by runnin the operations on a compute while there is no controller up.)<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-family:Symbol;color:#1F497D"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman"">        
</span></span></span><![endif]><span style="color:#1F497D">With an (software) error API call (like using an invalid alarmID)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Eric.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></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 #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Lin, Shuicheng [mailto:shuicheng.lin@intel.com]
<br>
<b>Sent:</b> Wednesday, March 20, 2019 9:33 PM<br>
<b>To:</b> MacDonald, Eric; Liu, Tao; Wensley, Barton; Bailey, Henry Albert (Al)<br>
<b>Cc:</b> Xie, Cindy; starlingx-discuss@lists.starlingx.io; Khalil, Ghada<br>
<b>Subject:</b> RE: Improve FM's Python API return data<br>
<b>Importance:</b> High<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><a name="_MailEndCompose"><span style="color:#1F497D">Hi Eric,</span></a><span style="color:#1F497D"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Thanks for using the new API. </span>
<span style="font-family:Wingdings;color:#1F497D">J</span><span style="color:#1F497D"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">I will update code to take “clear non exist alarm” as normal case (no exception) as your suggestion.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Another thing is, I  don’t think we need return value for clear_fault/clear_all API.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">If we want return value for clear_fault/clear_all, then we could define return value as below:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">True: alarm is cleared<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">False: alarm is not found.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Exception: there is operation failure.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Which version do you prefer?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Thanks.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">I created below LP issue to track it:<o:p></o:p></span></p>
<p class="MsoNormal"><a href="https://bugs.launchpad.net/starlingx/+bug/1821112">https://bugs.launchpad.net/starlingx/+bug/1821112</a><span style="color:#1F497D"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"><span style="color:#1F497D">Best Regards<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Shuicheng<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<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>From:</b> MacDonald, Eric [mailto:Eric.MacDonald@windriver.com]
<br>
<b>Sent:</b> Thursday, March 21, 2019 2:10 AM<br>
<b>To:</b> Lin, Shuicheng <shuicheng.lin@intel.com>; Liu, Tao <Tao.Liu@windriver.com>; Wensley, Barton <Barton.Wensley@windriver.com>; Bailey, Henry Albert (Al) <Al.Bailey@windriver.com><br>
<b>Cc:</b> Xie, Cindy <cindy.xie@intel.com>; starlingx-discuss@lists.starlingx.io; Khalil, Ghada <Ghada.Khalil@windriver.com><br>
<b>Subject:</b> RE: Improve FM's Python API return data<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:#1F497D">Hi Shuicheng,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">I’ve been using your new API FaultAPIsV2 and found that it is not behaving the way we discussed or I expected.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">I looked back on the code update and this behavior seems to have gotten by all of us.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">My example is for the clear_fault case.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">I call clear_fault against an alarmID/entity path that there is no alarm raised for but instead of just returning False or None ; it generates an exception. From below , from Bart who I agree with …<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">“My view is that you should be updating all six APIs to be consistent and raise an exception if the operation fails (e.g. because the API can’t connect to fmmanager).”<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">… I expected to get an exception pretty much only if there was a ‘software error’ in the API call or it was ‘unable to connect to the fm manager’. Not simply if the referenced alarm does not exist.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">From your SS my case is the highlighted
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><img border="0" width="658" height="171" id="Picture_x0020_1" src="cid:image001.jpg@01D4DFC4.E1196930" alt="cid:image001.jpg@01D4DFC0.AC313D50"><span style="color:#1F497D"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Eric.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></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 #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Lin, Shuicheng [</span><a href="mailto:shuicheng.lin@intel.com"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">mailto:shuicheng.lin@intel.com</span></a><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">]
<br>
<b>Sent:</b> Tuesday, February 26, 2019 7:47 PM<br>
<b>To:</b> Liu, Tao; Wensley, Barton; MacDonald, Eric; Bailey, Henry Albert (Al)<br>
<b>Cc:</b> Xie, Cindy; </span><a href="mailto:starlingx-discuss@lists.starlingx.io"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">starlingx-discuss@lists.starlingx.io</span></a><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""><br>
<b>Subject:</b> RE: Improve FM's Python API return data<br>
<b>Importance:</b> High<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:#1F497D">Hi all,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Thanks for the quick confirmation. I will implement the code as Bart’s suggestion.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"><span style="color:#1F497D">Best Regards<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Shuicheng<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> Liu, Tao [<a href="mailto:Tao.Liu@windriver.com">mailto:Tao.Liu@windriver.com</a>]
<br>
<b>Sent:</b> Tuesday, February 26, 2019 10:31 PM<br>
<b>To:</b> Wensley, Barton <<a href="mailto:Barton.Wensley@windriver.com">Barton.Wensley@windriver.com</a>>; Lin, Shuicheng <<a href="mailto:shuicheng.lin@intel.com">shuicheng.lin@intel.com</a>>; MacDonald, Eric <<a href="mailto:Eric.MacDonald@windriver.com">Eric.MacDonald@windriver.com</a>>;
 Bailey, Henry Albert (Al) <<a href="mailto:Al.Bailey@windriver.com">Al.Bailey@windriver.com</a>><br>
<b>Cc:</b> Xie, Cindy <<a href="mailto:cindy.xie@intel.com">cindy.xie@intel.com</a>>;
<a href="mailto:starlingx-discuss@lists.starlingx.io">starlingx-discuss@lists.starlingx.io</a><br>
<b>Subject:</b> RE: Improve FM's Python API return data<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-bottom:8.0pt;line-height:105%"><span lang="EN-CA">Hi Shuicheng,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:8.0pt;line-height:105%"><span lang="EN-CA">I agree with Bart’s recommendation. 
<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:8.0pt;line-height:105%"><span lang="EN-CA">The failure condition occurs when the FM manager has not been started by SM during the booting or swact, and raise an exception for this condition is a right approach.
<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:8.0pt;line-height:105%"><span lang="EN-CA">Having a new class for the new behavior is a good way to migrate the API changes.
<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:8.0pt;line-height:105%"><span lang="EN-CA"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-bottom:8.0pt;line-height:105%"><span lang="EN-CA">Regards,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:8.0pt;line-height:105%"><span lang="EN-CA">Tao<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Wensley, Barton
<br>
<b>Sent:</b> Tuesday, February 26, 2019 9:11 AM<br>
<b>To:</b> Lin, Shuicheng; MacDonald, Eric; Liu, Tao; Bailey, Henry Albert (Al)<br>
<b>Cc:</b> Xie, Cindy; </span><a href="mailto:starlingx-discuss@lists.starlingx.io"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">starlingx-discuss@lists.starlingx.io</span></a><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""><br>
<b>Subject:</b> RE: Improve FM's Python API return data<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:#1F497D">Shuicheng,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">As per your spreadsheet, there are actually three APIs that currently return ambiguous results (get_fault, get_faults and get_faults_by_id). My view is that you should be updating all six APIs to be consistent
 and raise an exception if the operation fails (e.g. because the API can’t connect to fmmanager).<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">You can avoid impacting the existing APIs by having both a FaultAPIs class and a FaultAPIsV2 class. To avoid code duplication, you would create a FaultAPIsBase class to hold all the common code and subclass from
 it.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Bart<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Lin, Shuicheng [</span><a href="mailto:shuicheng.lin@intel.com"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">mailto:shuicheng.lin@intel.com</span></a><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">]
<br>
<b>Sent:</b> February 25, 2019 8:59 PM<br>
<b>To:</b> MacDonald, Eric; Wensley, Barton; Liu, Tao; Bailey, Henry Albert (Al)<br>
<b>Cc:</b> Xie, Cindy; </span><a href="mailto:starlingx-discuss@lists.starlingx.io"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">starlingx-discuss@lists.starlingx.io</span></a><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""><br>
<b>Subject:</b> RE: Improve FM's Python API return data<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:#1F497D">Hi Eric/Tao/Al,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Please confirm you agree a new set fault API (FaultAPIs_V2) or not.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">The attached excel is a simple comparison between original class FaultAPIs and FaultAPIs_V2.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">For myself, I still prefer to add 2 new API in original class, so other API call could be kept without change.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">We could have more discuss about the FaultAPIs_V2 design if you all agree to choose it.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"><span style="color:#1F497D">Best Regards<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Shuicheng<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> MacDonald, Eric [<a href="mailto:Eric.MacDonald@windriver.com">mailto:Eric.MacDonald@windriver.com</a>]
<br>
<b>Sent:</b> Monday, February 25, 2019 10:23 PM<br>
<b>To:</b> Wensley, Barton <<a href="mailto:Barton.Wensley@windriver.com">Barton.Wensley@windriver.com</a>>; Lin, Shuicheng <<a href="mailto:shuicheng.lin@intel.com">shuicheng.lin@intel.com</a>>; Liu, Tao <<a href="mailto:Tao.Liu@windriver.com">Tao.Liu@windriver.com</a>>;
 Bailey, Henry Albert (Al) <<a href="mailto:Al.Bailey@windriver.com">Al.Bailey@windriver.com</a>><br>
<b>Cc:</b> Xie, Cindy <<a href="mailto:cindy.xie@intel.com">cindy.xie@intel.com</a>>;
<a href="mailto:starlingx-discuss@lists.starlingx.io">starlingx-discuss@lists.starlingx.io</a><br>
<b>Subject:</b> RE: Improve FM's Python API return data<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:#1F497D">I see your point Bart.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">This Jira is an Enhancement Request and fulfilling that should not be done so half way.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">All the APIs in V2 should be changed to defer exception handling to the caller as apparently that is the pythonic way.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></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 #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Wensley, Barton
<br>
<b>Sent:</b> Monday, February 25, 2019 8:10 AM<br>
<b>To:</b> Lin, Shuicheng; MacDonald, Eric; Liu, Tao; Bailey, Henry Albert (Al)<br>
<b>Cc:</b> Xie, Cindy; </span><a href="mailto:starlingx-discuss@lists.starlingx.io"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">starlingx-discuss@lists.starlingx.io</span></a><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""><br>
<b>Subject:</b> RE: Improve FM's Python API return data<br>
<b>Importance:</b> High<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:#1F497D">I disagree with this approach. Instead of just updating two of the methods, you should be updating all the methods in the FaultAPIs class that could fail in the same way and have them raise an exception. You
 should create a new FaultAPIs_v2 class for the updated methods to avoid impacting existing users. When a user of this API wants to use the new exceptions, they will start using the new class.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><br>
Bart<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Lin, Shuicheng [</span><a href="mailto:shuicheng.lin@intel.com"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">mailto:shuicheng.lin@intel.com</span></a><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">]
<br>
<b>Sent:</b> February 25, 2019 2:58 AM<br>
<b>To:</b> MacDonald, Eric; Liu, Tao; Bailey, Henry Albert (Al); Wensley, Barton<br>
<b>Cc:</b> Xie, Cindy; </span><a href="mailto:starlingx-discuss@lists.starlingx.io"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">starlingx-discuss@lists.starlingx.io</span></a><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""><br>
<b>Subject:</b> RE: Improve FM's Python API return data<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:#1F497D">Hi all,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Based on the comments in patch [0], I will add two new API, get_fault_ex and get_faults_by_id_ex.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">I will not add a new class, since all other APIs are kept without change.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">For get_fault_ex and get_faults_by_id_ex:
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">the return value will be alarm list (maybe None).<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Exception will be thrown if there is error during API execution.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">[0]: </span><a href="https://review.openstack.org/637655">https://review.openstack.org/637655</a><span style="color:#1F497D"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"><span style="color:#1F497D">Best Regards<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Shuicheng<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> Lin, Shuicheng [<a href="mailto:shuicheng.lin@intel.com">mailto:shuicheng.lin@intel.com</a>]
<br>
<b>Sent:</b> Wednesday, February 20, 2019 10:41 AM<br>
<b>To:</b> MacDonald, Eric <<a href="mailto:Eric.MacDonald@windriver.com">Eric.MacDonald@windriver.com</a>>; Liu, Tao <<a href="mailto:Tao.Liu@windriver.com">Tao.Liu@windriver.com</a>>;
<a href="mailto:Al.Bailey@windriver.com">Al.Bailey@windriver.com</a><br>
<b>Cc:</b> Xie, Cindy <<a href="mailto:cindy.xie@intel.com">cindy.xie@intel.com</a>>;
<a href="mailto:starlingx-discuss@lists.starlingx.io">starlingx-discuss@lists.starlingx.io</a><br>
<b>Subject:</b> Re: [Starlingx-discuss] Improve FM's Python API return data<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:#1F497D">Hi Eric,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Thanks for the detail comments.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">In my plan, the return value for get_fault API will be like below:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">(False, None): there is error in the API execution.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">(True, None): API execution correctly, and there is no alarm message.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">(True, Alarm): API execution correctly, and there is alarm message.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">I think it should fix the issue you have. Is it right?
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">If you agree on this new API return value change, I will implement it.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Thanks.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"><span style="color:#1F497D">Best Regards<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Shuicheng<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> MacDonald, Eric [<a href="mailto:Eric.MacDonald@windriver.com">mailto:Eric.MacDonald@windriver.com</a>]
<br>
<b>Sent:</b> Tuesday, February 19, 2019 10:35 PM<br>
<b>To:</b> Lin, Shuicheng <<a href="mailto:shuicheng.lin@intel.com">shuicheng.lin@intel.com</a>>; Liu, Tao <<a href="mailto:Tao.Liu@windriver.com">Tao.Liu@windriver.com</a>><br>
<b>Cc:</b> Xie, Cindy <<a href="mailto:cindy.xie@intel.com">cindy.xie@intel.com</a>><br>
<b>Subject:</b> RE: Improve FM's Python API return data<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:#1F497D">I took a look and added comments. I don’t think this update fixes the issue I have.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></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 #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Lin, Shuicheng [</span><a href="mailto:shuicheng.lin@intel.com"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">mailto:shuicheng.lin@intel.com</span></a><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">]
<br>
<b>Sent:</b> Monday, February 18, 2019 10:09 PM<br>
<b>To:</b> MacDonald, Eric; Liu, Tao<br>
<b>Cc:</b> Xie, Cindy<br>
<b>Subject:</b> RE: Improve FM's Python API return data<br>
<b>Importance:</b> High<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:#1F497D">Resend the mail.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"><span style="color:#1F497D">Best Regards<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Shuicheng<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> Lin, Shuicheng <br>
<b>Sent:</b> Tuesday, February 19, 2019 9:56 AM<br>
<b>To:</b> Liu, Tao (Wind River) <<a href="mailto:tao.liu@windriver.com">tao.liu@windriver.com</a>>; 'eric.macdonald@windriver.com' <<a href="mailto:eric.macdonald@windriver.com">eric.macdonald@windriver.com</a>><br>
<b>Cc:</b> Xie, Cindy <<a href="mailto:cindy.xie@intel.com">cindy.xie@intel.com</a>><br>
<b>Subject:</b> Improve FM's Python API return data<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Hi Tao/Eric,<o:p></o:p></p>
<p class="MsoNormal">For <a href="https://storyboard.openstack.org/#!/story/2004859">
story 2004859</a>, I plan to modify the get_fault api return value as a tuple.<o:p></o:p></p>
<p class="MsoNormal">(True/False, Alarm)<o:p></o:p></p>
<p class="MsoNormal">Alarm is valid only when the 1<sup>st</sup> item is True.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Sample code is uploaded for you early review:<o:p></o:p></p>
<p class="MsoNormal">Stx-fault: <a href="https://review.openstack.org/637655">https://review.openstack.org/637655</a><o:p></o:p></p>
<p class="MsoNormal">Stx-integ: <a href="https://review.openstack.org/637656">https://review.openstack.org/637656</a><o:p></o:p></p>
<p class="MsoNormal">Could you help review it and share your thought?<o:p></o:p></p>
<p class="MsoNormal">If you agree on it, I will implement the code and test it.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">For test, I will try to kill fmManager/modify its listening port to simulate the failure case.<o:p></o:p></p>
<p class="MsoNormal">For the api call outside of stx-fault, I may try to call it manually to verify.<o:p></o:p></p>
<p class="MsoNormal">Please share me if there is better verify method.<o:p></o:p></p>
<p class="MsoNormal">Thanks.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Best Regards<o:p></o:p></p>
<p class="MsoNormal">Shuicheng<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</div>
</div>
</body>
</html>