diff --git a/utils/host.go b/utils/host.go index 2e719e9868505effc8e5a2830b328891b6d45719..c45b4baa36d1cefc003ffdef03ae31bb22209f43 100644 --- a/utils/host.go +++ b/utils/host.go @@ -1,6 +1,6 @@ /* * Copyright (c) KylinSoft Co., Ltd. 2024.All rights reserved. - * ha-api licensed under the Mulan Permissive Software License, Version 2. + * ha-api licensed under the Mulan Permissive Software License, Version 2. * See LICENSE file for more details. * Author: yangzhao_kl * Date: Fri Jan 8 20:56:40 2021 +0800 @@ -10,11 +10,13 @@ package utils import ( "bufio" "errors" + "fmt" "io" "os" "strings" "gitee.com/openeuler/ha-api/settings" + "github.com/beego/beego/v2/core/logs" ) func GetNodeList() ([]map[string]string, error) { @@ -166,3 +168,60 @@ func getCorosyncConfig() (CorosyncConfig, error) { return result, nil } + +func setCorosyncConfig(conf CorosyncConfig, confFile string) error { + var sb strings.Builder + // Write totem section + sb.WriteString("totem {\n") + for key, value := range conf.Totem { + sb.WriteString(fmt.Sprintf(" %s: %s\n", key, value)) + } + sb.WriteString("}\n\n") + + // Write nodelist section + sb.WriteString("nodelist {\n") + for _, node := range conf.NodeList { + sb.WriteString(" node {\n") + for key, value := range node { + sb.WriteString(fmt.Sprintf(" %s: %s\n", key, value)) + } + sb.WriteString(" }\n") + } + sb.WriteString("}\n\n") + + // Write quorum section + sb.WriteString("quorum {\n") + for key, value := range conf.Quorum { + sb.WriteString(fmt.Sprintf(" %s: %s\n", key, value)) + } + sb.WriteString("}\n\n") + + // Write logging section + sb.WriteString("logging {\n") + for key, value := range conf.Logging { + var valueStr string + switch v := value.(type) { + case string: + valueStr = v + case bool: + valueStr = fmt.Sprintf("%t", v) + default: + valueStr = fmt.Sprintf("%v", v) + } + sb.WriteString(fmt.Sprintf(" %s: %s\n", key, valueStr)) + } + sb.WriteString("}\n") + + file, err := os.OpenFile(confFile, os.O_CREATE|os.O_WRONLY, 0644) + if err != nil { + logs.Error("Failed to open file: %s", err) + } + defer file.Close() + + // 写入内容到文件 + _, err = file.WriteString(sb.String()) + if err != nil { + logs.Error("Failed to write to file: %s", err) + } + return nil +}