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."""
if (version is not None and
not re.match('[0-9]+\.[0-9]+\.[0-9]+$', version)):
- raise error.Error("schema version \"%s\" not in format x.y.z"
+ raise error.Error('schema version "%s" not in format x.y.z'
% version)
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, name):
parser = ovs.db.parser.Parser(json, "table schema for table %s" % name)
- columnsJson = parser.get("columns", [dict])
+ columns_json = parser.get("columns", [dict])
mutable = parser.get_optional("mutable", [bool], True)
max_rows = parser.get_optional("maxRows", [int])
is_root = parser.get_optional("isRoot", [bool], False)
elif max_rows <= 0:
raise error.Error("maxRows must be at least 1", json)
- if not columnsJson:
+ if not columns_json:
raise error.Error("table must have at least one column", json)
columns = {}
- for columnName, columnJson in columnsJson.iteritems():
- if columnName.startswith('_'):
- raise error.Error("names beginning with \"_\" are reserved",
- json)
- elif not ovs.db.parser.is_identifier(columnName):
- raise error.Error("name must be a valid id", json)
- columns[columnName] = ColumnSchema.from_json(columnJson,
- columnName)
+ for column_name, column_json in columns_json.iteritems():
+ _check_id(column_name, json)
+ columns[column_name] = ColumnSchema.from_json(column_json,
+ column_name)
indexes = []
for index_json in indexes_json:
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