protected override void Initialize(LogsetParsingRequest request) { IMongoDatabase database = mongoConnectionInfo.GetDatabase(request.LogsetHash); IParserFactory parserFactory = request.ArtifactProcessor.GetParserFactory(request.Target); var metadata = new LogProcessingMetadata(request); metadataWriter.Write(metadata, request.LogsetHash); CreateMongoDbCollections(request.CollectionsToParse, database, parserFactory); }
protected override void Finalize(LogsetParsingRequest request, LogsetParsingResult result) { var metadata = new LogProcessingMetadata(request) { ProcessedSuccessfully = true, ProcessedSize = result.ParsedDataVolumeBytes, FailedFileParses = result.FailedFileParses }; metadataWriter.Write(metadata, request.LogsetHash); metadataWriter.WriteMasterMetadataRecord(metadata); }
public RunInitializationResult Initialize(RunInitializationRequest request) { if (request.Target.Type != LogsetTarget.Hash) { throw new ArgumentException("Request target must be a logset hash!", "request"); } var metadataReader = new MongoLogProcessingMetadataWriter(mongoConnectionInfo); LogProcessingMetadata logsetMetadata = metadataReader.Read(request.Target); if (logsetMetadata == null) { throw new InvalidTargetHashException(String.Format("No logset exists that matches logset hash '{0}'. Aborting..", request.Target)); } var artifactProcessorLoader = new HashArtifactProcessorLoader(); IArtifactProcessor artifactProcessor = artifactProcessorLoader.LoadArtifactProcessor(logsetMetadata.ArtifactProcessorType); var pluginLoader = new PluginLoader(request.ArtifactProcessorOptions); ISet <Type> pluginsToExecute = pluginLoader.LoadPlugins(request.RequestedPlugins, artifactProcessor); return(new RunInitializationResult(request.Target, artifactProcessor, logsetMetadata.CollectionsParsed, request.Target, pluginsToExecute)); }
protected bool IsHeartbeatExpired(LogProcessingMetadata metadata) { TimeSpan timeSinceLastHeartbeat = DateTime.UtcNow - metadata.ProcessingHeartbeat; return(timeSinceLastHeartbeat.TotalSeconds >= MongoProcessingHeartbeatExpirationTime); }