Files
wehub-resource-sync e0e362d700
SDK Tests / changes (push) Successful in 2m29s
Real E2E Tests / changes (push) Successful in 2m29s
Deploy Docs Pages / build (push) Has been cancelled
Deploy Docs Pages / deploy (push) Has been cancelled
Real E2E Tests / JavaScript E2E (docker bridge) (push) Has been cancelled
Real E2E Tests / Python E2E (docker bridge) (push) Has been cancelled
Real E2E Tests / Java E2E (docker bridge) (push) Has been cancelled
Real E2E Tests / C# E2E (docker bridge) (push) Has been cancelled
Real E2E Tests / Go E2E (docker bridge) (push) Has been cancelled
Real E2E Tests / Real E2E CI (push) Has been cancelled
SDK Tests / SDK CI (push) Has been cancelled
SDK Tests / CLI Tests (push) Has been cancelled
SDK Tests / Python SDK Quality (code-interpreter) (push) Has been cancelled
SDK Tests / Python SDK Quality (sandbox) (push) Has been cancelled
SDK Tests / Python SDK Tests (code-interpreter) (push) Has been cancelled
SDK Tests / JavaScript SDK Quality And Tests (code-interpreter) (push) Has been cancelled
SDK Tests / JavaScript SDK Quality And Tests (sandbox) (push) Has been cancelled
SDK Tests / Python SDK Tests (sandbox) (push) Has been cancelled
SDK Tests / CLI Quality (push) Has been cancelled
SDK Tests / Kotlin SDK Quality And Tests (sandbox) (push) Has been cancelled
SDK Tests / Kotlin SDK Quality And Tests (code-interpreter) (push) Has been cancelled
SDK Tests / C# SDK Quality And Tests (code-interpreter) (push) Has been cancelled
SDK Tests / C# SDK Quality And Tests (sandbox) (push) Has been cancelled
SDK Tests / Go SDK Quality And Tests (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:39:33 +08:00

108 lines
3.3 KiB
Go

// Copyright 2025 Alibaba Group Holding Ltd.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package config
import (
"flag"
"os"
"path"
"time"
"gopkg.in/natefinch/lumberjack.v2"
"k8s.io/klog/v2"
)
type Config struct {
DataDir string
ListenAddr string
CRISocket string
ReadTimeout time.Duration
WriteTimeout time.Duration
ReconcileInterval time.Duration
EnableSidecarMode bool
MainContainerName string
LogMaxSize int
LogMaxBackups int
LogMaxAge int
LogDir string
}
func NewConfig() *Config {
return &Config{
DataDir: "/var/lib/sandbox/tasks",
ListenAddr: "0.0.0.0:5758",
CRISocket: "/var/run/containerd/containerd.sock",
ReadTimeout: 30 * time.Second,
WriteTimeout: 30 * time.Second,
ReconcileInterval: 500 * time.Millisecond,
EnableSidecarMode: false,
MainContainerName: "main",
LogMaxSize: 100,
LogMaxBackups: 10,
LogMaxAge: 7,
LogDir: "logs",
}
}
func (c *Config) LoadFromEnv() {
if v := os.Getenv("DATA_DIR"); v != "" {
c.DataDir = v
}
if v := os.Getenv("LISTEN_ADDR"); v != "" {
c.ListenAddr = v
}
if v := os.Getenv("CRI_SOCKET"); v != "" {
c.CRISocket = v
}
if v := os.Getenv("ENABLE_SIDECAR_MODE"); v == "true" {
c.EnableSidecarMode = true
}
if v := os.Getenv("MAIN_CONTAINER_NAME"); v != "" {
c.MainContainerName = v
}
}
func (c *Config) LoadFromFlags() {
flag.StringVar(&c.DataDir, "data-dir", c.DataDir, "data storage directory")
flag.StringVar(&c.ListenAddr, "listen-addr", c.ListenAddr, "service listen address")
flag.StringVar(&c.CRISocket, "cri-socket", c.CRISocket, "CRI socket path for container runner mode")
flag.BoolVar(&c.EnableSidecarMode, "enable-sidecar-mode", c.EnableSidecarMode, "enable sidecar runner mode")
flag.StringVar(&c.MainContainerName, "main-container-name", c.MainContainerName, "main container name")
// set log flags
flag.IntVar(&c.LogMaxSize, "log-max-size", c.LogMaxSize, "maximum log file size in MB")
flag.IntVar(&c.LogMaxBackups, "log-max-backups", c.LogMaxBackups, "maximum number of log backup files")
flag.IntVar(&c.LogMaxAge, "log-max-age", c.LogMaxAge, "maximum number of days to keep log files")
flag.StringVar(&c.LogDir, "log-dir", c.LogDir, "log file directory")
flag.Parse()
}
func (c *Config) InitKlog() error {
logFile := path.Join(c.LogDir, "task-executor.log")
fs := flag.NewFlagSet("klog", flag.ContinueOnError)
klog.InitFlags(fs)
fs.Set("logtostderr", "false")
fs.Set("alsologtostderr", "false")
fs.Set("stderrthreshold", "FATAL")
fs.Set("one_output", "true")
klog.SetOutput(&lumberjack.Logger{
Filename: logFile,
MaxSize: c.LogMaxSize,
MaxBackups: c.LogMaxBackups,
MaxAge: c.LogMaxAge,
Compress: true,
})
return nil
}