feat: add the --grafana-api-token-filepath flag to the datasource-s… · GoogleCloudPlatform/prometheus-engine@85e3bc5 (original) (raw)

Original file line number Diff line number Diff line change
@@ -43,6 +43,8 @@ var (
43 43
44 44 grafanaAPIToken = flag.String("grafana-api-token", "",
45 45 "grafana-api-token used to access Grafana. Can be created using: https://grafana.com/docs/grafana/latest/administration/service-accounts/#create-a-service-account-in-grafana")
46 +grafanaAPITokenFilepath = flag.String("grafana-api-token-filepath", "",
47 +"filepath to a file containing the grafana-api-token used to access Grafana.")
46 48
47 49 grafanaEndpoint = flag.String("grafana-api-endpoint", "", "grafana-api-endpoint is the endpoint of the Grafana instance that contains the data sources to update.")
48 50
@@ -76,11 +78,27 @@ func main() {
76 78 os.Exit(1)
77 79 }
78 80
81 +if *grafanaAPIToken != "" && *grafanaAPITokenFilepath != "" {
82 +//nolint:errcheck
83 +level.Error(logger).Log("msg", "at most one of --grafana-api-token and --grafana-api-token-filepath must be set")
84 +os.Exit(1)
85 + }
86 +
87 +if *grafanaAPITokenFilepath != "" {
88 +b, err := os.ReadFile(*grafanaAPITokenFilepath)
89 +if err != nil {
90 +//nolint:errcheck
91 +level.Error(logger).Log("msg", "could not read grafana-api-token-filepath", "err", err)
92 +os.Exit(1)
93 + }
94 +*grafanaAPIToken = string(b)
95 + }
96 +
79 97 if *grafanaAPIToken == "" {
80 98 envToken := os.Getenv("GRAFANA_SERVICE_ACCOUNT_TOKEN")
81 99 if envToken == "" {
82 100 //nolint:errcheck
83 -level.Error(logger).Log("msg", "--grafana-api-token or the environment variable GRAFANA_SERVICE_ACCOUNT_TOKEN must be set")
101 +level.Error(logger).Log("msg", "at most one of --grafana-api-token, --grafana-api-token-filepath, or the environment variable GRAFANA_SERVICE_ACCOUNT_TOKEN must be set")
84 102 os.Exit(1)
85 103 }
86 104 grafanaAPIToken = &envToken