'Create a ``BlockDeviceDeployer`` and call its
``calculate_changes`` method with the given arguments and an empty
cluster state.
:param UUID local_uuid: The node identifier to give the to the
``BlockDeviceDeployer``.
:param unicode local_hostname: The node IP to give to the
``BlockDeviceDeployer``.
:param desired_configuration: As accepted by
``IDeployer.calculate_changes``.
:return: The return value of ``BlockDeviceDeployer.calculate_changes``.'

def _calculate_changes(self, local_uuid, local_hostname, local_state, desired_configuration):

    current_cluster_state = DeploymentState(nodes={local_state})
    deployer = create_blockdevicedeployer(self, node_uuid=local_uuid, hostname=local_hostname)
    local_state = local_state_from_shared_state(node_state=local_state, nonmanifest_datasets={})
    return deployer.calculate_changes(desired_configuration, current_cluster_state, local_state)
