<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"><base href="x-msg://578/"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">While it does make sense to move serialization closer to the models, I'm -1 on this particular approach.  The proposal increases the repetitive code by adding yet another place we must modify when changing the model or API.  We should be heading towards something that satisfies the DRY principle.<div><br></div><div>mark</div><div><br><div><div>On Jan 16, 2013, at 8:57 AM, Avishay Balderman <<a href="mailto:AvishayB@radware.com">AvishayB@radware.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div lang="EN-US" link="blue" vlink="purple" style="font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div class="WordSection1" style="page: WordSection1; "><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><u><span style="font-size: 14pt; font-family: Calibri, sans-serif; ">Background:<o:p></o:p></span></u></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; ">When a read operation is preformed via quantum API the result of the DB query is converted into python dictionary.<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; ">So we  have a function like this for each DB entity:<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); "> </span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; line-height: 10.9pt; "><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">    </span><b><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">def</span></b><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "> </span><b><span style="font-size: 9pt; font-family: Consolas; color: rgb(153, 0, 0); ">_make_router_dict</span></b><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">(</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(153, 153, 153); ">self</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">,</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "> </span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">router,</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "> </span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">fields<b>=</b></span><span style="font-size: 9pt; font-family: Consolas; color: rgb(153, 153, 153); ">None</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">):</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "><o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; line-height: 10.9pt; "><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">        </span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">res</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "> </span><b><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">=</span></b><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "> </span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">{</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(221, 17, 68); ">'id'</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">:</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "> </span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">router[</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(221, 17, 68); ">'id'</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">],</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "><o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; line-height: 10.9pt; "><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">               </span><span style="font-size: 9pt; font-family: Consolas; color: rgb(221, 17, 68); ">'name'</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">:</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "> </span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">router[</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(221, 17, 68); ">'name'</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">],</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "><o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; line-height: 10.9pt; "><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">               </span><span style="font-size: 9pt; font-family: Consolas; color: rgb(221, 17, 68); ">'tenant_id'</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">:</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "> </span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">router[</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(221, 17, 68); ">'tenant_id'</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">],</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "><o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; line-height: 10.9pt; "><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">               </span><span style="font-size: 9pt; font-family: Consolas; color: rgb(221, 17, 68); ">'admin_state_up'</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">:</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "> </span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">router[</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(221, 17, 68); ">'admin_state_up'</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">],</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "><o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; line-height: 10.9pt; "><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">               </span><span style="font-size: 9pt; font-family: Consolas; color: rgb(221, 17, 68); ">'status'</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">:</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "> </span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">router[</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(221, 17, 68); ">'status'</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">],</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "><o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; line-height: 10.9pt; "><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">               </span><span style="font-size: 9pt; font-family: Consolas; color: rgb(221, 17, 68); ">'external_gateway_info'</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">:</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "> </span><span style="font-size: 9pt; font-family: Consolas; color: rgb(153, 153, 153); ">None</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">}</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "><o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; line-height: 10.9pt; "><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">        </span><b><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">if</span></b><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "> </span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">router[</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(221, 17, 68); ">'gw_port_id'</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">]:</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "><o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; line-height: 10.9pt; "><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">            </span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">nw_id</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "> </span><b><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">=</span></b><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "> </span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">router<b>.</b>gw_port[</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(221, 17, 68); ">'network_id'</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">]</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "><o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; line-height: 10.9pt; "><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">            </span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">res[</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(221, 17, 68); ">'external_gateway_info'</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">]</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "> </span><b><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">=</span></b><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "> </span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">{</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(221, 17, 68); ">'network_id'</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">:</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "> </span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">nw_id}</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "><o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; line-height: 10.9pt; "><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">        </span><b><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">return</span></b><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "> </span><span style="font-size: 9pt; font-family: Consolas; color: rgb(153, 153, 153); ">self</span><b><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">.</span></b><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">_fields(res,</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "> </span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); ">fields)</span><span style="font-size: 9pt; font-family: Consolas; color: rgb(51, 51, 51); "><o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); "> </span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><u><span style="font-size: 14pt; font-family: Calibri, sans-serif; ">A generic approach:<o:p></o:p></span></u></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; ">The idea is to have ONE ”as_dict”  function that will get the DB object plus meta data that explains how to “dict it”.<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; "> </span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; ">What we gain here:<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt 0.5in; font-size: 11pt; font-family: Calibri, sans-serif; text-indent: -0.25in; "><span>1.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman'; ">      <span class="Apple-converted-space"> </span></span></span><span dir="LTR"></span>We have the mapping of the DB objects to dicts in one central location (See  the Appendix below)<o:p></o:p></div><div style="margin: 0in 0in 0.0001pt 0.5in; font-size: 11pt; font-family: Calibri, sans-serif; text-indent: -0.25in; "><span>2.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman'; ">      <span class="Apple-converted-space"> </span></span></span><span dir="LTR"></span>All “_make_XYZ_dict” functions are gone and no need to write them in the future<o:p></o:p></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; "> </span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; ">So we created this configuration and a generic function that does the “magic”.<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; ">We have also created 9 unit tests  that use the current quantum as_dict functions in one hand and the generic as_dict function on the other hand.<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; "> </span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; ">Code is here:<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; "><a href="https://www.dropbox.com/s/d9qx16r6ocp4veo/db2dict.py" style="color: purple; text-decoration: underline; "><span style="color: windowtext; ">https://www.dropbox.com/s/d9qx16r6ocp4veo/db2dict.py</span></a><span class="Apple-converted-space"> </span>(please ignore alignment issues – the code needs cleanup)<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; "> </span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; ">You can actually run it – just put it under quantum/db<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; "> </span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; "> </span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; ">Thanks<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; "> </span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; ">Avishay<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); "> </span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); "> </span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><b><u><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">Appendix<o:p></o:p></span></u></b></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><b><u><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); "> </span></u></b></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">MODEL_TO_API_MAP =  {<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); "> </span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">    "quantum.db.l3_db.Router":["id",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">                "name",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">                "tenant_id",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">                "admin_state_up",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">                "status",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">                {"external_gateway_info":{"gw_port":["network_id"]}}<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">               ],<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">    "quantum.db.models_v2.Network":["id",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">               "name",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">               "tenant_id",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">               "admin_state_up",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">               "status",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">               "shared",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">               {"subnets":["id"]},<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">               ],<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">    "quantum.db.models_v2.Subnet":["id",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">              "name",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">              "tenant_id",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">              "network_id",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">              "ip_version",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">              "cidr",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">              {"allocation_pools":[{"start":"first_ip"},{"end":"last_ip"}]},<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">              "gateway_ip",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">              "enable_dhcp",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">              {"dns_nameservers":["address"]},<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">              {"host_routes":{"routes":["destination","nexthop"]}}, <o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">              "shared",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">              "gateway_ip"<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">              ],<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">    "quantum.db.models_v2.Port":["id",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">            "name",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">            "tenant_id",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">            "network_id",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">            "admin_state_up",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">            "mac_address",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">            "status",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">            {"fixed_ips":["subnet_id","ip_address"]},<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">            "device_id",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">            "device_owner"<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">           ],<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">  "quantum.db.l3_db.FloatingIP" : ["id",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">           "tenant_id",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">           "floating_ip_address",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">           "floating_network_id",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">           "router_id",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">           {"port_id":"fixed_port_id"},<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">           "fixed_ip_address"<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">           ],<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">  "quantum.db.securitygroups_db.SecurityGroup" : ["id",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">           "tenant_id",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">           "name",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">           "description",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">           "external_id"<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">           ],<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">  "quantum.db.securitygroups_db.SecurityGroupRule" : ["id",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">           "tenant_id",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">           "external_id",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">           "security_group_id",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">           "ethertype",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">           "direction",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">           "protocol",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">           "port_range_min",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">           "port_range_max",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">           "source_ip_prefix",<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">           "source_group_id" <o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">           ]<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); "> </span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); ">}<o:p></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(84, 141, 212); "> </span></div></div>_______________________________________________<br>OpenStack-dev mailing list<br><a href="mailto:OpenStack-dev@lists.openstack.org" style="color: purple; text-decoration: underline; ">OpenStack-dev@lists.openstack.org</a><br><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" style="color: purple; text-decoration: underline; ">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br></div></blockquote></div><br></div></body></html>