Last active
February 24, 2017 20:47
-
-
Save mpkocher/d6c73137dee5299acd29524eacec121c to your computer and use it in GitHub Desktop.
Example of Pbservice2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.pacbio.secondary.smrtserver.tools | |
import java.util.UUID | |
import akka.actor.ActorSystem | |
import com.pacbio.secondary.analysis.jobs.JobModels.EngineJob | |
import com.pacbio.secondary.analysis.reports.ReportModels.Report | |
import com.pacbio.secondary.smrtlink.models.{DataSetMetaDataSet, DataStoreReportFile} | |
import com.pacbio.secondary.smrtserver.client.AnalysisServiceAccessLayer | |
import scala.concurrent._ | |
import scala.concurrent.ExecutionContext.Implicits.global | |
/** | |
* Created by mkocher on 2/24/17. | |
*/ | |
object PbService2 { | |
import com.pacbio.common.models.CommonModelImplicits._ | |
def jobSummary(job: EngineJob): String = { | |
s"Engine Job $job" | |
} | |
def printJobSummary(job: EngineJob, asJson: Boolean): EngineJob = { | |
println(jobSummary(job)) | |
if (asJson) println("Job as JSON") | |
job | |
} | |
def reportSummary(r:Report): String = { | |
s"report summary for $r" | |
} | |
def printReportSummary(r: Report): Report = { | |
println(reportSummary(r)) | |
r | |
} | |
def dataSetSummary(d: DataSetMetaDataSet): String = { | |
s"Sumary for $d" | |
} | |
def printDataSetSummary(d: DataSetMetaDataSet): DataSetMetaDataSet = { | |
println(dataSetSummary(d)) | |
d | |
} | |
/** | |
* 1. Get Job | |
* 2. print job summary | |
* 3. (IF) show report(s) | |
* 4. (IF) show dataset(s) | |
* | |
* @param jobId | |
* @return | |
*/ | |
def demo(jobId: Int): Future[String] = { | |
val host = "smrtlink-beta" | |
val port = 8081 | |
implicit val actorSystem = ActorSystem("pbservice") | |
val client = new AnalysisServiceAccessLayer(host, port) | |
// Commandline Options | |
val asJson = true | |
val showReports = true | |
val showDataSets = true | |
def getReportsFromJob(job: EngineJob): Future[String] = { | |
client.getAnalysisJobReports(job.uuid).map { dataStoreReportFiles => | |
dataStoreReportFiles.map { dsr => | |
client.getAnalysisJobReport(job.uuid, dsr.dataStoreFile.uuid).map(printReportSummary) | |
} | |
}.map(_ => "Completed Report Job Summary") // this is kinda cheating. But printReportSummary will handling each report printing | |
} | |
def getDataSetsFromJob(job: EngineJob): Future[String] = { | |
client.getAnalysisJobEntryPoints(job.id).map { dataStoreFiles => | |
dataStoreFiles.map { dsFile => | |
client.getDataSet(dsFile.datasetUUID).map(printDataSetSummary) | |
} | |
}.map(_ => "Completed Job DataSet Job Summary") | |
} | |
def reportProcessor(job: EngineJob): Future[String] = if (showReports) getReportsFromJob(job) else Future("Show Reports is disabled") | |
def dataSetProcessor(job: EngineJob): Future[String] = if (showDataSets) getDataSetsFromJob(job) else Future("Show DataSets is disabled") | |
for { | |
job <- client.getAnalysisJob(jobId) | |
_ <- Future { printJobSummary(job, asJson)} | |
_ <- reportProcessor(job) | |
_ <- dataSetProcessor(job) | |
} yield s"Completed job summary for ${job.id}" | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment