2026-02-14 05:36:00 +08:00
|
|
|
|
package config
|
|
|
|
|
|
|
2026-02-15 07:18:14 +08:00
|
|
|
|
import (
|
|
|
|
|
|
"os"
|
|
|
|
|
|
"path/filepath"
|
|
|
|
|
|
|
|
|
|
|
|
"gopkg.in/yaml.v3"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
// DefaultConfig 返回 SunHPC 的默认配置结构体
|
|
|
|
|
|
func DefaultConfig() *Config {
|
|
|
|
|
|
return &Config{
|
|
|
|
|
|
DB: DBConfig{
|
|
|
|
|
|
Type: "sqlite",
|
|
|
|
|
|
Path: "/var/lib/sunhpc", // SQLite 数据库存放目录
|
|
|
|
|
|
Name: "sunhpc.db", // 数据库文件名
|
|
|
|
|
|
User: "", // SQLite 不需要
|
|
|
|
|
|
Password: "",
|
|
|
|
|
|
Host: "",
|
|
|
|
|
|
Port: 0,
|
|
|
|
|
|
Socket: "",
|
|
|
|
|
|
Verbose: false,
|
2026-02-14 05:36:00 +08:00
|
|
|
|
},
|
2026-02-15 07:18:14 +08:00
|
|
|
|
Log: LogConfig{
|
|
|
|
|
|
Level: "info",
|
|
|
|
|
|
Format: "text", // or "json"
|
|
|
|
|
|
Output: "stdout",
|
|
|
|
|
|
FilePath: "/var/log/sunhpc/sunhpc.log",
|
2026-02-14 05:36:00 +08:00
|
|
|
|
},
|
2026-02-15 07:18:14 +08:00
|
|
|
|
Cluster: ClusterConfig{
|
|
|
|
|
|
Name: "default-cluster",
|
|
|
|
|
|
AdminEmail: "admin@example.com",
|
|
|
|
|
|
TimeZone: "Asia/Shanghai",
|
|
|
|
|
|
NodePrefix: "node",
|
2026-02-14 05:36:00 +08:00
|
|
|
|
},
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-15 07:18:14 +08:00
|
|
|
|
// WriteDefaultConfig 将默认配置写入指定路径
|
|
|
|
|
|
// 如果目录不存在,会自动创建(需有权限)
|
|
|
|
|
|
// 如果文件已存在且非空,会返回错误(除非调用方先删除)
|
|
|
|
|
|
func WriteDefaultConfig(path string) error {
|
|
|
|
|
|
// 确保目录存在
|
|
|
|
|
|
dir := filepath.Dir(path)
|
|
|
|
|
|
if err := os.MkdirAll(dir, 0755); err != nil {
|
|
|
|
|
|
return err
|
2026-02-14 05:36:00 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-15 07:18:14 +08:00
|
|
|
|
// 生成默认配置
|
|
|
|
|
|
cfg := DefaultConfig()
|
2026-02-14 05:36:00 +08:00
|
|
|
|
|
2026-02-15 07:18:14 +08:00
|
|
|
|
// 序列化为 YAML
|
|
|
|
|
|
data, err := yaml.Marshal(cfg)
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
return err
|
2026-02-14 05:36:00 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-15 07:18:14 +08:00
|
|
|
|
// 写入文件(0644 权限)
|
|
|
|
|
|
return os.WriteFile(path, data, 0644)
|
2026-02-14 05:36:00 +08:00
|
|
|
|
}
|