<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=gb2312"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Courier;
        panose-1:2 7 4 9 2 2 5 2 4 4;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@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;}
@font-face
        {font-family:"\@SimSun";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:SimSun;
        mso-fareast-language:ZH-CN;}
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;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:SimSun;
        mso-fareast-language:ZH-CN;}
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";
        mso-fareast-language:ZH-CN;}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";
        mso-fareast-language:ZH-CN;}
span.EmailStyle20
        {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'>Hi Ilya,<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 style='margin-left:.5in'>1) It is not an option to use "GET /members/{member_id}" for retrieving health status, since it needs to call the driver/device (and thus become asynchronous). I vote for a separate method that retrieves health data, actually it may be similar to "get_stats".<o:p></o:p></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'>Health status is not the only “dynamic”/read-only attribute. The “status” attribute of VIP, pool, etc. can change at any time, so does a member’s health. It would complicate the API to separate calls for have “static” attributes versus “dynamic” ones of an entity. So, either the GET should be serviced by the driver like the other calls, or there needs to be a way between the plugin and the driver to update these dynamic (or operational) attributes of entities in the DB. <a name="_MailEndCompose"><o:p></o:p></a></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 style='margin-left:.5in'>2) Not all load balancers able to map the health status back to health monitor (HAProxy is an example). We may consider the following response:<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'>{</span><o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'>    "status": "FAIL",</span><o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'>    "ext_code": "L4_CON",</span><o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'>    "details": "Connection refused (tcp rst)",</span><o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'>    "health_monitor_id": "f3eeab00-8367-4524-b662-55e64d4cacb5"</span><o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'>}</span><o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>where attributes 'ext_code' and 'health_monitor_id' are optional. <o:p></o:p></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'>Ilya, can you first confirm whether HA-Proxy can support several health monitors per pool or not? If it can support only one, then the mapping is obvious, no? <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'>Youcef<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><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"'> Ilya Shakhat [mailto:ishakhat@mirantis.com] <br><b>Sent:</b> Tuesday, November 27, 2012 10:35 AM<br><b>To:</b> OpenStack Development Mailing List<br><b>Subject:</b> Re: [openstack-dev] </span><span lang=ZH-CN style='font-size:10.0pt'>答复</span><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>: </span><span lang=ZH-CN style='font-size:10.0pt'>答复</span><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>: [Quantum] [LBaaS] Health Monitor Failure Detection<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>My 2 notes on the topic :)<o:p></o:p></p><div><p class=MsoNormal>1) It is not an option to use "GET /members/{member_id}" for retrieving health status, since it needs to call the driver/device (and thus become asynchronous). I vote for a separate method that retrieves health data, actually it may be similar to "get_stats".<o:p></o:p></p></div><div><p class=MsoNormal>2) Not all load balancers able to map the health status back to health monitor (HAProxy is an example). We may consider the following response:<o:p></o:p></p></div><blockquote style='margin-left:30.0pt;margin-right:0in'><div><div><p class=MsoNormal><span style='font-family:"Courier New"'>{</span><o:p></o:p></p></div></div><div><div><p class=MsoNormal><span style='font-family:"Courier New"'>    "status": "FAIL",</span><o:p></o:p></p></div></div><div><div><p class=MsoNormal><span style='font-family:"Courier New"'>    "ext_code": "L4_CON",</span><o:p></o:p></p></div></div><div><div><p class=MsoNormal><span style='font-family:"Courier New"'>    "details": "Connection refused (tcp rst)",</span><o:p></o:p></p></div></div><div><div><p class=MsoNormal><span style='font-family:"Courier New"'>    "health_monitor_id": "f3eeab00-8367-4524-b662-55e64d4cacb5"</span><o:p></o:p></p></div></div><div><div><p class=MsoNormal><span style='font-family:"Courier New"'>}</span><o:p></o:p></p></div></div></blockquote><div><p class=MsoNormal>where attributes 'ext_code' and 'health_monitor_id' are optional. <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>Ilya<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal>2012/11/27 Leon Cui <<a href="mailto:lcui@vmware.com" target="_blank">lcui@vmware.com</a>><o:p></o:p></p><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#003300'>Youcef/Peter,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#003300'>Yes it sounds good to me.</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#003300'> </span><o:p></o:p></p><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#003300'>Thanks</span><o:p></o:p></p></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#003300'>Leon</span><o:p></o:p></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><b><span lang=ZH-CN style='font-size:10.0pt'>发件人</span></b><b><span style='font-size:10.0pt'>:</span></b><span style='font-size:10.0pt'> Youcef Laribi [mailto:<a href="mailto:Youcef.Laribi@eu.citrix.com" target="_blank">Youcef.Laribi@eu.citrix.com</a>] <br><b><span lang=ZH-CN>发送时间</span>:</b> 2012<span lang=ZH-CN>年</span>11<span lang=ZH-CN>月</span>26<span lang=ZH-CN>日</span> 17:20</span><o:p></o:p></p><div><p class=MsoNormal><br><b><span lang=ZH-CN>收件人</span>:</b> OpenStack Development Mailing List<o:p></o:p></p></div><p class=MsoNormal><b><span lang=ZH-CN>主题</span>:</b> Re: [openstack-dev] <span lang=ZH-CN>答复</span>: [Quantum] [LBaaS] Health Monitor Failure Detection<o:p></o:p></p></div></div><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'>Hi Leon,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'>Yes, as Peter pointed out, user needs to know which health check has failed. Whether we want this information to appear in the existing <span lang=ZH-CN>“</span>GET /members/{member_id}<span lang=ZH-CN>” </span>or whether we want to have a new API for <span lang=ZH-CN>“</span>GET /members/{member_id}/details<span lang=ZH-CN>”</span>, I<span lang=ZH-CN>’</span>m fine with both. Currently however, we do not have <span lang=ZH-CN>“</span>/details<span lang=ZH-CN>”</span> sub-resource for any other resource (it<span lang=ZH-CN>’</span>s not a pattern we are following in the API), so I see introducing it just for this case may be an overkill.</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'>Thanks</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'>Youcef </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><a name="13b428dd1b574f5a_13b3f9a3f33dacc2__MailE"></a><span style='color:#1F497D'> </span><o:p></o:p></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><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"'> Mellquist, Peter [mailto:<a href="mailto:peter.mellquist@hp.com" target="_blank">peter.mellquist@hp.com</a>] <br><b>Sent:</b> Monday, November 26, 2012 2:58 PM<br><b>To:</b> OpenStack Development Mailing List<br><b>Subject:</b> Re: [openstack-dev] </span><span lang=ZH-CN style='font-size:10.0pt'>答复</span><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>: [Quantum] [LBaaS] Health Monitor Failure Detection</span><o:p></o:p></p></div></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'>Hi Leon,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'>The admin / user needs to know the specific health monitor which has failed so that they may take appropriate action to fix the member with the failed health check. If we not provide this detail, then the root cause on why the member has gone <span lang=ZH-CN>“</span>inactive<span lang=ZH-CN>”</span> will be unknown. Most JSON parsers allow parsing fields of interest and ignoring others so it should not be an issue for clients who are not interested in health monitors but <span lang=ZH-CN>…</span> that being said as we continue to work out important use cases, like this one, we may find that a refactoring of the REST resources may be needed. I see this as an iterative process.</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'>Thanks,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'>Peter.</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'> </span><o:p></o:p></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><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"'> Leon Cui [<a href="mailto:lcui@vmware.com" target="_blank">mailto:lcui@vmware.com</a>] <br><b>Sent:</b> Thursday, November 22, 2012 4:49 PM<br><b>To:</b> 'OpenStack Development Mailing List'<br><b>Subject:</b> [openstack-dev] </span><span lang=ZH-CN style='font-size:10.0pt'>答复</span><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>: [Quantum] [LBaaS] Health Monitor Failure Detection</span><o:p></o:p></p></div></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#993366'>Hi Peter and Youcef,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#993366'>Showing the health monitor status details in member might be too much for user.  In most time, user (and Mgmt UI) might be only interested in the overall pool/member status unless user wants to drill down to the details.  My concern is that we are adding more and more details in the top resource GET API which add more payload and complex to parse. I<span lang=ZH-CN>’</span>m wondering if we can add a separate API GET /resource/<resource_id>/details which can expose more detailed information for each resource.</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#993366'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#993366'>Just my 2 cents.</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#993366'> </span><o:p></o:p></p><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#993366'>Thanks</span><o:p></o:p></p></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#993366'>Leon</span><o:p></o:p></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><b><span lang=ZH-CN style='font-size:10.0pt'>发件人</span></b><b><span style='font-size:10.0pt'>:</span></b><span style='font-size:10.0pt'> Mellquist, Peter [<a href="mailto:peter.mellquist@hp.com" target="_blank">mailto:peter.mellquist@hp.com</a>] <br><b><span lang=ZH-CN>发送时间</span>:</b> 2012<span lang=ZH-CN>年</span>11<span lang=ZH-CN>月</span>22<span lang=ZH-CN>日</span> 5:06<br><b><span lang=ZH-CN>收件人</span>:</b> OpenStack Development Mailing List<br><b><span lang=ZH-CN>主题</span>:</b> Re: [openstack-dev] [Quantum] [LBaaS] Health Monitor Failure Detection</span><o:p></o:p></p></div></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'>Hi Youcef,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'>This looks like it will work fine. I like this since it shows the state of all the monitors for the member.</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'>Peter.</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'> </span><o:p></o:p></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><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"'> Youcef Laribi [<a href="mailto:Youcef.Laribi@eu.citrix.com" target="_blank">mailto:Youcef.Laribi@eu.citrix.com</a>] <br><b>Sent:</b> Wednesday, November 21, 2012 12:34 PM<br><b>To:</b> OpenStack Development Mailing List<br><b>Subject:</b> Re: [openstack-dev] [Quantum] [LBaaS] Health Monitor Failure Detection</span><o:p></o:p></p></div></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'>Hi Peter,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'>Yes you bring up a good point that we missed in the API. Usually in LB products when user displays the member, then the monitors used to monitor the member and their status are also displayed. We can adopt the same approach as follows:</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier;color:#004080'>"member"</span><span lang=EN style='font-size:10.0pt;font-family:Courier'> :  {</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>                <span style='color:#004080'>"id"</span>:<span style='color:#004080'>"c57f581b-c834-408f-93fa-30543cf30618"</span>,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>                <span style='color:#004080'>"tenant_id"</span>: <span style='color:#004080'>"310df60f-2a10-4ee5-9554-98393092194c"</span>,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>                <span style='color:#004080'>"pool_id"</span>: <span style='color:#004080'>"cfc6589d-f949-4c66-99d2-c2da56ef3764"</span>,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>                <span style='color:#004080'>"address"</span>: <span style='color:#004080'>"192.168.224.31"</span>,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>                <span style='color:#004080'>"port"</span>: <span style='color:#0080C0'>8080</span>,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>               <span style='color:#004080'>"weight"</span> : <span style='color:#0080C0'>1</span>,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>                <span style='color:#004080'>"admin_state_up"</span> : <b><span style='color:teal'>true</span></b>,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>                <span style='color:#004080'>"status"</span> : <span style='color:#004080'>"INACTIVE",</span></span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier;color:#004080'>                "health_monitors_status"</span><span lang=EN style='font-size:10.0pt;font-family:Courier'> : [</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>                     {</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>                        <span style='color:#004080'>"health_monitor_id" : "f3eeab00-8367-4524-b662-55e64d4cacb5",</span></span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>                        <span style='color:#004080'>"status" : "FAIL"</span></span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>                     },</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>                     {</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>                        <span style='color:#004080'>"health_monitor_id" : "</span></span><span style='font-size:10.0pt;font-family:Courier;color:#004080'>70995ff0-341a-11e2-81c1-0800200c9a66</span><span lang=EN style='font-size:10.0pt;font-family:Courier;color:#004080'>",</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>                        <span style='color:#004080'>"status" : "SUCCESS"</span></span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>                     }</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>                ]</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>              }</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'>Would this  be acceptable?</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'>Youcef</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'> </span><o:p></o:p></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><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"'> Mellquist, Peter [<a href="mailto:peter.mellquist@hp.com" target="_blank">mailto:peter.mellquist@hp.com</a>] <br><b>Sent:</b> Wednesday, November 21, 2012 11:17 AM<br><b>To:</b> OpenStack Development Mailing List<br><b>Subject:</b> [openstack-dev] Quantum LBaaS Health Monitor Failure Detection</span><o:p></o:p></p></div></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Hi LBaaS<span lang=ZH-CN>’</span>ers,<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>With the current capability to associate multiple health monitors with a pool, it does not seem possible to see which specific health monitor has detected an issue. For example, If I have a PING and HTTP monitor and the HTTP monitor fails how can the user or admin have visibility into the specific failure?<o:p></o:p></p><p><span lang=EN style='font-family:"Arial","sans-serif"'>“When a pool has several monitors associated with it, each member of the pool is monitored by all these monitors. If any monitor declares the member as unhealthy, then the member status is changed to INACTIVE and the member won't participate in its pool's load balancing. In other words, ALL monitors must declare the member to be healthy for it to stay ACTIVE. “</span><o:p></o:p></p><p>Member status changing to INACTIVE does not describe the reason why.  Would  it make sense to have a member status reason with the reference to the health monitor id in this case? We could then see which health monitor is failing and allow the user or admin to take appropriate action.<o:p></o:p></p><p> <o:p></o:p></p><p>Peter.<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier;color:#004080'>"member"</span><span lang=EN style='font-size:10.0pt;font-family:Courier'> :  {</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>                <span style='color:#004080'>"id"</span>:<span style='color:#004080'>"c57f581b-c834-408f-93fa-30543cf30618"</span>,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>                <span style='color:#004080'>"tenant_id"</span>: <span style='color:#004080'>"310df60f-2a10-4ee5-9554-98393092194c"</span>,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>                <span style='color:#004080'>"pool_id"</span>: <span style='color:#004080'>"cfc6589d-f949-4c66-99d2-c2da56ef3764"</span>,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>                <span style='color:#004080'>"address"</span>: <span style='color:#004080'>"192.168.224.31"</span>,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>                <span style='color:#004080'>"port"</span>: <span style='color:#0080C0'>8080</span>,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>               <span style='color:#004080'>"weight"</span> : <span style='color:#0080C0'>1</span>,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>                <span style='color:#004080'>"admin_state_up"</span> : <b><span style='color:teal'>true</span></b>,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>                <span style='color:#004080'>"status"</span> : <span style='color:#004080'>"INACTIVE",</span></span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier;color:#004080'>                "status_reason"</span><span lang=EN style='font-size:10.0pt;font-family:Courier'> : <span style='color:#004080'>"f3eeab00-8367-4524-b662-55e64d4cacb5"</span></span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>              }<span style='color:#1F497D'>                                             </span></span><o:p></o:p></p><p> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>{</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>    <span style='color:#004080'>"health_monitor"</span> :</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>      {</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>         <span style='color:#004080'>"id"</span> : <span style='color:#004080'>"f3eeab00-8367-4524-b662-55e64d4cacb5"</span>,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>         <span style='color:#004080'>"type"</span> : <span style='color:#004080'>"HTTP"</span>,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>         <span style='color:#004080'>"delay"</span> : <span style='color:#0080C0'>20</span>,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>         <span style='color:#004080'>"timeout"</span>: <span style='color:#0080C0'>10</span>,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>         <span style='color:#004080'>"max_retries"</span>: <span style='color:#0080C0'>3</span>,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>         <span style='color:#004080'>"http_method"</span> : <span style='color:#004080'>"GET"</span>,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>         <span style='color:#004080'>"url_path"</span> : <span style='color:#004080'>"/"</span>,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>         <span style='color:#004080'>"expected_codes"</span> : <span style='color:#004080'>"200,202"</span>,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>         <span style='color:#004080'>"admin_state_up"</span>: <b><span style='color:teal'>true</span></b>,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>         <span style='color:#004080'>"status"</span>: <span style='color:#004080'>"ACTIVE"</span></span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>      }</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'>}</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#F3F5F7'><span lang=EN style='font-size:10.0pt;font-family:Courier'> </span><o:p></o:p></p><p> <o:p></o:p></p><p><span lang=EN style='font-family:"Arial","sans-serif"'> </span><o:p></o:p></p><p><span lang=EN style='font-family:"Arial","sans-serif"'> </span><o:p></o:p></p><p><span lang=EN style='font-family:"Arial","sans-serif"'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div></div></div></div><p class=MsoNormal style='margin-bottom:12.0pt'><br>_______________________________________________<br>OpenStack-dev mailing list<br><a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.org</a><br><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div></div></body></html>