diff --git a/swh/journal/direct_writer.py b/swh/journal/direct_writer.py --- a/swh/journal/direct_writer.py +++ b/swh/journal/direct_writer.py @@ -8,6 +8,7 @@ from kafka import KafkaProducer from swh.model.hashutil import DEFAULT_ALGORITHMS +from swh.model.model import BaseModel from .serializers import key_to_kafka, value_to_kafka @@ -62,6 +63,8 @@ return object_ def write_addition(self, object_type, object_): + if isinstance(object_, BaseModel): + object_ = object_.to_dict() topic = '%s.%s' % (self._prefix, object_type) key = self._get_key(object_type, object_) object_ = self._sanitize_object(object_type, object_) diff --git a/swh/journal/tests/test_write_replay.py b/swh/journal/tests/test_write_replay.py --- a/swh/journal/tests/test_write_replay.py +++ b/swh/journal/tests/test_write_replay.py @@ -30,10 +30,8 @@ for (obj_type, obj) in objects: obj = obj.copy() if obj_type == 'origin_visit': - origin_id = storage1.origin_add_one(obj.pop('origin')) - if 'visit' in obj: - del obj['visit'] - storage1.origin_visit_add(origin_id, **obj) + storage1.origin_add_one(obj['origin']) + storage1.origin_visit_upsert([obj]) else: method = getattr(storage1, obj_type + '_add') try: