Repository: incubator-predictionio Updated Branches: refs/heads/develop 0d8646572 -> 6d92b4576
[PIO-51] Properly locate engine directory When --engine-dir is passed as CLI argument, use this instead of user.dir Closes #357 Project: http://git-wip-us.apache.org/repos/asf/incubator-predictionio/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-predictionio/commit/6d92b457 Tree: http://git-wip-us.apache.org/repos/asf/incubator-predictionio/tree/6d92b457 Diff: http://git-wip-us.apache.org/repos/asf/incubator-predictionio/diff/6d92b457 Branch: refs/heads/develop Commit: 6d92b45763e9d8f1164ef0610562aa1c87cc96d9 Parents: 0d86465 Author: Chan Lee <[email protected]> Authored: Mon Mar 13 09:57:35 2017 -0700 Committer: Donald Szeto <[email protected]> Committed: Mon Mar 13 09:57:35 2017 -0700 ---------------------------------------------------------------------- .../scala/org/apache/predictionio/tools/RunServer.scala | 5 +++-- .../scala/org/apache/predictionio/tools/RunWorkflow.scala | 10 ++++++---- .../org/apache/predictionio/tools/commands/Engine.scala | 3 ++- .../org/apache/predictionio/tools/console/Console.scala | 8 +++----- 4 files changed, 14 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-predictionio/blob/6d92b457/tools/src/main/scala/org/apache/predictionio/tools/RunServer.scala ---------------------------------------------------------------------- diff --git a/tools/src/main/scala/org/apache/predictionio/tools/RunServer.scala b/tools/src/main/scala/org/apache/predictionio/tools/RunServer.scala index 1c70974..db055b5 100644 --- a/tools/src/main/scala/org/apache/predictionio/tools/RunServer.scala +++ b/tools/src/main/scala/org/apache/predictionio/tools/RunServer.scala @@ -47,7 +47,7 @@ case class ServerArgs( eventServer: EventServerArgs = EventServerArgs(), batch: String = "", accessKey: String = "", - variantJson: File = new File("engine.json"), + variantJson: Option[File] = None, jsonExtractor: JsonExtractorOption = JsonExtractorOption.Both) @@ -68,7 +68,8 @@ object RunServer extends Logging { "--engineInstanceId", engineInstanceId, "--engine-variant", - engineDirPath + File.separator + serverArgs.variantJson.getName, + serverArgs.variantJson.getOrElse( + new File(engineDirPath, "engine.json")).getCanonicalPath, "--ip", serverArgs.deploy.ip, "--port", http://git-wip-us.apache.org/repos/asf/incubator-predictionio/blob/6d92b457/tools/src/main/scala/org/apache/predictionio/tools/RunWorkflow.scala ---------------------------------------------------------------------- diff --git a/tools/src/main/scala/org/apache/predictionio/tools/RunWorkflow.scala b/tools/src/main/scala/org/apache/predictionio/tools/RunWorkflow.scala index 97831a6..462770e 100644 --- a/tools/src/main/scala/org/apache/predictionio/tools/RunWorkflow.scala +++ b/tools/src/main/scala/org/apache/predictionio/tools/RunWorkflow.scala @@ -36,7 +36,7 @@ import scala.sys.process._ case class WorkflowArgs( batch: String = "", - variantJson: File = new File("engine.json"), + variantJson: Option[File] = None, verbosity: Int = 0, engineParamsKey: Option[String] = None, engineFactory: Option[String] = None, @@ -56,15 +56,17 @@ object RunWorkflow extends Logging { verbose: Boolean = false): Expected[(Process, () => Unit)] = { val jarFiles = jarFilesForScala(engineDirPath).map(_.toURI) - val variantJson = engineDirPath + File.separator + wa.variantJson.getName - val ei = Console.getEngineInfo(new File(variantJson)) + val variantJson = wa.variantJson.getOrElse(new File(engineDirPath, "engine.json")) + val ei = Console.getEngineInfo( + variantJson, + engineDirPath) val args = Seq( "--engine-id", ei.engineId, "--engine-version", ei.engineVersion, "--engine-variant", - variantJson, + variantJson.toURI.toString, "--verbosity", wa.verbosity.toString) ++ wa.engineFactory.map( http://git-wip-us.apache.org/repos/asf/incubator-predictionio/blob/6d92b457/tools/src/main/scala/org/apache/predictionio/tools/commands/Engine.scala ---------------------------------------------------------------------- diff --git a/tools/src/main/scala/org/apache/predictionio/tools/commands/Engine.scala b/tools/src/main/scala/org/apache/predictionio/tools/commands/Engine.scala index 69a3924..c4dc8d4 100644 --- a/tools/src/main/scala/org/apache/predictionio/tools/commands/Engine.scala +++ b/tools/src/main/scala/org/apache/predictionio/tools/commands/Engine.scala @@ -222,7 +222,8 @@ object Engine extends EitherLogging { return Left(verifyResult.left.get) } val ei = Console.getEngineInfo( - new File(engineDirPath, serverArgs.variantJson.getName)) + serverArgs.variantJson.getOrElse(new File(engineDirPath, "engine.json")), + engineDirPath) val engineInstances = storage.Storage.getMetaDataEngineInstances val engineInstance = engineInstanceId map { eid => engineInstances.get(eid) http://git-wip-us.apache.org/repos/asf/incubator-predictionio/blob/6d92b457/tools/src/main/scala/org/apache/predictionio/tools/console/Console.scala ---------------------------------------------------------------------- diff --git a/tools/src/main/scala/org/apache/predictionio/tools/console/Console.scala b/tools/src/main/scala/org/apache/predictionio/tools/console/Console.scala index f4c891a..810fee0 100644 --- a/tools/src/main/scala/org/apache/predictionio/tools/console/Console.scala +++ b/tools/src/main/scala/org/apache/predictionio/tools/console/Console.scala @@ -120,10 +120,9 @@ object Console extends Logging { "deployment.") opt[String]("engine-dir") abbr("ed") action { (x, c) => c.copy(engine = c.engine.copy(engineDir = Some(x))) - } text("Specify absolute path for engine directory, default to " + - "current directory.") + } text("Specify path for engine directory, default to current directory.") opt[File]("variant") abbr("v") action { (x, c) => - c.copy(workflow = c.workflow.copy(variantJson = x)) + c.copy(workflow = c.workflow.copy(variantJson = Some(x))) } opt[File]("sbt") action { (x, c) => c.copy(build = c.build.copy(sbt = Some(x))) @@ -734,7 +733,7 @@ object Console extends Logging { } } - def getEngineInfo(jsonFile: File): EngineInfo = { + def getEngineInfo(jsonFile: File, engineDir: String): EngineInfo = { // Use engineFactory as engineId val variantJson = parse(Source.fromFile(jsonFile).mkString) val engineId = variantJson \ "engineFactory" match { @@ -754,7 +753,6 @@ object Console extends Logging { } // Use hash of engine directory as engineVersion - val engineDir = sys.props("user.dir") val engineVersion = java.security.MessageDigest.getInstance("SHA-1"). digest(engineDir.getBytes).map("%02x".format(_)).mkString
