Skip to content

Commit

Permalink
#53 getAnalyzer API returns Analyzer instead of list of Analyzer
Browse files Browse the repository at this point in the history
  • Loading branch information
To-om committed Dec 7, 2016
1 parent d271851 commit 5737f98
Showing 1 changed file with 17 additions and 12 deletions.
29 changes: 17 additions & 12 deletions thehive-cortex/app/connectors/cortex/services/CortexSrv.scala
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,7 @@ object CortexConfig {
val url = configuration.getString("url").getOrElse(sys.error("url is missing")).replaceFirst("/*$", "")
val key = configuration.getString("key").getOrElse(sys.error("key is missing"))
Some(new CortexClient(name, url, key))
}
catch {
} catch {
case NonFatal(_) None
}
}
Expand Down Expand Up @@ -104,28 +103,34 @@ class CortexSrv @Inject() (
findSrv[JobModel, Job](jobModel, queryDef, range, sortBy)
}

def askAllCortex[A](f: CortexClient Future[CortexModel[A]]): Future[Seq[A]] = {
Future.traverse(cortexConfig.instances.toSeq) {
case (name, cortex) f(cortex).map(_.onCortex(name))
}
}
def askForAllCortex[A](f: CortexClient Future[Seq[CortexModel[A]]]): Future[Seq[A]] = {
def askAllCortex[A](f: CortexClient Future[Seq[CortexModel[A]]]): Future[Seq[A]] = {
Future
.traverse(cortexConfig.instances.toSeq) {
case (name, cortex) f(cortex).map(_.map(_.onCortex(name)))
}
.map(_.flatten)
}
def getAnalyzer(analyzerId: String): Future[Seq[Analyzer]] = {
askAllCortex(_.getAnalyzer(analyzerId))

def getAnalyzer(analyzerId: String): Future[Analyzer] = {
Future
.traverse(cortexConfig.instances) {
case (name, cortex) => cortex.getAnalyzer(analyzerId).map(Some(_)).fallbackTo(Future.successful(None))
}
.map { analyzers =>
analyzers.foldLeft[Option[Analyzer]](None) {
case (Some(analyzer1), Some(analyzer2)) => Some(analyzer1.copy(cortexIds = analyzer1.cortexIds ++ analyzer2.cortexIds))
case (maybeAnalyzer1, maybeAnalyzer2) => maybeAnalyzer1 orElse maybeAnalyzer2
}
.getOrElse(throw NotFoundError(s"Analyzer $analyzerId not found"))
}
}

def getAnalyzersFor(dataType: String): Future[Seq[Analyzer]] = {
askForAllCortex(_.listAnalyzerForType(dataType))
askAllCortex(_.listAnalyzerForType(dataType))
}

def listAnalyzer: Future[Seq[Analyzer]] = {
askForAllCortex(_.listAnalyzer)
askAllCortex(_.listAnalyzer)
}

def getJob(jobId: String): Future[Job] = {
Expand Down

0 comments on commit 5737f98

Please sign in to comment.