@@ -22,13 +22,16 @@ import (
2222)
2323
2424const (
25- monitoringDirectory = "monitoring"
26- dashboardsDirectory = "dashboards"
27- dashboardBaseURL = "https://raw.githubusercontent.com/oracle/coherence-operator/refs/heads/main/dashboards/grafana"
28- configBaseURL = "https://raw.githubusercontent.com/oracle/coherence-cli/refs/heads/main/monitoring"
29- grafanaPort = 3000
30- prometheusPort = 9090
31- dockerComposeYAML = "docker-compose.yaml"
25+ monitoringDirectory = "monitoring"
26+ dashboardsDirectory = "dashboards"
27+ dashboardBaseURL = "https://raw.githubusercontent.com/oracle/coherence-operator/refs/heads/main/dashboards/grafana"
28+ configBaseURL = "https://raw.githubusercontent.com/oracle/coherence-cli/refs/heads/main/monitoring"
29+ grafanaPort = 3000
30+ prometheusPort = 9090
31+ dockerComposeYAML = "docker-compose.yaml"
32+ localhost = "127.0.0.1"
33+ useDockerComposeMessage = "use docker-compose instead of docker compose"
34+ dockerCompose = "docker-compose"
3235)
3336
3437var (
6669 dockerComposeYAML ,
6770 "prometheus.yaml" ,
6871 }
72+
73+ useDockerCompose bool
6974)
7075
7176// initMonitoringCmd represents the init monitoring command.
@@ -151,10 +156,10 @@ the environment is setup correctly.`,
151156 grafanaOutput string
152157 promOutput string
153158 err = mon .validateEnvironment ()
154- promURL = fmt .Sprintf ("http://localhost :%v/" , prometheusPort )
159+ promURL = fmt .Sprintf ("http://%s :%v/" , localhost , prometheusPort )
155160 promHealthURL = fmt .Sprintf ("%s-/healthy" , promURL )
156- grafanaURL = fmt .Sprintf ("http://localhost :%v/d/coh-main/coherence-dashboard-main" , grafanaPort )
157- grafanaHealthURL = fmt .Sprintf ("http://localhost :%d/api/health" , grafanaPort )
161+ grafanaURL = fmt .Sprintf ("http://%s :%v/d/coh-main/coherence-dashboard-main" , localhost , grafanaPort )
162+ grafanaHealthURL = fmt .Sprintf ("http://%s :%d/api/health" , localhost , grafanaPort )
158163 )
159164
160165 if err != nil {
@@ -211,7 +216,7 @@ Prometheus using docker compose.`,
211216 return err
212217 }
213218
214- err = mon .dockerCommand ([]string {"compose" , "-f" , path .Join (mon .monitoringDir , dockerComposeYAML ), "up" , "-d" })
219+ err = mon .dockerComposeCommand ([]string {"-f" , path .Join (mon .monitoringDir , dockerComposeYAML ), "up" , "-d" })
215220 if err != nil {
216221 return err
217222 }
@@ -244,7 +249,7 @@ using docker compose.`,
244249 return nil
245250 }
246251
247- err = mon .dockerCommand ([]string {"compose" , "-f" , path .Join (mon .monitoringDir , dockerComposeYAML ), "down" })
252+ err = mon .dockerComposeCommand ([]string {"-f" , path .Join (mon .monitoringDir , dockerComposeYAML ), "down" })
248253 if err != nil {
249254 return err
250255 }
@@ -392,6 +397,22 @@ func (m *monitoring) dockerCommand(args []string) error {
392397 return executeHostCommand (m .cmd , "docker" , args ... )
393398}
394399
400+ func (m * monitoring ) dockerComposeCommand (args []string ) error {
401+ finalArgs := args
402+ command := "docker"
403+
404+ if useDockerCompose {
405+ command = dockerCompose
406+ } else {
407+ updatedArgs := []string {"compose" }
408+ finalArgs = append (updatedArgs , args ... )
409+ }
410+
411+ m .cmd .Printf ("Issuing %s %s\n " , command , strings .Join (finalArgs , " " ))
412+
413+ return executeHostCommand (m .cmd , command , finalArgs ... )
414+ }
415+
395416func monitoringNotValid (message string ) error {
396417 return fmt .Errorf ("unable to validate monitoring due to %s, please run 'cohctl init monitoring'" , message )
397418}
@@ -400,15 +421,16 @@ func monitoringNotValid(message string) error {
400421func writeFileContents (base , file string , content []byte ) error {
401422 destPath := filepath .Join (base , file )
402423
403- if err := os .WriteFile (destPath , content , 0600 ); err != nil {
424+ // #nosec G306 -- file is meant to be readable by docker on Linux
425+ if err := os .WriteFile (destPath , content , 0644 ); err != nil {
404426 return fmt .Errorf ("error writing file %s: %w" , destPath , err )
405427 }
406428
407429 return nil
408430}
409431
410432func ensureDirectory (directory string ) error {
411- err := utils .EnsureDirectory (directory )
433+ err := utils .EnsureDirectoryWithPerms (directory , 0755 )
412434 if err != nil {
413435 return fmt .Errorf ("unable to create directory: %s, %v" , directory , err )
414436 }
@@ -454,4 +476,6 @@ func streamOutput(r io.Reader, w io.Writer) {
454476func init () {
455477 initMonitoringCmd .Flags ().BoolVarP (& automaticallyConfirm , "yes" , "y" , false , confirmOptionMessage )
456478 stopMonitoringCmd .Flags ().BoolVarP (& automaticallyConfirm , "yes" , "y" , false , confirmOptionMessage )
479+ stopMonitoringCmd .Flags ().BoolVarP (& useDockerCompose , dockerCompose , "D" , false , useDockerComposeMessage )
480+ startMonitoringCmd .Flags ().BoolVarP (& useDockerCompose , dockerCompose , "D" , false , useDockerComposeMessage )
457481}
0 commit comments