Revert "Remove failure version number"

This will likely cause a major version bump,
let's not do that right now, because well its not
really worth such a bump for just this change.

This reverts commit c560e71d91.

Change-Id: I3aafa02da91bc39456c705e9f05ec2de625f7e6c
This commit is contained in:
Joshua Harlow
2015-12-21 10:54:40 -08:00
parent 5dd8b28f03
commit c3674a03d7
2 changed files with 18 additions and 0 deletions

View File

@@ -152,6 +152,14 @@ class FailureObjectTestCase(test.TestCase):
}
self.assertRaises(exceptions.InvalidFormat,
failure.Failure.validate, f)
f = {
'exception_str': 'blah',
'traceback_str': 'blah',
'exc_type_names': ['Exception'],
'version': -1,
}
self.assertRaises(exceptions.InvalidFormat,
failure.Failure.validate, f)
def test_valid_from_dict_to_dict(self):
f = _captured_failure('Woot!')

View File

@@ -121,6 +121,7 @@ class Failure(mixins.StrMixin):
backport at https://pypi.python.org/pypi/traceback2/ to (hopefully)
simplify the methods and contents of this object...
"""
DICT_VERSION = 1
BASE_EXCEPTIONS = ('BaseException', 'Exception')
"""
@@ -136,6 +137,10 @@ class Failure(mixins.StrMixin):
"cause": {
"type": "object",
'properties': {
'version': {
"type": "integer",
"minimum": 0,
},
'exception_str': {
"type": "string",
},
@@ -462,6 +467,10 @@ class Failure(mixins.StrMixin):
def from_dict(cls, data):
"""Converts this from a dictionary to a object."""
data = dict(data)
version = data.pop('version', None)
if version != cls.DICT_VERSION:
raise ValueError('Invalid dict version of failure object: %r'
% version)
causes = data.get('causes')
if causes is not None:
data['causes'] = tuple(cls.from_dict(d) for d in causes)
@@ -473,6 +482,7 @@ class Failure(mixins.StrMixin):
'exception_str': self.exception_str,
'traceback_str': self.traceback_str,
'exc_type_names': list(self),
'version': self.DICT_VERSION,
'causes': [f.to_dict() for f in self.causes],
}