import ovs.db.parser
from ovs.db import types
+def _check_id(name, json):
+ if name.startswith('_'):
+ raise error.Error('names beginning with "_" are reserved', json)
+ elif not ovs.db.parser.is_identifier(name):
+ raise error.Error("name must be a valid id", json)
+
class DbSchema(object):
"""Schema for an OVSDB database."""
def from_json(json):
parser = ovs.db.parser.Parser(json, "database schema")
name = parser.get("name", ['id'])
- version = parser.get_optional("version", [unicode])
- parser.get_optional("cksum", [unicode])
+ version = parser.get_optional("version", [str, unicode])
+ parser.get_optional("cksum", [str, unicode])
tablesJson = parser.get("tables", [dict])
parser.finish()
tables = {}
for tableName, tableJson in tablesJson.iteritems():
- if tableName.startswith('_'):
- raise error.Error('names beginning with "_" are reserved',
- json)
- elif not ovs.db.parser.is_identifier(tableName):
- raise error.Error("name must be a valid id", json)
+ _check_id(tableName, json)
tables[tableName] = TableSchema.from_json(tableJson, tableName)
return DbSchema(name, version, tables)
@staticmethod
def from_json(json):
parser = ovs.db.parser.Parser(json, "IDL schema")
- idlPrefix = parser.get("idlPrefix", [unicode])
- idlHeader = parser.get("idlHeader", [unicode])
+ idlPrefix = parser.get("idlPrefix", [str, unicode])
+ idlHeader = parser.get("idlHeader", [str, unicode])
subjson = dict(json)
del subjson["idlPrefix"]
columns = {}
for column_name, column_json in columns_json.iteritems():
- if column_name.startswith('_'):
- raise error.Error('names beginning with "_" are reserved',
- json)
- elif not ovs.db.parser.is_identifier(column_name):
- raise error.Error("name must be a valid id", json)
+ _check_id(column_name, json)
columns[column_name] = ColumnSchema.from_json(column_json,
column_name)
return json
class ColumnSchema(object):
- def __init__(self, name, mutable, persistent, type):
+ def __init__(self, name, mutable, persistent, type_):
self.name = name
self.mutable = mutable
self.persistent = persistent
- self.type = type
+ self.type = type_
self.unique = False
@staticmethod
parser = ovs.db.parser.Parser(json, "schema for column %s" % name)
mutable = parser.get_optional("mutable", [bool], True)
ephemeral = parser.get_optional("ephemeral", [bool], False)
- type = types.Type.from_json(parser.get("type", [dict, unicode]))
+ type_ = types.Type.from_json(parser.get("type", [dict, str, unicode]))
parser.finish()
- return ColumnSchema(name, mutable, not ephemeral, type)
+ return ColumnSchema(name, mutable, not ephemeral, type_)
def to_json(self):
json = {"type": self.type.to_json()}