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:
@@ -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")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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)
|
||||
}
|
||||
|
@@ -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)
|
||||
}
|
||||
|
||||
|
@@ -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 {
|
||||
|
Reference in New Issue
Block a user