-
Manuel Kieweg authoredManuel Kieweg authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
controller.go 1.55 KiB
package nucleus
import (
"code.fbi.h-da.de/cocsn/gosdn/database"
"code.fbi.h-da.de/cocsn/gosdn/log"
"code.fbi.h-da.de/cocsn/gosdn/nucleus/interfaces"
"code.fbi.h-da.de/cocsn/gosdn/restconf/client/ciena"
"github.com/BurntSushi/toml"
"os"
)
type controllerConfig struct {
CliSocket string
DatabaseSocket string
DatabaseUser string
DatabasePassword string
DatabaseCrypto bool
ConfigPath string
}
type Core struct {
//Assert type with clients[key].(*MCPClient)
clients map[string]interfaces.Client
database database.Database
config controllerConfig
}
func (c *Core) Init(socket, configfile string) {
if configfile == "" {
configfile = "gosdn.toml"
}
_, err := os.Stat(configfile)
if err != nil {
log.Fatal("Config file is missing: ", configfile)
}
c.config = controllerConfig{}
if _, err := toml.DecodeFile(configfile, &c.config); err != nil {
log.Fatal(err)
}
if socket != "localhost:55055" {
c.config.CliSocket = socket
}
if c.config.ConfigPath == "" {
c.config.ConfigPath = configfile
}
c.AttachDatabase()
//TODO: Create client config/CLI adapter
c.clients["ciena-mcp"] = ciena.NewMCPClient( "141.100.70.170", "", "", &c.database)
}
func (c *Core) AttachDatabase() {
c.database = database.NewDatabaseClient(c.config.DatabaseSocket, c.config.DatabaseUser, c.config.DatabasePassword, c.config.DatabaseCrypto)
}
func (c *Core) Shutdown() {
f, err := os.Create(c.config.ConfigPath)
if err != nil {
log.Fatal(err)
}
enc := toml.NewEncoder(f)
if err := enc.Encode(c.config); err != nil {
log.Fatal(err)
}
}