Clean driver_internal_info when changes nodes' driver
Because 'driver' field is able to be updated by using node-update, it's necessary to clean driver_internal_info. Also left the open possibility of changing driver and driver_internal_info at once. Implements: blueprint driver-internal-info Change-Id: I249c21800df854089b9e0db0ee08a11f53053cf2
This commit is contained in:
parent
418d9d17fa
commit
d1504d2569
@ -234,6 +234,10 @@ class Node(base.IronicObject):
|
||||
object, e.g.: Node(context)
|
||||
"""
|
||||
updates = self.obj_get_changes()
|
||||
if 'driver' in updates and 'driver_internal_info' not in updates:
|
||||
# Clean driver_internal_info when changes driver
|
||||
self.driver_internal_info = {}
|
||||
updates = self.obj_get_changes()
|
||||
self.dbapi.update_node(self.uuid, updates)
|
||||
self.obj_reset_changes()
|
||||
|
||||
|
@ -63,13 +63,18 @@ class TestNodeObject(base.DbTestCase):
|
||||
autospec=True) as mock_update_node:
|
||||
|
||||
n = objects.Node.get(self.context, uuid)
|
||||
self.assertEqual({"foo": "bar"}, n.driver_internal_info)
|
||||
n.properties = {"fake": "property"}
|
||||
n.driver = "fake-driver"
|
||||
n.save()
|
||||
|
||||
mock_get_node.assert_called_once_with(uuid)
|
||||
mock_update_node.assert_called_once_with(
|
||||
uuid, {'properties': {"fake": "property"}})
|
||||
uuid, {'properties': {"fake": "property"},
|
||||
'driver': 'fake-driver',
|
||||
'driver_internal_info': {}})
|
||||
self.assertEqual(self.context, n._context)
|
||||
self.assertEqual({}, n.driver_internal_info)
|
||||
|
||||
def test_refresh(self):
|
||||
uuid = self.fake_node['uuid']
|
||||
|
Loading…
x
Reference in New Issue
Block a user