Take a loot at the contractor of IDL:

...
def __init__(self, remote, schema):
...


You can see that it gets schema as a parameter, which is actually
SchemaHelper object:

...
assert isinstance(schema, SchemaHelper)
...


This object holds the schema in a json string (schema_json) until you will
call its register_columns function which will build the tables.

You can see that the IDL, when first built, is getting the schema which
means that the OVSDB server was already connected beforehand to get it.

If you should like to know how this is done, you can look at Neutron's
idlutils.py file and check the get_schema_helper() function.

You can see that it gets the schema name as a parameter, connects to the
OVSDB, get the schema, close the connection and
return SchemaHelper object to be used for the above.


Note that after this patch will be committed, I'm going to send a patch to
Neutron to add another function similar to get_schema_helper() with the
the deference that it will get stream (open connection to the OVSDB server)
as a parameter and get the schema from the server without closing it when
done.

Ofer.








‫בתאריך שבת, 27 בפבר׳ 2016 ב-3:13 מאת ‪Ben Pfaff‬‏ <‪b...@ovn.org‬‏>:‬

> On Wed, Feb 24, 2016 at 08:39:02AM +0000, Ofer Ben-Yacov wrote:
> > The current implementation IDL is:
> > 1. connects to the OVSDB
> > 2. get the schema and
> > 3. disconnect
> > 4. connect again to work with the OVSDB server.
>
> I don't understand--where do you see that behavior?  I can't spot it
> anywhere.  The code I see in python/ovs/db/idl.py doesn't seem to do
> anything like it.
>
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to