/
config.go
78 lines (62 loc) · 3.05 KB
/
config.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package main
import (
"github.com/jitsucom/bulker/eventslog"
"github.com/jitsucom/bulker/jitsubase/appbase"
"github.com/jitsucom/bulker/jitsubase/utils"
"github.com/jitsucom/bulker/kafkabase"
"github.com/spf13/viper"
"os"
"strings"
)
type Config struct {
// # BASE CONFIG - base setting for jitsu apps
appbase.Config `mapstructure:",squash"`
// # KAFKA CONFIG - base kafka setting
kafkabase.KafkaConfig `mapstructure:",squash"`
// # EVENTS LOG CONFIG - settings for events log
eventslog.EventsLogConfig `mapstructure:",squash"`
// # REPOSITORY CONFIG - settings for loading streams from repository
RepositoryConfig `mapstructure:",squash"`
// data domain for ingest endpoint. Required for using 'slug' to identify Stream. e.g. in ingest URL like `http://{slug}.{DATA_DOMAIN}/`
DataDomain string `mapstructure:"DATA_DOMAIN"`
// alternative to DataDomain. data domain will be extracted from this url
PublicURL string `mapstructure:"PUBLIC_URL"`
// For ingest endpoint only
GlobalHashSecret string `mapstructure:"GLOBAL_HASH_SECRET" default:"dea42a58-acf4-45af-85bb-e77e94bd5025"`
// For ingest endpoint only
GlobalHashSecrets []string
// URL to fetch p.js javascript code from
ScriptOrigin string `mapstructure:"SCRIPT_ORIGIN" default:"https://cdn.jsdelivr.net/npm/@jitsu/js@latest/dist/web/p.js.txt"`
//Cache dir for repository and javascript data
CacheDir string `mapstructure:"CACHE_DIR"`
BackupLogDir string `mapstructure:"BACKUP_LOG_DIR"`
BackupLogTTL int `mapstructure:"BACKUP_LOG_TTL_DAYS" default:"7"`
BackupLogRotateHours int `mapstructure:"BACKUP_LOG_ROTATE_HOURS" default:"24"`
BackupLogMaxSizeMb int `mapstructure:"BACKUP_LOG_MAX_SIZE_MB" default:"100"`
// # EVENTS REDIS LOGGING
RedisURL string `mapstructure:"REDIS_URL"`
RedisTLSCA string `mapstructure:"REDIS_TLS_CA"`
EventsLogMaxSize int `mapstructure:"EVENTS_LOG_MAX_SIZE" default:"1000"`
RotorURL string `mapstructure:"ROTOR_URL"`
RotorAuthKey string `mapstructure:"ROTOR_AUTH_KEY"`
DeviceFunctionsTimeoutMs int `mapstructure:"DEVICE_FUNCTIONS_TIMEOUT_MS" default:"200"`
MetricsPort int `mapstructure:"METRICS_PORT" default:"9091"`
MaxIngestPayloadSize int `mapstructure:"MAX_INGEST_PAYLOAD_SIZE" default:"1048576"`
WeightedPartitionSelectorLagThreshold int64 `mapstructure:"WEIGHTED_PARTITION_SELECTOR_LAG_THRESHOLD" default:"100"`
// # GRACEFUL SHUTDOWN
//Timeout that give running batch tasks time to finish during shutdown.
ShutdownTimeoutSec int `mapstructure:"SHUTDOWN_TIMEOUT_SEC" default:"10"`
//Extra delay may be needed. E.g. for metric scrapper to scrape final metrics. So http server will stay active for an extra period.
ShutdownExtraDelay int `mapstructure:"SHUTDOWN_EXTRA_DELAY_SEC" default:"5"`
}
func init() {
viper.SetDefault("HTTP_PORT", utils.NvlString(os.Getenv("PORT"), "3049"))
}
func (ac *Config) PostInit(settings *appbase.AppSettings) error {
err := ac.Config.PostInit(settings)
if err != nil {
return err
}
ac.GlobalHashSecrets = strings.Split(ac.GlobalHashSecret, ",")
return nil
}