class Conjur::DSL2::IdResolver
Makes all ids absolute, by prepending the namespace (if any) and the enclosing policy (if any).
Constants
- SUBSTITUTIONS
Public Instance Methods
on_resolve_policy(policy, visited)
click to toggle source
# File lib/conjur/dsl2/resolver.rb, line 98 def on_resolve_policy policy, visited saved_namespace = @namespace @namespace = policy.id traverse policy.body, visited, method(:resolve_id), method(:on_resolve_policy) ensure @namespace = saved_namespace end
resolve(records)
click to toggle source
# File lib/conjur/dsl2/resolver.rb, line 74 def resolve records traverse records, Set.new, method(:resolve_id), method(:on_resolve_policy) end
resolve_id(record, visited)
click to toggle source
# File lib/conjur/dsl2/resolver.rb, line 78 def resolve_id record, visited if record.respond_to?(:id) && record.respond_to?(:id=) id = record.id if id.blank? raise "#{record.to_s} has no id, and no namespace is available to populate it" unless namespace id = namespace elsif id[0] == '/' id = id[1..-1] else id = [ namespace, id ].compact.join('/') end substitute! id record.id = id end traverse record.referenced_records, visited, method(:resolve_id), method(:on_resolve_policy) end
Protected Instance Methods
substitute!(id)
click to toggle source
# File lib/conjur/dsl2/resolver.rb, line 108 def substitute! id SUBSTITUTIONS.each do |k,v| next unless value = send(v) id.gsub! k, value end end