Newer
Older
"code.fbi.h-da.de/cocsn/gosdn/restconf/client/ciena"
CliSocket string
DatabaseSocket string
DatabaseUser string
DatabasePassword string
DatabaseCrypto bool
ConfigPath string
type clientConfig struct{
identifier string
endpoint string
username string
password string
}
//Assert type with clients[key].(*MCPClient)
clients map[string]interfaces.Client
IsRunning chan bool
func (c *Core) Init(socket, configFileController, configFileClient string, IsRunningChannel chan bool) {
if err := c.readControllerConfig(configFileController); err != nil {
if socket != "localhost:55055" {
c.config.CliSocket = socket
c.IsRunning = IsRunningChannel
if err := c.readClientConfig(configFileClient); err != nil {
log.Fatal(err)
}
c.database = database.NewDatabaseClient(c.config.DatabaseSocket, c.config.DatabaseUser, c.config.DatabasePassword, c.config.DatabaseCrypto)
<- c.IsRunning
log.Info("Received shutdown signal. Shutting down")
enc := toml.NewEncoder(f)
if err := enc.Encode(c.config); err != nil {
log.Info("Shutdown complete")
os.Exit(0)
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
func (c *Core)readControllerConfig(configFileController string) error {
if configFileController == "" {
configFileController = "gosdn.toml"
}
if _, err := os.Stat(configFileController); err != nil {
return err
}
c.config = controllerConfig{}
if _, err := toml.DecodeFile(configFileController, &c.config); err != nil {
return err
}
if c.config.ConfigPath == "" {
c.config.ConfigPath = configFileController
}
return nil
}
func (c *Core)readClientConfig(configFileClient string) error {
if configFileClient == "" {
configFileClient = "clients.toml"
}
if _,err := os.Stat(configFileClient); err != nil {
return err
}
clients := make([]clientConfig, 0)
if _,err := toml.DecodeFile(configFileClient, &clients); err != nil {
return err
}
for _,client := range clients {
c.clients[client.identifier] = ciena.NewMCPClient(client.endpoint, client.username, client.password, &c.database)
}
return nil
}