def discover_state(self, cluster_state, persistent_state):
        local_state = cluster_state.get_node(self.node_uuid,
                                             hostname=self.hostname)
        if local_state.manifestations is None:
            # Without manifestations we don't know if local applications'
            # volumes are manifestations or not. Rather than return
            # incorrect information leading to possibly erroneous
            # convergence actions, just declare ignorance. Eventually the
            # convergence agent for datasets will discover the information
            # and then we can proceed.
            return succeed(
                NodeLocalState(
                    node_state=NodeState(
                        uuid=self.node_uuid,
                        hostname=self.hostname,
                        applications=None,
                        manifestations=None,
                        paths=None,
                    )
                )
            )

        path_to_manifestations = {
            path: local_state.manifestations[dataset_id]
            for (dataset_id, path)
            in local_state.paths.items()
        }

        applications = self.docker_client.list()
        applications.addCallback(
            self._applications_from_containers, path_to_manifestations
        )
        applications.addCallback(self._nodestate_from_applications)
        return applications
List all the ``Application``\ s running on this node.
dataset/ETHPy150Open ClusterHQ/flocker/flocker/node/_container.py/ApplicationNodeDeployer.discover_state