'Make the given node ready for Flocker installation by provisioning
it with required software and configuration.
:param reactor: The reactor.
:param Node node: The node.
:return: Deferred that fires when the provisioning is completed.'

def _provision_node(self, reactor, node):

    commands = node.provision(package_source=self.package_source, variants=self.variants)
    if (self.dataset_backend == backends.ZFS):
        zfs_commands = configure_zfs(node, variants=self.variants)
        commands = commands.on(success=(lambda _: zfs_commands))
    d = remove_known_host(reactor, node.address)
    d.addCallback((lambda _: perform(make_dispatcher(reactor), commands)))
    return d
