1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- package config
- import (
- "io/ioutil"
- "strings"
- yaml "github.com/cloudfoundry-incubator/candiedyaml"
- "github.com/rancher/os/config/cmdline"
- "github.com/rancher/os/pkg/util"
- )
- const Banner = `
- , , ______ _ _____ _____TM
- ,------------|'------'| | ___ \\ | | / _ / ___|
- / . '-' |- | |_/ /__ _ _ __ ___| |__ ___ _ __ | | | \\ '--.
- \\/| | | | // _' | '_ \\ / __| '_ \\ / _ \\ '__' | | | |'--. \\
- | .________.'----' | |\\ \\ (_| | | | | (__| | | | __/ | | \\_/ /\\__/ /
- | | | | \\_| \\_\\__,_|_| |_|\\___|_| |_|\\___|_| \\___/\\____/
- \\___/ \\___/ \s \r
- RancherOS \v \n \l
- `
- func Merge(bytes []byte) error {
- data, err := readConfigs(bytes, false, true)
- if err != nil {
- return err
- }
- existing, err := readConfigs(nil, false, true, CloudConfigFile)
- if err != nil {
- return err
- }
- return WriteToFile(util.Merge(existing, data), CloudConfigFile)
- }
- func Export(private, full bool) (string, error) {
- rawCfg := loadRawConfig("", full)
- rawCfg = filterAdditional(rawCfg)
- if !private {
- rawCfg = filterPrivateKeys(rawCfg)
- }
- bytes, err := yaml.Marshal(rawCfg)
- return string(bytes), err
- }
- func filterPrivateKeys(data map[interface{}]interface{}) map[interface{}]interface{} {
- for _, privateKey := range PrivateKeys {
- _, data = filterKey(data, strings.Split(privateKey, "."))
- }
- return data
- }
- func filterAdditional(data map[interface{}]interface{}) map[interface{}]interface{} {
- for _, additional := range Additional {
- _, data = filterKey(data, strings.Split(additional, "."))
- }
- return data
- }
- func Get(key string) (interface{}, error) {
- cfg := LoadConfig()
- data := map[interface{}]interface{}{}
- if err := util.ConvertIgnoreOmitEmpty(cfg, &data); err != nil {
- return nil, err
- }
- v, _ := cmdline.GetOrSetVal(key, data, nil)
- return v, nil
- }
- func Set(key string, value interface{}) error {
- existing, err := readConfigs(nil, false, true, CloudConfigFile)
- if err != nil {
- return err
- }
- _, modified := cmdline.GetOrSetVal(key, existing, value)
- c := &CloudConfig{}
- if err = util.Convert(modified, c); err != nil {
- return err
- }
- return WriteToFile(modified, CloudConfigFile)
- }
- func GetKernelVersion() string {
- b, err := ioutil.ReadFile("/proc/version")
- if err != nil {
- return ""
- }
- elem := strings.Split(string(b), " ")
- return elem[2]
- }
|