Module: TestLab::Network::Actions

Included in:
TestLab::Network
Defined in:
lib/testlab/network/actions.rb

Instance Method Summary collapse

Instance Method Details

#createObject

Create the network



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/testlab/network/actions.rb', line 7

def create
  @ui.logger.debug { "Network Create: #{self.id} " }

  self.node.alive? or return false

  please_wait(:ui => @ui, :message => format_object_action(self, 'Create', :green)) do
    self.node.bootstrap(<<-EOF, :ignore_exit_status => true)
set -x
grep '#{def_tag}' /etc/network/interfaces && exit 0
cat <<EOI | tee -a /etc/network/interfaces
#{def_tag}
auto #{self.bridge}
iface #{self.bridge} inet static
bridge_ports none
bridge_stp off
bridge_fd 0
address #{self.ip}
broadcast #{self.broadcast}
netmask #{self.netmask}
#{end_tag}
EOI
brctl addbr #{self.bridge}
brctl stp #{self.bridge} off
brctl setfd #{self.bridge} 0
    EOF

    do_provisioner_callbacks(self, :create, @ui)
  end

  true
end

#destroyObject

Destroy the network



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/testlab/network/actions.rb', line 40

def destroy
  @ui.logger.debug { "Network Destroy: #{self.id} " }

  self.node.alive? or return false

  please_wait(:ui => @ui, :message => format_object_action(self, 'Destroy', :red)) do
    self.node.bootstrap(<<-EOF, :ignore_exit_status => true)
set -x
sed -i '/#{def_tag}/,/#{end_tag}/d' /etc/network/interfaces
brctl delbr #{self.bridge}
    EOF

    do_provisioner_callbacks(self, :destroy, @ui)
  end

  true
end

#downObject

Stop the network



77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/testlab/network/actions.rb', line 77

def down
  @ui.logger.debug { "Network Down: #{self.id} " }

  self.node.alive? or return false

  please_wait(:ui => @ui, :message => format_object_action(self, 'Down', :red)) do
    self.node.bootstrap(<<-EOF, :ignore_exit_status => true)
set -x
ifconfig #{self.bridge} down
    EOF

    do_provisioner_callbacks(self, :down, @ui)
  end

  true
end

#upObject

Start the network



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/testlab/network/actions.rb', line 59

def up
  @ui.logger.debug { "Network Up: #{self.id} " }

  self.node.alive? or return false

  please_wait(:ui => @ui, :message => format_object_action(self, 'Up', :green)) do
    self.node.bootstrap(<<-EOF, :ignore_exit_status => true)
set -x
ifconfig #{self.bridge} #{self.ip} netmask #{self.netmask} broadcast #{self.broadcast} up
    EOF

    do_provisioner_callbacks(self, :up, @ui)
  end

  true
end