X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=ovsdb%2FOVSDB.py;h=6e426e57183484625933a3204409a1d1944ae8d9;hb=3b2dd1619cec9128e863cce03435cec13f513240;hp=5297229ff8a6cb0a6a8365a42031bd129ee9f178;hpb=2e57b537305cbaa6f724a28957510a6d86aa2d0f;p=openvswitch diff --git a/ovsdb/OVSDB.py b/ovsdb/OVSDB.py index 5297229f..6e426e57 100644 --- a/ovsdb/OVSDB.py +++ b/ovsdb/OVSDB.py @@ -193,16 +193,28 @@ class Atom: elif self.type == 'uuid': return self.value.value +# Returns integer x formatted in decimal with thousands set off by commas. +def commafy(x): + return _commafy("%d" % x) +def _commafy(s): + if s.startswith('-'): + return '-' + _commafy(s[1:]) + elif len(s) <= 3: + return s + else: + return _commafy(s[:-3]) + ',' + _commafy(s[-3:]) + class BaseType: def __init__(self, type, enum=None, - refTable=None, + refTable=None, refType="strong", minInteger=None, maxInteger=None, minReal=None, maxReal=None, minLength=None, maxLength=None): self.type = type self.enum = enum self.refTable = refTable + self.refType = refType self.minInteger = minInteger self.maxInteger = maxInteger self.minReal = minReal @@ -221,17 +233,23 @@ class BaseType: enumType = Type(atomicType, None, 0, 'unlimited') enum = Datum.fromJson(enumType, enum) refTable = getMember(json, 'refTable', [unicode], description) + refType = getMember(json, 'refType', [unicode], description) + if refType == None: + refType = "strong" minInteger = getMember(json, 'minInteger', [int, long], description) maxInteger = getMember(json, 'maxInteger', [int, long], description) minReal = getMember(json, 'minReal', [int, long, float], description) maxReal = getMember(json, 'maxReal', [int, long, float], description) minLength = getMember(json, 'minLength', [int], description) maxLength = getMember(json, 'minLength', [int], description) - return BaseType(atomicType, enum, refTable, minInteger, maxInteger, minReal, maxReal, minLength, maxLength) + return BaseType(atomicType, enum, refTable, refType, minInteger, maxInteger, minReal, maxReal, minLength, maxLength) def toEnglish(self, escapeLiteral=returnUnchanged): if self.type == 'uuid' and self.refTable: - return escapeLiteral(self.refTable) + s = escapeLiteral(self.refTable) + if self.refType == 'weak': + s = "weak reference to " + s + return s else: return self.type @@ -246,13 +264,14 @@ class BaseType: ', '.join(literals[1:-1]), literals[-1]) elif self.minInteger != None and self.maxInteger != None: - return 'in range [%d,%d]' % (self.minInteger, self.maxInteger) + return 'in range %s to %s' % (commafy(self.minInteger), + commafy(self.maxInteger)) elif self.minInteger != None: - return 'at least %d' % self.minInteger + return 'at least %s' % commafy(self.minInteger) elif self.maxInteger != None: - return 'at most %d' % self.maxInteger + return 'at most %s' % commafy(self.maxInteger) elif self.minReal != None and self.maxReal != None: - return 'in range [%g, %g]' % (self.minReal, self.maxReal) + return 'in range %g to %g' % (self.minReal, self.maxReal) elif self.minReal != None: return 'at least %g' % self.minReal elif self.maxReal != None: