class Guard::Bosh::JobDefaultPropertiesLoader
The property defaults (if any) defined for a BOSH job in the job spec.
Public Class Methods
new(release_dir:)
click to toggle source
# File lib/guard/bosh/job_default_properties_loader.rb, line 7 def initialize(release_dir:) @release_dir = release_dir end
Public Instance Methods
load_properties(job)
click to toggle source
# File lib/guard/bosh/job_default_properties_loader.rb, line 11 def load_properties(job) properties = job_spec(job[:job_name]).fetch('properties') expand( intermediate_properties(properties).merge( default_properties(properties) ) ) end
Private Instance Methods
default_properties(properties)
click to toggle source
# File lib/guard/bosh/job_default_properties_loader.rb, line 22 def default_properties(properties) defaults_only = properties.map do |property, config| [property, config['default']] end Hash[defaults_only].reject { |_k, v| v.nil? } end
each_parent(key) { |parent| ... }
click to toggle source
# File lib/guard/bosh/job_default_properties_loader.rb, line 52 def each_parent(key) path = key.split('.') path[0...-1].each do |parent| yield parent end end
expand(properties)
click to toggle source
# File lib/guard/bosh/job_default_properties_loader.rb, line 40 def expand(properties) properties.each_with_object({}) do |property, expanded| key, value = property current = expanded each_parent(key) do |parent| current[parent] = {} unless current.key?(parent) current = current[parent] end current[leaf(key)] = value end end
intermediate_properties(properties)
click to toggle source
# File lib/guard/bosh/job_default_properties_loader.rb, line 29 def intermediate_properties(properties) intermediates = properties.keys.map do |key| key.split('.')[0..-2].join('.') end.sort.uniq Hash[intermediates.zip(intermediates.map { |_t| {} })] end
job_spec(job_name)
click to toggle source
# File lib/guard/bosh/job_default_properties_loader.rb, line 36 def job_spec(job_name) YAML.load_file(@release_dir + 'jobs' + job_name + 'spec') end
leaf(key)
click to toggle source
# File lib/guard/bosh/job_default_properties_loader.rb, line 59 def leaf(key) key.split('.').last end