X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=python%2Fovs%2Fdb%2Ftypes.py;h=bd1c259cb5fd3769621277727ffa2642d70bc097;hb=67680b012be30d9c26eab999b83b08c6eb32dbd2;hp=a8a53dd010ed3c48bee76cb397241e5e55cfb88b;hpb=dae57238bc0ae2527b7d6f95482c5f17cba2e16e;p=sliver-openvswitch.git diff --git a/python/ovs/db/types.py b/python/ovs/db/types.py index a8a53dd01..bd1c259cb 100644 --- a/python/ovs/db/types.py +++ b/python/ovs/db/types.py @@ -1,4 +1,4 @@ -# Copyright (c) 2009, 2010, 2011 Nicira Networks +# Copyright (c) 2009, 2010, 2011, 2012 Nicira, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -282,11 +282,14 @@ class BaseType(object): else: return self.type.to_string() - def constraintsToEnglish(self, escapeLiteral=returnUnchanged): + def constraintsToEnglish(self, escapeLiteral=returnUnchanged, + escapeNumber=returnUnchanged): if self.enum: literals = [value.toEnglish(escapeLiteral) for value in self.enum.values] - if len(literals) == 2: + if len(literals) == 1: + english = 'must be %s' % (literals[0]) + elif len(literals) == 2: english = 'either %s or %s' % (literals[0], literals[1]) else: english = 'one of %s, %s, or %s' % (literals[0], @@ -294,20 +297,23 @@ class BaseType(object): literals[-1]) elif self.min is not None and self.max is not None: if self.type == IntegerType: - english = 'in range %s to %s' % (commafy(self.min), - commafy(self.max)) + english = 'in range %s to %s' % ( + escapeNumber(commafy(self.min)), + escapeNumber(commafy(self.max))) else: - english = 'in range %g to %g' % (self.min, self.max) + english = 'in range %s to %s' % ( + escapeNumber("%g" % self.min), + escapeNumber("%g" % self.max)) elif self.min is not None: if self.type == IntegerType: - english = 'at least %s' % commafy(self.min) + english = 'at least %s' % escapeNumber(commafy(self.min)) else: - english = 'at least %g' % self.min + english = 'at least %s' % escapeNumber("%g" % self.min) elif self.max is not None: if self.type == IntegerType: - english = 'at most %s' % commafy(self.max) + english = 'at most %s' % escapeNumber(commafy(self.max)) else: - english = 'at most %g' % self.max + english = 'at most %s' % escapeNumber("%g" % self.max) elif self.min_length != 0 and self.max_length != sys.maxint: if self.min_length == self.max_length: english = ('exactly %s characters long' @@ -446,6 +452,11 @@ class Type(object): def is_map(self): return self.value is not None + def is_smap(self): + return (self.is_map() + and self.key.type == StringType + and self.value.type == StringType) + def is_optional_pointer(self): return (self.is_optional() and not self.value and (self.key.type == StringType or self.key.ref_table_name)) @@ -537,9 +548,11 @@ class Type(object): plural = keyName + "s" return "set of %s%s" % (quantity, plural) - def constraintsToEnglish(self, escapeLiteral=returnUnchanged): + def constraintsToEnglish(self, escapeLiteral=returnUnchanged, + escapeNumber=returnUnchanged): constraints = [] - keyConstraints = self.key.constraintsToEnglish(escapeLiteral) + keyConstraints = self.key.constraintsToEnglish(escapeLiteral, + escapeNumber) if keyConstraints: if self.value: constraints.append('key %s' % keyConstraints) @@ -547,7 +560,8 @@ class Type(object): constraints.append(keyConstraints) if self.value: - valueConstraints = self.value.constraintsToEnglish(escapeLiteral) + valueConstraints = self.value.constraintsToEnglish(escapeLiteral, + escapeNumber) if valueConstraints: constraints.append('value %s' % valueConstraints)