github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/fleetmanager/hypervisors/fsstorer/api.go (about) 1 package fsstorer 2 3 import ( 4 "net" 5 "sync" 6 7 "github.com/Cloud-Foundations/Dominator/lib/log" 8 "github.com/Cloud-Foundations/Dominator/lib/tags" 9 proto "github.com/Cloud-Foundations/Dominator/proto/hypervisor" 10 ) 11 12 type IP [4]byte 13 14 type Storer struct { 15 topDir string 16 logger log.DebugLogger 17 mutex sync.RWMutex 18 hypervisorToIPs map[IP][]IP // Key: hypervisor IP address. 19 ipToHypervisor map[IP]IP // Key: IP address, value: hypervisor. 20 } 21 22 func New(topDir string, logger log.DebugLogger) (*Storer, error) { 23 storer := &Storer{ 24 topDir: topDir, 25 logger: logger, 26 hypervisorToIPs: make(map[IP][]IP), 27 ipToHypervisor: make(map[IP]IP), 28 } 29 if err := storer.load(); err != nil { 30 return nil, err 31 } 32 return storer, nil 33 } 34 35 func (ip IP) String() string { 36 return ip.string() 37 } 38 39 func (s *Storer) AddIPsForHypervisor(hypervisor net.IP, 40 addrs []net.IP) error { 41 return s.addIPsForHypervisor(hypervisor, addrs) 42 } 43 44 func (s *Storer) CheckIpIsRegistered(addr net.IP) (bool, error) { 45 return s.checkIpIsRegistered(addr) 46 } 47 48 func (s *Storer) DeleteVm(hypervisor net.IP, ipAddr string) error { 49 return s.deleteVm(hypervisor, ipAddr) 50 } 51 52 func (s *Storer) GetHypervisorForIp(addr net.IP) (net.IP, error) { 53 return s.getHypervisorForIp(addr) 54 } 55 56 func (s *Storer) GetIPsForHypervisor(hypervisor net.IP) ([]net.IP, error) { 57 return s.getIPsForHypervisor(hypervisor) 58 } 59 60 func (s *Storer) ListVMs(hypervisor net.IP) ([]string, error) { 61 return s.listVMs(hypervisor) 62 } 63 64 func (s *Storer) ReadMachineSerialNumber(hypervisor net.IP) (string, error) { 65 return s.readMachineSerialNumber(hypervisor) 66 } 67 68 func (s *Storer) ReadMachineTags(hypervisor net.IP) (tags.Tags, error) { 69 return s.readMachineTags(hypervisor) 70 } 71 72 func (s *Storer) ReadVm(hypervisor net.IP, 73 ipAddr string) (*proto.VmInfo, error) { 74 return s.readVm(hypervisor, ipAddr) 75 } 76 77 func (s *Storer) SetIPsForHypervisor(hypervisor net.IP, 78 addrs []net.IP) error { 79 return s.setIPsForHypervisor(hypervisor, addrs) 80 } 81 82 func (s *Storer) UnregisterHypervisor(hypervisor net.IP) error { 83 return s.unregisterHypervisor(hypervisor) 84 } 85 86 func (s *Storer) WriteMachineSerialNumber(hypervisor net.IP, 87 serialNumber string) error { 88 return s.writeMachineSerialNumber(hypervisor, serialNumber) 89 } 90 91 func (s *Storer) WriteMachineTags(hypervisor net.IP, tgs tags.Tags) error { 92 return s.writeMachineTags(hypervisor, tgs) 93 } 94 95 func (s *Storer) WriteVm(hypervisor net.IP, ipAddr string, 96 vmInfo proto.VmInfo) error { 97 return s.writeVm(hypervisor, ipAddr, vmInfo) 98 }