Skip to content

Commit

Permalink
Merge pull request #427 from Kuadrant/or-conditions
Browse files Browse the repository at this point in the history
feat: OR operator
  • Loading branch information
guicassolato authored Sep 26, 2023
2 parents c09056b + 3ec4f6b commit d6111da
Show file tree
Hide file tree
Showing 25 changed files with 1,826 additions and 326 deletions.
10 changes: 10 additions & 0 deletions api/v1beta1/auth_config_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,16 @@ type AuthConfigSpec struct {
type JSONPattern struct {
JSONPatternRef `json:",omitempty"`
JSONPatternExpression `json:",omitempty"`

// A list of pattern expressions to be evaluated as a logical AND.
All []UnstructuredJSONPattern `json:"all,omitempty"`
// A list of pattern expressions to be evaluated as a logical OR.
Any []UnstructuredJSONPattern `json:"any,omitempty"`
}

type UnstructuredJSONPattern struct {
// +kubebuilder:pruning:PreserveUnknownFields
JSONPattern `json:",omitempty"`
}

type JSONPatternRef struct {
Expand Down
58 changes: 51 additions & 7 deletions api/v1beta1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

30 changes: 28 additions & 2 deletions api/v1beta2/auth_config_conversion.go
Original file line number Diff line number Diff line change
Expand Up @@ -216,21 +216,47 @@ func convertPatternExpressionFrom(src v1beta1.JSONPatternExpression) PatternExpr
}

func convertPatternExpressionOrRefTo(src PatternExpressionOrRef) v1beta1.JSONPattern {
return v1beta1.JSONPattern{
pattern := v1beta1.JSONPattern{
JSONPatternExpression: convertPatternExpressionTo(src.PatternExpression),
JSONPatternRef: v1beta1.JSONPatternRef{
JSONPatternName: src.PatternRef.Name,
},
}
if len(src.All) > 0 {
pattern.All = make([]v1beta1.UnstructuredJSONPattern, len(src.All))
for i, p := range src.All {
pattern.All[i] = v1beta1.UnstructuredJSONPattern{JSONPattern: convertPatternExpressionOrRefTo(p.PatternExpressionOrRef)}
}
}
if len(src.Any) > 0 {
pattern.Any = make([]v1beta1.UnstructuredJSONPattern, len(src.Any))
for i, p := range src.Any {
pattern.Any[i] = v1beta1.UnstructuredJSONPattern{JSONPattern: convertPatternExpressionOrRefTo(p.PatternExpressionOrRef)}
}
}
return pattern
}

func convertPatternExpressionOrRefFrom(src v1beta1.JSONPattern) PatternExpressionOrRef {
return PatternExpressionOrRef{
pattern := PatternExpressionOrRef{
PatternExpression: convertPatternExpressionFrom(src.JSONPatternExpression),
PatternRef: PatternRef{
Name: src.JSONPatternRef.JSONPatternName,
},
}
if len(src.All) > 0 {
pattern.All = make([]UnstructuredPatternExpressionOrRef, len(src.All))
for i, p := range src.All {
pattern.All[i] = UnstructuredPatternExpressionOrRef{convertPatternExpressionOrRefFrom(p.JSONPattern)}
}
}
if len(src.Any) > 0 {
pattern.Any = make([]UnstructuredPatternExpressionOrRef, len(src.Any))
for i, p := range src.Any {
pattern.Any[i] = UnstructuredPatternExpressionOrRef{convertPatternExpressionOrRefFrom(p.JSONPattern)}
}
}
return pattern
}

func convertEvaluatorCachingTo(src *EvaluatorCaching) *v1beta1.EvaluatorCaching {
Expand Down
10 changes: 10 additions & 0 deletions api/v1beta2/auth_config_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,16 @@ type PatternExpressionOperator string
type PatternExpressionOrRef struct {
PatternExpression `json:",omitempty"`
PatternRef `json:",omitempty"`

// A list of pattern expressions to be evaluated as a logical AND.
All []UnstructuredPatternExpressionOrRef `json:"all,omitempty"`
// A list of pattern expressions to be evaluated as a logical OR.
Any []UnstructuredPatternExpressionOrRef `json:"any,omitempty"`
}

type UnstructuredPatternExpressionOrRef struct {
// +kubebuilder:pruning:PreserveUnknownFields
PatternExpressionOrRef `json:",omitempty"`
}

type PatternRef struct {
Expand Down
42 changes: 39 additions & 3 deletions api/v1beta2/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit d6111da

Please sign in to comment.