testlab 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/bin/tl CHANGED
@@ -132,6 +132,32 @@ command :container do |c|
132
132
 
133
133
  end
134
134
 
135
+ desc 'Manage routes'
136
+ command :route do |c|
137
+
138
+ c.desc 'Add routes to lab networks'
139
+ c.command :add do |add|
140
+ add.action do |global_options,options,args|
141
+ @testlab.nodes.each do |node|
142
+ node.route_setup(:add)
143
+ @testlab.ui.stdout.puts("Added routes successfully!".green.bold)
144
+ @testlab.ui.stdout.puts %x(netstat -nr | grep '#{node.ip}').strip
145
+ end
146
+ end
147
+ end
148
+
149
+ c.desc 'Delete routes to lab networks'
150
+ c.command :del do |del|
151
+ del.action do |global_options,options,args|
152
+ @testlab.nodes.each do |node|
153
+ node.route_setup(:del)
154
+ @testlab.ui.stdout.puts("Deleted routes successfully!".red.bold)
155
+ @testlab.ui.stdout.puts %x(netstat -nr | grep '#{node.ip}').strip
156
+ end
157
+ end
158
+ end
159
+ end
160
+
135
161
  pre do |global,command,options,args|
136
162
  # Pre logic here
137
163
  # Return true to proceed; false to abort and not call the
@@ -159,7 +185,12 @@ end
159
185
  on_error do |exception|
160
186
  # Error logic here
161
187
  # return false to skip default error handling
162
- puts(["EXCEPTION:".red.bold, exception.inspect.red].join(' '))
188
+ @ui.stderr.puts(["EXCEPTION:".red.bold, exception.inspect.red].join(' '))
189
+
190
+ @logger.fatal { exception.inspect }
191
+ exception.backtrace.each do |line|
192
+ @logger.logdev.write("#{line}\n")
193
+ end
163
194
 
164
195
  false
165
196
  end
@@ -28,13 +28,23 @@ class TestLab
28
28
  self.ssh.bootstrap(ZTK::Template.render(node_setup_template))
29
29
  end
30
30
 
31
+ def route_setup(action)
32
+ self.networks.each do |network|
33
+ command = ZTK::Command.new(:silence => true, :ignore_exit_status => true)
34
+ command.exec(%(sudo route #{action} -net #{TestLab::Utility.network(network.ip)} netmask #{TestLab::Utility.netmask(network.ip)} gw #{network.node.ip}))
35
+ end
36
+ end
37
+
31
38
  # Setup the node.
32
39
  def setup
33
40
  @ui.logger.debug { "Node Setup: #{self.id} " }
34
41
 
35
- # @ui.stdout.puts(format_message(format_object(self, :green)))
36
-
37
42
  please_wait(:ui => @ui, :message => format_object_action(self, 'Setup', :green)) do
43
+
44
+ if (self.route == true)
45
+ route_setup(:add)
46
+ end
47
+
38
48
  node_setup
39
49
 
40
50
  if self.components.include?('resolv')
@@ -59,11 +69,13 @@ class TestLab
59
69
  def teardown
60
70
  @ui.logger.debug { "Node Teardown: #{self.id} " }
61
71
 
62
- # @ui.stdout.puts(format_message(format_object(self, :red)))
63
-
64
72
  call_collections([self.containers, self.routers, self.networks], :teardown)
65
73
 
66
74
  please_wait(:ui => @ui, :message => format_object_action(self, 'Teardown', :red)) do
75
+
76
+ if (self.route == true)
77
+ route_setup(:del)
78
+ end
67
79
  end
68
80
 
69
81
  true
data/lib/testlab/node.rb CHANGED
@@ -43,6 +43,7 @@ class TestLab
43
43
  attribute :provider
44
44
  attribute :config
45
45
  attribute :components
46
+ attribute :route
46
47
 
47
48
 
48
49
  def initialize(*args)
@@ -151,11 +151,11 @@ class TestLab
151
151
  end
152
152
 
153
153
  def box
154
- (@config[:vagrant][:box] || "precise64")
154
+ (@config[:vagrant][:box] || "raring64")
155
155
  end
156
156
 
157
157
  def box_url
158
- (@config[:vagrant][:box_url] || "http://files.vagrantup.com/precise64.box")
158
+ (@config[:vagrant][:box_url] || "http://files.vagrantup.com/raring64.box")
159
159
  end
160
160
 
161
161
  def cpus
@@ -1,6 +1,6 @@
1
1
  class TestLab
2
2
  unless const_defined?(:VERSION)
3
3
  # TestLab Gem Version
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.1"
5
5
  end
6
6
  end
data/lib/testlab.rb CHANGED
@@ -68,19 +68,16 @@ class TestLab
68
68
 
69
69
  def status
70
70
  if alive?
71
- @@ui.stdout.puts("NODES:".green.bold)
72
- ZTK::Report.new(:ui => @@ui).list(TestLab::Node.all, TestLab::Node::STATUS_KEYS) do |node|
73
- OpenStruct.new(node.status)
74
- end
75
- @@ui.stdout.puts
76
- @@ui.stdout.puts("NETWORKS:".green.bold)
77
- ZTK::Report.new(:ui => @@ui).list(TestLab::Network.all, TestLab::Network::STATUS_KEYS) do |network|
78
- OpenStruct.new(network.status)
79
- end
80
- @@ui.stdout.puts
81
- @@ui.stdout.puts("CONTAINERS:".green.bold)
82
- ZTK::Report.new(:ui => @@ui).list(TestLab::Container.all, TestLab::Container::STATUS_KEYS) do |container|
83
- OpenStruct.new(container.status)
71
+ %w(nodes networks containers).map(&:to_sym).each do |object_symbol|
72
+ @@ui.stdout.puts
73
+ @@ui.stdout.puts("#{object_symbol}:".upcase.green.bold)
74
+
75
+ klass = object_symbol.to_s.singularize.capitalize
76
+ status_keys = "TestLab::#{klass}::STATUS_KEYS".constantize
77
+
78
+ ZTK::Report.new(:ui => @@ui).list(self.send(object_symbol), status_keys) do |object|
79
+ OpenStruct.new(object.status)
80
+ end
84
81
  end
85
82
 
86
83
  true
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: testlab
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-30 00:00:00.000000000 Z
12
+ date: 2013-05-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: gli
@@ -239,7 +239,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
239
239
  version: '0'
240
240
  segments:
241
241
  - 0
242
- hash: 3639724075672475487
242
+ hash: -56474438421071425
243
243
  required_rubygems_version: !ruby/object:Gem::Requirement
244
244
  none: false
245
245
  requirements:
@@ -248,7 +248,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
248
248
  version: '0'
249
249
  segments:
250
250
  - 0
251
- hash: 3639724075672475487
251
+ hash: -56474438421071425
252
252
  requirements: []
253
253
  rubyforge_project:
254
254
  rubygems_version: 1.8.25