'Returns Elastic IP addresses for all the nodes in the provided list.
:param      nodes: A list of :class:`Node` instances
:type       nodes: ``list`` of :class:`Node`
:return:    Dictionary where a key is a node ID and the value is a
list with the Elastic IP addresses associated with
this node.
:rtype:     ``dict``'

def ex_describe_addresses(self, nodes):

    if (not nodes):
        return {}
    params = {'Action': 'DescribeAddresses'}
    if (len(nodes) == 1):
        self._add_instance_filter(params, nodes[0])
    result = self.connection.request(self.path, params=params).object
    node_instance_ids = [node.id for node in nodes]
    nodes_elastic_ip_mappings = {}
    only_associated = True
    for node_id in node_instance_ids:
        nodes_elastic_ip_mappings.setdefault(node_id, [])
        for addr in self._to_addresses(result, only_associated):
            instance_id = addr.instance_id
            if (node_id == instance_id):
                nodes_elastic_ip_mappings[instance_id].append(addr.ip)
    return nodes_elastic_ip_mappings
