blob: 2fcdff2449488199ac7fd8d0419afd93cf1a265e [file] [log] [blame]
/*
* Copyright 2021-present Ciena Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package config
import (
"log"
"os"
"time"
)
func NewDefaultConfig() *GlobalConfigSpec {
return &GlobalConfigSpec{
ApiVersion: "v3",
CurrentStack: "",
Stacks: []*StackConfigSpec{NewDefaultStack("default")},
}
}
func NewDefaultStack(name string) *StackConfigSpec {
return &StackConfigSpec{
Name: name,
Server: "localhost:55555",
Kafka: "localhost:9093",
KvStore: "localhost:2379",
Tls: TlsConfigSpec{
UseTls: false,
Verify: false,
},
Grpc: GrpcConfigSpec{
ConnectTimeout: 5 * time.Second,
Timeout: 5 * time.Minute,
MaxCallRecvMsgSize: "4MB",
},
KvStoreConfig: KvStoreConfigSpec{
Timeout: 5 * time.Second,
},
}
}
func (g *GlobalConfigSpec) StackByName(name string) *StackConfigSpec {
for _, stack := range g.Stacks {
if stack.Name == name {
return stack
}
}
return nil
}
func (g *GlobalConfigSpec) CurrentAsStack() *StackConfigSpec {
if g.CurrentStack == "" {
if len(g.Stacks) == 0 {
return nil
}
return g.Stacks[0]
}
return g.StackByName(g.CurrentStack)
}
func (g GlobalConfigSpec) Current() *StackConfigSpec {
stack := g.CurrentAsStack()
if stack == nil {
if len(g.Stacks) > 1 {
log.New(os.Stderr, "ERROR: ", 0).
Fatal("multiple stacks configured without current specified")
}
log.New(os.Stderr, "ERROR: ", 0).
Fatalf("current stack specified, '%s', does not exist as a configured stack",
g.CurrentStack)
}
return stack
}