class Bosh::Director::Jobs::Helpers::ConfigParser
Public Class Methods
parse(manifest)
click to toggle source
Search and Replace at a config placeholders in manifest
# File lib/bosh/director/jobs/helpers/config_parser.rb, line 9 def parse(manifest) new_manifest = Bosh::Common::DeepCopy.copy(manifest) config_map = DeepHashReplacement.replacement_map(new_manifest) parsed_config = apply_replacements(new_manifest, config_map) parsed_config end
Private Class Methods
apply_replacements(manifest, config_map)
click to toggle source
# File lib/bosh/director/jobs/helpers/config_parser.rb, line 20 def apply_replacements(manifest, config_map) config_keys = config_map.map { |c| c["key"] }.uniq config_values, invalid_keys = fetch_config_values(config_keys) if invalid_keys.length > 0 raise "Failed to find keys in the config server: " + invalid_keys.join(", ") end update_manifest!(manifest, config_map, config_values) manifest end
fetch_config_values(keys)
click to toggle source
# File lib/bosh/director/jobs/helpers/config_parser.rb, line 34 def fetch_config_values(keys) invalid_keys = [] config_values = {} keys.each do |k| config_server_url = URI.join(Bosh::Director::Config.config_server_url, 'v1/', 'config/', k) response = Net::HTTP.get_response(config_server_url) if response.kind_of? Net::HTTPSuccess config_values[k] = JSON.parse(response.body)['value'] else invalid_keys << k end end [config_values, invalid_keys] end
update_manifest!(manifest, config_map, config_values)
click to toggle source
# File lib/bosh/director/jobs/helpers/config_parser.rb, line 52 def update_manifest!(manifest, config_map, config_values) config_map.each do |config_loc| config_path = config_loc['path'] ret = config_path[0..config_path.length-2].inject(manifest) do |obj, el| obj[el] end ret[config_path.last] = config_values[config_loc['key']] end end