41 lines
1.3 KiB
C#
41 lines
1.3 KiB
C#
using StellaOps.Replay.Models;
|
|
using StellaOps.Testing.Manifests.Models;
|
|
|
|
namespace StellaOps.Replay.Engine;
|
|
|
|
public sealed partial class ReplayEngine
|
|
{
|
|
private async Task<LoadResult<FeedSnapshot>> LoadFeedSnapshotAsync(
|
|
FeedSnapshot snapshot,
|
|
CancellationToken ct)
|
|
{
|
|
try
|
|
{
|
|
var feed = await _feedLoader.LoadByDigestAsync(snapshot.Digest, ct).ConfigureAwait(false);
|
|
if (!string.Equals(feed.Digest, snapshot.Digest, StringComparison.OrdinalIgnoreCase))
|
|
return LoadResult<FeedSnapshot>.Fail($"Feed digest mismatch: expected {snapshot.Digest}");
|
|
return LoadResult<FeedSnapshot>.Ok(feed);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return LoadResult<FeedSnapshot>.Fail($"Failed to load feed: {ex.Message}");
|
|
}
|
|
}
|
|
|
|
private async Task<LoadResult<PolicySnapshot>> LoadPolicySnapshotAsync(
|
|
PolicySnapshot snapshot,
|
|
CancellationToken ct)
|
|
{
|
|
try
|
|
{
|
|
var policy = await _policyLoader.LoadByDigestAsync(snapshot.LatticeRulesDigest, ct)
|
|
.ConfigureAwait(false);
|
|
return LoadResult<PolicySnapshot>.Ok(policy);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return LoadResult<PolicySnapshot>.Fail($"Failed to load policy: {ex.Message}");
|
|
}
|
|
}
|
|
}
|