'Determine the latest state of the node.
:param target_node: A libcloud node object representing the compute
instance to examine.
:return: Deferred that fires with a libcloud node object that
has the updated information about the node if the node is found,
``None`` otherwise (e.g. if the node has been destroyed).'

def _async_refresh_node(self, reactor, target_node):

    d = _retry_exception_async(reactor, self._driver.list_nodes)
    def got_nodes(nodes):
        for node in nodes:
            if (node.uuid == target_node.uuid):
                Message.log(message_type=u'flocker:provision:libcloud:refresh_node', name=node.name, id=node.id, state=node.state, public_ips=node.public_ips, private_ips=node.private_ips)
                return node
        return None
    d.addCallback(got_nodes)
    return d
