Skip to content

Commit

Permalink
dev: Don't initialize defaults from env
Browse files Browse the repository at this point in the history
  • Loading branch information
KrishnaIyer committed Mar 13, 2024
1 parent 69ccb7a commit dfff8ff
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 28 deletions.
95 changes: 70 additions & 25 deletions pkg/source/tts/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,61 +66,61 @@ func (c *serverConfig) applyDefaults() {
)
}

func New() (*Config, *pflag.FlagSet) {
var (
config = &Config{ServerConfig: &serverConfig{}}
flags = &pflag.FlagSet{}
)
func New() *Config {
config := &Config{
ServerConfig: &serverConfig{},
flags: &pflag.FlagSet{},
}

flags.StringVar(&config.AppID,
config.flags.StringVar(&config.AppID,
"app-id",
os.Getenv("TTS_APP_ID"),
"",
"TTS Application ID")
flags.StringVar(&config.appAPIKey,
config.flags.StringVar(&config.appAPIKey,
"app-api-key",
os.Getenv("TTS_APP_API_KEY"),
"",
"TTS Application Access Key (with 'devices' permissions)")

flags.StringVar(&config.caPath,
config.flags.StringVar(&config.caPath,
"ca-file",
os.Getenv("TTS_CA_FILE"),
"",
"TTS Path to a CA file (optional)")
flags.BoolVar(&config.insecure,
config.flags.BoolVar(&config.insecure,
"insecure",
false,
"TTS allow TCP connection")

flags.StringVar(&config.ServerConfig.defaultGRPCAddress,
config.flags.StringVar(&config.ServerConfig.defaultGRPCAddress,
"default-grpc-address",
os.Getenv("TTS_DEFAULT_GRPC_ADDRESS"),
"",
"TTS default GRPC Address (optional)")
flags.StringVar(&config.ServerConfig.ApplicationServerGRPCAddress,
config.flags.StringVar(&config.ServerConfig.ApplicationServerGRPCAddress,
"application-server-grpc-address",
os.Getenv("TTS_APPLICATION_SERVER_GRPC_ADDRESS"),
"",
"TTS Application Server GRPC Address")
flags.StringVar(&config.ServerConfig.IdentityServerGRPCAddress,
config.flags.StringVar(&config.ServerConfig.IdentityServerGRPCAddress,
"identity-server-grpc-address",
os.Getenv("TTS_IDENTITY_SERVER_GRPC_ADDRESS"),
"",
"TTS Identity Server GRPC Address")
flags.StringVar(&config.ServerConfig.JoinServerGRPCAddress,
config.flags.StringVar(&config.ServerConfig.JoinServerGRPCAddress,
"join-server-grpc-address",
os.Getenv("TTS_JOIN_SERVER_GRPC_ADDRESS"),
"",
"TTS Join Server GRPC Address")
flags.StringVar(&config.ServerConfig.NetworkServerGRPCAddress,
config.flags.StringVar(&config.ServerConfig.NetworkServerGRPCAddress,
"network-server-grpc-address",
os.Getenv("TTS_NETWORK_SERVER_GRPC_ADDRESS"),
"",
"TTS Network Server GRPC Address")

flags.BoolVar(&config.NoSession,
config.flags.BoolVar(&config.NoSession,
"no-session",
false,
"TTS export devices without session")
flags.BoolVar(&config.DeleteSourceDevice,
config.flags.BoolVar(&config.DeleteSourceDevice,
"delete-source-device",
false,
"TTS delete exported devices")

return config, flags
return config
}

type Config struct {
Expand All @@ -135,11 +135,51 @@ type Config struct {
NoSession bool
DeleteSourceDevice bool
AppID string

flags *pflag.FlagSet
}

func (c *Config) Initialize(rootConfig source.Config) error {
c.Config = rootConfig

if appID := os.Getenv("TTS_APP_ID"); appID != "" {
c.AppID = appID
}
if appAPIKey := os.Getenv("TTS_APP_API_KEY"); appAPIKey != "" {
c.appAPIKey = appAPIKey
}
if caPath := os.Getenv("TTS_CA_FILE"); caPath != "" {
c.caPath = caPath
}
if insecure := os.Getenv("TTS_INSECURE"); insecure == "true" {
c.insecure = true
}
if noSession := os.Getenv("TTS_NO_SESSION"); noSession == "true" {
c.NoSession = true
}
if deleteSourceDevice := os.Getenv("TTS_DELETE_SOURCE_DEVICE"); deleteSourceDevice == "true" {
c.DeleteSourceDevice = true
}
if defaultGRPCAddress := os.Getenv("TTS_DEFAULT_GRPC_ADDRESS"); defaultGRPCAddress != "" {
c.ServerConfig.defaultGRPCAddress = defaultGRPCAddress
}
if applicationServerGRPCAddress := os.Getenv("TTS_APPLICATION_SERVER_GRPC_ADDRESS"); applicationServerGRPCAddress != "" {
c.ServerConfig.ApplicationServerGRPCAddress = applicationServerGRPCAddress
}
if identityServerGRPCAddress := os.Getenv("TTS_IDENTITY_SERVER_GRPC_ADDRESS"); identityServerGRPCAddress != "" {
c.ServerConfig.IdentityServerGRPCAddress = identityServerGRPCAddress
}
if joinServerGRPCAddress := os.Getenv("TTS_JOIN_SERVER_GRPC_ADDRESS"); joinServerGRPCAddress != "" {
c.ServerConfig.JoinServerGRPCAddress = joinServerGRPCAddress
}
if networkServerGRPCAddress := os.Getenv("TTS_NETWORK_SERVER_GRPC_ADDRESS"); networkServerGRPCAddress != "" {
c.ServerConfig.NetworkServerGRPCAddress = networkServerGRPCAddress
}

if c.AppID == "" {
return errNoAppID.New()
}

if c.appAPIKey == "" {
return errNoAppAPIKey.New()
}
Expand Down Expand Up @@ -193,3 +233,8 @@ func setCustomCA(path string) error {
}
return nil
}

// Flags returns the flags for the configuration.
func (c *Config) Flags() *pflag.FlagSet {
return c.flags
}
1 change: 1 addition & 0 deletions pkg/source/tts/config/errors.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ package config
import "go.thethings.network/lorawan-stack/v3/pkg/errors"

var (
errNoAppID = errors.DefineInvalidArgument("no_app_id", "no app id")
errNoAppAPIKey = errors.DefineInvalidArgument("no_app_api_key", "no app api key")
errNoIdentityServerGRPCAddress = errors.DefineInvalidArgument("no_identity_server_grpc_address", "no identity server grpc address")
errNoJoinServerGRPCAddress = errors.DefineInvalidArgument("no_join_server_grpc_address", "no join server grpc address")
Expand Down
5 changes: 4 additions & 1 deletion pkg/source/tts/source.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,13 @@ type Source struct {

func createNewSource(cfg *config.Config) source.CreateSource {
return func(ctx context.Context, rootCfg source.Config) (source.Source, error) {
if err := cfg.Initialize(rootCfg); err != nil {
return nil, err
}
return Source{
ctx: ctx,
config: cfg,
}, cfg.Initialize(rootCfg)
}, nil
}
}

Expand Down
4 changes: 2 additions & 2 deletions pkg/source/tts/tts.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,12 @@ import (
)

func init() {
cfg, flags := config.New()
cfg := config.New()

source.RegisterSource(source.Registration{
Name: "tts",
Description: "Migrate from The Things Stack",
FlagSet: flags,
FlagSet: cfg.Flags(),
Create: createNewSource(cfg),
})
}

0 comments on commit dfff8ff

Please sign in to comment.