(接上篇)
配置模块初始化
配置模块初始化具体如下所示。
| err := archaius.Init()...CONFIG = archaius.GetConfigFactory() |
|---|
获取内存配置源
获取内存配置源具体如下所示。
| ms := memoryconfigsource.NewMemoryConfigurationSource()CONFIG.AddSource(ms) |
|---|
获取命令行配置源
获取命令行配置源具体如下所示。
| cmdSource := commandlinesource.NewCommandlineConfigSource()CONFIG.AddSource(cmdSource) |
|---|
获取环境变量配置源
获取环境变量配置源具体如下所示。
| envSource := envconfigsource.NewEnvConfigurationSource()CONFIG.AddSource(envSource) |
|---|
根据配置文件路径获取配置源
根据配置文件路径获取配置源具体如下所示。
| confLocation := getConfigDirectory() + "/conf"_, err = os.Stat(confLocation)if !os.IsExist(err) {os.Mkdir(confLocation, os.ModePerm)}err = filepath.Walk(confLocation, func(location string, f os.FileInfo, err error) error {if f == nil {return err}if f.IsDir() {return nil}ext := strings.ToLower(path.Ext(location))if ext == ".yml" || ext == ".yaml" {archaius.AddFile(location)}return nil})...}) | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
目前,KubeEdge所用的读取配置文件的方式是根据配置文件路径获取配置源。下面深入剖析该配置文件读取方式,首先确定配置所在路径。getConfigDirectory()函数定义具体如下所示。
| KubeEdge/beehive/pkg/common/config/config.go |
|---|
| //constants to define config pathsconst (ParameterConfigPath = "config-path"EnvironmentalConfigPath = "GOARCHAIUS_CONFIG_PATH")...// get the configuration file pathfunc getConfigDirectory() string {if config, err := CONFIG.GetValue(ParameterConfigPath).ToString(); err == nil {return config} if config, err := CONFIG.GetValue(EnvironmentalConfigPath).ToString(); err == nil {return config} return util.GetCurrentDirectory()} |
getConfigDirectory()函数中获取配置文件所在目录的方式有如下3种。
1)根据ParameterConfigPath获取,具体如下所示。
| // get the configuration file pathfunc getConfigDirectory() string {if config, err := CONFIG.GetValue(ParameterConfigPath).ToString(); err == nil {return config} |
|---|
2)根据EnvironmentalConfigPath获取,具体如下所示。
| if config, err := CONFIG.GetValue(EnvironmentalConfigPath).ToString(); err == nil {return config} |
|---|
3)根据可执行文件运行所在的当前目录下获取,具体如下所示。
| return util.GetCurrentDirectory() |
|---|
接着分析怎么读入配置文件,具体读入方法如下所示。
| KubeEdge/beehive/pkg/common/config/config.go | ||
|---|---|---|
| confLocation := getConfigDirectory() + "/conf"_, err = os.Stat(confLocation)if !os.IsExist(err) {os.Mkdir(confLocation, os.ModePerm)}err = filepath.Walk(confLocation, func(location string, f os.FileInfo, err error) error {if f == nil {return err}if f.IsDir() {return nil}ext := strings.ToLower(path.Ext(location))if ext == ".yml" | ext == ".yaml" {archaius.AddFile(location)}return nil})...}) |
「未完待续……」 点击下方标题可阅读技术文章