@import org.apache.predictionio.data.storage.EngineInstance @import org.apache.predictionio.data.storage.EngineManifest @import org.apache.predictionio.workflow.ServerConfig @import org.joda.time.DateTime @import org.joda.time.format.DateTimeFormat @(args: ServerConfig, manifest: EngineManifest, engineInstance: EngineInstance, algorithms: Seq[String], algorithmsParams: Seq[String], models: Seq[String], dataSourceParams: String, preparatorParams: String, servingParams: String, serverStartTime: DateTime, feedback: Boolean, eventServerIp: String, eventServerPort: Int, requestCount: Int, avgServingSec: Double, lastServingSec: Double ) @{engineInstance.engineFactory} (@{engineInstance.engineVariant}) - PredictionIO Engine Server at @{args.ip}:@{args.port}

Engine Information

Training Start Time@{DateTimeFormat.forStyle("FF").print(engineInstance.startTime)}
Training End Time@{DateTimeFormat.forStyle("FF").print(engineInstance.endTime)}
Variant ID@{engineInstance.engineVariant}
Instance ID@{engineInstance.id}

Server Information

@for(f <- manifest.files.drop(1)) { }
Start Time@{DateTimeFormat.forStyle("FF").print(serverStartTime)}
Request Count@{requestCount}
Average Serving Time@{f"${avgServingSec}%.4f"} seconds
Last Serving Time@{f"${lastServingSec}%.4f"} seconds
Engine Factory Class (Scala/Java)@{engineInstance.engineFactory}
Library Files @{manifest.files.head}
@f

Data Source

Parameters@{dataSourceParams}

Data Preparator

Parameters@{preparatorParams}

Algorithms and Models

@for(a <- algorithms.zip(algorithmsParams).zip(models).zipWithIndex) { }
#Information
@{a._2 + 1} Class@{a._1._1._1}
Parameters@{a._1._1._2}
Model@{a._1._2}

Serving

Parameters@{servingParams}

Feedback Loop Information

Feedback Loop Enabled?@{feedback}
Event Server IP@{eventServerIp}
Event Server Port@{eventServerPort}