Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CreateDiscoverHostFunctions ¶
func CreateDiscoverHostFunctions(conn *grpc.ClientConn) []extism.HostFunction
CreateDiscoverHostFunctions creates Extism host functions for the discover builtin. Returns two host functions - one for each supported namespace: 1. "env" namespace for Go (TinyGo) policies 2. "extism:host/user" namespace for JavaScript policies
func RegisterDiscoverBuiltin ¶
func RegisterDiscoverBuiltin(conn *grpc.ClientConn) error
RegisterDiscoverBuiltin registers chainloop's Discover endpoint as a builtin Rego function with signature:
chainloop.discover(digest, kind)
The result holds the references of all the pages of the API, up to a cap. When the read stops before the last page, the result has "truncated": true. This happens when the cap is reached, or when the control plane repeats its next cursor.
For instance, to get the references for an CONTAINER_IMAGE material, and fail if any of them is an attestation with policy violations: ```
violations contains msg if {
digest := sprintf("sha256:%s",[input.chainloop_metadata.digest.sha256])
discovered := chainloop.discover(digest, "")
some ref in discovered.references
ref.kind == "ATTESTATION"
ref.metadata.hasPolicyViolations == "true"
msg:= sprintf("attestation with digest %s contains policy violations [name: %s, project: %s, org: %s]", [ref.digest, ref.metadata.name, ref.metadata.project, ref.metadata.organization])
}
```
Types ¶
type DiscoverResult ¶ added in v1.131.0
type DiscoverResult struct {
*v1.ReferrerItem
// Truncated is true when the read stopped before the last page of references: either the
// page cap was reached, or the control plane repeated its next cursor (it ignores the cursor)
Truncated bool `json:"truncated"`
}
DiscoverResult is the referrer with the references of all the pages read. It serializes to the same shape as a ReferrerItem, plus the truncated field.
type DiscoverService ¶
type DiscoverService struct {
// contains filtered or unexported fields
}
DiscoverService wraps the gRPC discover functionality to be shared across engines
func NewDiscoverService ¶
func NewDiscoverService(conn *grpc.ClientConn) *DiscoverService
NewDiscoverService creates a new discover service
func (*DiscoverService) Discover ¶
func (s *DiscoverService) Discover(ctx context.Context, digest, kind string) (*DiscoverResult, error)
Discover calls the DiscoverPrivate gRPC endpoint to get artifact graph data. It follows the pagination cursor and merges the references of all pages, up to discoverMaxPages requests.
A control plane without pagination support ignores the pagination request and returns all the references in one response with no next cursor, so the read ends after the first page. A next cursor that does not advance also ends the read, so the same page is never merged twice, and marks the result as truncated.