<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 12 (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;}
@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: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;}
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:"Times New Roman","serif";}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;}
@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 folks!<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">Changed the tags a bit because this is a discussion for all projects and dovetails with logging rationalization/standards/<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">At the Paris summit, we had a number of session on logging that kept circling back to Error Codes.  But, these codes would not be http codes, rather, as others
 have pointed out, codes related to the calling entities and referring entities and the actions that happened or didn’t.  Format suggestions were gathered from the Operators and from some senior developers.  The Logging Working Group is planning to put forth
 a spec for discussion on formats and standards before the Ops mid-cycle meetup.<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">Working from a Glance proposal on error codes:  https://review.openstack.org/#/c/127482/ and discussions with operators and devs, we have a strawman to propose. 
 We also have a number of requirements from Ops and some Devs.<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">Here is the basic idea:<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">Code for logs would have four segments: 
<o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:.5in"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Project                                 Vendor/Component      Error Catalog number     Criticality<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Def         [A-Z] [A-Z] [A-Z]               -              [{0-9}|{A-Z}][A-Z] -         [0000-9999]-                       [0-9]<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Ex.          CIN-                                       NA-                                        0001-                                     2                                             
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">                Cinder                                   NetApp                                                driver error no                  Criticality<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Ex.          GLA-                                      0A-                                         0051                                       3<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">                Glance                                  Api                                         error no                               Criticality                                             
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Three letters for project,  Either a two letter vendor code or a number and letter for 0+letter for internal component of project (like API=0A, Controller =0C,
 etc),  four digit error number which could be subsetted for even finer granularity, and a criticality number.<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">This is for logging purposes and tracking down root cause faster for operators, but if an error is generated, why can the same codes be used internally for
 the code as externally for the logs?  This also allows for a unique message to be associated with the error code that is more descriptive and that can be pre translated.  Again, for logging purposes, the error code would not be part of the message payload,
 but part of the headers.  Referrer IDs and other info would still be expected in the payload of the message and could include instance ids/names, NICs or VIFs, etc.  The message headers is code in Oslo.log and when using the Oslo.log library, will be easy
 to use.<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">Since this discussion came up, I thought I needed to get this info out to folks and advertise that anyone will be able to comment on the spec to drive it to
 agreement.  I will be  advertising it here and on Ops and Product-WG mailing lists.  I’d also like to invite anyone who want to participate in discussions to join them.  We’ll be starting a bi-weekly or weekly IRC meeting (also announced in the stated MLs)
 in February.<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">And please realize that other than Oslo.log, the changes to make the errors more useable will be almost entirely community created standards with community
 created tools to help enforce them.  None of which exist yet, FYI.<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">--RockyG<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"><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"><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"><o:p> </o:p></span></p>
<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""> Eugeniya Kudryashova [mailto:ekudryashova@mirantis.com]
<br>
<b>Sent:</b> Thursday, January 29, 2015 8:33 AM<br>
<b>To:</b> openstack-dev@lists.openstack.org<br>
<b>Subject:</b> [openstack-dev] [api][nova] Openstack HTTP error codes<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p style="margin:0in;margin-bottom:.0001pt"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">Hi, all</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt"><span style="font-size:18.0pt"><o:p> </o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">Openstack APIs interact with each other and external systems partially by passing of HTTP errors. The only valuable difference between types
 of exceptions is HTTP-codes, but current codes are generalized, so external system can’t distinguish what actually happened.
</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:18.0pt"><o:p> </o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">As an example two different failures below differs only by error message:</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:18.0pt"><o:p> </o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">request:</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">POST /v2/790f5693e97a40d38c4d5bfdc45acb09/servers HTTP/1.1</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">Host:
<a href="http://192.168.122.195:8774">192.168.122.195:8774</a></span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">X-Auth-Project-Id: demo</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">Accept-Encoding: gzip, deflate, compress</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">Content-Length: 189</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">Accept: application/json</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">User-Agent: python-novaclient</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">X-Auth-Token: 2cfeb9283d784cfba694f3122ef413bf</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">Content-Type: application/json</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:18.0pt"><o:p> </o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">{"server": {"name": "demo", "imageRef": "171c9d7d-3912-4547-b2a5-ea157eb08622", "key_name": "test", "flavorRef": "42", "max_count": 1, "min_count": 1, "security_groups": [{"name": "bar"}]}}</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">response:</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">    HTTP/1.1 400 Bad Request</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">Content-Length: 118</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">Content-Type: application/json; charset=UTF-8</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">X-Compute-Request-Id: req-a995e1fc-7ea4-4305-a7ae-c569169936c0</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">Date: Fri, 23 Jan 2015 10:43:33 GMT</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:18.0pt"><o:p> </o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">{"badRequest": {"message": "Security group bar not found for project 790f5693e97a40d38c4d5bfdc45acb09.", "code": 400}}</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:18.0pt"><o:p> </o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">and</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:18.0pt"><o:p> </o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">request:</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">POST /v2/790f5693e97a40d38c4d5bfdc45acb09/servers HTTP/1.1</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">Host:
<a href="http://192.168.122.195:8774">192.168.122.195:8774</a></span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">X-Auth-Project-Id: demo</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">Accept-Encoding: gzip, deflate, compress</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">Content-Length: 192</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">Accept: application/json</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">User-Agent: python-novaclient</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">X-Auth-Token: 24c0d30ff76c42e0ae160fa93db8cf71</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">Content-Type: application/json</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:18.0pt"><o:p> </o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">{"server": {"name": "demo", "imageRef": "171c9d7d-3912-4547-b2a5-ea157eb08622", "key_name": "foo", "flavorRef": "42", "max_count": 1, "min_count": 1, "security_groups": [{"name": "default"}]}}</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">response:</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">HTTP/1.1 400 Bad Request</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">Content-Length: 70</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">Content-Type: application/json; charset=UTF-8</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">X-Compute-Request-Id: req-87604089-7071-40a7-a34b-7bc56d0551f5</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">Date: Fri, 23 Jan 2015 10:39:43 GMT</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:18.0pt"><o:p> </o:p></span></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">{"badRequest": {"message": "Invalid key_name provided.", "code": 400}}</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:18.0pt"><o:p> </o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">The former specifies an incorrect security group name, and the latter an incorrect keypair name. And the problem is, that just looking at
 the response body and HTTP response code an external system can’t understand what exactly went wrong. And parsing of error messages here is not the way we’d like to solve this problem.
</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:18.0pt"><o:p> </o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">Another example for solving this problem is AWS EC2 exception codes [1]
</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:18.0pt"><o:p> </o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">So if we have some service based on Openstack projects it would be useful to have some concrete error codes(textual or numeric), which could
 allow to define what actually goes wrong and later correctly process obtained exception. These codes should be predefined for each exception, have documented structure and allow to parse exception correctly in each step of exception handling.
</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:18.0pt"><o:p> </o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">So I’d like to discuss implementing such codes and its usage in openstack projects.</span><span style="font-size:18.0pt"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:18.0pt"><br>
</span><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:black">[1] -
</span><span style="font-size:18.0pt"><a href="http://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:#1155CC">http://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html</span></a><o:p></o:p></span></p>
</div>
</div>
</div>
</body>
</html>