private IEnumerable <NetstatActiveConnection> GetActiveConnectionsForWorker(string worker, IMongoCollection <NetstatDocument> collection) { Log.InfoFormat($"Retrieving netstat information for worker '{worker}'.."); var netstatQuery = NetstatQueries.GetNetstatForWorker(worker); var netstatForWorker = collection.Find(netstatQuery).FirstOrDefault(); if (netstatForWorker?.ActiveConnections == null) { Log.WarnFormat($"No netstat data found for worker '{worker}'"); return(Enumerable.Empty <NetstatActiveConnection>()); } return(netstatForWorker.ActiveConnections.Select(entry => new NetstatActiveConnection(entry, netstatForWorker.Worker, netstatForWorker.FileLastModified))); }
public override IPluginResponse Execute() { IPluginResponse pluginResponse = CreatePluginResponse(); var collection = MongoDatabase.GetCollection <NetstatDocument>(ParserConstants.NetstatCollectionName); using (var persister = ExtractFactory.CreateExtract <NetstatActiveConnection>("NetstatEntries.hyper")) using (GetPersisterStatusWriter(persister)) { foreach (var worker in NetstatQueries.GetDistinctWorkers(collection)) { var activeConnectionsForWorker = GetActiveConnectionsForWorker(worker, collection); persister.Enqueue(activeConnectionsForWorker); } if (persister.ItemsPersisted <= 0) { Log.Warn("Failed to persist any Netstat data!"); pluginResponse.GeneratedNoData = true; } return(pluginResponse); } }