audit, advisories and doctors/setup work
This commit is contained in:
@@ -18,6 +18,7 @@ using StellaOps.Excititor.Persistence.Extensions;
|
||||
using StellaOps.Excititor.Worker.Auth;
|
||||
using StellaOps.Excititor.Worker.Options;
|
||||
using StellaOps.Excititor.Worker.Orchestration;
|
||||
using StellaOps.Excititor.Worker.Plugins;
|
||||
using StellaOps.Excititor.Worker.Scheduling;
|
||||
using StellaOps.Excititor.Worker.Signature;
|
||||
using StellaOps.Excititor.Attestation.Extensions;
|
||||
@@ -51,9 +52,9 @@ services.AddOptions<VexStorageOptions>()
|
||||
.ValidateOnStart();
|
||||
|
||||
services.AddExcititorPersistence(configuration);
|
||||
services.AddSingleton<IVexProviderStore, InMemoryVexProviderStore>();
|
||||
services.TryAddSingleton<IVexProviderStore, InMemoryVexProviderStore>();
|
||||
services.TryAddScoped<IVexConnectorStateRepository, InMemoryVexConnectorStateRepository>();
|
||||
services.AddSingleton<IVexClaimStore, InMemoryVexClaimStore>();
|
||||
services.TryAddSingleton<IVexClaimStore, InMemoryVexClaimStore>();
|
||||
services.AddCsafNormalizer();
|
||||
services.AddCycloneDxNormalizer();
|
||||
services.AddOpenVexNormalizer();
|
||||
@@ -82,6 +83,7 @@ services.AddExcititorAocGuards();
|
||||
|
||||
services.AddSingleton<IValidateOptions<VexWorkerOptions>, VexWorkerOptionsValidator>();
|
||||
services.AddSingleton(TimeProvider.System);
|
||||
services.TryAddSingleton<IGuidGenerator, DefaultGuidGenerator>();
|
||||
services.PostConfigure<VexWorkerOptions>(options =>
|
||||
{
|
||||
if (!options.Providers.Any(provider => string.Equals(provider.ProviderId, "excititor:redhat", StringComparison.OrdinalIgnoreCase)))
|
||||
@@ -93,40 +95,15 @@ services.PostConfigure<VexWorkerOptions>(options =>
|
||||
}
|
||||
});
|
||||
// Load VEX connector plugins
|
||||
services.AddSingleton<VexWorkerPluginCatalogLoader>();
|
||||
services.AddSingleton<PluginCatalog>(provider =>
|
||||
{
|
||||
var opts = provider.GetRequiredService<IOptions<VexWorkerPluginOptions>>().Value;
|
||||
var catalog = new PluginCatalog();
|
||||
|
||||
var directory = opts.ResolveDirectory();
|
||||
if (Directory.Exists(directory))
|
||||
{
|
||||
catalog.AddFromDirectory(directory, opts.ResolveSearchPattern());
|
||||
}
|
||||
else
|
||||
{
|
||||
// Fallback: try loading from plugins/excititor directory
|
||||
var fallbackPath = Path.Combine(AppContext.BaseDirectory, "plugins", "excititor");
|
||||
if (Directory.Exists(fallbackPath))
|
||||
{
|
||||
catalog.AddFromDirectory(fallbackPath, "StellaOps.Excititor.Connectors.*.dll");
|
||||
}
|
||||
else
|
||||
{
|
||||
var logger = provider.GetRequiredService<ILogger<Program>>();
|
||||
logger.LogWarning(
|
||||
"Excititor worker plugin directory '{Directory}' does not exist; proceeding without external connectors.",
|
||||
directory);
|
||||
}
|
||||
}
|
||||
|
||||
return catalog;
|
||||
});
|
||||
provider.GetRequiredService<VexWorkerPluginCatalogLoader>().Load().Catalog);
|
||||
|
||||
// Orchestrator worker SDK integration
|
||||
services.AddOptions<VexWorkerOrchestratorOptions>()
|
||||
.Bind(configuration.GetSection("Excititor:Worker:Orchestrator"))
|
||||
.ValidateOnStart();
|
||||
services.AddHttpClient(TenantAuthorityClientFactory.AuthorityClientName);
|
||||
services.AddHttpClient<IVexWorkerOrchestratorClient, VexWorkerOrchestratorClient>((provider, client) =>
|
||||
{
|
||||
var opts = provider.GetRequiredService<IOptions<VexWorkerOrchestratorOptions>>().Value;
|
||||
|
||||
Reference in New Issue
Block a user