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)
}
}