github.com/Cloud-Foundations/Dominator@v0.3.4/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(request) 15 if err != nil { 16 response := proto.ListVMsInLocationResponse{ 17 Error: errors.ErrorToString(err), 18 } 19 if err := conn.Encode(response); err != nil { 20 return err 21 } 22 return nil 23 } 24 // TODO(rgooch): Chunk the response. 25 response := proto.ListVMsInLocationResponse{IpAddresses: addresses} 26 if err := conn.Encode(response); err != nil { 27 return err 28 } 29 response.IpAddresses = nil // Send end-of-chunks message. 30 return conn.Encode(response) 31 }