'Run one step of the calculator.
:param desired_datasets: The dataset state to converge to.
:type desired_datasets: Mapping from ``UUID`` to ``DesiredDataset``.'

def run_convergence_step(self, desired_datasets):

    local_datasets = self.current_datasets()
    changes = self.deployer.calculator.calculate_changes_for_datasets(discovered_datasets=local_datasets, desired_datasets=desired_datasets)
    note('Running    changes:    {changes}'.format(changes=changes))
    self.successResultOf(run_state_change(changes, deployer=self.deployer, state_persister=self.persistent_state))
