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

     1  package hypervisors
     2  
     3  import (
     4  	"os"
     5  
     6  	"github.com/Cloud-Foundations/Dominator/lib/html"
     7  )
     8  
     9  func newManager(startOptions StartOptions) (*Manager, error) {
    10  	if err := checkPoolLimits(); err != nil {
    11  		return nil, err
    12  	}
    13  	if startOptions.IpmiPasswordFile != "" {
    14  		file, err := os.Open(startOptions.IpmiPasswordFile)
    15  		if err != nil {
    16  			return nil, err
    17  		}
    18  		file.Close()
    19  	}
    20  	manager := &Manager{
    21  		ipmiUsername:     startOptions.IpmiUsername,
    22  		ipmiPasswordFile: startOptions.IpmiPasswordFile,
    23  		logger:           startOptions.Logger,
    24  		storer:           startOptions.Storer,
    25  		allocatingIPs:    make(map[string]struct{}),
    26  		hypervisors:      make(map[string]*hypervisorType),
    27  		migratingIPs:     make(map[string]struct{}),
    28  		subnets:          make(map[string]*subnetType),
    29  		vms:              make(map[string]*vmInfoType),
    30  	}
    31  	html.HandleFunc("/listHypervisors", manager.listHypervisorsHandler)
    32  	html.HandleFunc("/listLocations", manager.listLocationsHandler)
    33  	html.HandleFunc("/listVMs", manager.listVMsHandler)
    34  	html.HandleFunc("/showHypervisor", manager.showHypervisorHandler)
    35  	go manager.notifierLoop()
    36  	return manager, nil
    37  }