mirror of
https://github.com/open-policy-agent/opa.git
synced 2026-08-12 19:32:48 -06:00
a179a24c48
All packages, except for `cmd` and `internal`, have been moved into a new `v1` root package. Old packages are kept for backwards-compatibility reasons. All contained code is replaced with simple type aliases and proxy functions to `v1` implementations. Old packages default to the Rego v0 syntax, new `v1` packages default to the Rego v1 syntax. Signed-off-by: Johan Fylling <johan.dev@fylling.se>
47 lines
1.8 KiB
Go
47 lines
1.8 KiB
Go
// Copyright 2023 The OPA Authors. All rights reserved.
|
|
// Use of this source code is governed by an Apache2
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package hooks
|
|
|
|
import (
|
|
v1 "github.com/open-policy-agent/opa/v1/hooks"
|
|
)
|
|
|
|
// Hook is a hook to be called in some select places in OPA's operation.
|
|
//
|
|
// The base Hook interface is any, and wherever a hook can occur, the calling code
|
|
// will check if your hook implements an appropriate interface. If so, your hook
|
|
// is called.
|
|
//
|
|
// This allows you to only hook in to behavior you care about, and it allows the
|
|
// OPA to add more hooks in the future.
|
|
//
|
|
// All hook interfaces in this package have Hook in the name. Hooks must be safe
|
|
// for concurrent use. It is expected that hooks are fast; if a hook needs to take
|
|
// time, then copy what you need and ensure the hook is async.
|
|
//
|
|
// When multiple instances of a hook are provided, they are all going to be executed
|
|
// in an unspecified order (it's a map-range call underneath). If you need hooks to
|
|
// be run in order, you can wrap them into another hook, and configure that one.
|
|
type Hook = v1.Hook
|
|
|
|
// Hooks is the type used for every struct in OPA that can work with hooks.
|
|
type Hooks = v1.Hooks
|
|
|
|
// New creates a new instance of Hooks.
|
|
func New(hs ...Hook) Hooks {
|
|
return v1.New(hs...)
|
|
}
|
|
|
|
// ConfigHook allows inspecting or rewriting the configuration when the plugin
|
|
// manager is processing it.
|
|
// Note that this hook is not run when the plugin manager is reconfigured. This
|
|
// usually only happens when there's a new config from a discovery bundle, and
|
|
// for processing _that_, there's `ConfigDiscoveryHook`.
|
|
type ConfigHook = v1.ConfigHook
|
|
|
|
// ConfigHook allows inspecting or rewriting the discovered configuration when
|
|
// the discovery plugin is processing it.
|
|
type ConfigDiscoveryHook = v1.ConfigDiscoveryHook
|