Guest User

Untitled

a guest
Jan 27th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.33 KB | None | 0 0
  1. import akka.actor.ActorSystem
  2. import com.azimolabs.config.definitions.AzimoApplicationConfig._
  3. import com.azimolabs.config.definitions.{ConsulConfiguration, VaultConfiguration}
  4. import pureconfig._
  5. import eu.timepit.refined._
  6. import eu.timepit.refined.pureconfig._
  7. import eu.timepit.refined.api.Refined
  8. import eu.timepit.refined.numeric._
  9. import eu.timepit.refined.string.{MatchesRegex, Uri}
  10. import cats.instances.all._
  11. import com.azimolabs.config.{ConsulAdapter, UpdatableConfiguration, VaultAdapter}
  12. import scala.concurrent.ExecutionContext
  13. import scala.util.Success
  14.  
  15. object ApplicationConfig {
  16.  
  17. implicit val actorSystem: ActorSystem = ActorSystem.create()
  18. implicit val executionContext: ExecutionContext = actorSystem.dispatcher
  19.  
  20.  
  21. private val updatableConfig = UpdatableConfiguration[ApplicationConfig]
  22.  
  23. private val fileConfiguration: ApplicationConfig = loadConfig[ApplicationConfig]("azimo") match {
  24. case Left(err) => throw new RuntimeException(err.toString)
  25. case Right(conf) => conf
  26. }
  27.  
  28. private val vaultConfigGetter: VaultAdapter = VaultAdapter.defaultVaultAdapter(fileConfiguration.vault)
  29.  
  30. private def vaultConfiguration = updatableConfig.checkForUpdates(List(""), vaultConfigGetter, _ => ())(fileConfiguration)
  31.  
  32. def consul = new ConsulAdapter(fileConfiguration.consul)
  33.  
  34. val configuration: ApplicationConfig = if (fileConfiguration.cfg.useOnlyFile) {
  35. fileConfiguration
  36. } else {
  37. updatableConfig.checkForUpdates(List("example-project-group", "service-name"), consul, _ => ())(fileConfiguration)
  38. }
  39.  
  40. // If you want to get e.g. credentials for PostgreSQL:
  41. private val postgresCredentials = vaultConfigGetter.getCredentials(UpdatableConfiguration.ValuePath(path = List("credentials_path_here")))
  42. val postgresUsername: String = postgresCredentials.map(_.username).getOrElse(configuration.db.default.user)
  43. val postgresPassword: String = postgresCredentials.map(_.password).getOrElse(configuration.db.default.password)
  44.  
  45. // If you want to get information about external service from consul
  46. def haproxy: Option[(String, Int)] = {
  47. consul.serviceAddress("haproxy").map(c => c.getServiceAddress -> c.getServicePort)
  48. }
  49.  
  50. def externalService(): ExternalServiceConfiguration = {
  51. haproxy.map(item => configuration.externalservice.copy(
  52. address = item._1,
  53. port = item._2,
  54. )).getOrElse(configuration.externalservice)
  55. }
  56. }
Add Comment
Please, Sign In to add comment