github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/hypervisor/rpcd/getVmUserData.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) GetVmUserData(conn *srpc.Conn) error { 12 var request proto.GetVmUserDataRequest 13 if err := conn.Decode(&request); err != nil { 14 return err 15 } 16 rc, length, err := t.manager.GetVmUserDataRPC(request.IpAddress, 17 conn.GetAuthInformation(), request.AccessToken) 18 if err != nil { 19 if os.IsNotExist(err) { 20 return conn.Encode(proto.GetVmUserDataResponse{}) 21 } 22 return conn.Encode(proto.GetVmUserDataResponse{Error: err.Error()}) 23 } 24 response := proto.GetVmUserDataResponse{Length: length} 25 if err := conn.Encode(response); err != nil { 26 return err 27 } 28 _, err = io.CopyN(conn, rc, int64(length)) 29 return err 30 }