Merge "Removes redundant object fields"
This commit is contained in:
commit
1feab84233
@ -12,9 +12,6 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from collections import OrderedDict
|
||||
|
||||
import netaddr
|
||||
from oslo_versionedobjects import fields
|
||||
import six
|
||||
|
||||
@ -59,6 +56,14 @@ ListOfObjectsField = fields.ListOfObjectsField
|
||||
VersionPredicateField = fields.VersionPredicateField
|
||||
FlexibleBooleanField = fields.FlexibleBooleanField
|
||||
DictOfListOfStringsField = fields.DictOfListOfStringsField
|
||||
IPAddressField = fields.IPAddressField
|
||||
IPV4AddressField = fields.IPV4AddressField
|
||||
IPV6AddressField = fields.IPV6AddressField
|
||||
IPNetworkField = fields.IPNetworkField
|
||||
IPV4NetworkField = fields.IPV4NetworkField
|
||||
IPV6NetworkField = fields.IPV6NetworkField
|
||||
AutoTypedField = fields.AutoTypedField
|
||||
BaseEnumField = fields.BaseEnumField
|
||||
|
||||
|
||||
# NOTE(danms): These are things we need to import for some of our
|
||||
@ -72,6 +77,12 @@ Set = fields.Set
|
||||
Dict = fields.Dict
|
||||
List = fields.List
|
||||
Object = fields.Object
|
||||
IPAddress = fields.IPAddress
|
||||
IPV4Address = fields.IPV4Address
|
||||
IPV6Address = fields.IPV6Address
|
||||
IPNetwork = fields.IPNetwork
|
||||
IPV4Network = fields.IPV4Network
|
||||
IPV6Network = fields.IPV6Network
|
||||
|
||||
|
||||
class Architecture(Enum):
|
||||
@ -580,44 +591,6 @@ class NotificationAction(Enum):
|
||||
valid_values=NotificationAction.ALL)
|
||||
|
||||
|
||||
class IPAddress(FieldType):
|
||||
@staticmethod
|
||||
def coerce(obj, attr, value):
|
||||
try:
|
||||
return netaddr.IPAddress(value)
|
||||
except netaddr.AddrFormatError as e:
|
||||
raise ValueError(six.text_type(e))
|
||||
|
||||
def from_primitive(self, obj, attr, value):
|
||||
return self.coerce(obj, attr, value)
|
||||
|
||||
@staticmethod
|
||||
def to_primitive(obj, attr, value):
|
||||
return str(value)
|
||||
|
||||
|
||||
class IPV4Address(IPAddress):
|
||||
@staticmethod
|
||||
def coerce(obj, attr, value):
|
||||
result = IPAddress.coerce(obj, attr, value)
|
||||
if result.version != 4:
|
||||
raise ValueError(_('Network "%(val)s" is not valid '
|
||||
'in field %(attr)s') %
|
||||
{'val': value, 'attr': attr})
|
||||
return result
|
||||
|
||||
|
||||
class IPV6Address(IPAddress):
|
||||
@staticmethod
|
||||
def coerce(obj, attr, value):
|
||||
result = IPAddress.coerce(obj, attr, value)
|
||||
if result.version != 6:
|
||||
raise ValueError(_('Network "%(val)s" is not valid '
|
||||
'in field %(attr)s') %
|
||||
{'val': value, 'attr': attr})
|
||||
return result
|
||||
|
||||
|
||||
class IPV4AndV6Address(IPAddress):
|
||||
@staticmethod
|
||||
def coerce(obj, attr, value):
|
||||
@ -629,33 +602,6 @@ class IPV4AndV6Address(IPAddress):
|
||||
return result
|
||||
|
||||
|
||||
class IPNetwork(IPAddress):
|
||||
@staticmethod
|
||||
def coerce(obj, attr, value):
|
||||
try:
|
||||
return netaddr.IPNetwork(value)
|
||||
except netaddr.AddrFormatError as e:
|
||||
raise ValueError(six.text_type(e))
|
||||
|
||||
|
||||
class IPV4Network(IPNetwork):
|
||||
@staticmethod
|
||||
def coerce(obj, attr, value):
|
||||
try:
|
||||
return netaddr.IPNetwork(value, version=4)
|
||||
except netaddr.AddrFormatError as e:
|
||||
raise ValueError(six.text_type(e))
|
||||
|
||||
|
||||
class IPV6Network(IPNetwork):
|
||||
@staticmethod
|
||||
def coerce(obj, attr, value):
|
||||
try:
|
||||
return netaddr.IPNetwork(value, version=6)
|
||||
except netaddr.AddrFormatError as e:
|
||||
raise ValueError(six.text_type(e))
|
||||
|
||||
|
||||
class NetworkModel(FieldType):
|
||||
@staticmethod
|
||||
def coerce(obj, attr, value):
|
||||
@ -699,45 +645,6 @@ class NonNegativeInteger(FieldType):
|
||||
return v
|
||||
|
||||
|
||||
class AutoTypedField(fields.Field):
|
||||
AUTO_TYPE = None
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
super(AutoTypedField, self).__init__(self.AUTO_TYPE, **kwargs)
|
||||
|
||||
|
||||
# FIXME(danms): Remove this after oslo.versionedobjects gets it
|
||||
class BaseEnumField(AutoTypedField):
|
||||
'''This class should not be directly instantiated. Instead
|
||||
subclass it and set AUTO_TYPE to be a SomeEnum()
|
||||
where SomeEnum is a subclass of Enum.
|
||||
'''
|
||||
def __init__(self, **kwargs):
|
||||
if self.AUTO_TYPE is None:
|
||||
raise exception.EnumFieldUnset(
|
||||
fieldname=self.__class__.__name__)
|
||||
|
||||
if not isinstance(self.AUTO_TYPE, Enum):
|
||||
raise exception.EnumFieldInvalid(
|
||||
typename=self.AUTO_TYPE.__class__.__name,
|
||||
fieldname=self.__class__.__name__)
|
||||
|
||||
super(BaseEnumField, self).__init__(**kwargs)
|
||||
|
||||
def __repr__(self):
|
||||
valid_values = self._type._valid_values
|
||||
args = {
|
||||
'nullable': self._nullable,
|
||||
'default': self._default,
|
||||
}
|
||||
if valid_values:
|
||||
args.update({'valid_values': valid_values})
|
||||
args = OrderedDict(sorted(args.items()))
|
||||
return '%s(%s)' % (self._type.__class__.__name__,
|
||||
','.join(['%s=%s' % (k, v)
|
||||
for k, v in args.items()]))
|
||||
|
||||
|
||||
class ArchitectureField(BaseEnumField):
|
||||
AUTO_TYPE = Architecture()
|
||||
|
||||
@ -866,34 +773,10 @@ class NotificationActionField(BaseEnumField):
|
||||
AUTO_TYPE = NotificationAction()
|
||||
|
||||
|
||||
class IPAddressField(AutoTypedField):
|
||||
AUTO_TYPE = IPAddress()
|
||||
|
||||
|
||||
class IPV4AddressField(AutoTypedField):
|
||||
AUTO_TYPE = IPV4Address()
|
||||
|
||||
|
||||
class IPV6AddressField(AutoTypedField):
|
||||
AUTO_TYPE = IPV6Address()
|
||||
|
||||
|
||||
class IPV4AndV6AddressField(AutoTypedField):
|
||||
AUTO_TYPE = IPV4AndV6Address()
|
||||
|
||||
|
||||
class IPNetworkField(AutoTypedField):
|
||||
AUTO_TYPE = IPNetwork()
|
||||
|
||||
|
||||
class IPV4NetworkField(AutoTypedField):
|
||||
AUTO_TYPE = IPV4Network()
|
||||
|
||||
|
||||
class IPV6NetworkField(AutoTypedField):
|
||||
AUTO_TYPE = IPV6Network()
|
||||
|
||||
|
||||
class ListOfIntegersField(AutoTypedField):
|
||||
AUTO_TYPE = List(fields.Integer())
|
||||
|
||||
|
@ -15,7 +15,6 @@
|
||||
import datetime
|
||||
|
||||
import iso8601
|
||||
import netaddr
|
||||
from oslo_versionedobjects import exception as ovo_exc
|
||||
import six
|
||||
|
||||
@ -315,49 +314,6 @@ class TestDateTime(TestField):
|
||||
tzinfo=iso8601.iso8601.Utc())))
|
||||
|
||||
|
||||
class TestIPAddress(TestField):
|
||||
def setUp(self):
|
||||
super(TestIPAddress, self).setUp()
|
||||
self.field = fields.IPAddressField()
|
||||
self.coerce_good_values = [('1.2.3.4', netaddr.IPAddress('1.2.3.4')),
|
||||
('::1', netaddr.IPAddress('::1')),
|
||||
(netaddr.IPAddress('::1'),
|
||||
netaddr.IPAddress('::1'))]
|
||||
self.coerce_bad_values = ['1-2', 'foo']
|
||||
self.to_primitive_values = [(netaddr.IPAddress('1.2.3.4'), '1.2.3.4'),
|
||||
(netaddr.IPAddress('::1'), '::1')]
|
||||
self.from_primitive_values = [('1.2.3.4',
|
||||
netaddr.IPAddress('1.2.3.4')),
|
||||
('::1',
|
||||
netaddr.IPAddress('::1'))]
|
||||
|
||||
|
||||
class TestIPAddressV4(TestField):
|
||||
def setUp(self):
|
||||
super(TestIPAddressV4, self).setUp()
|
||||
self.field = fields.IPV4AddressField()
|
||||
self.coerce_good_values = [('1.2.3.4', netaddr.IPAddress('1.2.3.4')),
|
||||
(netaddr.IPAddress('1.2.3.4'),
|
||||
netaddr.IPAddress('1.2.3.4'))]
|
||||
self.coerce_bad_values = ['1-2', 'foo', '::1']
|
||||
self.to_primitive_values = [(netaddr.IPAddress('1.2.3.4'), '1.2.3.4')]
|
||||
self.from_primitive_values = [('1.2.3.4',
|
||||
netaddr.IPAddress('1.2.3.4'))]
|
||||
|
||||
|
||||
class TestIPAddressV6(TestField):
|
||||
def setUp(self):
|
||||
super(TestIPAddressV6, self).setUp()
|
||||
self.field = fields.IPV6AddressField()
|
||||
self.coerce_good_values = [('::1', netaddr.IPAddress('::1')),
|
||||
(netaddr.IPAddress('::1'),
|
||||
netaddr.IPAddress('::1'))]
|
||||
self.coerce_bad_values = ['1.2', 'foo', '1.2.3.4']
|
||||
self.to_primitive_values = [(netaddr.IPAddress('::1'), '::1')]
|
||||
self.from_primitive_values = [('::1',
|
||||
netaddr.IPAddress('::1'))]
|
||||
|
||||
|
||||
class TestDict(TestField):
|
||||
def setUp(self):
|
||||
super(TestDict, self).setUp()
|
||||
@ -527,48 +483,6 @@ class TestNetworkModel(TestField):
|
||||
self.field.stringify(networkinfo))
|
||||
|
||||
|
||||
class TestIPNetwork(TestField):
|
||||
def setUp(self):
|
||||
super(TestIPNetwork, self).setUp()
|
||||
self.field = fields.Field(fields.IPNetwork())
|
||||
good = ['192.168.1.0/24', '0.0.0.0/0', '::1/128', '::1/64', '::1/0']
|
||||
self.coerce_good_values = [(x, netaddr.IPNetwork(x)) for x in good]
|
||||
self.coerce_bad_values = ['192.168.0.0/f', '192.168.0.0/foo',
|
||||
'::1/129', '192.168.0.0/-1']
|
||||
self.to_primitive_values = [(netaddr.IPNetwork(x), x)
|
||||
for x in good]
|
||||
self.from_primitive_values = [(x, netaddr.IPNetwork(x))
|
||||
for x in good]
|
||||
|
||||
|
||||
class TestIPV4Network(TestField):
|
||||
def setUp(self):
|
||||
super(TestIPV4Network, self).setUp()
|
||||
self.field = fields.Field(fields.IPV4Network())
|
||||
good = ['192.168.1.0/24', '0.0.0.0/0']
|
||||
self.coerce_good_values = [(x, netaddr.IPNetwork(x)) for x in good]
|
||||
self.coerce_bad_values = ['192.168.0.0/f', '192.168.0.0/foo',
|
||||
'::1/129', '192.168.0.0/-1']
|
||||
self.to_primitive_values = [(netaddr.IPNetwork(x), x)
|
||||
for x in good]
|
||||
self.from_primitive_values = [(x, netaddr.IPNetwork(x))
|
||||
for x in good]
|
||||
|
||||
|
||||
class TestIPV6Network(TestField):
|
||||
def setUp(self):
|
||||
super(TestIPV6Network, self).setUp()
|
||||
self.field = fields.Field(fields.IPV6Network())
|
||||
good = ['::1/128', '::1/64', '::1/0']
|
||||
self.coerce_good_values = [(x, netaddr.IPNetwork(x)) for x in good]
|
||||
self.coerce_bad_values = ['192.168.0.0/f', '192.168.0.0/foo',
|
||||
'::1/129', '192.168.0.0/-1']
|
||||
self.to_primitive_values = [(netaddr.IPNetwork(x), x)
|
||||
for x in good]
|
||||
self.from_primitive_values = [(x, netaddr.IPNetwork(x))
|
||||
for x in good]
|
||||
|
||||
|
||||
class TestNotificationPriority(TestField):
|
||||
def setUp(self):
|
||||
super(TestNotificationPriority, self).setUp()
|
||||
|
Loading…
x
Reference in New Issue
Block a user