new source promoted

This commit is contained in:
2019-10-27 22:56:00 +01:00
parent f781e24028
commit 93846dbbea
17 changed files with 52 additions and 383 deletions

View File

@@ -1,78 +1,41 @@
package main
import (
"fmt"
"log"
"github.com/spf13/viper"
"encoding/json"
"io/ioutil"
)
// Config definition
type Config struct {
hostname string `mapstructure:"hostname"`
boards []*Board `flow,mapstructure:"boards"`
// Configuration def
type Configuration struct {
Hostname string `json:"hostname"`
Outlets map[(uint)]Outlet `json:"outlets"`
Boards []*Board `json:"boards"`
MQTT MQTTConfig `json:"mqtt"`
}
// Configuration container
var Configuration Config
func init() {
viper.SetConfigName("openpdu") // name of config file (without extension)
viper.SetConfigType("yaml") // type of config file
viper.AddConfigPath("/etc/openpdu/") // path to look for the config file in
viper.AddConfigPath(".") // optionally look for config in the working directory
err := viper.ReadInConfig() // Find and read the config file
if err != nil { // Handle errors reading the config file
log.Printf("Fatal error config file: %s \n", err)
}
viper.SetDefault("hostname", "openpdu1")
br := viper.Get("boards").([]interface{})
for k, v := range br {
log.Printf("Key: %v", k)
log.Printf(" Value: %v", v)
var ba Board
viper.UnmarshalKey("boards."+string(k), ba)
log.Printf(" Valueid: %v", ba.ID)
}
log.Printf("basdo: %v", viper.Get("boards[0]"))
log.Printf("todo: %v", viper.AllSettings())
Configuration := Config{}
err = viper.Unmarshal(&Configuration)
func loadConfig(filename string) (Configuration, error) {
bytes, err := ioutil.ReadFile(filename)
if err != nil {
fmt.Printf("unable to decode into config struct, %v", err)
return Configuration{}, err
}
viper.WriteConfigAs("openpdu_out.yaml")
log.Printf("All settings - hostname: %v \n", Configuration.hostname)
for idx, b := range Configuration.boards {
log.Printf("b %v: %v (%v)", idx, b.Name, b.Type)
var c Configuration
err = json.Unmarshal(bytes, &c)
if err != nil {
return Configuration{}, err
}
// var b []Board
// var brd Board
// b = viper.Get("boards").([]Board)
// for brd := range viper.Get("boards") {
// log.Printf("brd: %v", brd)
// }
// log.Printf("bo: %v", viper.Get("boards"))
// log.Printf("bo: %v", b)
log.Printf("cfg: %v", Configuration)
log.Printf("cfgb: %v", Configuration.boards)
return c, nil
}
func writeConfig() {
viper.SetConfigName("openpdu") // name of config file (without extension)
viper.SetConfigType("yaml")
viper.AddConfigPath("/etc/openpdu/") // path to look for the config file in
viper.SetDefault("hostname", "openpdu")
err := viper.WriteConfig()
if err != nil { // Handle errors reading the config file
log.Printf("Fatato error config file: %s \n", err)
func saveConfig(c Configuration, filename string) error {
bytes, err := json.MarshalIndent(c, "", " ")
if err != nil {
return err
}
log.Printf("ok credo \n")
return ioutil.WriteFile(filename, bytes, 0644)
}
// TheConfig def
var TheConfig Configuration