Class: Jerakia::Policy
- Inherits:
-
Object
- Object
- Jerakia::Policy
- Defined in:
- lib/jerakia/policy.rb,
lib/jerakia/policy/registry.rb
Defined Under Namespace
Classes: Registry
Instance Attribute Summary collapse
-
#answer ⇒ Object
readonly
Returns the value of attribute answer.
-
#lookup_proceed ⇒ Object
readonly
Returns the value of attribute lookup_proceed.
-
#lookups ⇒ Object
Returns the value of attribute lookups.
-
#request ⇒ Object
readonly
Returns the value of attribute request.
-
#schema ⇒ Object
readonly
Returns the value of attribute schema.
-
#scope ⇒ Object
readonly
Returns the value of attribute scope.
Instance Method Summary collapse
- #clone_request ⇒ Object
- #execute ⇒ Object
-
#initialize(_name, _opts, req) ⇒ Policy
constructor
_opts currently does not get used, but is included here as a placeholder for allowing policies to be declared with options; policy :foo, :option => :value do.
- #submit_lookup(lookup) ⇒ Object
Constructor Details
#initialize(_name, _opts, req) ⇒ Policy
_opts currently does not get used, but is included here as a placeholder for allowing policies to be declared with options; policy :foo, :option => :value do
18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/jerakia/policy.rb', line 18 def initialize(_name, _opts, req) if req.use_schema && Jerakia.config[:enable_schema] schema_config = Jerakia.config[:schema] || {} @schema = Jerakia::Schema.new(req, schema_config) end @lookups = [] @request = req @answer = Jerakia::Answer.new(req.lookup_type) @scope = Jerakia::Scope.new(req) @lookup_proceed = true end |
Instance Attribute Details
#answer ⇒ Object (readonly)
Returns the value of attribute answer.
8 9 10 |
# File 'lib/jerakia/policy.rb', line 8 def answer @answer end |
#lookup_proceed ⇒ Object (readonly)
Returns the value of attribute lookup_proceed.
10 11 12 |
# File 'lib/jerakia/policy.rb', line 10 def lookup_proceed @lookup_proceed end |
#lookups ⇒ Object
Returns the value of attribute lookups.
7 8 9 |
# File 'lib/jerakia/policy.rb', line 7 def lookups @lookups end |
#request ⇒ Object (readonly)
Returns the value of attribute request.
12 13 14 |
# File 'lib/jerakia/policy.rb', line 12 def request @request end |
#schema ⇒ Object (readonly)
Returns the value of attribute schema.
11 12 13 |
# File 'lib/jerakia/policy.rb', line 11 def schema @schema end |
#scope ⇒ Object (readonly)
Returns the value of attribute scope.
9 10 11 |
# File 'lib/jerakia/policy.rb', line 9 def scope @scope end |
Instance Method Details
#clone_request ⇒ Object
31 32 33 |
# File 'lib/jerakia/policy.rb', line 31 def clone_request Marshal.load(Marshal.dump(request)) end |
#execute ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/jerakia/policy.rb', line 41 def execute response_entries = [] @lookups.each do |l| responses = l.run lookup_answers = responses.entries.map { |r| r } response_entries << lookup_answers if lookup_answers end response_entries.flatten.each { |res| process_response(res) } consolidate_answer end |
#submit_lookup(lookup) ⇒ Object
35 36 37 38 39 |
# File 'lib/jerakia/policy.rb', line 35 def submit_lookup(lookup) raise Jerakia::PolicyError, "Lookup #{lookup.name} has no datasource defined" unless lookup.get_datasource @lookups << lookup if lookup.valid? && @lookup_proceed @lookup_proceed = false if !lookup.proceed? && lookup.valid? end |