diff options
author | Jakob Odersky <jakob@driver.xyz> | 2018-09-11 13:35:03 -0700 |
---|---|---|
committer | Jakob Odersky <jakob@driver.xyz> | 2018-09-12 14:17:39 -0700 |
commit | 8a21ee2028b5f11fe0b9148078b49e4000937202 (patch) | |
tree | 3a17b99676e729988ca41ba61199b33d2afbbcbe /src/main/scala/xyz/driver/core/init | |
parent | 8b2cd70a7189775cb23dafbbd3670b8050dd28dc (diff) | |
download | driver-core-8a21ee2028b5f11fe0b9148078b49e4000937202.tar.gz driver-core-8a21ee2028b5f11fe0b9148078b49e4000937202.tar.bz2 driver-core-8a21ee2028b5f11fe0b9148078b49e4000937202.zip |
Rearchitect reporting stack to mixin-based structure
Diffstat (limited to 'src/main/scala/xyz/driver/core/init')
-rw-r--r-- | src/main/scala/xyz/driver/core/init/AkkaBootable.scala | 7 | ||||
-rw-r--r-- | src/main/scala/xyz/driver/core/init/CloudServices.scala | 28 |
2 files changed, 20 insertions, 15 deletions
diff --git a/src/main/scala/xyz/driver/core/init/AkkaBootable.scala b/src/main/scala/xyz/driver/core/init/AkkaBootable.scala index 5e0b36c..df6611e 100644 --- a/src/main/scala/xyz/driver/core/init/AkkaBootable.scala +++ b/src/main/scala/xyz/driver/core/init/AkkaBootable.scala @@ -14,7 +14,7 @@ import com.typesafe.config.Config import kamon.Kamon import kamon.statsd.StatsDReporter import kamon.system.SystemMetrics -import xyz.driver.core.reporting.{NoTraceReporter, Reporter, ScalaLoggerLike, SpanContext} +import xyz.driver.core.reporting.{NoTraceReporter, Reporter, ScalaLoggingCompat, SpanContext} import xyz.driver.core.rest.HttpRestServiceTransport import scala.concurrent.duration._ @@ -119,7 +119,10 @@ trait AkkaBootable { * * @group utilities */ - def reporter: Reporter with ScalaLoggerLike = new NoTraceReporter(ScalaLoggerLike.defaultScalaLogger(json = false)) + def reporter: Reporter with ScalaLoggingCompat = + new Reporter with NoTraceReporter with ScalaLoggingCompat { + val logger = ScalaLoggingCompat.defaultScalaLogger(json = false) + } /** Top-level application configuration. * diff --git a/src/main/scala/xyz/driver/core/init/CloudServices.scala b/src/main/scala/xyz/driver/core/init/CloudServices.scala index 31faf4c..a6a477a 100644 --- a/src/main/scala/xyz/driver/core/init/CloudServices.scala +++ b/src/main/scala/xyz/driver/core/init/CloudServices.scala @@ -3,14 +3,12 @@ package init import java.nio.file.Paths -import xyz.driver.core.messaging.{GoogleBus, QueueBus, StreamBus} +import xyz.driver.core.messaging.{CreateOnDemand, GoogleBus, QueueBus, StreamBus} import xyz.driver.core.reporting._ -import xyz.driver.core.reporting.ScalaLoggerLike.defaultScalaLogger import xyz.driver.core.rest.{DnsDiscovery, ServiceDescriptor} import xyz.driver.core.storage.{BlobStorage, FileSystemBlobStorage, GcsBlobStorage} import scala.collection.JavaConverters._ -import scala.concurrent.ExecutionContext /** Mixin trait that provides essential cloud utilities. */ trait CloudServices extends AkkaBootable { self => @@ -21,9 +19,8 @@ trait CloudServices extends AkkaBootable { self => def platform: Platform = Platform.current /** Service discovery for the current platform. - * */ - private lazy val discovery = { + private lazy val discovery: DnsDiscovery = { def getOverrides(): Map[String, String] = { val block = config.getObject("services.dev-overrides").unwrapped().asScala for ((key, value) <- block) yield { @@ -33,7 +30,9 @@ trait CloudServices extends AkkaBootable { self => }.toMap val overrides = platform match { case Platform.Dev => getOverrides() - case _ => Map.empty[String, String] // TODO we may want to provide a way to override deployed services as well + // TODO: currently, deployed services must be configured via Kubernetes DNS resolver. Maybe we may want to + // provide a way to override deployed services as well. + case _ => Map.empty[String, String] } new DnsDiscovery(clientTransport, overrides) } @@ -47,13 +46,17 @@ trait CloudServices extends AkkaBootable { self => * A potential fix would be to make the log format independent of the platform, and always log * as JSON for example. */ - override lazy val reporter: Reporter with ScalaLoggerLike = { + override lazy val reporter: Reporter with ScalaLoggingCompat = { Console.println("determining platform") // scalastyle:ignore val r = platform match { case p @ Platform.GoogleCloud(_, _) => - new GoogleReporter(p.credentials, p.namespace, defaultScalaLogger(true)) + new GoogleReporter(p.credentials, p.namespace) with ScalaLoggingCompat with GoogleMdcLogger { + val logger = ScalaLoggingCompat.defaultScalaLogger(true) + } case Platform.Dev => - new NoTraceReporter(defaultScalaLogger(false)) + new NoTraceReporter with ScalaLoggingCompat { + val logger = ScalaLoggingCompat.defaultScalaLogger(false) + } } r.info(s"application started on platform '${platform}'")(SpanContext.fresh()) r @@ -78,11 +81,10 @@ trait CloudServices extends AkkaBootable { self => * @group utilities */ def messageBus: StreamBus = platform match { - case Platform.GoogleCloud(keyfile, namespace) => GoogleBus.fromKeyfile(keyfile, namespace) + case p @ Platform.GoogleCloud(_, namespace) => + new GoogleBus(p.credentials, namespace) with StreamBus with CreateOnDemand case Platform.Dev => - new QueueBus()(self.system) with StreamBus { - override def executionContext: ExecutionContext = self.executionContext - } + new QueueBus()(self.system) with StreamBus } } |