Changed JSON fields on mutable objects in ActionLog object
Now is able partial update of additional_info (dict) field. Change-Id: I7ab2bdbd9c155d4d9926da9a011786a8c207d770 Partial-Bug: 1482658
This commit is contained in:
parent
cf3d9641a2
commit
a5f7684907
|
@ -16,6 +16,7 @@ from sqlalchemy import Boolean
|
|||
from sqlalchemy import Column
|
||||
from sqlalchemy import DateTime
|
||||
from sqlalchemy import Enum
|
||||
from sqlalchemy.ext.mutable import MutableDict
|
||||
from sqlalchemy import Integer
|
||||
from sqlalchemy import String
|
||||
|
||||
|
@ -39,6 +40,10 @@ class ActionLog(Base):
|
|||
start_timestamp = Column(DateTime, nullable=False)
|
||||
end_timestamp = Column(DateTime, nullable=True)
|
||||
is_sent = Column(Boolean, default=False)
|
||||
additional_info = Column(JSON, nullable=False)
|
||||
additional_info = Column(
|
||||
MutableDict.as_mutable(JSON),
|
||||
default={},
|
||||
nullable=False
|
||||
)
|
||||
cluster_id = Column(Integer, nullable=True)
|
||||
task_uuid = Column(String(36), nullable=True)
|
||||
|
|
|
@ -45,12 +45,7 @@ class ActionLog(NailgunObject):
|
|||
|
||||
:return: returned by parent class method value
|
||||
"""
|
||||
|
||||
if data.get('additional_info'):
|
||||
add_info = dict(instance.additional_info)
|
||||
add_info.update(data['additional_info'])
|
||||
data['additional_info'] = add_info
|
||||
|
||||
instance.additional_info.update(data.pop('additional_info', {}))
|
||||
return super(ActionLog, cls).update(instance, data)
|
||||
|
||||
@classmethod
|
||||
|
|
|
@ -901,12 +901,9 @@ class TestActionLogObject(BaseIntegrationTest):
|
|||
'is_sent': False,
|
||||
'cluster_id': 1
|
||||
}
|
||||
|
||||
al = self._create_log_entry(object_data)
|
||||
|
||||
instance_to_validate = jsonutils.loads(objects.ActionLog.to_json(al))
|
||||
self.assertRaises(jsonschema.ValidationError, jsonschema.validate,
|
||||
instance_to_validate, action_log.schema)
|
||||
object_data, action_log.schema)
|
||||
self.assertRaises(ValueError, self._create_log_entry, object_data)
|
||||
|
||||
def test_get_by_uuid_method(self):
|
||||
object_data = {
|
||||
|
|
Loading…
Reference in New Issue