Add deletion support to importer-based datasync

This commit is contained in:
Lance Edgar 2016-03-23 23:58:49 -05:00
parent 50c3c3c27f
commit 84ef87d183

View file

@ -91,7 +91,7 @@ class DataSyncImportConsumer(DataSyncConsumer):
importer = self.importers.get(change.payload_type)
if importer:
if change.deletion:
raise NotImplementedError
self.process_deletion(session, importer, change)
else:
self.process_change(session, importer, change)
@ -113,6 +113,20 @@ class DataSyncImportConsumer(DataSyncConsumer):
else:
importer.create_instance(key, host_data)
def process_deletion(self, session, importer, change):
"""
Attempt to invoke the importer, to delete a local record according to
the change involved.
"""
key = self.get_deletion_key(session, change)
local_record = importer.get_instance(key)
if local_record:
return importer.delete_instance(local_record)
return False
def get_deletion_key(self, session, change):
return (change.payload_key,)
def get_host_record(self, session, change):
"""
You must override this, to return a host record from the given