mirror of
https://github.com/ultravioletrs/cocos.git
synced 2026-08-07 07:14:50 +00:00
feat: add CVM ID to gRPC metadata and implement log-forwarder stream receiving (#611)
CI / lint (push) Has been cancelled
CI / test (agent) (push) Has been cancelled
CI / test (cli) (push) Has been cancelled
CI / test (cmd) (push) Has been cancelled
CI / test (internal) (push) Has been cancelled
CI / test (manager, true) (push) Has been cancelled
CI / test (pkg) (push) Has been cancelled
CI / upload-coverage (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / test (agent) (push) Has been cancelled
CI / test (cli) (push) Has been cancelled
CI / test (cmd) (push) Has been cancelled
CI / test (internal) (push) Has been cancelled
CI / test (manager, true) (push) Has been cancelled
CI / test (pkg) (push) Has been cancelled
CI / upload-coverage (push) Has been cancelled
Signed-off-by: Sammy Oina <sammyoina@gmail.com>
This commit is contained in:
committed by
GitHub
parent
13f7e97d82
commit
412472943d
+9
-1
@@ -39,6 +39,7 @@ import (
|
||||
runnerclient "github.com/ultravioletrs/cocos/pkg/clients/grpc/runner"
|
||||
"github.com/ultravioletrs/cocos/pkg/ingress"
|
||||
"golang.org/x/sync/errgroup"
|
||||
"google.golang.org/grpc/metadata"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -170,6 +171,9 @@ func main() {
|
||||
}
|
||||
// Don't defer close here as we want to keep the connection open
|
||||
|
||||
if cfg.CVMId != "" {
|
||||
ctx = metadata.AppendToOutgoingContext(ctx, "job-id", cfg.CVMId)
|
||||
}
|
||||
pc, err := newClient.Process(ctx)
|
||||
if err != nil {
|
||||
grpcClient.Close()
|
||||
@@ -236,7 +240,11 @@ func main() {
|
||||
}
|
||||
ingressProxy := ingress.NewProxyServer(logger, backendURL, certProvider)
|
||||
|
||||
pc, err := cvmsClient.Process(ctx)
|
||||
agentCtx := ctx
|
||||
if cfg.CVMId != "" {
|
||||
agentCtx = metadata.AppendToOutgoingContext(ctx, "job-id", cfg.CVMId)
|
||||
}
|
||||
pc, err := cvmsClient.Process(agentCtx)
|
||||
if err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to connect to cvm server: %s", err))
|
||||
exitCode = 1
|
||||
|
||||
@@ -20,6 +20,7 @@ import (
|
||||
cvmsgrpc "github.com/ultravioletrs/cocos/pkg/clients/grpc/cvm"
|
||||
"golang.org/x/sync/errgroup"
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/grpc/metadata"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -30,6 +31,7 @@ const (
|
||||
|
||||
type config struct {
|
||||
LogLevel string `env:"LOG_FORWARDER_LOG_LEVEL" envAlternate:"AGENT_LOG_LEVEL" envDefault:"debug"`
|
||||
CVMId string `env:"AGENT_CVM_ID" envDefault:""`
|
||||
}
|
||||
|
||||
func main() {
|
||||
@@ -100,6 +102,9 @@ func main() {
|
||||
defer cvmClient.Close()
|
||||
|
||||
// Create stream to Manager
|
||||
if cfg.CVMId != "" {
|
||||
ctx = metadata.AppendToOutgoingContext(ctx, "job-id", cfg.CVMId, "connection-type", "log-forwarder")
|
||||
}
|
||||
stream, err := cvmsClient.Process(ctx)
|
||||
if err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to create stream to manager: %s", err))
|
||||
@@ -122,12 +127,23 @@ func main() {
|
||||
case msg := <-logQueue:
|
||||
if err := stream.Send(msg); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to send log to manager: %s", err))
|
||||
// Reconnect logic would go here
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
// Stream Receiver Goroutine
|
||||
g.Go(func() error {
|
||||
for {
|
||||
_, err := stream.Recv()
|
||||
if err != nil {
|
||||
logger.Error(fmt.Sprintf("stream connection lost: %s", err))
|
||||
return err
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
g.Go(func() error {
|
||||
ch := make(chan os.Signal, 1)
|
||||
signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM)
|
||||
|
||||
Reference in New Issue
Block a user