ovsdb: Report the number of connections for inbound Managers.
authorBen Pfaff <blp@nicira.com>
Wed, 13 Jul 2011 23:08:37 +0000 (16:08 -0700)
committerBen Pfaff <blp@nicira.com>
Tue, 26 Jul 2011 23:50:09 +0000 (16:50 -0700)
Inbound managers (e.g. "ptcp:") can have multiple active connections, but
the database schema doesn't allow us to report the status of more than one
at a time.  This commit adds a status key-value pair that, when there is
more than one active connection, reports the number that are active.  This
at least helps to clarify the issue.

ovsdb/jsonrpc-server.c
ovsdb/jsonrpc-server.h
ovsdb/ovsdb-server.c
vswitchd/vswitch.xml

index 06e3acc..14dd425 100644 (file)
@@ -468,6 +468,8 @@ ovsdb_jsonrpc_session_get_status(const struct ovsdb_jsonrpc_remote *remote,
     status->sec_since_disconnect = rstats.msec_since_disconnect == UINT_MAX
         ? UINT_MAX : rstats.msec_since_disconnect / 1000;
 
+    status->n_connections = list_size(&remote->sessions);
+
     return true;
 }
 
index 1d612cd..1650448 100644 (file)
@@ -41,6 +41,7 @@ struct ovsdb_jsonrpc_remote_status {
     unsigned int sec_since_connect;
     unsigned int sec_since_disconnect;
     bool is_connected;
+    int n_connections;
 };
 bool ovsdb_jsonrpc_server_get_remote_status(
     const struct ovsdb_jsonrpc_server *, const char *target,
index e2fb958..1b8d0be 100644 (file)
@@ -499,6 +499,10 @@ update_remote_row(const struct ovsdb_row *row, struct ovsdb_txn *txn,
         values[n++] =
             xstrdup(ovs_retval_to_string(status.last_error));
     }
+    if (status.n_connections > 1) {
+        keys[n] = xstrdup("n_connections");
+        values[n++] = xasprintf("%d", status.n_connections);
+    }
     write_string_string_column(rw_row, "status", keys, values, n);
 }
 
index a9fa4cf..5b216a5 100644 (file)
             database (in seconds). Value is empty if manager has never
             disconnected.</dd>
         </dl>
+        <dl>
+          <dt><code>n_connections</code></dt>
+          <dd>
+            <p>
+              When <ref column="target"/> specifies a connection method that
+              listens for inbound connections (e.g. <code>ptcp:</code> or
+              <code>pssl:</code>) and more than one connection is actually
+              active, the value is the number of active connections.
+              Otherwise, this key-value pair is omitted.
+            </p>
+            <p>
+              When multiple connections are active, status columns and
+              key-value pairs (other than this one) report the status of one
+              arbitrarily chosen connection.
+            </p>
+          </dd>
+        </dl>
       </column>
     </group>
   </table>