public async Task <IActionResult> Dumps(
            int page                   = 1,
            int pagesize               = 50,
            string searchFilter        = null,
            bool includeEmptyBundles   = false,
            string elasticSearchFilter = null,
            string duplBundleId        = null,
            string duplDumpId          = null
            )
        {
            logger.LogDefault("Dumps", HttpContext);

            IOrderedEnumerable <DumpViewModel> dumpViewModels = null;

            if (!string.IsNullOrEmpty(duplBundleId) && !string.IsNullOrEmpty(duplDumpId))
            {
                // find duplicates of given bundleId+dumpId
                var id = DumpIdentifier.Create(duplBundleId, duplDumpId);
                logger.LogSearch("Duplicates", HttpContext, id.ToString());
                dumpViewModels = await searchService.SearchDuplicates(id);

                ViewData["duplBundleId"] = duplBundleId;
                ViewData["duplDumpId"]   = duplDumpId;
            }
            else if (!string.IsNullOrEmpty(elasticSearchFilter))
            {
                // run elasticsearch query
                logger.LogSearch("Search", HttpContext, elasticSearchFilter);
                dumpViewModels = await searchService.SearchByElasticFilter(elasticSearchFilter);

                ViewData["elasticSearchFilter"] = elasticSearchFilter;
            }
            else
            {
                // do plain search, or show all of searchFilter is empty
                logger.LogSearch("Search", HttpContext, searchFilter);
                dumpViewModels = await searchService.SearchBySimpleFilter(searchFilter);

                ViewData["searchFilter"] = searchFilter;
            }

            return(View(new DumpsViewModel {
                Filtered = dumpViewModels,
                Paged = dumpViewModels.ToPagedList(page, pagesize),
                KibanaUrl = KibanaUrl(),
                IsPopulated = bundleRepo.IsPopulated,
                IsRelationshipsPopulated = relationshipRepo.IsPopulated || !settings.SimilarityDetectionEnabled,
                IsJiraIssuesPopulated = jiraIssueRepository.IsPopulated || !settings.UseJiraIntegration,
                UseAutomaticDumpDeletion = settings.IsDumpRetentionEnabled()
            }));
        }
Exemple #2
0
        /// <summary>
        /// Adds the actual .dmp file from sourcePath to the repo+storage
        /// Does NOT start analysis
        /// </summary>
        /// <returns></returns>
        public async Task <DumpMetainfo> CreateDump(string bundleId, FileInfo sourcePath)
        {
            DumpMetainfo dumpInfo;
            string       dumpId;

            dumpId   = CreateUniqueDumpId();
            dumpInfo = new DumpMetainfo()
            {
                BundleId     = bundleId,
                DumpId       = dumpId,
                DumpFileName = Utility.MakeRelativePath(pathHelper.GetUploadsDir(), sourcePath),
                DumpType     = DetermineDumpType(sourcePath),
                Created      = DateTime.Now,
                Status       = DumpStatus.Created
            };
            if (settings.IsDumpRetentionEnabled())
            {
                dumpInfo.PlannedDeletionDate = DateTime.Now + TimeSpan.FromDays(settings.DumpRetentionDays);
            }

            if (!dumps.ContainsKey(bundleId))
            {
                dumps[bundleId] = new ConcurrentDictionary <string, DumpMetainfo>();
            }
            dumps[bundleId][dumpId] = dumpInfo;
            storage.Create(dumpInfo.Id);

            FileInfo destFile = await storage.AddFileCopy(dumpInfo.Id, sourcePath);

            AddSDFile(dumpInfo.Id, destFile.Name, SDFileType.PrimaryDump);
            return(dumpInfo);
        }
Exemple #3
0
        public DumpMetainfo CreateDumpMetainfo(string bundleId)
        {
            DumpMetainfo dumpInfo;
            string       dumpId;

            dumpId   = CreateUniqueDumpId();
            dumpInfo = new DumpMetainfo()
            {
                BundleId = bundleId,
                DumpId   = dumpId,
                Created  = DateTime.Now,
                Status   = DumpStatus.Created
            };
            if (settings.IsDumpRetentionEnabled())
            {
                dumpInfo.PlannedDeletionDate = DateTime.Now + TimeSpan.FromDays(settings.DumpRetentionDays);
            }

            if (!dumps.ContainsKey(bundleId))
            {
                dumps[bundleId] = new ConcurrentDictionary <string, DumpMetainfo>();
            }
            dumps[bundleId][dumpId] = dumpInfo;
            storage.Create(dumpInfo.Id);

            return(dumpInfo);
        }
Exemple #4
0
 public void StartService()
 {
     if (!settings.IsDumpRetentionEnabled())
     {
         return;
     }
     RecurringJob.AddOrUpdate(() => RemoveOldDumps(), settings.DumpRetentionCron, null, "retention");
 }