1
0
mirror of https://github.com/rancher/os.git synced 2025-09-01 06:40:31 +00:00

Early cloud-init

This commit is contained in:
Josh Curl
2016-11-09 11:08:30 -08:00
parent 72f7f9a572
commit 13b34a6668
18 changed files with 312 additions and 249 deletions

View File

@@ -31,27 +31,32 @@ func ReadConfig(bytes []byte, substituteMetadataVars bool, files ...string) (*Cl
return c, nil
}
func loadRawDiskConfig(full bool) map[interface{}]interface{} {
func loadRawDiskConfig(dirPrefix string, full bool) map[interface{}]interface{} {
var rawCfg map[interface{}]interface{}
if full {
rawCfg, _ = readConfigs(nil, true, false, OsConfigFile, OemConfigFile)
}
files := append(CloudConfigDirFiles(), CloudConfigFile)
files := CloudConfigDirFiles(dirPrefix)
files = append(files, path.Join(dirPrefix, CloudConfigFile))
additionalCfgs, _ := readConfigs(nil, true, false, files...)
return util.Merge(rawCfg, additionalCfgs)
}
func loadRawConfig() map[interface{}]interface{} {
rawCfg := loadRawDiskConfig(true)
func loadRawConfig(dirPrefix string) map[interface{}]interface{} {
rawCfg := loadRawDiskConfig(dirPrefix, true)
rawCfg = util.Merge(rawCfg, readCmdline())
rawCfg = applyDebugFlags(rawCfg)
return mergeMetadata(rawCfg, readMetadata())
}
func LoadConfig() *CloudConfig {
rawCfg := loadRawConfig()
return LoadConfigWithPrefix("")
}
func LoadConfigWithPrefix(dirPrefix string) *CloudConfig {
rawCfg := loadRawConfig(dirPrefix)
cfg := &CloudConfig{}
if err := util.Convert(rawCfg, cfg); err != nil {
@@ -63,8 +68,10 @@ func LoadConfig() *CloudConfig {
return cfg
}
func CloudConfigDirFiles() []string {
files, err := ioutil.ReadDir(CloudConfigDir)
func CloudConfigDirFiles(dirPrefix string) []string {
cloudConfigDir := path.Join(dirPrefix, CloudConfigDir)
files, err := ioutil.ReadDir(cloudConfigDir)
if err != nil {
if os.IsNotExist(err) {
// do nothing
@@ -78,7 +85,7 @@ func CloudConfigDirFiles() []string {
var finalFiles []string
for _, file := range files {
if !file.IsDir() && !strings.HasPrefix(file.Name(), ".") {
finalFiles = append(finalFiles, path.Join(CloudConfigDir, file.Name()))
finalFiles = append(finalFiles, path.Join(cloudConfigDir, file.Name()))
}
}