1
0
mirror of https://github.com/rancher/os.git synced 2025-09-05 00:37:12 +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 return err
} }
} else if config.IsCloudConfig(userData) { } 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 { } else {
log.Errorf("Unrecognized cloud-init\n%s", userData) log.Errorf("Unrecognized cloud-init\n%s", userData)
userDataBytes = []byte{} 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) 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) return saveFiles(userDataBytes, scriptBytes, metadata)
@@ -306,14 +313,14 @@ func Main() {
if save { if save {
err := saveCloudConfig() err := saveCloudConfig()
if err != nil { 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 { if execute {
err := executeCloudConfig() err := executeCloudConfig()
if err != nil { 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) { func runImages(c *cli.Context) {
configFile := c.String("input") configFile := c.String("input")
cfg := config.ReadConfig(configFile) cfg := config.ReadConfig(nil, configFile)
if cfg == nil { if cfg == nil {
log.Fatalf("Could not read config from file %v", configFile) 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 { 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) return util.Convert(values, c)
} }

View File

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