Documentation
¶
Overview ¶
Package reverseexpand contains the code that handles the ReverseExpand API
Index ¶
- Variables
- type Backend
- type ConditionalResultStatus
- type Edge
- type ExecutionError
- type Graph
- type IsUserRef
- type Item
- type Node
- type Pipeline
- type PipelineOption
- type Reporter
- type ResolutionMetadata
- type ReverseExpandQuery
- type ReverseExpandQueryOption
- func WithCheckResolver(resolver graph.CheckResolver) ReverseExpandQueryOption
- func WithDispatchThrottlerConfig(config threshold.Config) ReverseExpandQueryOption
- func WithListObjectOptimizationsEnabled(enabled bool) ReverseExpandQueryOption
- func WithLogger(logger logger.Logger) ReverseExpandQueryOption
- func WithResolveNodeBreadthLimit(limit uint32) ReverseExpandQueryOption
- func WithResolveNodeLimit(limit uint32) ReverseExpandQueryOption
- type ReverseExpandRequest
- type ReverseExpandResult
- type Source
- type StatusPool
- type Target
- type UserRef
- type UserRefObject
- type UserRefObjectRelation
- type UserRefTypedWildcard
Constants ¶
This section is empty.
Variables ¶
Functions ¶
This section is empty.
Types ¶
type Backend ¶ added in v1.10.4
type Backend struct {
Datastore storage.RelationshipTupleReader
StoreID string
TypeSystem *typesystem.TypeSystem
Context *structpb.Struct
Graph *Graph
Preference openfgav1.ConsistencyPreference
}
Backend is a struct that serves as a container for all backend elements necessary for creating and running a `Pipeline`.
type ConditionalResultStatus ¶
type ConditionalResultStatus int
const ( RequiresFurtherEvalStatus ConditionalResultStatus = iota NoFurtherEvalStatus )
type Edge ¶ added in v1.10.4
type Edge = weightedGraph.WeightedAuthorizationModelEdge
type ExecutionError ¶ added in v1.9.3
type ExecutionError struct {
// contains filtered or unexported fields
}
func (*ExecutionError) Error ¶ added in v1.9.3
func (e *ExecutionError) Error() string
type Graph ¶ added in v1.10.4
type Graph = weightedGraph.WeightedAuthorizationModelGraph
type Item ¶ added in v1.10.4
Item is a struct that contains an object `string` as its `Value` or an encountered error as its `Err`. Item is the primary container used to communicate values as they pass through a `Pipeline`.
type Node ¶ added in v1.10.4
type Node = weightedGraph.WeightedAuthorizationModelNode
type Pipeline ¶ added in v1.10.4
type Pipeline struct {
// contains filtered or unexported fields
}
func NewPipeline ¶ added in v1.10.4
func NewPipeline(backend *Backend, options ...PipelineOption) *Pipeline
type PipelineOption ¶ added in v1.10.4
type PipelineOption func(*Pipeline)
func WithChunkSize ¶ added in v1.10.4
func WithChunkSize(size int) PipelineOption
func WithNumProcs ¶ added in v1.10.4
func WithNumProcs(num int) PipelineOption
type Reporter ¶ added in v1.11.1
type Reporter struct {
// contains filtered or unexported fields
}
Reporter is a struct that holds a reference for a registered reference in a StatusPool. A Reporter is returned from a call to StatusPool.Register and should be used by only a single goroutine. Using a Reporter concurrently from multiple goroutines will cause data races.
type ResolutionMetadata ¶
type ResolutionMetadata struct {
// The number of times we are expanding from each node to find set of objects
DispatchCounter *atomic.Uint32
// WasThrottled indicates whether the request was throttled
WasThrottled *atomic.Bool
// WasWeightedGraphUsed indicates whether the weighted graph was used as the algorithm for the ReverseExpand request.
WasWeightedGraphUsed *atomic.Bool
// The number of times internal check was called for the optimization path
CheckCounter *atomic.Uint32
}
func NewResolutionMetadata ¶
func NewResolutionMetadata() *ResolutionMetadata
type ReverseExpandQuery ¶
type ReverseExpandQuery struct {
// contains filtered or unexported fields
}
func NewReverseExpandQuery ¶
func NewReverseExpandQuery(ds storage.RelationshipTupleReader, ts *typesystem.TypeSystem, opts ...ReverseExpandQueryOption) *ReverseExpandQuery
TODO accept ReverseExpandRequest so we can build the datastore object right away.
func (*ReverseExpandQuery) Execute ¶
func (c *ReverseExpandQuery) Execute( ctx context.Context, req *ReverseExpandRequest, resultChan chan<- *ReverseExpandResult, resolutionMetadata *ResolutionMetadata, ) error
Execute yields all the objects of the provided objectType that the given user possibly has, a specific relation with and sends those objects to resultChan. It MUST guarantee no duplicate objects sent.
This function respects context timeouts and cancellations. If an error is encountered (e.g. context timeout) before resolving all objects, then the provided channel will NOT be closed, and it will return the error.
If no errors occur, then Execute will yield all of the objects on the provided channel and then close the channel to signal that it is done.
type ReverseExpandQueryOption ¶
type ReverseExpandQueryOption func(d *ReverseExpandQuery)
func WithCheckResolver ¶ added in v1.9.0
func WithCheckResolver(resolver graph.CheckResolver) ReverseExpandQueryOption
func WithDispatchThrottlerConfig ¶ added in v1.5.4
func WithDispatchThrottlerConfig(config threshold.Config) ReverseExpandQueryOption
func WithListObjectOptimizationsEnabled ¶ added in v1.9.0
func WithListObjectOptimizationsEnabled(enabled bool) ReverseExpandQueryOption
func WithLogger ¶ added in v1.4.3
func WithLogger(logger logger.Logger) ReverseExpandQueryOption
func WithResolveNodeBreadthLimit ¶
func WithResolveNodeBreadthLimit(limit uint32) ReverseExpandQueryOption
func WithResolveNodeLimit ¶
func WithResolveNodeLimit(limit uint32) ReverseExpandQueryOption
type ReverseExpandRequest ¶
type ReverseExpandResult ¶
type ReverseExpandResult struct {
Object string
ResultStatus ConditionalResultStatus
}
type StatusPool ¶ added in v1.10.4
type StatusPool struct {
// contains filtered or unexported fields
}
StatusPool is a struct that aggregates status values, as booleans, from multiple sources into a single boolean status value. Each source must register itself using the Register method update the source's status via the Reporter provided during registration. The default state of a StatusPool is `false` for all sources.
func (*StatusPool) Register ¶ added in v1.10.4
func (sp *StatusPool) Register() Reporter
Register is a function that creates a new entry in the StatusPool for a source and returns a Reporter that is unique within the context of the StatusPool instance. The returned Reporter instance must be used to update the status for this entry.
The Register method is thread safe.
func (*StatusPool) Status ¶ added in v1.10.4
func (sp *StatusPool) Status() bool
Status is a function that returns the cumulative status of all sources registered within the pool. If any registered source's status is set to `true`, the return value of the Status function will be `true`. The default value is `false`.
The Status method is thread safe.
type UserRef ¶
type UserRef struct {
// Types that are assignable to Ref
// *UserRef_Object
// *UserRef_TypedWildcard
// *UserRef_ObjectRelation
Ref IsUserRef
}
type UserRefObject ¶
func (*UserRefObject) GetObjectType ¶
func (u *UserRefObject) GetObjectType() string
func (*UserRefObject) String ¶
func (u *UserRefObject) String() string
type UserRefObjectRelation ¶
type UserRefObjectRelation struct {
ObjectRelation *openfgav1.ObjectRelation
Condition *openfgav1.RelationshipCondition
}
func (*UserRefObjectRelation) GetObjectType ¶
func (u *UserRefObjectRelation) GetObjectType() string
func (*UserRefObjectRelation) String ¶
func (u *UserRefObjectRelation) String() string
type UserRefTypedWildcard ¶
type UserRefTypedWildcard struct {
Type string
}
func (*UserRefTypedWildcard) GetObjectType ¶
func (u *UserRefTypedWildcard) GetObjectType() string
func (*UserRefTypedWildcard) String ¶
func (u *UserRefTypedWildcard) String() string