3.3 KiB
3.3 KiB
Slice Query and Replay REST APIs
Module
Scanner
Status
IMPLEMENTED
Description
REST API for on-demand reachability slice generation (POST /api/slices/query), retrieval by digest (GET /api/slices/{digest}), and byte-for-byte replay verification (POST /api/slices/replay) with detailed diff output on mismatch. Includes in-memory slice cache with configurable TTL.
Implementation Details
- Slice Endpoints:
src/Scanner/StellaOps.Scanner.WebService/Endpoints/SliceEndpoints.cs-SliceEndpointsproviding REST API for slice query (POST), retrieval by digest (GET), and replay verification (POST)
- Slice Query Service:
src/Scanner/StellaOps.Scanner.WebService/Services/SliceQueryService.cs-SliceQueryServiceexecuting on-demand reachability slice generation and retrievalsrc/Scanner/StellaOps.Scanner.WebService/Services/ISliceQueryService.cs- Interface for slice query operations
- Score Replay:
src/Scanner/StellaOps.Scanner.WebService/Services/ScoreReplayService.cs-ScoreReplayServiceperforming byte-for-byte replay verification of slices with detailed diff output on mismatchsrc/Scanner/StellaOps.Scanner.WebService/Services/IScoreReplayService.cs- Interface for replay servicesrc/Scanner/StellaOps.Scanner.WebService/Endpoints/ScoreReplayEndpoints.cs-ScoreReplayEndpointsREST API for replay verification
- Slice Cache:
src/Scanner/__Libraries/StellaOps.Scanner.Reachability/Slices/SliceCache.cs-SliceCachecaching slices with configurable TTLsrc/Scanner/__Libraries/StellaOps.Scanner.Reachability/Slices/InMemorySliceCache.cs-InMemorySliceCachein-memory implementationsrc/Scanner/__Libraries/StellaOps.Scanner.Reachability/Slices/ISliceCache.cs- Interface for slice caching
- Slice Core:
src/Scanner/__Libraries/StellaOps.Scanner.Reachability/Slices/SliceExtractor.cs-SliceExtractorextracting reachability slicessrc/Scanner/__Libraries/StellaOps.Scanner.Reachability/Slices/SliceModels.cs- Slice data models
- OCI Storage:
src/Scanner/__Libraries/StellaOps.Scanner.Storage.Oci/SlicePushService.cs-SlicePushServicepushing slices to OCI registriessrc/Scanner/__Libraries/StellaOps.Scanner.Storage.Oci/SliceOciManifestBuilder.cs- Building OCI manifests for slice storage
- Tests:
src/Scanner/__Tests/StellaOps.Scanner.WebService.Tests/SliceEndpointsTests.cs- Endpoint integration testssrc/Scanner/__Tests/StellaOps.Scanner.Reachability.Tests/Slices/SliceCacheTests.cs- Cache testssrc/Scanner/__Tests/StellaOps.Scanner.Reachability.Tests/Slices/InMemorySliceCacheTests.cs- In-memory cache tests
E2E Test Plan
- POST to /api/slices/query with a scan reference and verify a reachability slice is generated and returned with its content-addressed digest
- GET /api/slices/{digest} and verify the previously generated slice is retrieved with correct content
- POST to /api/slices/replay with a slice and verify byte-for-byte replay produces an identical slice (determinism check)
- Introduce a modification and verify replay produces a detailed diff showing the mismatch
- Verify the in-memory slice cache returns cached slices within TTL and regenerates after expiry
- Verify slices are pushable to OCI registries via
SlicePushService