code: def get_nonlocal_ip(host, subnet=None):
      
      try:
          ailist = socket.getaddrinfo(host, None)
      except socket.gaierror:
          raise exc.UnableToResolveError(host)
      for ai in ailist:
          # an ai is a 5-tuple; the last element is (ip, port)
          ip = ai[4][0]
          if subnet and ip_in_subnet(ip, subnet):
              LOG.info('found ip (%s) for host (%s) to be in cluster subnet (%s)' % (
                  ip,
                  host,
                  subnet,)
              )
  
              return ip
  
          if not ip.startswith('127.'):
              if subnet:
                  LOG.warning('could not match ip (%s) for host (%s) for cluster subnet (%s)' % (
                      ip,
                      host,
                      subnet,)
                  )
              return ip
      raise exc.UnableToResolveError(host)
docs: Search result of getaddrinfo() for a non-localhost-net address