github.com/Cloud-Foundations/Dominator@v0.3.4/hypervisor/rpcd/getVmLastPatchLog.go (about)

     1  package rpcd
     2  
     3  import (
     4  	"io"
     5  	"os"
     6  
     7  	"github.com/Cloud-Foundations/Dominator/lib/srpc"
     8  	proto "github.com/Cloud-Foundations/Dominator/proto/hypervisor"
     9  )
    10  
    11  func (t *srpcType) GetVmLastPatchLog(conn *srpc.Conn) error {
    12  	var request proto.GetVmLastPatchLogRequest
    13  	if err := conn.Decode(&request); err != nil {
    14  		return err
    15  	}
    16  	rc, length, patchTime, err := t.manager.GetVmLastPatchLog(request.IpAddress)
    17  	if err != nil {
    18  		if os.IsNotExist(err) {
    19  			return conn.Encode(proto.GetVmLastPatchLogResponse{})
    20  		}
    21  		return conn.Encode(proto.GetVmLastPatchLogResponse{Error: err.Error()})
    22  	}
    23  	response := proto.GetVmLastPatchLogResponse{
    24  		Length:    length,
    25  		PatchTime: patchTime,
    26  	}
    27  	if err := conn.Encode(response); err != nil {
    28  		return err
    29  	}
    30  	_, err = io.CopyN(conn, rc, int64(length))
    31  	return err
    32  }