7529 KWS artifact ingest module

This commit is contained in:
Richard Cordovano 2021-11-23 15:23:59 -05:00
parent c625a0cac1
commit d51e74a95a
2 changed files with 16 additions and 10 deletions

View File

@ -62,8 +62,8 @@ public class AnalysisResultIngestPipeline extends IngestPipeline<AnalysisResultI
} }
/** /**
* A decorator that adds ingest infrastructure operations to a data artifact * A decorator that adds ingest infrastructure operations to an analysis
* ingest module. * result ingest module.
*/ */
static final class AnalysisResultIngestPipelineModule extends IngestPipeline.PipelineModule<AnalysisResultIngestTask> { static final class AnalysisResultIngestPipelineModule extends IngestPipeline.PipelineModule<AnalysisResultIngestTask> {
@ -71,7 +71,7 @@ public class AnalysisResultIngestPipeline extends IngestPipeline<AnalysisResultI
/** /**
* Constructs a decorator that adds ingest infrastructure operations to * Constructs a decorator that adds ingest infrastructure operations to
* a data artifact ingest module. * an analysis result ingest module.
* *
* @param module The module. * @param module The module.
* @param displayName The display name of the module. * @param displayName The display name of the module.
@ -89,4 +89,5 @@ public class AnalysisResultIngestPipeline extends IngestPipeline<AnalysisResultI
} }
} }
} }

View File

@ -364,6 +364,8 @@ final class IngestJobExecutor {
Map<String, IngestModuleTemplate> jythonFileModuleTemplates = new LinkedHashMap<>(); Map<String, IngestModuleTemplate> jythonFileModuleTemplates = new LinkedHashMap<>();
Map<String, IngestModuleTemplate> javaArtifactModuleTemplates = new LinkedHashMap<>(); Map<String, IngestModuleTemplate> javaArtifactModuleTemplates = new LinkedHashMap<>();
Map<String, IngestModuleTemplate> jythonArtifactModuleTemplates = new LinkedHashMap<>(); Map<String, IngestModuleTemplate> jythonArtifactModuleTemplates = new LinkedHashMap<>();
Map<String, IngestModuleTemplate> javaResultModuleTemplates = new LinkedHashMap<>();
Map<String, IngestModuleTemplate> jythonResultModuleTemplates = new LinkedHashMap<>();
for (IngestModuleTemplate template : enabledTemplates) { for (IngestModuleTemplate template : enabledTemplates) {
if (template.isDataSourceIngestModuleTemplate()) { if (template.isDataSourceIngestModuleTemplate()) {
addModuleTemplateToSortingMap(javaDataSourceModuleTemplates, jythonDataSourceModuleTemplates, template); addModuleTemplateToSortingMap(javaDataSourceModuleTemplates, jythonDataSourceModuleTemplates, template);
@ -375,14 +377,16 @@ final class IngestJobExecutor {
addModuleTemplateToSortingMap(javaArtifactModuleTemplates, jythonArtifactModuleTemplates, template); addModuleTemplateToSortingMap(javaArtifactModuleTemplates, jythonArtifactModuleTemplates, template);
} }
if (template.isAnalysisResultIngestModuleTemplate()) { if (template.isAnalysisResultIngestModuleTemplate()) {
addModuleTemplateToSortingMap(javaArtifactModuleTemplates, jythonArtifactModuleTemplates, template); addModuleTemplateToSortingMap(javaResultModuleTemplates, jythonResultModuleTemplates, template);
} }
} }
/** /**
* Take the module templates that have pipeline configuration entries * Take the module templates that have pipeline configuration entries
* out of the buckets and add them to ingest module pipeline templates * out of the buckets and add them to ingest module pipeline templates
* in the order prescribed by the pipeline configuration. * in the order prescribed by the pipeline configuration. There is
* currently no pipeline configuration file support for data artifact or
* analysis result ingest module pipelines.
*/ */
IngestPipelinesConfiguration pipelineConfig = IngestPipelinesConfiguration.getInstance(); IngestPipelinesConfiguration pipelineConfig = IngestPipelinesConfiguration.getInstance();
List<IngestModuleTemplate> firstStageDataSourcePipelineTemplate = createIngestPipelineTemplate(javaDataSourceModuleTemplates, jythonDataSourceModuleTemplates, pipelineConfig.getStageOneDataSourceIngestPipelineConfig()); List<IngestModuleTemplate> firstStageDataSourcePipelineTemplate = createIngestPipelineTemplate(javaDataSourceModuleTemplates, jythonDataSourceModuleTemplates, pipelineConfig.getStageOneDataSourceIngestPipelineConfig());
@ -396,13 +400,13 @@ final class IngestJobExecutor {
* appropriate ingest module pipeline templates. Data source level * appropriate ingest module pipeline templates. Data source level
* ingest modules templates that were not listed in the pipeline * ingest modules templates that were not listed in the pipeline
* configuration are added to the first stage data source pipeline * configuration are added to the first stage data source pipeline
* template, Java modules are added before Jython modules and Core * template, Java modules are added before Jython modules, and Core
* Autopsy modules are added before third party modules. * Autopsy modules are added before third party modules.
*/ */
addToIngestPipelineTemplate(firstStageDataSourcePipelineTemplate, javaDataSourceModuleTemplates, jythonDataSourceModuleTemplates); addToIngestPipelineTemplate(firstStageDataSourcePipelineTemplate, javaDataSourceModuleTemplates, jythonDataSourceModuleTemplates);
addToIngestPipelineTemplate(filePipelineTemplate, javaFileModuleTemplates, jythonFileModuleTemplates); addToIngestPipelineTemplate(filePipelineTemplate, javaFileModuleTemplates, jythonFileModuleTemplates);
addToIngestPipelineTemplate(artifactPipelineTemplate, javaArtifactModuleTemplates, jythonArtifactModuleTemplates); addToIngestPipelineTemplate(artifactPipelineTemplate, javaArtifactModuleTemplates, jythonArtifactModuleTemplates);
addToIngestPipelineTemplate(resultsPipelineTemplate, javaArtifactModuleTemplates, jythonArtifactModuleTemplates); addToIngestPipelineTemplate(resultsPipelineTemplate, javaResultModuleTemplates, jythonResultModuleTemplates);
/** /**
* Construct the ingest module pipelines from the ingest module pipeline * Construct the ingest module pipelines from the ingest module pipeline
@ -502,7 +506,8 @@ final class IngestJobExecutor {
return hasFileIngestModules() return hasFileIngestModules()
|| hasHighPriorityDataSourceIngestModules() || hasHighPriorityDataSourceIngestModules()
|| hasLowPriorityDataSourceIngestModules() || hasLowPriorityDataSourceIngestModules()
|| hasDataArtifactIngestModules(); || hasDataArtifactIngestModules()
|| hasAnalysisResultIngestModules();
} }
/** /**
@ -581,7 +586,7 @@ final class IngestJobExecutor {
List<IngestModuleError> errors = startUpIngestModulePipelines(); List<IngestModuleError> errors = startUpIngestModulePipelines();
if (errors.isEmpty()) { if (errors.isEmpty()) {
recordIngestJobStartUpInfo(); recordIngestJobStartUpInfo();
if (hasHighPriorityDataSourceIngestModules() || hasFileIngestModules() || hasDataArtifactIngestModules()) { if (hasHighPriorityDataSourceIngestModules() || hasFileIngestModules() || hasDataArtifactIngestModules() || hasAnalysisResultIngestModules()) {
if (ingestJob.getIngestMode() == IngestJob.Mode.STREAMING) { if (ingestJob.getIngestMode() == IngestJob.Mode.STREAMING) {
startStreamingModeAnalysis(); startStreamingModeAnalysis();
} else { } else {
@ -801,7 +806,7 @@ final class IngestJobExecutor {
} }
} }
if (hasDataArtifactIngestModules()) { if (hasDataArtifactIngestModules()) { // RJCTODO
/* /*
* Schedule artifact ingest tasks for any artifacts currently in * Schedule artifact ingest tasks for any artifacts currently in
* the case database. This needs to be done before any files or * the case database. This needs to be done before any files or