...

Source file src/github.com/emissary-ingress/emissary/v3/pkg/environment/helper.go

Documentation: github.com/emissary-ingress/emissary/v3/pkg/environment

     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  // EnvironmentSetupEntrypoint replicates the entrypoint.sh environment bootstrapping if the docker entrypoint was changed
    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  	// build kubewatch.py command
    33  	cmd := exec.Command("python3", ambassadorRoot+"/kubewatch.py", "--debug")
    34  
    35  	// inherit all existing environment variables & inject python's own
    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  	// execute and read output
    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  	// set the AMBASSADOR_CLUSTER_ID
    50  	os.Setenv(ambassadorClusterIdEnvVar, strings.TrimSpace(string(out)))
    51  	dlog.Printf(ctx, "%s=%s", ambassadorClusterIdEnvVar, os.Getenv(ambassadorClusterIdEnvVar))
    52  }
    53  

View as plain text