blob: aec22687d931fb6a81025f01411e78ccba095630 [file] [log] [blame]
// Copyright (C) 2017 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package com.googlesource.gerrit.plugins.analytics.wizard
import java.io.PrintWriter
trait ConfigWriter {
def write(filename: String, out: String)
}
class ConfigWriterImpl extends ConfigWriter {
def write(filename: String, out: String) = {
val p = new PrintWriter(filename)
p.write(out)
p.close()
}
}
case class AnalyticDashboardSetup(name: String, config: Option[String] = None)(
implicit val writer: ConfigWriter) {
private val dockerComposeTemplate = { (name: String) =>
s"""
|version: '3'
|services:
|
| dashboard-importer:
| image: gerritforge/analytics-dashboard-importer:latest
| networks:
| - ek
| links:
| - elasticsearch
| - kibana
|
| kibana:
| image: gerritforge/analytics-kibana:latest
| container_name: "kibana-for-${name}-project"
| networks:
| - ek
| depends_on:
| - elasticsearch
| ports:
| - "5601:5601"
|
| elasticsearch:
| image: gerritforge/analytics-elasticsearch:latest
| container_name: "es-for-${name}-project"
| networks:
| - ek
| environment:
| - ES_JAVA_OPTS=-Xmx4g -Xms4g
| - http.host=0.0.0.0
|
|networks:
| ek:
| driver: bridge
""".stripMargin
}
val configFileName = s"/tmp/docker-compose.${name}.yaml"
def createDashboardSetupFile(): Unit = {
writer.write(configFileName, dockerComposeTemplate(name))
}
}
object AnalyticDashboardSetup {
implicit val writer = new ConfigWriterImpl()
}