From e15ad8e6e3104a41fd3007a12a80a5b35ea71399 Mon Sep 17 00:00:00 2001 From: Isaku Yamahata Date: Thu, 13 Sep 2012 11:27:30 +0900 Subject: [PATCH] python/ovs/db/idl: make SchemaHelper accept schema in json form This is needed when using schema that was retrieved from ovsdb by get_schema method. Signed-off-by: Isaku Yamahata Signed-off-by: Ben Pfaff --- python/ovs/db/idl.py | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/python/ovs/db/idl.py b/python/ovs/db/idl.py index 5b06d910..5330cea6 100644 --- a/python/ovs/db/idl.py +++ b/python/ovs/db/idl.py @@ -1198,13 +1198,22 @@ class SchemaHelper(object): The location on disk of the schema used may be found in the 'schema_location' variable.""" - def __init__(self, location=None): - """Creates a new Schema object.""" + def __init__(self, location=None, schema_json=None): + """Creates a new Schema object. - if location is None: - location = "%s/vswitch.ovsschema" % ovs.dirs.PKGDATADIR + 'location' file path to ovs schema. None means default location + 'schema_json' schema in json preresentation in memory + """ + + if location and schema_json: + raise ValueError("both location and schema_json can't be " + "specified. it's ambiguous.") + if schema_json is None: + if location is None: + location = "%s/vswitch.ovsschema" % ovs.dirs.PKGDATADIR + schema_json = ovs.json.from_file(location) - self.schema_location = location + self.schema_json = schema_json self._tables = {} self._all = False @@ -1242,8 +1251,8 @@ class SchemaHelper(object): object based on columns registered using the register_columns() function.""" - schema = ovs.db.schema.DbSchema.from_json( - ovs.json.from_file(self.schema_location)) + schema = ovs.db.schema.DbSchema.from_json(self.schema_json) + self.schema_json = None if not self._all: schema_tables = {} -- 2.30.2