Found a rather simple solution
... to "How do I ensure the integration tests can be run on any VM"... we host the images for them ourselves.
Adding snapshotDiff factory to encapsulate the steps of creating a diff from two snapshots

Updating imageController to have separate methods for creating Snapshot or Diff, as the files are saved on different paths