<div dir="ltr">Hello Ben,<div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><pre class="gmail-m_4009646088118669252gmail-newpage" style="white-space:pre-wrap;font-size:13.3333px;margin-top:0px;margin-bottom:0px;color:rgb(0,0,0);font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial">The <monitor-requests> object maps the name of the table to be monitored </pre></div></div><div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><pre class="gmail-m_4009646088118669252gmail-newpage" style="white-space:pre-wrap;font-size:13.3333px;margin-top:0px;margin-bottom:0px;color:rgb(0,0,0);font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial">to an array of <monitor-request> objects. Each <monitor-request> is an </pre></div></div><div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><pre class="gmail-m_4009646088118669252gmail-newpage" style="white-space:pre-wrap;font-size:13.3333px;margin-top:0px;margin-bottom:0px;color:rgb(0,0,0);font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial">object with the following members:</pre></div></div><div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><pre class="gmail-m_4009646088118669252gmail-newpage" style="white-space:pre-wrap;font-size:13.3333px;margin-top:0px;margin-bottom:0px;color:rgb(0,0,0);font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial"> "columns": [<column>*] optional</pre></div></div><div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><pre class="gmail-m_4009646088118669252gmail-newpage" style="white-space:pre-wrap;font-size:13.3333px;margin-top:0px;margin-bottom:0px;color:rgb(0,0,0);font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial"> "select": <monitor-select> optional</pre></div></div></blockquote><div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><pre class="gmail-m_4009646088118669252gmail-newpage" style="white-space:pre-wrap;font-size:13.3333px;margin-top:0px;margin-bottom:0px;color:rgb(0,0,0);font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial"></pre></div><br></div><div><div style="text-align:start;text-indent:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px"><br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px">As the <monitor-requests> maps the table name to be monitored to an array of <monitor-request>, my interpretation of it is as "Table Name <--> Array of <monitor-request>" </div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px"><br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px">I am giving an example message is given below. </div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px"><br></div><div><div><span style="font-size:12.8px">{</span></div><div><span style="font-size:12.8px"> "id": "c5c09c07-11c1-449b-8f04-016fefe15844",</span></div><div><span style="font-size:12.8px"> "method": "monitor",</span></div><div><span style="font-size:12.8px"> "params": [</span></div><div><span style="font-size:12.8px"> "hardware_vtep",</span></div><div><span style="font-size:12.8px"> "91c9eed4-00bb-48e3-b2d9-51e0364bbdc2",</span></div><div><span style="font-size:12.8px"> {</span></div><div><span style="font-size:12.8px"> "Physical_Locator": [</span></div><div><span style="font-size:12.8px"> {</span></div><div><span style="font-size:12.8px"> "columns": [</span></div><div><span style="font-size:12.8px"> "dst_ip",</span></div><div><span style="font-size:12.8px"> "encapsulation_type",</span></div><div><span style="font-size:12.8px"> "_uuid"</span></div><div><span style="font-size:12.8px"> ],</span></div><div><span style="font-size:12.8px"> "select": {</span></div><div><span style="font-size:12.8px"> "initial": true,</span></div><div><span style="font-size:12.8px"> "insert": true,</span></div><div><span style="font-size:12.8px"> "delete": true,</span></div><div><span style="font-size:12.8px"> "modify": true</span></div><div><span style="font-size:12.8px"> }</span></div><div><span style="font-size:12.8px"> },</span></div><div><span style="font-size:12.8px"> {</span></div><div><span style="font-size:12.8px"> "columns": [</span></div><div><span style="font-size:12.8px"> "_uuid",</span></div><div><span style="font-size:12.8px"> "locators"</span></div><div><span style="font-size:12.8px"> ],</span></div><div><span style="font-size:12.8px"> "select": {</span></div><div><span style="font-size:12.8px"> "initial": true,</span></div><div><span style="font-size:12.8px"> "insert": true,</span></div><div><span style="font-size:12.8px"> "delete": true,</span></div><div><span style="font-size:12.8px"> "modify": true</span></div><div><span style="font-size:12.8px"> }</span></div><div><span style="font-size:12.8px"> }</span></div><div><span style="font-size:12.8px"> ]</span></div><div><span style="font-size:12.8px"> }</span></div><div><span style="font-size:12.8px"> ]</span></div><div><span style="font-size:12.8px">}</span></div></div><div><br></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">/anil.</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px"><br></span></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Mar 6, 2018 at 11:30 AM, Ben Pfaff <span dir="ltr"><<a href="mailto:blp@ovn.org" target="_blank">blp@ovn.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Mon, Mar 05, 2018 at 10:03:13PM -0800, Anil Jangam wrote:<br>
> Hi,<br>
><br>
> The RFC7047 states below about the Monitor request.<br>
><br>
> The request object has the<br>
><br>
> following members:<br>
><br>
> o "method": "monitor"<br>
><br>
> o "params": [<db-name>, <json-value>, <monitor-requests>]<br>
><br>
> o "id": <nonnull-json-value><br>
><br>
><br>
> The <json-value> parameter is used to match subsequent update<br>
><br>
> notifications (see below) to this request.<br>
><br>
><br>
> The <monitor-requests> object maps the name of the table to be monitored<br>
><br>
> to an array of <monitor-request> objects. Each <monitor-request> is an<br>
><br>
> object with the following members:<br>
><br>
> "columns": [<column>*] optional<br>
><br>
> "select": <monitor-select> optional<br>
><br>
> The columns, if present, define the columns within the table to be monitored.<br>
><br>
> <monitor-select> is an object with the following members:<br>
><br>
> "initial": <boolean> optional<br>
><br>
> "insert": <boolean> optional<br>
><br>
> "delete": <boolean> optional<br>
><br>
> "modify": <boolean> optional<br>
><br>
> The contents of this object specify how the columns or table are to be<br>
> monitored,<br>
><br>
> as explained in more detail below.<br>
><br>
><br>
> However, when I look at some of the legitimate samples of the Monitor<br>
> requests, they are encoded as below.<br>
><br>
> {<br>
> "id": "c5c09c07-11c1-449b-8f04-<wbr>016fefe15844",<br>
> "method": "monitor",<br>
> "params": [<br>
> "hardware_vtep",<br>
> "91c9eed4-00bb-48e3-b2d9-<wbr>51e0364bbdc2",<br>
> {<br>
> "Physical_Locator": {<br>
> "columns": [<br>
> "dst_ip",<br>
> "encapsulation_type",<br>
> "_uuid"<br>
> ],<br>
> "select": {<br>
> "initial": true,<br>
> "insert": true,<br>
> "delete": true,<br>
> "modify": true<br>
> }<br>
> },<br>
> "Physical_Locator_Set": {<br>
> "columns": [<br>
> "_uuid",<br>
> "locators"<br>
> ],<br>
> "select": {<br>
> "initial": true,<br>
> "insert": true,<br>
> "delete": true,<br>
> "modify": true<br>
> }<br>
> }<br>
> }<br>
> ]<br>
> }<br>
><br>
><br>
><br>
> If we go by the RFC encoding rules, "params" contains the<br>
> <monitor-requests>, which maps the "Table name" to an array of<br>
> <Monitor-request> object. So IMHO, the table names comes only once in the<br>
> message. Correct?<br>
<br>
</div></div>Yes. That's what I see above. The table names are Physical_Locator and<br>
Physical_Locator_Set, and each of them is mentioned once.<br>
In the <monitor-requests> object "Physical_Locator" is mapped to:<br>
<span class=""><br>
{<br>
"columns": [<br>
"dst_ip",<br>
"encapsulation_type",<br>
"_uuid"<br>
],<br>
"select": {<br>
"initial": true,<br>
"insert": true,<br>
"delete": true,<br>
"modify": true<br>
}<br>
}<br>
<br>
</span>and similarly for "Physical_Locator_Set".<br>
<span class=""><br>
> Also, it is explicitly mentioned that (as below) and it does NOT contain<br>
> the "Table name" in it.<br>
><br>
><br>
> Each <monitor-request> is an<br>
><br>
> object with the following members:<br>
><br>
> "columns": [<column>*] optional<br>
><br>
> "select": <monitor-select> optional<br>
><br>
><br>
> However, in the message payload that I have, shows the tuple, which<br>
> contains "Table : Columns : Select". This list of <monitor-request> constitute<br>
> the <monitor-requests> as per the RFC definition.<br>
><br>
> I see this as the discrepancy between the RFC definition and how the<br>
> message is actually sent by the controller.<br>
<br>
</span>I don't understand what discrepancy you see. Can you show an example,<br>
for example by providing how you think the above example should actually<br>
be encoded?<br>
</blockquote></div><br></div>