Skip to content

Commit

Permalink
Moving around functions to avoid Wasm build bug. open-policy-agent/op…
Browse files Browse the repository at this point in the history
  • Loading branch information
kevinswiber committed Oct 28, 2022
1 parent e869bb4 commit e1e0bcc
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 59 deletions.
30 changes: 15 additions & 15 deletions docs/policies.txt
Original file line number Diff line number Diff line change
Expand Up @@ -74,14 +74,14 @@ NAMESPACES:
| | src/...s/tag-description/tag_description_test.rego |
+-------------------------------------------------------------+------------------------------------------------------+
ANNOTATIONS:
successes
=========
problems
========

Returns all successful rule validation results.
Returns all non-successful rule validation results.

Package: openapi.main
Rule: successes
Location: src/openapi/main/main.rego:27
Rule: problems
Location: src/openapi/main/main.rego:9

violation
=========
Expand All @@ -92,6 +92,15 @@ Package: openapi.main
Rule: violation
Location: src/openapi/main/conftest.rego:30

successes
=========

Returns all successful rule validation results.

Package: openapi.main
Rule: successes
Location: src/openapi/main/main.rego:28

warn
====

Expand All @@ -101,23 +110,14 @@ Package: openapi.main
Rule: warn
Location: src/openapi/main/conftest.rego:12

problems
========

Returns all non-successful rule validation results.

Package: openapi.main
Rule: problems
Location: src/openapi/main/main.rego:8

results
=======

Returns all successful and non-successful rule validation results.

Package: openapi.main
Rule: results
Location: src/openapi/main/main.rego:38
Location: src/openapi/main/main.rego:39

contact-properties
==================
Expand Down
40 changes: 40 additions & 0 deletions src/openapi/lib/lib.rego
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,43 @@ extract_message(meta) := msg {
extract_message(meta) := msg {
msg := meta.custom.message
}

msg(code, p_map) := msgs {
p_map[code]
msgs := {msg |
p_map[code][result]
msg := {
"code": code,
"message": result.message,
"path": result.path,
"severity": result.severity,
"status": "failure",
}
}
}

msg(code, p_map) := {message} {
not p_map[code]
message := {
"code": code,
"status": "success",
}
}

resolve_result_severity(result, _default) := severity {
not result.severity
severity := _default
}

resolve_result_severity(result, _default) := severity {
severity := result.severity
}

resolve_rule_severity(policy_ref, _default, severity_overrides) := severity {
not severity_overrides[policy_ref]
severity := _default
}

resolve_rule_severity(policy_ref, _default, severity_overrides) := severity {
severity := severity_overrides[policy_ref]
}
56 changes: 12 additions & 44 deletions src/openapi/main/main.rego
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package openapi.main

import data.openapi.lib
import future.keywords.in

# METADATA
Expand All @@ -10,8 +11,8 @@ problems[msg] {
data.openapi.policies[policy_ref].results[result]
result.code == policy_ref

severity_default := resolve_result_severity(result, "warn")
severity := resolve_rule_severity(policy_ref, severity_default)
severity_default := lib.resolve_result_severity(result, "warn")
severity := lib.resolve_rule_severity(policy_ref, severity_default, severity_overrides)

msg := {
"code": result.code,
Expand All @@ -37,49 +38,16 @@ successes[msg] {
# description: Returns all successful and non-successful rule validation results.
results[message] {
ref_codes := {code | some code in policy_refs}
p_codes := {code | some problem in problems; code := problem.code}

ref_codes[code]
messages := msg(code, p_codes)
messages[message]
}

msg(code, p_codes) := msgs {
p_codes[code]
msgs := {msg |
problems[result].code == code
msg := {
"code": code,
"message": result.message,
"path": result.path,
"severity": result.severity,
"status": "failure",
p_map := {code: results |
some result in problems
code := result.code
results := {inner_result |
problems[inner_result]
inner_result.code == code
}
}
}

msg(code, p_codes) := {message} {
not p_codes[code]
message := {
"code": code,
"status": "success",
}
}

resolve_result_severity(result, _default) := severity {
not result.severity
severity := _default
}

resolve_result_severity(result, _default) := severity {
severity := result.severity
}

resolve_rule_severity(policy_ref, _default) := severity {
not severity_overrides[policy_ref]
severity := _default
}

resolve_rule_severity(policy_ref, _default) := severity {
severity := severity_overrides[policy_ref]
ref_codes[code]
messages := lib.msg(code, p_map)
messages[message]
}

0 comments on commit e1e0bcc

Please sign in to comment.