class Bosh::Workspace::DnsHelper

Public Class Methods

transform(generated_manifest, domain_name) click to toggle source
# File lib/bosh/workspace/helpers/dns_helper.rb, line 3
def self.transform(generated_manifest, domain_name)
  @manifest = YAML.load(IO.read(generated_manifest))
  @domain_name = domain_name
  @manual_networks = []
  @dns = {}

  transform_networks

  if @manual_networks.empty?
    err "Missing manual network: Only type manual can be transformed to dynamic"
  end
  
  transform_jobs
  transform_properties
  transform_job_properties

  IO.write(generated_manifest, @manifest.to_yaml)
end

Private Class Methods

job_to_dns(job, index, network_name) click to toggle source
# File lib/bosh/workspace/helpers/dns_helper.rb, line 61
def self.job_to_dns(job, index, network_name)
  job_name = job["name"].gsub('_', '-')
  [index, job_name, network_name, @manifest["name"], @domain_name].join(".")
end
replace_ips(properties) click to toggle source
# File lib/bosh/workspace/helpers/dns_helper.rb, line 66
def self.replace_ips(properties)
  properties_yaml = properties.to_yaml
  @dns.each { |ip, domain| properties_yaml.gsub!(ip, domain) }
  YAML.load properties_yaml
end
transform_job_properties() click to toggle source
# File lib/bosh/workspace/helpers/dns_helper.rb, line 54
def self.transform_job_properties
  @manifest["jobs"].map! do |job|
    job["properties"] = replace_ips(job["properties"]) if job["properties"]
    job
  end
end
transform_jobs() click to toggle source
# File lib/bosh/workspace/helpers/dns_helper.rb, line 35
def self.transform_jobs
  @manifest["jobs"].map! do |job|
    job["networks"].map! do |network|
      if @manual_networks.include?(network["name"]) && network["static_ips"]
        network["static_ips"].each_with_index do |ip, index|
          @dns[ip] = job_to_dns(job, index, network["name"])
        end
        network.delete("static_ips")
      end
      network
    end
    job
  end
end
transform_networks() click to toggle source
# File lib/bosh/workspace/helpers/dns_helper.rb, line 24
def self.transform_networks
  @manifest["networks"].map! do |network|
    if network["type"] == "manual"
      @manual_networks << network["name"]
      { "name" => network["name"], "type" => "dynamic", "cloud_properties" => {} }
    else
      network
    end
  end
end
transform_properties() click to toggle source
# File lib/bosh/workspace/helpers/dns_helper.rb, line 50
def self.transform_properties
  @manifest["properties"] = replace_ips(@manifest["properties"])
end