1
0
mirror of https://github.com/rancher/os.git synced 2025-09-05 08:42:38 +00:00

do not save/use bad cloud-config

This commit is contained in:
Ivan Mikushin
2015-08-20 19:20:51 +05:00
parent aa1af05d46
commit 642c557c73
4 changed files with 23 additions and 10 deletions

View File

@@ -208,15 +208,22 @@ func saveCloudConfig() error {
return err
}
} else if config.IsCloudConfig(userData) {
// nothing to do
if rancherConfig.ReadConfig(userDataBytes) == nil {
log.WithFields(log.Fields{"cloud-config": userData}).Warn("Failed to parse cloud-config, not saving.")
userDataBytes = []byte{}
}
} else {
log.Errorf("Unrecognized cloud-init\n%s", userData)
userDataBytes = []byte{}
}
if userDataBytes, scriptBytes, err = mergeBaseConfig(userDataBytes, scriptBytes); err != nil {
userDataBytesMerged, scriptBytes, err := mergeBaseConfig(userDataBytes, scriptBytes)
if err != nil {
log.Errorf("Failed to merge base config: %v", err)
return err
} else if rancherConfig.ReadConfig(userDataBytesMerged) == nil {
log.WithFields(log.Fields{"cloud-config": userData}).Warn("Failed to parse merged cloud-config, not merging.")
} else {
userDataBytes = userDataBytesMerged
}
return saveFiles(userDataBytes, scriptBytes, metadata)
@@ -306,14 +313,14 @@ func Main() {
if save {
err := saveCloudConfig()
if err != nil {
log.Fatalf("Failed to save cloud config: %v", err)
log.WithFields(log.Fields{"err": err}).Error("Failed to save cloud-config")
}
}
if execute {
err := executeCloudConfig()
if err != nil {
log.Fatalf("Failed to save cloud config: %v", err)
log.WithFields(log.Fields{"err": err}).Error("Failed to execute cloud-config")
}
}
}

View File

@@ -101,7 +101,7 @@ func imagesFromConfig(cfg *config.CloudConfig) []string {
func runImages(c *cli.Context) {
configFile := c.String("input")
cfg := config.ReadConfig(configFile)
cfg := config.ReadConfig(nil, configFile)
if cfg == nil {
log.Fatalf("Could not read config from file %v", configFile)
}

View File

@@ -67,6 +67,10 @@ func LoadConfig() (*CloudConfig, error) {
}
func (c *CloudConfig) merge(values map[interface{}]interface{}) error {
t := &CloudConfig{}
if err := util.Convert(values, t); err != nil {
return err
}
return util.Convert(values, c)
}

View File

@@ -1,13 +1,15 @@
package config
func NewConfig() *CloudConfig {
return ReadConfig(OsConfigFile)
return ReadConfig(nil, OsConfigFile)
}
func ReadConfig(file string) *CloudConfig {
if data, err := readConfig(nil, file); err == nil {
func ReadConfig(bytes []byte, files ...string) *CloudConfig {
if data, err := readConfig(bytes, files...); err == nil {
c := &CloudConfig{}
c.merge(data)
if err := c.merge(data); err != nil {
return nil
}
c.amendNils()
return c
} else {