On 6/30/25 4:58 PM, Dumitru Ceara wrote: > On 6/27/25 2:09 PM, Ilya Maximets wrote: >> Currently, there is no convenient way to know what are the constraints >> for a particular column in the server's schema in C IDL. This is >> a problem, because clients may want to know how many elements are >> allowed in a certain column. For example, we recently increased the >> allowed number of prefixes configured in the Flow_Table table in OVS, >> but the client (ovn-controller) has no good way to know how many >> prefixes are actually supported in the schema of the currently running >> ovsdb-server. The IDL's code is generated from one schema version, >> while the actual server may be using newer or older one. If the >> client specifies too many prefixes, the transaction will fail, and >> there is also no good way to tell from the ovn-controller why exactly >> transaction failed. >> >> Currently used solution is to create another database connection just >> to intercept schema changes and parse the schema JSON manually inside >> the ovn-controller: >> >> https://github.com/ovn-org/ovn/commit/89e43f7528b067b1bc9f6c5fd67857b39ebc518d >> >> While this approach works, it's not a clean solution. We have the >> server's schema on the CS level and we can provide the types to the >> application via IDL functions. This will allow ovn-controller to >> just use ovsrec_flow_table_prefixes_server_type(idl)->n_max instead >> of all the awkward schema parsing. >> >> Python IDL is more dynamic and has a different way of connecting >> where the user first obtains the schema and then initializes IDL >> with that schema. The parsed schema object with all the types is >> also available through the get_idl_schema() method. So, it is >> already possible to check the types there. >> >> Signed-off-by: Ilya Maximets <[email protected]> >> --- > > Hi Ilya, > >> NEWS | 4 +++ >> lib/ovsdb-cs.c | 64 +++++++++++++++++++++++++--------- >> lib/ovsdb-idl-provider.h | 3 +- >> lib/ovsdb-idl.c | 74 ++++++++++++++++++++++++++++++++++------ >> lib/ovsdb-idl.h | 3 ++ >> ovsdb/ovsdb-idlc.in | 12 +++++++ >> tests/ovsdb-idl.at | 10 +++--- >> tests/test-ovsdb.c | 33 +++++++++++++----- >> 8 files changed, 162 insertions(+), 41 deletions(-) >> >> diff --git a/NEWS b/NEWS >> index d7231fabc..7f2d3462a 100644 >> --- a/NEWS >> +++ b/NEWS >> @@ -8,6 +8,10 @@ Post-v3.5.0 >> * New debug appctl command 'dpdk/get-memzone-stats'. >> * Removed upper limit for the number of rx/tx descriptors >> (n_r/txq_desc). >> * OVS validated with DPDK 24.11.2. >> + - OVSDB-IDL: >> + * New functions <db>_<table>_<column>_server_type() that allow checking >> + the server-side type of a particular column. Can be used for >> checking >> + type constraints when the server schema is older or newer than >> client's. > > Nit (but I'm no native speaker so take this with a grain of salt): > s/than client's/than that of the client/. > > Otherwise the rest looks good to me, thanks for the nice addition! > > Acked-by: Dumitru Ceara <[email protected]>
Thanks! I adjusted the NEWS entry and applied the change. Best regards, Ilya Maximets. _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
