Add previous_status to SupportStatus
Add previous_status parameter to SupportStatus for better understanding of objects life cycles. bp deprecating-improvements Change-Id: I447d001ada9b0a0297de79704d91e263934a185f
This commit is contained in:
parent
25cff7933d
commit
5684f47af0
@ -20,7 +20,8 @@ SUPPORT_STATUSES = (UNKNOWN, SUPPORTED, PROTOTYPE, DEPRECATED,
|
|||||||
|
|
||||||
class SupportStatus(object):
|
class SupportStatus(object):
|
||||||
|
|
||||||
def __init__(self, status=SUPPORTED, message=None, version=None):
|
def __init__(self, status=SUPPORTED, message=None, version=None,
|
||||||
|
previous_status=None):
|
||||||
"""Use SupportStatus for current status of object.
|
"""Use SupportStatus for current status of object.
|
||||||
|
|
||||||
:param status: current status of object.
|
:param status: current status of object.
|
||||||
@ -29,18 +30,30 @@ class SupportStatus(object):
|
|||||||
doc generating.
|
doc generating.
|
||||||
:param message: specific status message for object.
|
:param message: specific status message for object.
|
||||||
"""
|
"""
|
||||||
if status in SUPPORT_STATUSES:
|
|
||||||
self.status = status
|
self.status = status
|
||||||
self.message = message
|
self.message = message
|
||||||
self.version = version
|
self.version = version
|
||||||
else:
|
self.previous_status = previous_status
|
||||||
|
|
||||||
|
self.validate()
|
||||||
|
|
||||||
|
def validate(self):
|
||||||
|
if (self.previous_status is not None and
|
||||||
|
not isinstance(self.previous_status, SupportStatus)):
|
||||||
|
raise ValueError(_('previous_status must be SupportStatus '
|
||||||
|
'instead of %s') % type(self.previous_status))
|
||||||
|
|
||||||
|
if self.status not in SUPPORT_STATUSES:
|
||||||
self.status = UNKNOWN
|
self.status = UNKNOWN
|
||||||
self.message = _("Specified status is invalid, defaulting to"
|
self.message = _("Specified status is invalid, defaulting to"
|
||||||
" %s") % UNKNOWN
|
" %s") % UNKNOWN
|
||||||
|
|
||||||
self.version = None
|
self.version = None
|
||||||
|
self.previous_status = None
|
||||||
|
|
||||||
def to_dict(self):
|
def to_dict(self):
|
||||||
return {'status': self.status,
|
return {'status': self.status,
|
||||||
'message': self.message,
|
'message': self.message,
|
||||||
'version': self.version}
|
'version': self.version,
|
||||||
|
'previous_status': self.previous_status.to_dict()
|
||||||
|
if self.previous_status is not None else None}
|
||||||
|
@ -2110,6 +2110,7 @@ class StackServiceTest(common.HeatTestCase):
|
|||||||
'status': 'SUPPORTED',
|
'status': 'SUPPORTED',
|
||||||
'version': None,
|
'version': None,
|
||||||
'message': None,
|
'message': None,
|
||||||
|
'previous_status': None
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2132,6 +2133,7 @@ class StackServiceTest(common.HeatTestCase):
|
|||||||
'status': 'SUPPORTED',
|
'status': 'SUPPORTED',
|
||||||
'version': None,
|
'version': None,
|
||||||
'message': None,
|
'message': None,
|
||||||
|
'previous_status': None
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
schema = self.eng.resource_schema(self.ctx, type_name=type_name)
|
schema = self.eng.resource_schema(self.ctx, type_name=type_name)
|
||||||
|
@ -11,6 +11,8 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
import six
|
||||||
|
|
||||||
from heat.engine import support
|
from heat.engine import support
|
||||||
from heat.tests import common
|
from heat.tests import common
|
||||||
|
|
||||||
@ -18,32 +20,72 @@ from heat.tests import common
|
|||||||
class SupportStatusTest(common.HeatTestCase):
|
class SupportStatusTest(common.HeatTestCase):
|
||||||
def test_valid_status(self):
|
def test_valid_status(self):
|
||||||
for sstatus in support.SUPPORT_STATUSES:
|
for sstatus in support.SUPPORT_STATUSES:
|
||||||
|
previous = support.SupportStatus(version='test_version')
|
||||||
status = support.SupportStatus(
|
status = support.SupportStatus(
|
||||||
status=sstatus,
|
status=sstatus,
|
||||||
message='test_message',
|
message='test_message',
|
||||||
version='test_version'
|
version='test_version',
|
||||||
|
previous_status=previous,
|
||||||
)
|
)
|
||||||
self.assertEqual(sstatus, status.status)
|
self.assertEqual(sstatus, status.status)
|
||||||
self.assertEqual('test_message', status.message)
|
self.assertEqual('test_message', status.message)
|
||||||
self.assertEqual('test_version', status.version)
|
self.assertEqual('test_version', status.version)
|
||||||
|
self.assertEqual(previous, status.previous_status)
|
||||||
self.assertEqual({
|
self.assertEqual({
|
||||||
'status': sstatus,
|
'status': sstatus,
|
||||||
'message': 'test_message',
|
'message': 'test_message',
|
||||||
'version': 'test_version'
|
'version': 'test_version',
|
||||||
|
'previous_status': {'status': 'SUPPORTED',
|
||||||
|
'message': None,
|
||||||
|
'version': 'test_version',
|
||||||
|
'previous_status': None},
|
||||||
}, status.to_dict())
|
}, status.to_dict())
|
||||||
|
|
||||||
def test_invalid_status(self):
|
def test_invalid_status(self):
|
||||||
status = support.SupportStatus(
|
status = support.SupportStatus(
|
||||||
status='RANDOM',
|
status='RANDOM',
|
||||||
message='test_message',
|
message='test_message',
|
||||||
version='test_version'
|
version='test_version',
|
||||||
|
previous_status=support.SupportStatus()
|
||||||
)
|
)
|
||||||
self.assertEqual(support.UNKNOWN, status.status)
|
self.assertEqual(support.UNKNOWN, status.status)
|
||||||
self.assertEqual('Specified status is invalid, defaulting to UNKNOWN',
|
self.assertEqual('Specified status is invalid, defaulting to UNKNOWN',
|
||||||
status.message)
|
status.message)
|
||||||
self.assertIsNone(status.version)
|
self.assertIsNone(status.version)
|
||||||
|
self.assertIsNone(status.previous_status)
|
||||||
self.assertEqual({
|
self.assertEqual({
|
||||||
'status': 'UNKNOWN',
|
'status': 'UNKNOWN',
|
||||||
'message': 'Specified status is invalid, defaulting to UNKNOWN',
|
'message': 'Specified status is invalid, defaulting to UNKNOWN',
|
||||||
'version': None
|
'version': None,
|
||||||
|
'previous_status': None,
|
||||||
}, status.to_dict())
|
}, status.to_dict())
|
||||||
|
|
||||||
|
def test_previous_status(self):
|
||||||
|
sstatus = support.SupportStatus(
|
||||||
|
status=support.DEPRECATED,
|
||||||
|
version='2015.2',
|
||||||
|
previous_status=support.SupportStatus(
|
||||||
|
status=support.SUPPORTED,
|
||||||
|
version='2015.1'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(support.DEPRECATED, sstatus.status)
|
||||||
|
self.assertEqual('2015.2', sstatus.version)
|
||||||
|
self.assertEqual(support.SUPPORTED, sstatus.previous_status.status)
|
||||||
|
self.assertEqual('2015.1', sstatus.previous_status.version)
|
||||||
|
|
||||||
|
self.assertEqual({'status': 'DEPRECATED',
|
||||||
|
'version': '2015.2',
|
||||||
|
'message': None,
|
||||||
|
'previous_status': {'status': 'SUPPORTED',
|
||||||
|
'version': '2015.1',
|
||||||
|
'message': None,
|
||||||
|
'previous_status': None}},
|
||||||
|
sstatus.to_dict())
|
||||||
|
|
||||||
|
def test_invalid_previous_status(self):
|
||||||
|
ex = self.assertRaises(ValueError,
|
||||||
|
support.SupportStatus, previous_status='YARRR')
|
||||||
|
self.assertEqual('previous_status must be SupportStatus '
|
||||||
|
'instead of %s' % str, six.text_type(ex))
|
||||||
|
Loading…
Reference in New Issue
Block a user