aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Odersky <jakob@driver.xyz>2018-09-04 01:02:12 -0700
committerJakob Odersky <jakob@driver.xyz>2018-09-12 14:17:39 -0700
commitf6d82083370484c6de115a081f5b7fcdd70c4824 (patch)
tree98cddce587aa0e7fb75ac13b97b8737b234c116c
parent9c36ff4f9e43857e2f73ebadad9942d85017e5c0 (diff)
downloaddriver-core-f6d82083370484c6de115a081f5b7fcdd70c4824.tar.gz
driver-core-f6d82083370484c6de115a081f5b7fcdd70c4824.tar.bz2
driver-core-f6d82083370484c6de115a081f5b7fcdd70c4824.zip
Changes to service discovery overrides and storage utilities
- use objects (instead of object lists) in service discovery overrides - add project ID to bucket names
-rw-r--r--src/main/resources/reference.conf4
-rw-r--r--src/main/scala/xyz/driver/core/init/CloudServices.scala33
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.