[ovs-dev] [PATCH monitor_cond V4 00/17] Implement conditional monitoring

Liran Schour LIRANS at il.ibm.com
Fri Feb 19 21:53:50 UTC 2016


This series is also available at: https://github.com/liranschour/ovs.git
Branch monitor_cond and monitor_cond_ovn.

Liran Schour/Haifa/IBM at IBMIL wrote on 19/02/2016 11:47:25 PM:

> This patch series implements conditional monitoring by introducing an 
OVSDB
> RFC extension with 2 new JSON-RPC methods: "monitor_cond" and
> "monitor_cond_update". Specification of this extension is defined in the
> ovsdb-server (1) man page.
> Monitor2 is now merged into monitor_cond. A monitor_cond session 
> with an empty 
> condition, will behave exactly like monitor2 and will get update2 
> notifications
> on all rows.
> 
> Performance:
> JSON cache is enabled only for none-conditional monitoring or true 
conditons
> (explicit or implicit). Table JSON cache is enabled only for 
none-conditional
> tables or for tables with none or true  condition.
> Tables with conditon with only "==" or "includes" functions, which is 
the most
> common case in conditional monitoring, will track changes according 
> to condition
> clauses.
> By that we want to achieve insert of new row in O(#clauses) and 
composing
> update notification in O(#cahnges to be sent).
> Monior sessions with conditon with funcitons that adre different then 
boolean
> or "=="/"includes", we have no magic to do and we expect that 
computation will
> move from clients side to the server.
> 
> v3->v4:
> * Enable tracking of changes according to condition's clauses in 
> case of "==" condition
> * Enable table JSON cache for tables with true condition
> * Add test for conditional monitoring of multiple tables
> * Add remove clause API to ovsdb_idl to allow clients iterative workflow
> * flake8 fixes
> * On composing update on conditon update use ovsdb_row instead of 
> maintaing changes list
>   of ovsdb_monitor_row
> * Add condition utilities for clause tracking
> 
> v2-v3:
> * monitor_cond_update method receives a single json condition 
> * Support non-monitored columns in condition
> * Simplify IDL API for iteratively build condition by client
> * Bug fixes
> * Style issues
> 
> v1->v2:
> * Change monitor_cond_change to monitor_cond_update
> * monitor_cond_update spec allows now to change monitored columns 
> (unsupported)
> * Use new <json-value> as a session ID as a result of 
> monitor_cond_update command.
> * Clarifications in ovsdb-server(1) man page.
> * Bug fix in ovsdb_monitor_get_all_rows()
> * Fix style issues
> 
> Liran Schour (17):
>   ovsdb: create column index mapping between ovsdb row to monitor row
>   ovsdb: add conditions utilities to support monitor_cond
>   ovsdb: allow none monitored columns for condition evaluation
>   ovsdb: generate update notifications for monitor_cond session
>   ovsdb: enable JSON cache for none conditional monitored tables
>   ovsdb-client: support monitor-cond method
>   ovsdb: enable jsonrpc-server to service "monitor_cond_update" request
>   lib: add to ovsdb-idl monitor_id
>   lib: add monitor_cond_update API to C IDL lib
>   python: move Python idl to work with monitor_cond
>   tests: add testing for idl conditional monitoring
>   ovsdb: add FALSE mode for tables with false condition
>   ovsdb: adjust ovsdb_monitor_changes to hold rows by transaction id XOR
>     datum
>   ovsdb: Implement data structure to hold changed rows that matchs
>     condition's clauses
>   ovsdb: Add EQ_COND mode to ovsdb_monitor_table
>   ovsdb: Track changed rows by clauses match
>   ovsdb: Lazy cleanup of clause matched row changes
> 
>  NEWS                     |    3 +-
>  lib/ovsdb-idl-provider.h |   13 +
>  lib/ovsdb-idl.c          |  250 ++++++++++-
>  lib/ovsdb-idl.h          |   39 ++
>  ovsdb/condition.c        |  231 +++++++++-
>  ovsdb/condition.h        |   24 +
>  ovsdb/jsonrpc-server.c   |  217 +++++++--
>  ovsdb/jsonrpc-server.h   |    2 +-
>  ovsdb/monitor.c          | 1087 +++++++++++++++++++++++++++++++++++
> +++++++----
>  ovsdb/monitor.h          |   35 +-
>  ovsdb/ovsdb-client.1.in  |   37 +-
>  ovsdb/ovsdb-client.c     |   70 ++-
>  ovsdb/ovsdb-idlc.in      |  336 ++++++++++++++
>  ovsdb/ovsdb-server.1.in  |  230 +++++++++-
>  ovsdb/ovsdb-server.c     |   20 +-
>  python/ovs/db/data.py    |   16 +-
>  python/ovs/db/idl.py     |  176 +++++++-
>  tests/ovs-vswitchd.at    |    8 +-
>  tests/ovsdb-condition.at |   30 ++
>  tests/ovsdb-idl.at       |  243 ++++++++++-
>  tests/ovsdb-monitor.at   |  207 +++++++++
>  tests/test-ovsdb.c       |  221 +++++++++-
>  tests/test-ovsdb.py      |   27 ++
>  23 files changed, 3282 insertions(+), 240 deletions(-)
> 
> -- 
> 2.1.4
> 
> 





More information about the dev mailing list