def writelines(self, lines): currentMetadata = set(self.readlines()) newMetadata = set(lines) # Remove all items that do not exist in the new metadata toRemove = [self.METADATA_TAG_PREFIX + lvmTagEncode(item) for item in currentMetadata.difference(newMetadata)] # Add all missing items that do no exist in the old metadata toAdd = [self.METADATA_TAG_PREFIX + lvmTagEncode(item) for item in newMetadata.difference(currentMetadata)] if len(toAdd) == 0 and len(toRemove) == 0: return self.log.debug("Updating metadata adding=%s removing=%s", ", ".join(toAdd), ", ".join(toRemove)) lvm.changeVGTags(self._vgName, delTags=toRemove, addTags=toAdd)