Implement Support for Batch Evaluation #73
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds support for Enterprise OPA's batch evaluation API, including automatic fallback to separate, serial requests when the batch evaluation API is not available. Detection of batch evaluation API support is cached on a per-client basis to avoid repeated attempts to request a nonexistant API endpoint.
This also introduces a new return type,
OPAResult
, defers final output type conversion and exception throwing until it's.get()
method is called. This allows for mixed success and failure in batch evaluation to be handled gracefully, without losing the outputs from requests which did succeed. A version of the existing, scalar API support has been added to allowOPAResult
to also be used in non-batch use cases.Before this PR can be merged, te changes to the OpanAPI spec made to support it have to be merged upstream (#90).