Sha256: 9cff1b373ec3c89a7252545aaf64829a88100ba83e804aa9638ebacf51b3bd6d

Contents?: true

Size: 1 KB

Versions: 2

Compression:

Stored size: 1 KB

Contents

require 'yaml'

# BoshDeploymentManifest is used to parse BOSH manifests
class BoshDeploymentManifest
  def initialize(path)
    @manifest = YAML.load_file(path)
  end

  def properties_for_instance_group(instance_group_name)
    return @properties[instance_group] if @properties && @properties[instance_group]

    instance_group = @manifest['instance_groups'].find { |group| group['name'] == instance_group_name }
    return [] unless instance_group

    properties = {}
    instance_group['jobs'].each do |job|
      next unless job.key?('properties')

      job['properties'].each do |key, value|
        inject_properties(properties, job, key, value)
      end
    end

    @properties ||= {}
    @properties[instance_group] = properties
  end

  private

  def inject_properties(properties, job, key, value)
    case value
    when Hash
      value.each do |sub_key, sub_value|
        inject_properties(properties, job, "#{key}.#{sub_key}", sub_value)
      end
    else
      properties[key] = value
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
configgin-0.18.3 lib/bosh_deployment_manifest.rb
configgin-0.18.2 lib/bosh_deployment_manifest.rb