-
Notifications
You must be signed in to change notification settings - Fork 12
/
config.go
49 lines (37 loc) · 1.71 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
package main
import (
"fmt"
"github.com/jitsucom/bulker/jitsubase/appbase"
"github.com/jitsucom/bulker/jitsubase/utils"
"github.com/spf13/viper"
"os"
)
type Config struct {
appbase.Config `mapstructure:",squash"`
DatabaseURL string `mapstructure:"DATABASE_URL"`
// in case of different visibility of database side car may require different db hostname
SidecarDatabaseURL string `mapstructure:"SIDECAR_DATABASE_URL"`
// # Bulker
BulkerURL string `mapstructure:"BULKER_URL" default:"http://localhost:3042"`
BulkerAuthToken string `mapstructure:"BULKER_AUTH_TOKEN"`
// # Kubernetes
// KubernetesNamespace namespace of bulker app. Default: `default`
KubernetesNamespace string `mapstructure:"KUBERNETES_NAMESPACE" default:"default"`
KubernetesClientConfig string `mapstructure:"KUBERNETES_CLIENT_CONFIG" default:"local"`
KubernetesContext string `mapstructure:"KUBERNETES_CONTEXT"`
// nodeSelector for sync pods in json format, e.g: {"disktype": "ssd"}
KubernetesNodeSelector string `mapstructure:"KUBERNETES_NODE_SELECTOR"`
ContainerStatusCheckSeconds int `mapstructure:"CONTAINER_STATUS_CHECK_SECONDS" default:"10"`
ContainerInitTimeoutSeconds int `mapstructure:"CONTAINER_INIT_TIMEOUT_SECONDS" default:"180"`
TaskTimeoutHours int `mapstructure:"TASK_TIMEOUT_HOURS" default:"48"`
SidecarImage string `mapstructure:"SIDECAR_IMAGE" default:"jitsucom/sidecar:latest"`
}
func init() {
viper.SetDefault("HTTP_PORT", utils.NvlString(os.Getenv("PORT"), "3043"))
}
func (c *Config) PostInit(settings *appbase.AppSettings) error {
if c.KubernetesClientConfig == "" {
return fmt.Errorf("%sKUBERNETES_CLIENT_CONFIG is required", settings.EnvPrefixWithUnderscore())
}
return c.Config.PostInit(settings)
}