package config

import (
	"github.com/coroot/coroot-node-agent/flags"
	klog "github.com/sirupsen/logrus"
	"gopkg.in/ini.v1"
)

// loadConfigFromCommonIni 从 common.ini 加载 ConfigServer 和 DataServer
// 注意：RunInOmniagent 是启动时确定的标志，不支持热更新
// 只有在值真正改变时才会更新 ProxyClient
func loadConfigFromCommonIni() {
	// RunInOmniagent 在启动时已经确定，这里直接使用其值
	if !*flags.RunInOmniagent || *flags.CommonIni == "" {
		return
	}

	iniData, err := ini.Load(*flags.CommonIni)
	if err != nil {
		klog.Debugf("Failed to load common.ini: %v", err)
		return
	}

	if iniData != nil {
		configServer := iniData.Section("common").Key("config_server").String()
		dataServer := iniData.Section("common").Key("data_server").String()

		// 检查 config_server 是否改变
		if configServer != "" {
			oldConfigServer := *flags.ConfigServer
			if configServer != oldConfigServer {
				*flags.ConfigServer = configServer
				klog.Infof("config_server changed in common.ini: %s -> %s", oldConfigServer, configServer)
				// 更新 ProxyClient 的 endpoints（只有在值改变时才更新）
				updateProxyClientEndpoints(configServer)
			} else {
				klog.Debugf("config_server in common.ini unchanged: %s", configServer)
			}
		}

		// 检查 data_server 是否改变
		if dataServer != "" {
			oldDataServer := *flags.DataServer
			if dataServer != oldDataServer {
				*flags.DataServer = dataServer
				klog.Infof("data_server changed in common.ini: %s -> %s", oldDataServer, dataServer)
			} else {
				klog.Debugf("data_server in common.ini unchanged: %s", dataServer)
			}
		}
	}
}
