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)
|
importer = self.importers.get(change.payload_type)
|
||||||
if importer:
|
if importer:
|
||||||
if change.deletion:
|
if change.deletion:
|
||||||
raise NotImplementedError
|
self.process_deletion(session, importer, change)
|
||||||
else:
|
else:
|
||||||
self.process_change(session, importer, change)
|
self.process_change(session, importer, change)
|
||||||
|
|
||||||
|
@ -113,6 +113,20 @@ class DataSyncImportConsumer(DataSyncConsumer):
|
||||||
else:
|
else:
|
||||||
importer.create_instance(key, host_data)
|
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):
|
def get_host_record(self, session, change):
|
||||||
"""
|
"""
|
||||||
You must override this, to return a host record from the given
|
You must override this, to return a host record from the given
|
||||||
|
|
Loading…
Reference in a new issue