func LoadConfig()

in pkg/admin/config/config.go [80:157]


func LoadConfig() {
	configFilePath := conf
	if envPath := os.Getenv(confPathKey); envPath != "" {
		configFilePath = envPath
	}
	path, err := filepath.Abs(configFilePath)
	if err != nil {
		path = filepath.Clean(configFilePath)
	}
	content, err := os.ReadFile(path)
	if err != nil {
		panic(err)
	}
	var config Config
	err = yaml.Unmarshal(content, &config)
	if err != nil {
		logger.Errorf("Invalid configuration: \n %s", content)
		panic(err)
	}

	address := config.Admin.ConfigCenter
	registryAddress := config.Admin.Registry.Address
	metadataReportAddress := config.Admin.MetadataReport.Address

	loadDatabaseConfig(config.Admin.MysqlDsn)

	PrometheusIp = config.Prometheus.Ip
	PrometheusPort = config.Prometheus.Port
	if PrometheusIp == "" {
		PrometheusIp = "127.0.0.1"
	}
	if PrometheusPort == "" {
		PrometheusPort = "9090"
	}

	c, addrUrl := getValidAddressConfig(address, registryAddress)
	configCenter := newConfigCenter(c, addrUrl)
	Governance = newGovernanceConfig(configCenter, c.getProtocol())
	properties, err := configCenter.GetProperties(constant.DubboPropertyKey)
	if err != nil {
		logger.Info("No configuration found in config center.")
	}

	if len(properties) > 0 {
		logger.Infof("Loaded remote configuration from config center:\n %s", properties)
		for _, property := range strings.Split(properties, "\n") {
			if strings.HasPrefix(property, constant.RegistryAddressKey) {
				registryAddress = strings.Split(property, "=")[1]
			}
			if strings.HasPrefix(property, constant.MetadataReportAddressKey) {
				metadataReportAddress = strings.Split(property, "=")[1]
			}
		}
	}

	if len(registryAddress) > 0 {
		logger.Infof("Valid registry address is %s", registryAddress)
		c := newAddressConfig(registryAddress)
		addrUrl, err := c.toURL()
		if err != nil {
			panic(err)
		}
		RegistryCenter, err = extension.GetRegistry(c.getProtocol(), addrUrl)
		if err != nil {
			panic(err)
		}
	}
	if len(metadataReportAddress) > 0 {
		logger.Infof("Valid meta center address is %s", metadataReportAddress)
		c := newAddressConfig(metadataReportAddress)
		addrUrl, err := c.toURL()
		if err != nil {
			panic(err)
		}
		factory := extension.GetMetadataReportFactory(c.getProtocol())
		MetadataReportCenter = factory.CreateMetadataReport(addrUrl)
	}
}