[ovs-dev] [python idl 16/16] python: Implement write support in Python IDL for OVSDB.
Ethan Jackson
ethan at nicira.com
Wed Sep 21 12:29:09 PDT 2011
The incremental looks fine to me.
Ethan
On Wed, Sep 21, 2011 at 10:24, Ben Pfaff <blp at nicira.com> wrote:
> On Tue, Sep 20, 2011 at 10:05:21PM -0700, Ethan Jackson wrote:
>> Offline we discussed that it might be simpler to just read the schema based on
>> its path according to the dirs module.
>
> OK, here's an incremental. It passes the unit tests but I still
> haven't tested ovs-xapi-sync or ovs-monitor-ipsec.
>
> diff --git a/debian/ovs-monitor-ipsec b/debian/ovs-monitor-ipsec
> index 4ef2141..15fbd3b 100755
> --- a/debian/ovs-monitor-ipsec
> +++ b/debian/ovs-monitor-ipsec
> @@ -33,10 +33,10 @@ import socket
> import subprocess
> import sys
>
> +import ovs.dirs
> from ovs.db import error
> from ovs.db import types
> import ovs.util
> -import ovs.vswitchd.ovsschema
> import ovs.daemon
> import ovs.db.idl
>
> @@ -457,7 +457,9 @@ def main(argv):
>
> remote = args[0]
>
> - idl = ovs.db.idl.Idl(remote, prune_schema(ovs.vswitchd.ovsschema.copy()))
> + schema_file = "%s/vswitch.ovsschema" % ovs.dirs.PKGDATADIR
> + schema = ovs.db.schema.DbSchema.from_json(ovs.json.from_file(schema_file))
> + idl = ovs.db.idl.Idl(remote, prune_schema(schema))
>
> ovs.daemon.daemonize()
>
> diff --git a/tests/ovsdb-idl.at b/tests/ovsdb-idl.at
> index d8ab68f..cce6197 100644
> --- a/tests/ovsdb-idl.at
> +++ b/tests/ovsdb-idl.at
> @@ -41,7 +41,7 @@ m4_define([OVSDB_CHECK_IDL_PY],
> AT_CHECK([ovsdb-server '-vPATTERN:console:ovsdb-server|%c|%m' --detach --pidfile=$PWD/pid --remote=punix:socket --unixctl=$PWD/unixctl db], [0], [ignore], [ignore])
> m4_if([$2], [], [],
> [AT_CHECK([ovsdb-client transact unix:socket $2], [0], [ignore], [ignore], [kill `cat pid`])])
> - AT_CHECK([$PYTHON $srcdir/test-ovsdb.py -t10 idl unix:socket $3],
> + AT_CHECK([$PYTHON $srcdir/test-ovsdb.py -t10 idl $srcdir/idltest.ovsschema unix:socket $3],
> [0], [stdout], [ignore], [kill `cat pid`])
> AT_CHECK([sort stdout | perl $srcdir/uuidfilt.pl]m4_if([$6],,, [[| $6]]),
> [0], [$4], [], [kill `cat pid`])
> diff --git a/tests/test-ovsdb.py b/tests/test-ovsdb.py
> index f9b0aa6..4b85c71 100644
> --- a/tests/test-ovsdb.py
> +++ b/tests/test-ovsdb.py
> @@ -302,8 +302,9 @@ def idl_set(idl, commands, step):
> sys.stdout.write("\n")
> sys.stdout.flush()
>
> -def do_idl(remote, *commands):
> - idl = ovs.db.idl.Idl(remote, idltest.schema)
> +def do_idl(schema_file, remote, *commands):
> + schema = ovs.db.schema.DbSchema.from_json(ovs.json.from_file(schema_file))
> + idl = ovs.db.idl.Idl(remote, schema)
>
> if commands:
> error, stream = ovs.stream.Stream.open_block(
> @@ -407,10 +408,10 @@ parse-table NAME OBJECT [DEFAULT-IS-ROOT]
> parse table NAME with info OBJECT
> parse-schema JSON
> parse JSON as an OVSDB schema, and re-serialize
> -idl SERVER [TRANSACTION...]
> - connect to SERVER and dump the contents of the database
> - as seen initially by the IDL implementation and after
> - executing each TRANSACTION. (Each TRANSACTION must modify
> +idl SCHEMA SERVER [TRANSACTION...]
> + connect to SERVER (which has the specified SCHEMA) and dump the
> + contents of the database as seen initially by the IDL implementation
> + and after executing each TRANSACTION. (Each TRANSACTION must modify
> the database or this command will hang.)
>
> The following options are also available:
> @@ -459,7 +460,7 @@ def main(argv):
> "parse-column": (do_parse_column, 2),
> "parse-table": (do_parse_table, (2, 3)),
> "parse-schema": (do_parse_schema, 1),
> - "idl": (do_idl, (1,))}
> + "idl": (do_idl, (2,))}
>
> command_name = args[0]
> args = args[1:]
> diff --git a/xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync b/xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync
> index 251a208..79e54d2 100755
> --- a/xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync
> +++ b/xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync
> @@ -32,6 +32,7 @@ import time
>
> import XenAPI
>
> +import ovs.dirs
> from ovs.db import error
> from ovs.db import types
> import ovs.util
> @@ -255,7 +256,9 @@ def main(argv):
> sys.exit(1)
>
> remote = args[0]
> - idl = ovs.db.idl.Idl(remote, prune_schema(ovs.vswitchd.ovsschema.copy()))
> + schema_file = "%s/vswitch.ovsschema" % ovs.dirs.PKGDATADIR
> + schema = ovs.db.schema.DbSchema.from_json(ovs.json.from_file(schema_file))
> + idl = ovs.db.idl.Idl(remote, prune_schema(schema))
>
> ovs.daemon.daemonize()
>
>
More information about the dev
mailing list