Skip to content

Commit

Permalink
iss #24: influxdb config reader
Browse files Browse the repository at this point in the history
  • Loading branch information
maizy committed Jan 20, 2017
1 parent 412a0a6 commit 83586a9
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 3 deletions.
16 changes: 16 additions & 0 deletions config/ambient7.conf
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,22 @@ db {
password = ""
}

influx-db {
database = "ambient7"

baseurl = "http://localhost:8086/"
user = ""
password = ""

// optional readonly access
// readonly {
// baseurl = "http://localhost:8086/"
// user = ""
// password = ""
// }

}

co2-devices = [
{
id = "main"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,19 @@ trait InfluxDbConfigReader extends UniversalConfigReader {
.valueName { s"<${Defaults.INFLUXDB_BASEURL}>" }
.action { (value, opts) => influxDbOpts(opts)(_.copy(baseUrl = value)) }

appendSimpleOptionalConfigRule[String]("influxdb.baseurl") { (value, opts) =>
influxDbOpts(opts)(_.copy(baseUrl = value))
}


cliParser.opt[String]("influxdb-database")
.action { (value, opts) => influxDbOpts(opts)(_.copy(database = Some(value))) }
.required()

appendSimpleOptionalConfigRule[String]("influxdb.database") { (value, opts) =>
influxDbOpts(opts)(_.copy(baseUrl = value))
}

appendInfluxDbOptsCheck({
opts => Either.cond(opts.database.isDefined, (), ParsingError.withMessage("influxdb-database is required"))
})
Expand All @@ -38,6 +46,10 @@ trait InfluxDbConfigReader extends UniversalConfigReader {
cliParser.opt[String]("influxdb-user")
.action { (value, opts) => influxDbOpts(opts)(_.copy(user = Some(value))) }

appendSimpleOptionalConfigRule[String]("influxdb.user") { (value, opts) =>
influxDbOpts(opts)(_.copy(user = Some(value)))
}

appendInfluxDbOptsCheck({
opts => Either.cond(opts.user.isDefined, (), ParsingError.withMessage("influxdb-user is required"))
})
Expand All @@ -46,6 +58,10 @@ trait InfluxDbConfigReader extends UniversalConfigReader {
cliParser.opt[String]("influxdb-password")
.action { (value, opts) => influxDbOpts(opts)(_.copy(password = Some(value))) }

appendSimpleOptionalConfigRule[String]("influxdb.password") { (value, opts) =>
influxDbOpts(opts)(_.copy(password = Some(value)))
}

appendInfluxDbOptsCheck({
opts => Either.cond(opts.password.isDefined, (), ParsingError.withMessage("influxdb-password is required"))
})
Expand All @@ -55,11 +71,27 @@ trait InfluxDbConfigReader extends UniversalConfigReader {
.action { (value, opts) => influxDbOpts(opts)(_.copy(readonlyBaseUrl = Some(value))) }
.text("By default --influxdb-baseurl")

appendSimpleOptionalConfigRule[String]("influxdb.readonly.baseurl") { (value, opts) =>
influxDbOpts(opts)(_.copy(readonlyBaseUrl = Some(value)))
}

appendInfluxDbOptsCheck({
opts => Either.cond(
opts.readonlyBaseUrl.isDefined,
(),
ParsingError.withMessage("influxdb-readonly-baseurl is required")
)
})


cliParser.opt[String]("influxdb-readonly-user")
.action { (value, opts) => influxDbOpts(opts)(_.copy(readonlyUser = Some(value))) }
.text("By default --influxdb-user")

appendSimpleOptionalConfigRule[String]("influxdb.readonly.user") { (value, opts) =>
influxDbOpts(opts)(_.copy(readonlyUser = Some(value)))
}

appendInfluxDbOptsCheck({
opts => Either.cond(
opts.readonlyUser.isDefined,
Expand All @@ -73,6 +105,10 @@ trait InfluxDbConfigReader extends UniversalConfigReader {
.action { (value, opts) => influxDbOpts(opts)(_.copy(readonlyPassword = Some(value))) }
.text("By default --influxdb-password")

appendSimpleOptionalConfigRule[String]("influxdb.readonly.password") { (value, opts) =>
influxDbOpts(opts)(_.copy(readonlyPassword = Some(value)))
}

appendInfluxDbOptsCheck({
opts => Either.cond(
opts.readonlyPassword.isDefined,
Expand All @@ -81,9 +117,17 @@ trait InfluxDbConfigReader extends UniversalConfigReader {
)
})

// TODO: uni config rules

// TODO: config postprocessors
appendPostprocessor { opts =>
Right(
influxDbOpts(opts){ influxdbOpts =>
influxdbOpts.copy(
readonlyBaseUrl = influxdbOpts.readonlyBaseUrl orElse Some(influxdbOpts.baseUrl),
readonlyUser = influxdbOpts.readonlyUser orElse influxdbOpts.user,
readonlyPassword = influxdbOpts.readonlyPassword orElse influxdbOpts.password
)
}
)
}

}
}

0 comments on commit 83586a9

Please sign in to comment.