...
1 package environment
2
3 import (
4 "context"
5 "os"
6 "os/exec"
7 "strings"
8
9 "github.com/datawire/dlib/dlog"
10 )
11
12 const (
13 ambassadorRootEnvVar = "APPDIR"
14 ambassadorConfigBaseDirEnvVar = "AMBASSADOR_CONFIG_BASE_DIR"
15 ambassadorClusterIdEnvVar = "AMBASSADOR_CLUSTER_ID"
16 )
17
18
19 func EnvironmentSetupEntrypoint(ctx context.Context) {
20 if os.Getenv(ambassadorClusterIdEnvVar) != "" {
21 return
22 }
23 ambassadorRoot := "/ambassador"
24 ambassadorConfigBaseDir := ambassadorRoot
25 if os.Getenv(ambassadorRootEnvVar) != "" {
26 ambassadorRoot = os.Getenv(ambassadorRootEnvVar)
27 }
28 if os.Getenv(ambassadorConfigBaseDirEnvVar) != "" {
29 ambassadorConfigBaseDir = os.Getenv(ambassadorConfigBaseDirEnvVar)
30 }
31
32
33 cmd := exec.Command("python3", ambassadorRoot+"/kubewatch.py", "--debug")
34
35
36 cmd.Env = os.Environ()
37 if os.Getenv("PYTHON_EGG_CACHE") == "" {
38 cmd.Env = append(cmd.Env, "PYTHON_EGG_CACHE="+ambassadorConfigBaseDir+"/.cache")
39 }
40 cmd.Env = append(cmd.Env, "PYTHONUNBUFFERED=true")
41
42
43 out, err := cmd.Output()
44 if err != nil {
45 dlog.Printf(ctx, "%s failed with %s\n%s\n", cmd.String(), err, string(out))
46 return
47 }
48
49
50 os.Setenv(ambassadorClusterIdEnvVar, strings.TrimSpace(string(out)))
51 dlog.Printf(ctx, "%s=%s", ambassadorClusterIdEnvVar, os.Getenv(ambassadorClusterIdEnvVar))
52 }
53
View as plain text