Add deletion support to importer-based datasync
This commit is contained in:
parent
50c3c3c27f
commit
84ef87d183
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue