'Create a probe.
:param IReactorTime reactor: Twisted Reactor.
:param IFlockerAPIV1Client control_service: Benchmark control service.
:param unicode name: Name for created container.
:param DockerImage image: Docker image for the container.
:param int volume_size: Size of created volume, in bytes.
:param unicode mountpoint: Mountpoint for created volume.
:return: Deferred firing with a new probe.'

@classmethod
def setup(cls, reactor, control_service, name, image, volume_size, mountpoint):

    d = control_service.list_nodes().addCallback(select_node)
    def parallel_setup(node):
        name = unicode(uuid4())
        container_setup = create_container(reactor, control_service, node.uuid, name, image)
        container_setup.addCallback(partial(delete_container, reactor, control_service))
        dataset_id = uuid4()
        dataset_setup = create_dataset(reactor, control_service, node.uuid, dataset_id, volume_size)
        d = gather_deferreds((container_setup, dataset_setup))
        d.addCallback((lambda results: results[1]))
        return d
    d.addCallback(parallel_setup)
    def create_probe(dataset_state):
        return cls(reactor=reactor, control_service=control_service, node_uuid=dataset_state.primary, name=name, image=image, dataset_id=dataset_state.dataset_id, mountpoint=mountpoint)
    d.addCallback(create_probe)
    return d
