diff options
Diffstat (limited to 'config.go')
| -rw-r--r-- | config.go | 101 |
1 files changed, 45 insertions, 56 deletions
@@ -47,14 +47,11 @@ func (c *Cluster) ConfigSave() error { return err } - var e *Events - e = new(Events) - e.Events = c.Events - if err := ConfigWriteJSON(e, "events.json"); err != nil { + if err := ConfigWriteJSON(c.E, "events.json"); err != nil { fmt.Println("events.json write failed") return err } - if err := ConfigWriteTEXT(e, "events.text"); err != nil { + if err := ConfigWriteTEXT(c.E, "events.text"); err != nil { fmt.Println("events.json write failed") return err } @@ -68,7 +65,7 @@ func (c *Cluster) ConfigSave() error { newc.Dirs = c.Dirs newc.Droplets = nil newc.Hypervisors = nil - newc.Events = nil + newc.E = nil if err := ConfigWriteTEXT(&newc, "cluster.text"); err != nil { fmt.Println("cluster.json write failed") return err @@ -88,45 +85,6 @@ func backupConfigFiles() error { return backupFiles(srcDir, destDir) } -/* -func (c *Cluster) ConfigLoadOld2() error { - if c == nil { - return errors.New("It's not safe to run ConfigLoad() on a nil cluster") - } - - // erase or zero fields that shouldn't ever be written to the config file - c.BlankFields() - - // load the cluster config file - if data, err := loadFile("virtigo.json"); err == nil { - if err = protojson.Unmarshal(data, c); err != nil { - fmt.Println("broken cluster.json config file") - fmt.Println(err) - return errors.New("cluster.json file is broken") - } - } else { - return err - } - - var e *Events - e = new(Events) - // load the events config file - if data, err := loadFile("events.json"); err == nil { - if err = protojson.Unmarshal(data, e); err != nil { - fmt.Println("broken events.json config file") - return err - } - } else { - return err - } - // copy them over. is this needed? does the memory free otherwise? - for _, a := range e.Events { - c.Events = append(c.Events, a) - } - return nil -} -*/ - func (c *Cluster) ConfigLoad() error { if c == nil { return errors.New("It's not safe to run ConfigLoad() on a nil cluster") @@ -177,20 +135,51 @@ func (c *Cluster) ConfigLoad() error { c.Hypervisors = append(c.Hypervisors, a) } - var e *Events - e = new(Events) + if err := c.loadEvents(); err != nil { + return err + } + return nil +} + +func (c *Cluster) loadEvents() error { + var data []byte + var err error + + if c == nil { + fmt.Println("cluster == nil") + os.Exit(-1) + } + + if c.E == nil { + fmt.Println("cluster.E == nil") + c.E = new(Events) + } + + if c.E == nil { + fmt.Println("cluster.E == nil") + os.Exit(-1) + } + // load the events config file - if data, err := loadFile("events.json"); err == nil { - if err = protojson.Unmarshal(data, e); err != nil { - fmt.Println("broken events.json config file") - return err - } - } else { + if data, err = loadFile("events.json"); err != nil { + fmt.Println("broken events.json config file") return err } - // copy them over. is this needed? does the memory free otherwise? - for _, a := range e.Events { - c.Events = append(c.Events, a) + + err = protojson.Unmarshal(data, c.E) + if err != nil { + fmt.Println("broken events.json config file") + // json load failed. try loading prototext + if data, err = loadFile("events.text"); err != nil { + fmt.Println("broken events.text config file") + fmt.Println(err) + return errors.New("events.text file is broken") + } + if err = prototext.Unmarshal(data, c.E); err != nil { + fmt.Println("broken events.text config file") + fmt.Println(err) + return errors.New("events.text file is broken") + } } return nil } |
