Rename Feedser to Concelier
This commit is contained in:
		
							
								
								
									
										94
									
								
								src/StellaOps.Concelier.Exporter.TrivyDb/TrivyDbExportJob.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								src/StellaOps.Concelier.Exporter.TrivyDb/TrivyDbExportJob.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,94 @@ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Globalization; | ||||
| using System.Text.Json; | ||||
| using System.Threading; | ||||
| using System.Threading.Tasks; | ||||
| using Microsoft.Extensions.Logging; | ||||
| using StellaOps.Concelier.Core.Jobs; | ||||
|  | ||||
| namespace StellaOps.Concelier.Exporter.TrivyDb; | ||||
|  | ||||
| public sealed class TrivyDbExportJob : IJob | ||||
| { | ||||
|     public const string JobKind = "export:trivy-db"; | ||||
|     public static readonly TimeSpan DefaultTimeout = TimeSpan.FromMinutes(20); | ||||
|     public static readonly TimeSpan DefaultLeaseDuration = TimeSpan.FromMinutes(10); | ||||
|  | ||||
|     private readonly TrivyDbFeedExporter _exporter; | ||||
|     private readonly ILogger<TrivyDbExportJob> _logger; | ||||
|  | ||||
|     public TrivyDbExportJob(TrivyDbFeedExporter exporter, ILogger<TrivyDbExportJob> logger) | ||||
|     { | ||||
|         _exporter = exporter ?? throw new ArgumentNullException(nameof(exporter)); | ||||
|         _logger = logger ?? throw new ArgumentNullException(nameof(logger)); | ||||
|     } | ||||
|  | ||||
|     public async Task ExecuteAsync(JobExecutionContext context, CancellationToken cancellationToken) | ||||
|     { | ||||
|         _logger.LogInformation("Executing Trivy DB export job {RunId}", context.RunId); | ||||
|         var overrides = CreateOverrides(context.Parameters); | ||||
|         if (overrides?.HasOverrides == true) | ||||
|         { | ||||
|             using var scope = TrivyDbExportOverrideScope.Begin(overrides); | ||||
|             await _exporter.ExportAsync(context.Services, cancellationToken).ConfigureAwait(false); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             await _exporter.ExportAsync(context.Services, cancellationToken).ConfigureAwait(false); | ||||
|         } | ||||
|  | ||||
|         _logger.LogInformation("Completed Trivy DB export job {RunId}", context.RunId); | ||||
|     } | ||||
|  | ||||
|     private static TrivyDbExportOverrides? CreateOverrides(IReadOnlyDictionary<string, object?> parameters) | ||||
|     { | ||||
|         if (parameters is null || parameters.Count == 0) | ||||
|         { | ||||
|             return null; | ||||
|         } | ||||
|  | ||||
|         var publishFull = TryReadBoolean(parameters, "publishFull"); | ||||
|         var publishDelta = TryReadBoolean(parameters, "publishDelta"); | ||||
|         var includeFull = TryReadBoolean(parameters, "includeFull"); | ||||
|         var includeDelta = TryReadBoolean(parameters, "includeDelta"); | ||||
|  | ||||
|         var overrides = new TrivyDbExportOverrides(publishFull, publishDelta, includeFull, includeDelta); | ||||
|         return overrides.HasOverrides ? overrides : null; | ||||
|     } | ||||
|  | ||||
|     private static bool? TryReadBoolean(IReadOnlyDictionary<string, object?> parameters, string key) | ||||
|     { | ||||
|         if (!parameters.TryGetValue(key, out var value) || value is null) | ||||
|         { | ||||
|             return null; | ||||
|         } | ||||
|  | ||||
|         switch (value) | ||||
|         { | ||||
|             case bool b: | ||||
|                 return b; | ||||
|             case string s when bool.TryParse(s, out var result): | ||||
|                 return result; | ||||
|             case JsonElement element: | ||||
|                 return element.ValueKind switch | ||||
|                 { | ||||
|                     JsonValueKind.True => true, | ||||
|                     JsonValueKind.False => false, | ||||
|                     JsonValueKind.String when bool.TryParse(element.GetString(), out var parsed) => parsed, | ||||
|                     _ => null, | ||||
|                 }; | ||||
|             case IConvertible convertible: | ||||
|                 try | ||||
|                 { | ||||
|                     return convertible.ToBoolean(CultureInfo.InvariantCulture); | ||||
|                 } | ||||
|                 catch | ||||
|                 { | ||||
|                     return null; | ||||
|                 } | ||||
|         } | ||||
|  | ||||
|         return null; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user