Ensures that task.message is of type unicode

It is likely that a task script might store the message in a format
which is not 'Text', like a json message. To ensure that we save the
task message in the appropriate format, we should typecast it.

partially implements bp async-glance-workers

Change-Id: I4eaebb75357d448d4ea458cd7fe5e4ac96b33ace
This commit is contained in:
Nikhil Komawar 2014-03-25 16:28:58 -04:00
parent 503be24afa
commit fcfb5d04cd
3 changed files with 15 additions and 2 deletions

View File

@ -19,6 +19,7 @@ import datetime
import uuid
from oslo.config import cfg
import six
from glance.common import exception
import glance.openstack.common.log as logging
@ -338,6 +339,17 @@ class Task(object):
def status(self):
return self._status
@property
def message(self):
return self._message
@message.setter
def message(self, message):
if message:
self._message = six.text_type(message)
else:
self._message = six.text_type('')
def _validate_task_status_transition(self, cur_status, new_status):
valid_transitions = {
'pending': ['processing', 'failure'],

View File

@ -99,6 +99,7 @@ class TestTasks(functional.FunctionalTest):
checked_keys = set([u'created_at',
u'id',
u'input',
u'message',
u'owner',
u'schema',
u'self',

View File

@ -317,7 +317,7 @@ class TestTaskFactory(test_utils.BaseTestCase):
self.assertIsNone(task.expires_at)
self.assertEqual(owner, task.owner)
self.assertEqual(task_input, task.task_input)
self.assertIsNone(task.message)
self.assertEqual(task.message, u'')
self.assertIsNone(task.result)
def test_new_task_invalid_type(self):
@ -424,7 +424,7 @@ class TestTask(test_utils.BaseTestCase):
self.task.succeed('{"location": "file://home"}')
self.assertEqual(self.task.status, 'success')
self.assertEqual(self.task.result, '{"location": "file://home"}')
self.assertEqual(self.task.message, None)
self.assertEqual(self.task.message, u'')
expected = (timeutils.utcnow() +
datetime.timedelta(hours=CONF.task.task_time_to_live))
self.assertEqual(