Sha256: 6bf540758ac41585845ad6ef0baef645107a8e5a295c10de9c09ecbac6757975

Contents?: true

Size: 1.02 KB

Versions: 17

Compression:

Stored size: 1.02 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_name] if @properties && @properties[instance_group_name]

    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_name] = 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

17 entries across 17 versions & 1 rubygems

Version Path
configgin-0.20.3 lib/bosh_deployment_manifest.rb
configgin-0.20.2 lib/bosh_deployment_manifest.rb
configgin-0.20.1.1 lib/bosh_deployment_manifest.rb
configgin-0.20.1 lib/bosh_deployment_manifest.rb
configgin-0.20.0 lib/bosh_deployment_manifest.rb
configgin-0.19.6 lib/bosh_deployment_manifest.rb
configgin-0.19.5 lib/bosh_deployment_manifest.rb
configgin-0.19.4 lib/bosh_deployment_manifest.rb
configgin-0.19.3 lib/bosh_deployment_manifest.rb
configgin-0.19.2 lib/bosh_deployment_manifest.rb
configgin-0.19.1 lib/bosh_deployment_manifest.rb
configgin-0.19.0 lib/bosh_deployment_manifest.rb
configgin-0.18.8 lib/bosh_deployment_manifest.rb
configgin-0.18.7 lib/bosh_deployment_manifest.rb
configgin-0.18.6 lib/bosh_deployment_manifest.rb
configgin-0.18.5 lib/bosh_deployment_manifest.rb
configgin-0.18.4 lib/bosh_deployment_manifest.rb