github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/fleetmanager/hypervisors/fsstorer/get.go (about)

     1  package fsstorer
     2  
     3  import (
     4  	"net"
     5  )
     6  
     7  func (s *Storer) getHypervisorForIp(addr net.IP) (net.IP, error) {
     8  	if ip, err := netIpToIp(addr); err != nil {
     9  		return nil, err
    10  	} else {
    11  		s.mutex.RLock()
    12  		hypervisor, ok := s.ipToHypervisor[ip]
    13  		s.mutex.RUnlock()
    14  		if !ok {
    15  			return nil, nil
    16  		}
    17  		return hypervisor[:], nil
    18  	}
    19  }
    20  
    21  func (s *Storer) getIPsForHypervisor(hypervisor net.IP) ([]net.IP, error) {
    22  	if hypervisorIP, err := netIpToIp(hypervisor); err != nil {
    23  		return nil, err
    24  	} else {
    25  		s.mutex.RLock()
    26  		ipList, ok := s.hypervisorToIPs[hypervisorIP]
    27  		s.mutex.RUnlock()
    28  		if !ok {
    29  			return nil, nil
    30  		}
    31  		netIpList := make([]net.IP, 0, len(ipList))
    32  		for _, ip := range ipList {
    33  			ip := ip
    34  			netIpList = append(netIpList, net.IP(ip[:]))
    35  		}
    36  		return netIpList, nil
    37  	}
    38  }