//check validation of config func validateConfig(conf *Config, md *toml.MetaData) error { //for protection when debugging on non production environment var errStrings []string format := "[%s]" inValid := false for _, keys := range checkTomlKeys { if !md.IsDefined(keys...) { switch len(keys) { case 1: format = "[%s]" case 2: format = "[%s] %s" case 3: format = "[%s.%s] %s" default: //invalid check string inValid = true break } keysIfc := u.SliceStrToInterface(keys) errStrings = append(errStrings, fmt.Sprintf(format, keysIfc...)) } } // Error if inValid { return errors.New("Error: Check Text has wrong number of parameter") } if len(errStrings) != 0 { return fmt.Errorf("Error: There are lacks of keys : %#v \n", errStrings) } return nil }
func validateScriptsConf(scripts *ScriptsConf, meta toml.MetaData) error { if scripts == nil { return nil } if !meta.IsDefined("scripts", "path") { return errors.New("scripts section provided without path.") } if !meta.IsDefined("scripts", "run_interval_ms") { return errors.New("scripts section provided without run_interval_ms.") } if scripts.RunIntervalMS <= 0 { return errors.New("scripts.run_interval_ms must be positive") } return nil }
func validateOSStatsConf(osStats *OSStatsConf, meta toml.MetaData) error { if osStats == nil { return nil } if meta.IsDefined("os_stats", "check_interval_ms") { if osStats.CheckIntervalMS <= 0 { return errors.New("check_interval_ms must be positive") } } if err := validateMemConf(osStats.Mem); err != nil { return err } if err := validateCPUConf(osStats.CPU); err != nil { return err } // For now, any parseable NetConf is valid. for _, diskConf := range osStats.Disk { if err := validateDiskConf(diskConf); err != nil { return err } } return nil }
//Loads a container configuration object, overriding a base //This function prevents empty TOML keys (anything you didn't specify) from overriding a preset value. func LoadContainerSettings(base *Container, inc *Container, meta *toml.MetaData, key ...string) { if meta.IsDefined(append(key, "command")...) { base.Command = inc.Command } if meta.IsDefined(append(key, "folder")...) { base.Folder = inc.Folder } if meta.IsDefined(append(key, "privileged")...) { base.Privileged = inc.Privileged } if meta.IsDefined(append(key, "mounts")...) { base.Mounts = append(base.Mounts, inc.Mounts...) } if meta.IsDefined(append(key, "ports")...) { base.Ports = append(base.Ports, inc.Ports...) } if meta.IsDefined(append(key, "dns")...) { base.DNS = append(base.DNS, inc.DNS...) } if meta.IsDefined(append(key, "attach")...) { base.Attach = inc.Attach } if meta.IsDefined(append(key, "purge")...) { base.Purge = inc.Purge } if meta.IsDefined(append(key, "environment")...) { base.Environment = append(base.Environment, inc.Environment...) } }