Class: Conjur::Env
- Inherits:
-
Object
show all
- Defined in:
- lib/conjur/conjurenv.rb
Defined Under Namespace
Classes: ConjurTempfile, ConjurVariable, CustomTag
Instance Method Summary
collapse
Constructor Details
#initialize(options = {}) ⇒ Env
Returns a new instance of Env.
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
# File 'lib/conjur/conjurenv.rb', line 64
def initialize(options={})
raise ":file and :yaml options can not be provided together" if ( options.has_key?(:file) and options.has_key?(:yaml) )
yaml = if options.has_key?(:yaml)
raise ":yaml option should be non-empty string" unless options[:yaml].kind_of?(String)
raise ":yaml option should be non-empty string" if options[:yaml].empty?
options[:yaml]
elsif options.has_key?(:file)
raise ":file option should be non-empty string" unless options[:file].kind_of?(String)
raise ":file option should be non-empty string" if options[:file].empty?
File.read(options[:file])
else
raise "either :file or :yaml option is mandatory"
end
parse_arguments = [ yaml ]
parse_arguments << options[:substitutions] if options[:substitutions]
@definition = parse(*parse_arguments)
end
|
Instance Method Details
#check(api) ⇒ Object
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
# File 'lib/conjur/conjurenv.rb', line 123
def check(api)
Hash[
@definition.map.each do |k,v|
if v.respond_to? :conjur_id
if api.resource(v.conjur_id).permitted?(:execute)
status = :available
else
status = :unavailable
end
else
status = :literal
end
[ k, status ]
end
]
end
|
#obtain(api) ⇒ Object
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
# File 'lib/conjur/conjurenv.rb', line 106
def obtain(api)
runtime_environment = {}
@definition.each do |environment_name, v|
value = if v.conjur_id
api.resource(v.conjur_id).value
else
v
end
if v.respond_to?(:evaluate)
runtime_environment[environment_name] = v.evaluate(value)
else
runtime_environment[environment_name] = v end
end
return runtime_environment
end
|
#parse(yaml, substitutions = {}) ⇒ Object
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
# File 'lib/conjur/conjurenv.rb', line 83
def parse(yaml, substitutions = {})
YAML.add_tag("!var", ConjurVariable)
YAML.add_tag("!tmp", ConjurTempfile)
fix_safeyaml! %w(!tmp !var)
definition = YAML.load(yaml)
raise "Definition should be a Hash" unless definition.kind_of?(Hash)
definition.keys.select { |k| definition[k].kind_of? Fixnum }.each { |k| definition[k]="#{definition[k]}" }
bad_types = definition.values.select { |v| not (v.kind_of?(String) or v.kind_of?(CustomTag)) }.map {|v| v.class}.uniq
raise "Definition can not include values of types: #{bad_types}" unless bad_types.empty?
definition.inject({}) do |memo,e|
key, value = e
substitutions.each do |k,v|
value.gsub! k, v
end
memo[key] = value
memo
end
definition
end
|