2024-08-21 14:18:44 +05:30
|
|
|
package config
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"context"
|
|
|
|
|
|
2025-03-20 21:01:41 +05:30
|
|
|
"github.com/SigNoz/signoz/pkg/factory"
|
2024-08-21 14:18:44 +05:30
|
|
|
)
|
|
|
|
|
|
2025-01-20 17:45:33 +05:30
|
|
|
func New(ctx context.Context, resolverConfig ResolverConfig, configFactories []factory.ConfigFactory) (*Conf, error) {
|
|
|
|
|
// Get the config from the resolver
|
|
|
|
|
resolver, err := NewResolver(resolverConfig)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
2024-12-23 16:44:48 +05:30
|
|
|
}
|
|
|
|
|
|
2025-01-20 17:45:33 +05:30
|
|
|
resolvedConf, err := resolver.Do(ctx)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
conf := NewConf()
|
|
|
|
|
// Set the default configs
|
|
|
|
|
for _, factory := range configFactories {
|
|
|
|
|
c := factory.New()
|
|
|
|
|
if err := conf.Set(factory.Name().String(), c); err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-08-21 14:18:44 +05:30
|
|
|
|
2025-01-20 17:45:33 +05:30
|
|
|
err = conf.Merge(resolvedConf)
|
2024-08-21 14:18:44 +05:30
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-20 17:45:33 +05:30
|
|
|
return conf, nil
|
2024-08-21 14:18:44 +05:30
|
|
|
}
|