Files
git.stella-ops.org/docs/features/unchecked/scanner/sbom-sources-manager-backend.md

4.4 KiB

SBOM Sources Manager Backend (Domain + REST API + Persistence)

Module

Scanner

Status

IMPLEMENTED

Description

Unified SBOM Sources Manager with domain models (SbomSource, SbomSourceRun), PostgreSQL persistence, 12 REST API endpoints, AuthRef credential management, and 4 source type handlers (Zastava, Docker, CLI, Git) with connection testing.

Implementation Details

  • Domain Models:
    • src/Scanner/__Libraries/StellaOps.Scanner.Sources/Domain/SbomSource.cs - SbomSource domain entity representing a configured SBOM source with type, credentials, schedule, and metadata
    • src/Scanner/__Libraries/StellaOps.Scanner.Sources/Domain/SbomSourceRun.cs - SbomSourceRun domain entity tracking individual scan executions with status, timing, and results
    • src/Scanner/__Libraries/StellaOps.Scanner.Sources/Domain/SbomSourceEnums.cs - Enums for source types, run statuses, and trigger types
  • REST API Contracts:
    • src/Scanner/__Libraries/StellaOps.Scanner.Sources/Contracts/SourceContracts.cs - SourceContracts DTOs for the 12 REST API endpoints (CRUD, list, test-connection, trigger, runs)
  • Service Layer:
    • src/Scanner/__Libraries/StellaOps.Scanner.Sources/Services/SbomSourceService.cs - SbomSourceService implementing business logic for source management
    • src/Scanner/__Libraries/StellaOps.Scanner.Sources/Services/ISbomSourceService.cs - Interface for source management service
  • Persistence:
    • src/Scanner/__Libraries/StellaOps.Scanner.Sources/Persistence/SbomSourceRepository.cs - SbomSourceRepository PostgreSQL persistence for SBOM sources
    • src/Scanner/__Libraries/StellaOps.Scanner.Sources/Persistence/SbomSourceRunRepository.cs - SbomSourceRunRepository PostgreSQL persistence for source run history
    • src/Scanner/__Libraries/StellaOps.Scanner.Sources/Persistence/ISbomSourceRepository.cs - Interface for source persistence
  • Source-Type Handlers:
    • src/Scanner/__Libraries/StellaOps.Scanner.Sources/Handlers/ISourceTypeHandler.cs - ISourceTypeHandler interface
    • src/Scanner/__Libraries/StellaOps.Scanner.Sources/Handlers/Zastava/ZastavaSourceHandler.cs - Zastava container registry handler
    • src/Scanner/__Libraries/StellaOps.Scanner.Sources/Handlers/Docker/DockerSourceHandler.cs - Docker Hub/registry handler
    • src/Scanner/__Libraries/StellaOps.Scanner.Sources/Handlers/Cli/CliSourceHandler.cs - CLI-triggered scan handler
    • src/Scanner/__Libraries/StellaOps.Scanner.Sources/Handlers/Git/GitSourceHandler.cs - Git repository handler
  • Connection Testing:
    • src/Scanner/__Libraries/StellaOps.Scanner.Sources/Services/SourceConnectionTester.cs - SourceConnectionTester validates source connectivity and credentials
    • src/Scanner/__Libraries/StellaOps.Scanner.Sources/Services/ISourceConnectionTester.cs - Interface for connection testing
    • src/Scanner/__Libraries/StellaOps.Scanner.Sources/ConnectionTesters/ZastavaConnectionTester.cs - Zastava-specific connection test
    • src/Scanner/__Libraries/StellaOps.Scanner.Sources/ConnectionTesters/DockerConnectionTester.cs - Docker-specific connection test
    • src/Scanner/__Libraries/StellaOps.Scanner.Sources/ConnectionTesters/CliConnectionTester.cs - CLI-specific connection test
    • src/Scanner/__Libraries/StellaOps.Scanner.Sources/ConnectionTesters/GitConnectionTester.cs - Git-specific connection test
  • Configuration:
    • src/Scanner/__Libraries/StellaOps.Scanner.Sources/Configuration/SourceConfigValidator.cs - SourceConfigValidator validates source configuration completeness
    • src/Scanner/__Libraries/StellaOps.Scanner.Sources/Configuration/ISourceConfigValidator.cs - Interface for config validation
  • Tests:
    • src/Scanner/__Tests/StellaOps.Scanner.Sources.Tests/Domain/SbomSourceTests.cs - Unit tests for domain models

E2E Test Plan

  • Create an SBOM source via the REST API with Zastava type and verify it is persisted in PostgreSQL with correct configuration
  • Test connection for each source type (Zastava, Docker, CLI, Git) and verify the connection tester returns appropriate success/failure status
  • Trigger a scan run on a configured source and verify an SbomSourceRun record is created with initial status
  • List source runs for a source and verify they include timing, status, and result metadata
  • Update an SBOM source's credentials via AuthRef and verify subsequent connections use the updated credentials
  • Delete an SBOM source and verify cascade behavior for associated runs