package config

import (
	"encoding/hex"
	"fmt"
	"log"

	"github.com/denisbrodbeck/machineid"
	"gopkg.in/ini.v1"
)

type Config struct {
	ClusterID  string
	NodeID     string
	AmqpURI    string
	EtcdURI    string
	LibvirtTLS bool
}

func NewConfig() (*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()

	return &Config{
		ClusterID:  c.Section("").Key("id").String(),
		NodeID:     fmt.Sprintf("%x-%x-%x-%x-%x", mID[:4], mID[4:6], mID[6:8], mID[8:10], mID[10:]),
		AmqpURI:    c.Section("broker").Key("uri").String(),
		EtcdURI:    c.Section("etcd").Key("uri").String(),
		LibvirtTLS: libvirtTLS,
	}, nil
}