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  }