'Assert that Docker can run a container with a volume provisioned by
Flocker, shut down the container and then start a new container
with the same volume on the specified node.
:param cluster: The ``Cluster`` to talk to.
:param Node origin_node: Original node to start container on.
:param Node destination_node: Original node to start container on.
:return: ``Deferred`` that fires on assertion success, or failure.'

def _test_move(self, cluster, origin_node, destination_node):

    origin_client = get_docker_client(cluster, origin_node.public_address)
    data = 'hello    world'
    http_port = 8080
    volume_name = random_name(self)
    container_args = {'host_config': origin_client.create_host_config(binds=['{}:/data'.format(volume_name)], port_bindings={http_port: 0}), 'ports': [http_port]}
    cid = self.run_python_container(cluster, origin_node.public_address, container_args, SCRIPTS.child('datahttp.py'), [u'/data'], cleanup=False, client=origin_client)
    host_port = extract_external_port(origin_client, cid, http_port)
    d = post_http_server(self, origin_node.public_address, host_port, {'data': data})
    def posted(_):
        origin_client.remove_container(cid, force=True)
        new_cid = self.run_python_container(cluster, destination_node.public_address, container_args, SCRIPTS.child('datahttp.py'), [u'/data'])
        destination_client = get_docker_client(cluster, destination_node.public_address)
        host_port = extract_external_port(destination_client, new_cid, http_port)
        return host_port
    d.addCallback(posted)
    d.addCallback((lambda host_port: assert_http_server(self, destination_node.public_address, host_port, expected_response=data)))
    return d
