Merge "objects: declare some methods as static"
This commit is contained in:
@@ -96,13 +96,16 @@ class AbstractFieldType(six.with_metaclass(abc.ABCMeta, object)):
|
||||
|
||||
|
||||
class FieldType(AbstractFieldType):
|
||||
def coerce(self, obj, attr, value):
|
||||
@staticmethod
|
||||
def coerce(obj, attr, value):
|
||||
return value
|
||||
|
||||
def from_primitive(self, obj, attr, value):
|
||||
@staticmethod
|
||||
def from_primitive(obj, attr, value):
|
||||
return value
|
||||
|
||||
def to_primitive(self, obj, attr, value):
|
||||
@staticmethod
|
||||
def to_primitive(obj, attr, value):
|
||||
return value
|
||||
|
||||
def describe(self):
|
||||
@@ -204,7 +207,8 @@ class Field(object):
|
||||
|
||||
|
||||
class String(FieldType):
|
||||
def coerce(self, obj, attr, value):
|
||||
@staticmethod
|
||||
def coerce(obj, attr, value):
|
||||
# FIXME(danms): We should really try to avoid the need to do this
|
||||
if isinstance(value, (six.string_types, int, long, float,
|
||||
datetime.datetime)):
|
||||
@@ -215,13 +219,15 @@ class String(FieldType):
|
||||
|
||||
|
||||
class UUID(FieldType):
|
||||
def coerce(self, obj, attr, value):
|
||||
@staticmethod
|
||||
def coerce(obj, attr, value):
|
||||
# FIXME(danms): We should actually verify the UUIDness here
|
||||
return str(value)
|
||||
|
||||
|
||||
class Integer(FieldType):
|
||||
def coerce(self, obj, attr, value):
|
||||
@staticmethod
|
||||
def coerce(obj, attr, value):
|
||||
return int(value)
|
||||
|
||||
|
||||
@@ -231,12 +237,14 @@ class Float(FieldType):
|
||||
|
||||
|
||||
class Boolean(FieldType):
|
||||
def coerce(self, obj, attr, value):
|
||||
@staticmethod
|
||||
def coerce(obj, attr, value):
|
||||
return bool(value)
|
||||
|
||||
|
||||
class DateTime(FieldType):
|
||||
def coerce(self, obj, attr, value):
|
||||
@staticmethod
|
||||
def coerce(obj, attr, value):
|
||||
if isinstance(value, six.string_types):
|
||||
value = timeutils.parse_isotime(value)
|
||||
elif not isinstance(value, datetime.datetime):
|
||||
@@ -249,12 +257,14 @@ class DateTime(FieldType):
|
||||
def from_primitive(self, obj, attr, value):
|
||||
return self.coerce(obj, attr, timeutils.parse_isotime(value))
|
||||
|
||||
def to_primitive(self, obj, attr, value):
|
||||
@staticmethod
|
||||
def to_primitive(obj, attr, value):
|
||||
return timeutils.isotime(value)
|
||||
|
||||
|
||||
class IPV4Address(FieldType):
|
||||
def coerce(self, obj, attr, value):
|
||||
@staticmethod
|
||||
def coerce(obj, attr, value):
|
||||
try:
|
||||
return netaddr.IPAddress(value, version=4)
|
||||
except netaddr.AddrFormatError as e:
|
||||
@@ -263,12 +273,14 @@ class IPV4Address(FieldType):
|
||||
def from_primitive(self, obj, attr, value):
|
||||
return self.coerce(obj, attr, value)
|
||||
|
||||
def to_primitive(self, obj, attr, value):
|
||||
@staticmethod
|
||||
def to_primitive(obj, attr, value):
|
||||
return str(value)
|
||||
|
||||
|
||||
class IPV6Address(FieldType):
|
||||
def coerce(self, obj, attr, value):
|
||||
@staticmethod
|
||||
def coerce(obj, attr, value):
|
||||
try:
|
||||
return netaddr.IPAddress(value, version=6)
|
||||
except netaddr.AddrFormatError as e:
|
||||
@@ -277,7 +289,8 @@ class IPV6Address(FieldType):
|
||||
def from_primitive(self, obj, attr, value):
|
||||
return self.coerce(obj, attr, value)
|
||||
|
||||
def to_primitive(self, obj, attr, value):
|
||||
@staticmethod
|
||||
def to_primitive(obj, attr, value):
|
||||
return str(value)
|
||||
|
||||
|
||||
@@ -348,10 +361,12 @@ class Object(FieldType):
|
||||
self._obj_name)
|
||||
return value
|
||||
|
||||
def to_primitive(self, obj, attr, value):
|
||||
@staticmethod
|
||||
def to_primitive(obj, attr, value):
|
||||
return value.obj_to_primitive()
|
||||
|
||||
def from_primitive(self, obj, attr, value):
|
||||
@staticmethod
|
||||
def from_primitive(obj, attr, value):
|
||||
# FIXME(danms): Avoid circular import from base.py
|
||||
from nova.objects import base as obj_base
|
||||
return obj_base.NovaObject.obj_from_primitive(value, obj._context)
|
||||
@@ -361,7 +376,8 @@ class Object(FieldType):
|
||||
|
||||
|
||||
class NetworkModel(FieldType):
|
||||
def coerce(self, obj, attr, value):
|
||||
@staticmethod
|
||||
def coerce(obj, attr, value):
|
||||
if isinstance(value, network_model.NetworkInfo):
|
||||
return value
|
||||
elif isinstance(value, six.string_types):
|
||||
@@ -370,15 +386,18 @@ class NetworkModel(FieldType):
|
||||
else:
|
||||
raise ValueError(_('A NetworkModel is required here'))
|
||||
|
||||
def to_primitive(self, obj, attr, value):
|
||||
@staticmethod
|
||||
def to_primitive(obj, attr, value):
|
||||
return value.json()
|
||||
|
||||
def from_primitive(self, obj, attr, value):
|
||||
@staticmethod
|
||||
def from_primitive(obj, attr, value):
|
||||
return network_model.NetworkInfo.hydrate(value)
|
||||
|
||||
|
||||
class CIDR(FieldType):
|
||||
def coerce(self, obj, attr, value):
|
||||
@staticmethod
|
||||
def coerce(obj, attr, value):
|
||||
try:
|
||||
network, length = value.split('/')
|
||||
except (ValueError, AttributeError):
|
||||
|
||||
Reference in New Issue
Block a user