Class: Bosh::Agent::Platform::Linux::Network

Inherits:
Object
  • Object
show all
Defined in:
lib/bosh_agent/platform/linux/network.rb

Direct Known Subclasses

Centos::Network, Ubuntu::Network

Instance Method Summary collapse

Constructor Details

#initialize(template_dir) ⇒ Network

Returns a new instance of Network.



6
7
8
9
10
11
12
13
# File 'lib/bosh_agent/platform/linux/network.rb', line 6

def initialize(template_dir)
  @template_dir   = template_dir
  @config         = Bosh::Agent::Config
  @infrastructure = @config.infrastructure
  @logger         = @config.logger
  @networks       = []
  @dns            = []
end

Instance Method Details

#dnsObject



61
62
63
64
65
66
# File 'lib/bosh_agent/platform/linux/network.rb', line 61

def dns
  default_dns_network = networks.values.detect do |settings|
    settings.fetch('default', []).include?('dns') && settings["dns"]
  end
  default_dns_network ? default_dns_network["dns"] : []
end

#setup_dhcp_from_settingsObject



55
56
57
58
59
# File 'lib/bosh_agent/platform/linux/network.rb', line 55

def setup_dhcp_from_settings
  unless dns.empty?
    write_dhcp_conf
  end
end

#setup_networkingObject



15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/bosh_agent/platform/linux/network.rb', line 15

def setup_networking
  case @config.infrastructure_name
    when "vsphere", "vcloud"
      setup_networking_from_settings
    when "aws"
      setup_dhcp_from_settings
    when "openstack"
      setup_dhcp_from_settings
    else
      raise Bosh::Agent::FatalError, "Setup networking failed, unsupported infrastructure #{Bosh::Agent::Config.infrastructure_name}"
  end
end

#setup_networking_from_settingsObject



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/bosh_agent/platform/linux/network.rb', line 29

def setup_networking_from_settings
  mac_addresses = detect_mac_addresses

  networks.values.each do |v|
    mac = v["mac"]

    unless mac_addresses.has_key?(mac)
      raise Bosh::Agent::FatalError, "#{mac} from settings not present in instance"
    end

    v["interface"] = mac_addresses[mac]

    begin
      net_cidr = NetAddr::CIDR.create("#{v['ip']} #{v['netmask']}")
      v["network"] = net_cidr.network
      v["broadcast"] = net_cidr.broadcast
    rescue NetAddr::ValidationError => e
      raise Bosh::Agent::FatalError, e.to_s
    end
  end

  write_network_interfaces
  write_resolv_conf
  gratuitous_arp
end