Use Either.toOption and prettify escaped strings in ContainerFactories. (#4738)
diff --git a/core/invoker/src/main/scala/org/apache/openwhisk/core/containerpool/docker/StandaloneDockerContainerFactory.scala b/core/invoker/src/main/scala/org/apache/openwhisk/core/containerpool/docker/StandaloneDockerContainerFactory.scala
index 835893b..61a456a 100644
--- a/core/invoker/src/main/scala/org/apache/openwhisk/core/containerpool/docker/StandaloneDockerContainerFactory.scala
+++ b/core/invoker/src/main/scala/org/apache/openwhisk/core/containerpool/docker/StandaloneDockerContainerFactory.scala
@@ -98,8 +98,8 @@
self: DockerClient =>
override protected def executableAlternatives: List[String] = {
- val executable = loadConfig[String]("whisk.docker.executable").map(Some(_)).getOrElse(None)
- List(Some("C:\\Program Files\\Docker\\Docker\\resources\\bin\\docker.exe"), executable).flatten
+ val executable = loadConfig[String]("whisk.docker.executable").toOption
+ List("""C:\Program Files\Docker\Docker\resources\bin\docker.exe""") ++ executable
}
}
@@ -110,5 +110,5 @@
with WindowsDockerClient {
//Due to some Docker + Windows + Go parsing quirks need to add double quotes around whole command
//See https://github.com/moby/moby/issues/27592#issuecomment-255227097
- override def inspectCommand: String = "\"{{(index (index .NetworkSettings.Ports \\\"8080/tcp\\\") 0).HostPort}}\""
+ override def inspectCommand: String = """"{{(index (index .NetworkSettings.Ports \"8080/tcp\") 0).HostPort}}""""
}
diff --git a/core/standalone/src/main/scala/org/apache/openwhisk/standalone/StandaloneDockerSupport.scala b/core/standalone/src/main/scala/org/apache/openwhisk/standalone/StandaloneDockerSupport.scala
index d8ca898..79716d7 100644
--- a/core/standalone/src/main/scala/org/apache/openwhisk/standalone/StandaloneDockerSupport.scala
+++ b/core/standalone/src/main/scala/org/apache/openwhisk/standalone/StandaloneDockerSupport.scala
@@ -170,9 +170,9 @@
private lazy val dockerCmd = {
//TODO Logic duplicated from DockerClient and WindowsDockerClient for now
- val executable = loadConfig[String]("whisk.docker.executable").map(Some(_)).getOrElse(None)
+ val executable = loadConfig[String]("whisk.docker.executable").toOption
val alternatives =
- List("/usr/bin/docker", "/usr/local/bin/docker", "C:\\Program Files\\Docker\\Docker\\resources\\bin\\docker.exe") ++ executable
+ List("/usr/bin/docker", "/usr/local/bin/docker", """C:\Program Files\Docker\Docker\resources\bin\docker.exe""") ++ executable
Try {
alternatives.find(a => Files.isExecutable(Paths.get(a))).get
} getOrElse {