[agent-go] - 去除本地环境信息的默认设置,优化启动逻辑
This commit is contained in:
@@ -5,13 +5,15 @@ import (
|
||||
"fmt"
|
||||
"github.com/spf13/viper"
|
||||
"gopkg.in/yaml.v3"
|
||||
"io/ioutil"
|
||||
"math/rand"
|
||||
"os"
|
||||
"reflect"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
"wdd.io/agent-common/logger"
|
||||
"wdd.io/agent-common/utils"
|
||||
"wdd.io/agent-go/a_agent"
|
||||
"wdd.io/agent-go/a_executor"
|
||||
"wdd.io/agent-go/a_status"
|
||||
@@ -19,25 +21,35 @@ import (
|
||||
"wdd.io/agent-go/rabbitmq"
|
||||
)
|
||||
|
||||
const AgentServerInfoLocalFilePath = "/usr/local/etc/octopus-agent/octopus-agent.conf"
|
||||
|
||||
var initOmType = g.InitOmType
|
||||
var P = g.G.P
|
||||
|
||||
var log = logger.Log
|
||||
|
||||
func INIT(octopusAgentConfigFileName string, agentServerInfoConf string) chan bool {
|
||||
func INIT(octopusAgentConfigFileName string) chan bool {
|
||||
|
||||
// 获取系统的环境变量
|
||||
agentServerInfo := parseAgentServerInfo(agentServerInfoConf)
|
||||
// todo totally get from a_status module
|
||||
// 初始化变量
|
||||
agentServerInfo := &a_agent.AgentServerInfo{}
|
||||
|
||||
// 初始化Nacos的连接配置
|
||||
// 初始化Agent的 RabbitMQ连接信息
|
||||
agentConfig := parseOctopusAgentConf(octopusAgentConfigFileName)
|
||||
a_agent.AgentConfig = agentConfig
|
||||
|
||||
// re-get agentInfo from status module
|
||||
// 使用a_status模块,自身获取到运行的环境信息
|
||||
agentInfo := a_status.ReportAgentInfo()
|
||||
refreshAgentInfoByStatusInfo(agentInfo, agentServerInfo)
|
||||
|
||||
if utils.FileExistAndNotNull(AgentServerInfoLocalFilePath) {
|
||||
|
||||
// 获取系统的环境变量
|
||||
agentServerInfoFromLocalFile := parseAgentServerInfo(AgentServerInfoLocalFilePath)
|
||||
|
||||
// 合并系统环境变量,手动输入的部分会覆盖自身获得内容
|
||||
utils.CopySameFields(agentServerInfoFromLocalFile, agentServerInfo)
|
||||
}
|
||||
|
||||
// build operator cache
|
||||
buildAgentOsOperator(agentInfo, agentServerInfo)
|
||||
|
||||
@@ -235,12 +247,44 @@ func buildOctopusTCPConnect(agentConfig *viper.Viper) *rabbitmq.RabbitTCPConnect
|
||||
func refreshAgentInfoByStatusInfo(agentInfo *a_status.AgentInfo, agentServerInfo *a_agent.AgentServerInfo) {
|
||||
|
||||
// host info
|
||||
agentServerInfo.ServerName = agentInfo.HostInfo.Hostname
|
||||
agentServerInfo.MachineID = agentInfo.HostInfo.HostID
|
||||
|
||||
// cpu part
|
||||
agentServerInfo.CPUCore = strconv.FormatInt(int64(agentInfo.CPUInfo.NumCores), 10)
|
||||
if len(agentInfo.CPUInfo.CPUInfo) > 0 {
|
||||
marshal, _ := json.Marshal(agentInfo.CPUInfo.CPUInfo[0])
|
||||
agentServerInfo.CPUBrand = string(marshal)
|
||||
}
|
||||
|
||||
// os info
|
||||
agentServerInfo.OSInfo = agentInfo.HostInfo.PlatformFamily + agentInfo.HostInfo.Platform + agentInfo.HostInfo.PlatformVersion
|
||||
agentServerInfo.OSKernelInfo = agentInfo.HostInfo.KernelVersion
|
||||
agentServerInfo.Virtualization = agentInfo.HostInfo.VirtualizationSystem + agentInfo.HostInfo.VirtualizationRole
|
||||
agentServerInfo.Platform = agentInfo.HostInfo.Platform
|
||||
agentServerInfo.PlatformFamily = agentInfo.HostInfo.PlatformFamily
|
||||
agentServerInfo.PlatformVersion = agentInfo.HostInfo.PlatformVersion
|
||||
agentServerInfo.KernelVersion = agentInfo.HostInfo.KernelVersion
|
||||
agentServerInfo.KernelArch = agentInfo.HostInfo.KernelArch
|
||||
|
||||
// memory part
|
||||
agentServerInfo.MemoryTotal = strconv.FormatInt(int64(agentInfo.MemoryInfo.TotalMemory), 10)
|
||||
agentServerInfo.SwapTotal = strconv.FormatInt(int64(agentInfo.MemoryInfo.SwapTotal), 10)
|
||||
|
||||
// disk part
|
||||
info := agentInfo.DiskInfo
|
||||
diskTotal := uint64(0)
|
||||
diskUsage := uint64(0)
|
||||
|
||||
for _, diskInfo := range info {
|
||||
if diskInfo.Total > diskTotal {
|
||||
diskTotal = diskInfo.Total
|
||||
diskUsage = diskInfo.Used
|
||||
}
|
||||
}
|
||||
agentServerInfo.DiskTotal = strconv.FormatUint(diskTotal, 10)
|
||||
agentServerInfo.DiskUsage = strconv.FormatUint(diskUsage, 10)
|
||||
|
||||
// network part
|
||||
refreshAgentNetworkInfo(agentInfo, agentServerInfo)
|
||||
|
||||
@@ -357,7 +401,7 @@ func parseAgentServerInfo(agentServerInfoConf string) *a_agent.AgentServerInfo {
|
||||
|
||||
// 约定文件地址为 /octopus-agent/octopus-agent.conf
|
||||
var agentServerInfo *a_agent.AgentServerInfo
|
||||
yamlFile, err := ioutil.ReadFile(agentServerInfoConf)
|
||||
yamlFile, err := os.ReadFile(agentServerInfoConf)
|
||||
|
||||
if err != nil {
|
||||
panic(fmt.Errorf("failed to read YAML file: %v", err))
|
||||
|
||||
Reference in New Issue
Block a user