class Guard::Bosh::NetworkGenerator
Generates a simulated network section for the apply spec
Public Instance Methods
generate(deployment_manifest:, job_name:)
click to toggle source
rubocop:disable Metrics/MethodLength
# File lib/guard/bosh/network_generator.rb, line 8 def generate(deployment_manifest:, job_name:) job_network, network_definition = manifest_sections(deployment_manifest, job_name) { job_network['name'] => { 'cloud_properties' => network_definition['subnets'].first[ 'cloud_properties'], 'dns_record_name' => dns_record_name( job_name, job_network['name'], deployment_manifest['name']), 'ip' => ip_address(job_network, network_definition), 'netmask' => netmask(network_definition['subnets'].first['range']), 'default' => %w(dns gateway) } } end
Private Instance Methods
dns_record_name(job, network, deployment)
click to toggle source
# File lib/guard/bosh/network_generator.rb, line 47 def dns_record_name(job, network, deployment) "0.#{job}.#{network}.#{deployment}.bosh".gsub('_', '-') end
ip_address(job_network, network_definition)
click to toggle source
# File lib/guard/bosh/network_generator.rb, line 37 def ip_address(job_network, network_definition) if job_network.key?('static_ips') && Array(job_network['static_ips']).any? job_network['static_ips'].first else # We could be better here and calculate the dynamic address properly network_definition['subnets'].first['range'].split('/').first end end
manifest_sections(deployment_manifest, job_name)
click to toggle source
# File lib/guard/bosh/network_generator.rb, line 26 def manifest_sections(deployment_manifest, job_name) manifest_job = deployment_manifest['jobs'].find do |job| job['name'] == job_name end job_network = manifest_job['networks'].first network_definition = deployment_manifest['networks'].find do |n| n['name'] == job_network['name'] end [job_network, network_definition] end
netmask(range)
click to toggle source
# File lib/guard/bosh/network_generator.rb, line 51 def netmask(range) cidr = range.split('/').last IPAddr.new('255.255.255.255').mask(cidr).to_s end