From c9b1643287a1c11e252b713142604d1edad3e554 Mon Sep 17 00:00:00 2001 From: ansgarz Date: Wed, 18 May 2022 21:49:28 +0200 Subject: [PATCH] add parameter url to grafana --- .../provs/server/domain/k8s_grafana_agent/GrafanaAgent.kt | 2 +- .../server/domain/k8s_grafana_agent/GrafanaAgentConfig.kt | 4 +++- .../provs/server/infrastructure/GrafanaAgent.kt | 3 ++- .../provs/server/infrastructure/GrafanaAgentRepository.kt | 3 +-- .../grafana/grafana-agent-config-map.template.yaml | 4 ++-- .../server/infrastructure/GrafanaAgentRepositoryKtTest.kt | 3 ++- src/test/resources/k3s-server-config-with-grafana.yaml | 2 +- 7 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/main/kotlin/org/domaindrivenarchitecture/provs/server/domain/k8s_grafana_agent/GrafanaAgent.kt b/src/main/kotlin/org/domaindrivenarchitecture/provs/server/domain/k8s_grafana_agent/GrafanaAgent.kt index f42f5a2..21621cd 100644 --- a/src/main/kotlin/org/domaindrivenarchitecture/provs/server/domain/k8s_grafana_agent/GrafanaAgent.kt +++ b/src/main/kotlin/org/domaindrivenarchitecture/provs/server/domain/k8s_grafana_agent/GrafanaAgent.kt @@ -5,5 +5,5 @@ import org.domaindrivenarchitecture.provs.server.infrastructure.provisionGrafana fun Prov.provisionGrafanaAgent(configResolved: GrafanaAgentConfigResolved) = - provisionGrafanaAgentForK8s(configResolved.user, configResolved.password, configResolved.cluster) + provisionGrafanaAgentForK8s(configResolved.user, configResolved.password, configResolved.cluster, configResolved.url) diff --git a/src/main/kotlin/org/domaindrivenarchitecture/provs/server/domain/k8s_grafana_agent/GrafanaAgentConfig.kt b/src/main/kotlin/org/domaindrivenarchitecture/provs/server/domain/k8s_grafana_agent/GrafanaAgentConfig.kt index 2cd7db2..c63d2e4 100644 --- a/src/main/kotlin/org/domaindrivenarchitecture/provs/server/domain/k8s_grafana_agent/GrafanaAgentConfig.kt +++ b/src/main/kotlin/org/domaindrivenarchitecture/provs/server/domain/k8s_grafana_agent/GrafanaAgentConfig.kt @@ -8,7 +8,8 @@ import org.domaindrivenarchitecture.provs.framework.ubuntu.secret.SecretSupplier data class GrafanaAgentConfig( val user: String, val password: SecretSupplier, - val cluster: String + val cluster: String, + val url: String ) { fun resolveSecret(): GrafanaAgentConfigResolved = GrafanaAgentConfigResolved(this) } @@ -17,6 +18,7 @@ data class GrafanaAgentConfigResolved(val configUnresolved: GrafanaAgentConfig) val user: String = configUnresolved.user val password: Secret = configUnresolved.password.secret() val cluster: String = configUnresolved.cluster + val url: String = configUnresolved.url } @Serializable diff --git a/src/main/kotlin/org/domaindrivenarchitecture/provs/server/infrastructure/GrafanaAgent.kt b/src/main/kotlin/org/domaindrivenarchitecture/provs/server/infrastructure/GrafanaAgent.kt index 01f1827..ac03239 100644 --- a/src/main/kotlin/org/domaindrivenarchitecture/provs/server/infrastructure/GrafanaAgent.kt +++ b/src/main/kotlin/org/domaindrivenarchitecture/provs/server/infrastructure/GrafanaAgent.kt @@ -11,7 +11,7 @@ import java.io.File private const val grafanaResourceDir = "org/domaindrivenarchitecture/provs/server/infrastructure/grafana/" -fun Prov.provisionGrafanaAgentForK8s(user: String, password: Secret, clusterName: String) = task { +fun Prov.provisionGrafanaAgentForK8s(user: String, password: Secret, clusterName: String, url: String) = task { val namespace = "monitoring" // Create namespace if not yet existing @@ -35,6 +35,7 @@ fun Prov.provisionGrafanaAgentForK8s(user: String, password: Secret, clusterName "USERNAME" to user, "APIKEY" to password.plain(), "CLUSTERNAME" to clusterName, + "URL" to url, ) ) cmd("export NAMESPACE=$namespace && kubectl apply -n \$NAMESPACE -f grafana-agent-config-map.yaml", k3sManualManifestsDir) diff --git a/src/main/kotlin/org/domaindrivenarchitecture/provs/server/infrastructure/GrafanaAgentRepository.kt b/src/main/kotlin/org/domaindrivenarchitecture/provs/server/infrastructure/GrafanaAgentRepository.kt index 7e53b87..7d6aa71 100644 --- a/src/main/kotlin/org/domaindrivenarchitecture/provs/server/infrastructure/GrafanaAgentRepository.kt +++ b/src/main/kotlin/org/domaindrivenarchitecture/provs/server/infrastructure/GrafanaAgentRepository.kt @@ -17,12 +17,11 @@ private const val DEFAULT_CONFIG_FILE = "server-config.yaml" fun findK8sGrafanaConfig(fileName: ConfigFileName? = null): GrafanaAgentConfig? { val filePath = fileName?.fileName ?: DEFAULT_CONFIG_FILE - // create a default config return if (File(filePath).exists()) { try { readFromFile(filePath).yamlToType().grafana } catch (e: MissingRequiredPropertyException) { - null + if (e.message.contains("Property 'grafana'")) null else throw e } } else { null diff --git a/src/main/resources/org/domaindrivenarchitecture/provs/server/infrastructure/grafana/grafana-agent-config-map.template.yaml b/src/main/resources/org/domaindrivenarchitecture/provs/server/infrastructure/grafana/grafana-agent-config-map.template.yaml index 256003c..2eb1c99 100644 --- a/src/main/resources/org/domaindrivenarchitecture/provs/server/infrastructure/grafana/grafana-agent-config-map.template.yaml +++ b/src/main/resources/org/domaindrivenarchitecture/provs/server/infrastructure/grafana/grafana-agent-config-map.template.yaml @@ -16,7 +16,7 @@ data: configs: - name: integrations remote_write: - - url: https://prometheus-prod-01-eu-west-0.grafana.net/api/prom/push + - url: $URL basic_auth: username: $USERNAME password: $APIKEY @@ -90,7 +90,7 @@ data: integrations: prometheus_remote_write: - - url: https://prometheus-prod-01-eu-west-0.grafana.net/api/prom/push + - url: $URL basic_auth: username: $USERNAME password: $APIKEY diff --git a/src/test/kotlin/org/domaindrivenarchitecture/provs/server/infrastructure/GrafanaAgentRepositoryKtTest.kt b/src/test/kotlin/org/domaindrivenarchitecture/provs/server/infrastructure/GrafanaAgentRepositoryKtTest.kt index 814a24a..06836c1 100644 --- a/src/test/kotlin/org/domaindrivenarchitecture/provs/server/infrastructure/GrafanaAgentRepositoryKtTest.kt +++ b/src/test/kotlin/org/domaindrivenarchitecture/provs/server/infrastructure/GrafanaAgentRepositoryKtTest.kt @@ -19,7 +19,8 @@ internal class GrafanaAgentRepositoryKtTest { GrafanaAgentConfig( user = "654321", password = SecretSupplier(SecretSourceType.GOPASS, "path/to/key"), - cluster = "myclustername" + cluster = "myclustername", + url = "https://prometheus-prod-01-eu-west-0.grafana.net/api/prom/push" ), config ) } diff --git a/src/test/resources/k3s-server-config-with-grafana.yaml b/src/test/resources/k3s-server-config-with-grafana.yaml index 201ff9c..bc6c642 100644 --- a/src/test/resources/k3s-server-config-with-grafana.yaml +++ b/src/test/resources/k3s-server-config-with-grafana.yaml @@ -15,4 +15,4 @@ grafana: source: "GOPASS" # PLAIN, GOPASS or PROMPT parameter: "path/to/key" # password of the user or api key cluster: "myclustername" # the cluster name of your choice - + url: "https://prometheus-prod-01-eu-west-0.grafana.net/api/prom/push" \ No newline at end of file