config files in 4 pieces for human ease of use
Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
parent
32b0be6149
commit
e176a9b536
78
config.go
78
config.go
|
@ -4,6 +4,7 @@ package virtbuf
|
||||||
// data to and from config files
|
// data to and from config files
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
@ -43,11 +44,11 @@ func (c *Cluster) ConfigSave() error {
|
||||||
var e *Events
|
var e *Events
|
||||||
e = new(Events)
|
e = new(Events)
|
||||||
e.Events = c.Events
|
e.Events = c.Events
|
||||||
if err := ConfigWriteJSON(h, "newEvents.json"); err != nil {
|
if err := ConfigWriteJSON(e, "newEvents.json"); err != nil {
|
||||||
fmt.Println("newEvents.json write failed")
|
fmt.Println("newEvents.json write failed")
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err := ConfigWriteTEXT(h, "newEvents.text"); err != nil {
|
if err := ConfigWriteTEXT(e, "newEvents.text"); err != nil {
|
||||||
fmt.Println("newEvents.json write failed")
|
fmt.Println("newEvents.json write failed")
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -72,15 +73,79 @@ func (c *Cluster) ConfigSave() error {
|
||||||
|
|
||||||
func (c *Cluster) ConfigLoad() error {
|
func (c *Cluster) ConfigLoad() error {
|
||||||
if c == nil {
|
if c == nil {
|
||||||
c = new(Cluster)
|
return errors.New("It's not safe to run ConfigLoad() on a nil cluster")
|
||||||
}
|
}
|
||||||
fullname := filepath.Join(os.Getenv("VIRTIGO_HOME"), "newCluster.json")
|
|
||||||
|
// load the cluster config file
|
||||||
|
if data, err := loadFile("cluster.text"); err == nil {
|
||||||
|
if err = prototext.Unmarshal(data, c); err != nil {
|
||||||
|
fmt.Println("broken cluster.text config file")
|
||||||
|
fmt.Println(err)
|
||||||
|
return errors.New("cluster.text file is broken")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
var d *Droplets
|
||||||
|
d = new(Droplets)
|
||||||
|
// load the droplet config file
|
||||||
|
if data, err := loadFile("droplets.json"); err == nil {
|
||||||
|
if err = protojson.Unmarshal(data, d); err != nil {
|
||||||
|
fmt.Println("broken droplets.json config file")
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
// copy them over. is this needed? does the memory free otherwise?
|
||||||
|
for _, drop := range d.Droplets {
|
||||||
|
c.Droplets = append(c.Droplets, drop)
|
||||||
|
}
|
||||||
|
|
||||||
|
var h *Hypervisors
|
||||||
|
h = new(Hypervisors)
|
||||||
|
// load the hypervisors config file
|
||||||
|
if data, err := loadFile("hypervisors.json"); err == nil {
|
||||||
|
if err = protojson.Unmarshal(data, h); err != nil {
|
||||||
|
fmt.Println("broken hypervisors.json config file")
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
fmt.Println("ERROR HERE IN Hypervisors")
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
// copy them over. is this needed? does the memory free otherwise?
|
||||||
|
for _, a := range h.Hypervisors {
|
||||||
|
c.Hypervisors = append(c.Hypervisors, a)
|
||||||
|
}
|
||||||
|
|
||||||
|
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 loadFile(filename string) ([]byte, error) {
|
||||||
|
fullname := filepath.Join(os.Getenv("VIRTIGO_HOME"), filename)
|
||||||
data, err := os.ReadFile(fullname)
|
data, err := os.ReadFile(fullname)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// log.Info("open config file :", err)
|
// log.Info("open config file :", err)
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
return c.UnmarshalJSON(data)
|
return data, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// reads in from the prototext file
|
// reads in from the prototext file
|
||||||
|
@ -137,7 +202,6 @@ func WriteConfig(d *Droplets, h *Hypervisors, e *Events) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// read in events.json
|
// read in events.json
|
||||||
func ReadEventsConfig() (*Events, error) {
|
func ReadEventsConfig() (*Events, error) {
|
||||||
e := new(Events)
|
e := new(Events)
|
||||||
|
|
Loading…
Reference in New Issue