'Associate an Elastic IP address with a particular node.
:param      node: Node instance
:type       node: :class:`Node`
:param      elastic_ip: Elastic IP instance
:type       elastic_ip: :class:`ElasticIP`
:param      domain: The domain where the IP resides (vpc only)
:type       domain: ``str``
:return:    A string representation of the association ID which is
required for VPC disassociation. EC2/standard
addresses return None
:rtype:     ``None`` or ``str``'

def ex_associate_address_with_node(self, node, elastic_ip, domain=None):

    params = {'Action': 'AssociateAddress', 'InstanceId': node.id}
    if ((domain is not None) and (domain != 'vpc')):
        raise AttributeError('Domain    can    only    be    set    to    vpc')
    if (domain is None):
        params.update({'PublicIp': elastic_ip.ip})
    else:
        params.update({'AllocationId': elastic_ip.extra['allocation_id']})
    response = self.connection.request(self.path, params=params).object
    association_id = findtext(element=response, xpath='associationId', namespace=NAMESPACE)
    return association_id
