Class: Construqt::Flavour::Ubuntu::Device

Inherits:
OpenStruct
  • Object
show all
Defined in:
lib/construqt/flavour/ubuntu/flavour_ubuntu.rb

Overview

end

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(cfg) ⇒ Device

Returns a new instance of Device.



32
33
34
# File 'lib/construqt/flavour/ubuntu/flavour_ubuntu.rb', line 32

def initialize(cfg)
  super(cfg)
end

Class Method Details

.add_address(host, ifname, iface, lines, writer) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/construqt/flavour/ubuntu/flavour_ubuntu.rb', line 36

def self.add_address(host, ifname, iface, lines, writer)
  if iface.address.nil?
    Firewall.create(host, ifname, iface)
    return
  end

  writer.header.dhcpv4 if iface.address.dhcpv4?
  writer.header.dhcpv6 if iface.address.dhcpv6?
  writer.header.mode(EtcNetworkInterfaces::Entry::Header::MODE_LOOPBACK) if iface.address.loopback?
  lines.add(iface.flavour) if iface.flavour
  iface.address.ips.each do |ip|
    lines.up("ip addr add #{ip.to_string} dev #{ifname}")
    lines.down("ip addr del #{ip.to_string} dev #{ifname}")
  end

  iface.address.routes.each do |route|
    if route.metric
      metric = " metric #{route.metric}"
    else
      metric = ""
    end
    lines.up("ip route add #{route.dst.to_string} via #{route.via.to_s}#{metric}")
    lines.down("ip route del #{route.dst.to_string} via #{route.via.to_s}#{metric}")
  end

  Firewall.create(host, ifname, iface)
end

.add_services(host, ifname, iface, writer) ⇒ Object



68
69
70
71
72
# File 'lib/construqt/flavour/ubuntu/flavour_ubuntu.rb', line 68

def self.add_services(host, ifname, iface, writer)
  iface.services && iface.services.each do |service|
    Services.get_renderer(service).interfaces(host, ifname, iface, writer)
  end
end

.build_config(host, iface) ⇒ Object



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/construqt/flavour/ubuntu/flavour_ubuntu.rb', line 74

def self.build_config(host, iface)
  #      binding.pry
  writer = host.result.etc_network_interfaces.get(iface)
  writer.header.protocol(EtcNetworkInterfaces::Entry::Header::PROTO_INET4)
  #binding.pry #unless iface.delegate
  writer.lines.add(iface.delegate.flavour) if iface.delegate.flavour
  ifname = writer.header.get_interface_name
  #      ifaces.header.mode(Result::EtcNetworkInterfaces::Entry::Header::MODE_DHCP4) if iface.address.dhcpv4?
  #      ifaces.header.mode(Result::EtcNetworkInterfaces::Entry::Header::MODE_LOOOPBACK) if iface.address.loopback?
  writer.lines.up("ip link set mtu #{iface.delegate.mtu} dev #{ifname} up")
  writer.lines.down("ip link set dev #{ifname} down")
  add_address(host, ifname, iface.delegate, writer.lines, writer) #unless iface.address.nil? || iface.address.ips.empty?
  add_services(host, ifname, iface.delegate, writer)
  host.ipsecs.find do |ipsec|
    if ipsec.left.remote.interface == iface || ipsec.right.remote.interface == iface
      writer.lines.up("STARTED_BY_CONSTRUQT=yes /etc/init.d/racoon start")
      writer.lines.down("STARTED_BY_CONSTRUQT=yes /etc/init.d/racoon restart")
      true
    else
      false
    end
  end
end

Instance Method Details

#build_config(host, iface) ⇒ Object



64
65
66
# File 'lib/construqt/flavour/ubuntu/flavour_ubuntu.rb', line 64

def build_config(host, iface)
  self.class.build_config(host, iface)
end