Fix provision_updated_at deserialization

Fix deserializing the provision_updated_at field of nodes from string
to a datetime object.

Closes-Bug: #1287307
Change-Id: Ie87ee0631e75e7f98ba45c3a2d53921d1d3b6498
This commit is contained in:
Lucas Alvares Gomes 2014-03-03 18:45:38 +00:00
parent 76e6305386
commit c627ba3c46
2 changed files with 20 additions and 1 deletions
ironic
objects
tests/objects

@ -44,7 +44,7 @@ class Node(base.IronicObject):
'target_power_state': utils.str_or_none,
'provision_state': utils.str_or_none,
'provision_updated_at': utils.datetime_or_none,
'provision_updated_at': utils.datetime_or_str_or_none,
'target_provision_state': utils.str_or_none,
'maintenance': bool,

@ -13,11 +13,14 @@
# License for the specific language governing permissions and limitations
# under the License.
import datetime
import mock
from ironic.db import api as db_api
from ironic.db.sqlalchemy import models
from ironic import objects
from ironic.openstack.common import timeutils
from ironic.tests.db import base
from ironic.tests.db import utils
@ -81,6 +84,22 @@ class TestNodeObject(base.DbTestCase):
self.assertIsInstance(_get_db_node(), models.Node)
self.assertIsInstance(_convert_db_node(), objects.Node)
def test_objectify_deserialize_provision_updated_at(self):
dt = timeutils.isotime(datetime.datetime(2000, 1, 1, 0, 0))
self.fake_node['provision_updated_at'] = dt
def _get_db_node():
n = models.Node()
n.update(self.fake_node)
return n
@objects.objectify(objects.Node)
def _convert_db_node():
return _get_db_node()
self.assertIsInstance(_get_db_node(), models.Node)
self.assertIsInstance(_convert_db_node(), objects.Node)
def test_objectify_many(self):
def _get_db_nodes():
nodes = []