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 }