From f6d82083370484c6de115a081f5b7fcdd70c4824 Mon Sep 17 00:00:00 2001 From: Jakob Odersky Date: Tue, 4 Sep 2018 01:02:12 -0700 Subject: Changes to service discovery overrides and storage utilities - use objects (instead of object lists) in service discovery overrides - add project ID to bucket names --- src/main/resources/reference.conf | 4 +-- .../scala/xyz/driver/core/init/CloudServices.scala | 33 ++++++++++------------ 2 files changed, 17 insertions(+), 20 deletions(-) diff --git a/src/main/resources/reference.conf b/src/main/resources/reference.conf index 01dba3c..0c3b4e2 100644 --- a/src/main/resources/reference.conf +++ b/src/main/resources/reference.conf @@ -19,10 +19,10 @@ application { ] } -services.dev-overrides = [ +services.dev-overrides { // {"service1": "http://localhost:8080"}, // {"service2": "https://stable.sand.driver.network"} -] +} # Settings about the auto-generated REST API documentation. swagger { diff --git a/src/main/scala/xyz/driver/core/init/CloudServices.scala b/src/main/scala/xyz/driver/core/init/CloudServices.scala index c492add..31faf4c 100644 --- a/src/main/scala/xyz/driver/core/init/CloudServices.scala +++ b/src/main/scala/xyz/driver/core/init/CloudServices.scala @@ -3,7 +3,6 @@ package init import java.nio.file.Paths -import com.typesafe.config.ConfigValueType import xyz.driver.core.messaging.{GoogleBus, QueueBus, StreamBus} import xyz.driver.core.reporting._ import xyz.driver.core.reporting.ScalaLoggerLike.defaultScalaLogger @@ -25,19 +24,13 @@ trait CloudServices extends AkkaBootable { self => * */ private lazy val discovery = { - def getOverrides(): Map[String, String] = - (for { - obj <- config.getObjectList("services.dev-overrides").asScala - entry <- obj.entrySet().asScala - } yield { - val tpe = entry.getValue.valueType() - require( - tpe == ConfigValueType.STRING, - s"URL override for '${entry.getKey}' must be a " + - s"string. Found '${entry.getValue.unwrapped}', which is of type $tpe.") - entry.getKey -> entry.getValue.unwrapped.toString - }).toMap - + def getOverrides(): Map[String, String] = { + val block = config.getObject("services.dev-overrides").unwrapped().asScala + for ((key, value) <- block) yield { + require(value.isInstanceOf[String], s"Service URL override for '$key' must be a string. Found '$value'.") + key -> value.toString + } + }.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 @@ -67,14 +60,18 @@ trait CloudServices extends AkkaBootable { self => } /** Object storage. + * + * When running on a cloud platform, prepends `$project-` to bucket names, where `$project` + * is the project ID (for example 'driverinc-production` or `driverinc-sandbox`). + * * @group utilities */ - def storage(bucketId: String): BlobStorage = + def storage(bucketName: String): BlobStorage = platform match { - case Platform.GoogleCloud(keyfile, _) => - GcsBlobStorage.fromKeyfile(keyfile, bucketId) + case p @ Platform.GoogleCloud(keyfile, _) => + GcsBlobStorage.fromKeyfile(keyfile, s"${p.project}-$bucketName") case Platform.Dev => - new FileSystemBlobStorage(Paths.get(s".data-$bucketId")) + new FileSystemBlobStorage(Paths.get(s".data-$bucketName")) } /** Message bus. -- cgit v1.2.3