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  }