-
Manuel Kieweg authored
This reverts merge request !93
Manuel Kieweg authoredThis reverts merge request !93
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
controller.go 1.41 KiB
package nucleus
import (
"code.fbi.h-da.de/cocsn/gosdn/database"
"fmt"
"github.com/google/uuid"
log "github.com/sirupsen/logrus"
"github.com/spf13/viper"
"os"
)
// Core is the representation of the controllers core
type Core struct {
southboundInterfaces map[string]SouthboundInterface
prinipalNetworkDomains map[uuid.UUID]PrincipalNetworkDomain
database database.Database
IsRunning chan bool
}
//Initialize does start-up housekeeping like reading controller config files
func (c *Core) Initialize(IsRunningChannel chan bool) {
// Set config defaults
viper.SetDefault("socket", "localhost:55055")
// Set config path and read config
viper.SetConfigName("gosdn")
viper.SetConfigType("toml")
viper.AddConfigPath("/usr/local/etc/gosdn/")
viper.AddConfigPath("./configs/")
err := viper.ReadInConfig()
if err != nil {
log.Fatal(fmt.Errorf("Fatal error config file: %s \n", err))
}
c.AttachDatabase()
c.IsRunning = IsRunningChannel
}
// AttachDatabase connects to the database and passes the connectio to the controller core
func (c *Core) AttachDatabase() {
c.database = database.NewDatabaseClient()
}
// Shutdown waits for the shutdown signal and gracefully shuts down once it arrived
func (c *Core) Shutdown() {
<-c.IsRunning
log.Info("Received shutdown signal. Shutting down")
err := viper.WriteConfig()
if err != nil {
log.Fatal(err)
}
log.Info("Shutdown complete")
os.Exit(0)
}