compute/pkg/config/config.go

65 lines
1.2 KiB
Go

package config
import (
"encoding/hex"
"fmt"
"log"
"strings"
"github.com/denisbrodbeck/machineid"
"gopkg.in/ini.v1"
)
type Config struct {
ClusterID string
AddressPublic string
AddressPrivate string
NodeID string
Manager Manager
AmqpURI string
EtcdURI string
LibvirtTLS bool
}
type Manager struct {
Peers []string
TlsKey string
TlsCert string
TlsCA string
}
func New() (*Config, error) {
c, err := ini.Load("/etc/deevirt/config.ini")
if err != nil {
log.Fatal(err)
}
id, err := machineid.ID()
if err != nil {
log.Fatal(err)
}
mID, _ := hex.DecodeString(id)
libvirtTLS, _ := c.Section("libvirt").Key("tls").Bool()
//Manager
peers := strings.Split(c.Section("mgr").Key("peers").String(), ",")
manager := &Manager{
Peers: peers,
}
return &Config{
ClusterID: c.Section("").Key("id_cluster").String(),
AddressPublic: c.Section("").Key("ip_public").String(),
AddressPrivate: c.Section("").Key("ip_private").String(),
NodeID: fmt.Sprintf("%x-%x-%x-%x-%x", mID[:4], mID[4:6], mID[6:8], mID[8:10], mID[10:]),
Manager: *manager,
AmqpURI: c.Section("broker").Key("uri").String(),
EtcdURI: c.Section("etcd").Key("uri").String(),
LibvirtTLS: libvirtTLS,
}, nil
}