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

     1  package rpcd
     2  
     3  import (
     4  	"io"
     5  
     6  	"github.com/Cloud-Foundations/Dominator/fleetmanager/hypervisors"
     7  	"github.com/Cloud-Foundations/Dominator/lib/log"
     8  	"github.com/Cloud-Foundations/Dominator/lib/srpc"
     9  	"github.com/Cloud-Foundations/Dominator/lib/srpc/serverutil"
    10  )
    11  
    12  type srpcType struct {
    13  	hypervisorsManager *hypervisors.Manager
    14  	logger             log.DebugLogger
    15  	*serverutil.PerUserMethodLimiter
    16  }
    17  
    18  type htmlWriter srpcType
    19  
    20  func (hw *htmlWriter) WriteHtml(writer io.Writer) {
    21  	hw.writeHtml(writer)
    22  }
    23  
    24  func Setup(hypervisorsManager *hypervisors.Manager, logger log.DebugLogger) (
    25  	*htmlWriter, error) {
    26  	srpcObj := &srpcType{
    27  		hypervisorsManager: hypervisorsManager,
    28  		logger:             logger,
    29  		PerUserMethodLimiter: serverutil.NewPerUserMethodLimiter(
    30  			map[string]uint{
    31  				"GetMachineInfo": 1,
    32  				"GetUpdates":     1,
    33  			}),
    34  	}
    35  	srpc.RegisterNameWithOptions("FleetManager", srpcObj,
    36  		srpc.ReceiverOptions{
    37  			PublicMethods: []string{
    38  				"ChangeMachineTags",
    39  				"GetHypervisorForVM",
    40  				"GetMachineInfo",
    41  				"GetUpdates",
    42  				"ListHypervisorLocations",
    43  				"ListHypervisorsInLocation",
    44  				"ListVMsInLocation",
    45  				"PowerOnMachine",
    46  			}})
    47  	return (*htmlWriter)(srpcObj), nil
    48  }