github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/fleetmanager/rpcd/listVMsInLocation.go (about) 1 package rpcd 2 3 import ( 4 "github.com/Cloud-Foundations/Dominator/lib/errors" 5 "github.com/Cloud-Foundations/Dominator/lib/srpc" 6 proto "github.com/Cloud-Foundations/Dominator/proto/fleetmanager" 7 ) 8 9 func (t *srpcType) ListVMsInLocation(conn *srpc.Conn) error { 10 var request proto.ListVMsInLocationRequest 11 if err := conn.Decode(&request); err != nil { 12 return err 13 } 14 addresses, err := t.hypervisorsManager.ListVMsInLocation( 15 request.Location) 16 if err != nil { 17 response := proto.ListVMsInLocationResponse{ 18 Error: errors.ErrorToString(err), 19 } 20 if err := conn.Encode(response); err != nil { 21 return err 22 } 23 return nil 24 } 25 // TODO(rgooch): Chunk the response. 26 response := proto.ListVMsInLocationResponse{IpAddresses: addresses} 27 if err := conn.Encode(response); err != nil { 28 return err 29 } 30 response.IpAddresses = nil // Send end-of-chunks message. 31 return conn.Encode(response) 32 }