'Push the latest data in the volume to a remote destination.
This is a blocking API for now.
Only locally owned volumes (i.e. volumes whose ``uuid`` matches
this service\'s) can be pushed.
:param Volume volume: The volume to push.
:param IRemoteVolumeManager destination: The remote volume manager
to push to.
:raises ValueError: If the uuid of the volume is different than
our own; only locally-owned volumes can be pushed.'

def push(self, volume, destination):

    if (volume.node_id != self.node_id):
        raise ValueError()
    fs = volume.get_filesystem()
    getting_snapshots = destination.snapshots(volume)
    def got_snapshots(snapshots):
        with destination.receive(volume) as receiver:
            with fs.reader(snapshots) as contents:
                for chunk in iter((lambda : contents.read((1024 * 1024))), ''):
                    receiver.write(chunk)
    pushing = getting_snapshots.addCallback(got_snapshots)
    return pushing
