mirror of
https://github.com/ultravioletrs/cocos.git
synced 2026-08-07 07:14:50 +00:00
7e63921896
* Add vtpm attestation support to agent service and server Signed-off-by: Sammy Oina <sammyoina@gmail.com> * Update mockery version to v2.53.2 and refactor VM factory to include logger Signed-off-by: Sammy Oina <sammyoina@gmail.com> * Send event notification when computation is stopped in agentService Signed-off-by: Sammy Oina <sammyoina@gmail.com> * Remove redundant assignment of Stderr in qemuVM Start method Signed-off-by: Sammy Oina <sammyoina@gmail.com> * Rename SVM references to CVM in tracing, logging, metrics, and service layers Signed-off-by: Sammy Oina <sammyoina@gmail.com> --------- Signed-off-by: Sammy Oina <sammyoina@gmail.com>
82 lines
1.3 KiB
Go
82 lines
1.3 KiB
Go
// Copyright (c) Ultraviolet
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
package vm
|
|
|
|
import (
|
|
"bytes"
|
|
"io"
|
|
"log/slog"
|
|
"strings"
|
|
)
|
|
|
|
var (
|
|
_ io.Writer = &Stdout{}
|
|
_ io.Writer = &Stderr{}
|
|
)
|
|
|
|
const bufSize = 1024
|
|
|
|
type Stdout struct {
|
|
StateMachine StateMachine
|
|
Logger *slog.Logger
|
|
}
|
|
|
|
// Write implements io.Writer.
|
|
func (s *Stdout) Write(p []byte) (n int, err error) {
|
|
inBuf := bytes.NewBuffer(p)
|
|
|
|
buf := make([]byte, bufSize)
|
|
|
|
for {
|
|
n, err := inBuf.Read(buf)
|
|
if err != nil {
|
|
if err == io.EOF {
|
|
break
|
|
}
|
|
return len(p) - inBuf.Len(), err
|
|
}
|
|
|
|
args := []any{
|
|
slog.String("state", s.StateMachine.State()),
|
|
}
|
|
|
|
s.Logger.Info(string(buf[:n]), args...)
|
|
}
|
|
|
|
return len(p), nil
|
|
}
|
|
|
|
type Stderr struct {
|
|
StateMachine StateMachine
|
|
Logger *slog.Logger
|
|
}
|
|
|
|
// Write implements io.Writer.
|
|
func (s *Stderr) Write(p []byte) (n int, err error) {
|
|
inBuf := bytes.NewBuffer(p)
|
|
|
|
buf := make([]byte, bufSize)
|
|
|
|
for {
|
|
n, err := inBuf.Read(buf)
|
|
if err != nil {
|
|
if err == io.EOF {
|
|
break
|
|
}
|
|
return len(p) - inBuf.Len(), err
|
|
}
|
|
|
|
args := []any{
|
|
slog.String("state", s.StateMachine.State()),
|
|
}
|
|
|
|
if strings.Contains(string(buf[:n]), "Error") {
|
|
s.Logger.Error(string(buf[:n]), args...)
|
|
} else {
|
|
s.Logger.Warn(string(buf[:n]), args...)
|
|
}
|
|
}
|
|
|
|
return len(p), nil
|
|
}
|