external.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package env
  2. import "github.com/opencost/opencost/core/pkg/env"
  3. // External.NodeLabels environment variables configure the ConfigMap used to read custom node labels.
  4. // Set EXTERNAL_NODELABELS_CONFIG_MAP_NAME to enable this feature. The namespace defaults to the
  5. // agent's namespace if not specified.
  6. // For block-scalar ConfigMaps, set EXTERNAL_NODELABELS_KEY to the data key containing the YAML
  7. // document and EXTERNAL_NODELABELS_ROUTE to the path within the YAML document that contains the
  8. // node labels.
  9. const (
  10. ExternalNodeLabelsConfigMapNameEnvVar = "EXTERNAL_NODELABELS_CONFIG_MAP_NAME"
  11. ExternalNodeLabelsNamespaceEnvVar = "EXTERNAL_NODELABELS_NAMESPACE"
  12. ExternalNodeLabelsKeyEnvVar = "EXTERNAL_NODELABELS_KEY"
  13. ExternalNodeLabelsRouteEnvVar = "EXTERNAL_NODELABELS_ROUTE"
  14. )
  15. // GetExternalNodeLabelsConfigMapName returns the name of the ConfigMap that contains the external node labels.
  16. func GetExternalNodeLabelsConfigMapName() string {
  17. return env.Get(ExternalNodeLabelsConfigMapNameEnvVar, "")
  18. }
  19. // GetExternalNodeLabelsNamespace returns the namespace of the external node labels ConfigMap.
  20. // An empty string means the agent's own namespace should be used.
  21. func GetExternalNodeLabelsNamespace() string {
  22. return env.Get(ExternalNodeLabelsNamespaceEnvVar, "")
  23. }
  24. // GetExternalNodeLabelsKey returns the ConfigMap data key that holds the YAML document
  25. // for block-scalar ConfigMaps. Empty for traditional ConfigMaps.
  26. func GetExternalNodeLabelsKey() string {
  27. return env.Get(ExternalNodeLabelsKeyEnvVar, "")
  28. }
  29. // GetExternalNodeLabelsRoute returns the dot-separated path to the labels map within
  30. // the parsed YAML document. Empty for traditional ConfigMaps.
  31. func GetExternalNodeLabelsRoute() string {
  32. return env.Get(ExternalNodeLabelsRouteEnvVar, "")
  33. }