-# Copyright (c) 2009, 2010, 2011 Nicira Networks
+# Copyright (c) 2009, 2010, 2011 Nicira, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
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."""
json["version"] = self.version
return json
+ def copy(self):
+ return DbSchema.from_json(self.to_json())
+
def __follow_ref_table(self, column, base, base_name):
if not base or base.type != types.UuidType or not base.ref_table_name:
return
# error.
column.persistent = True
+
class IdlSchema(DbSchema):
def __init__(self, name, version, tables, idlPrefix, idlHeader):
DbSchema.__init__(self, name, version, tables)
return IdlSchema(schema.name, schema.version, schema.tables,
idlPrefix, idlHeader)
+
def column_set_from_json(json, columns):
if json is None:
return tuple(columns)
raise error.Error("array of distinct column names expected", json)
return tuple([columns[column_name] for column_name in json])
+
class TableSchema(object):
def __init__(self, name, columns, mutable=True, max_rows=sys.maxint,
is_root=True, indexes=[]):
return json
+
class ColumnSchema(object):
def __init__(self, name, mutable, persistent, type_):
self.name = name
if not self.persistent:
json["ephemeral"] = True
return json
-