testlab 1.11.2 → 1.11.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -13,6 +13,7 @@ class TestLab
13
13
  @ui.logger.debug { "Container Create: #{self.id}" }
14
14
 
15
15
  self.node.alive? or return false
16
+ self.node.ok?
16
17
 
17
18
  persistent_operation_check(:create)
18
19
 
@@ -36,6 +37,7 @@ class TestLab
36
37
  @ui.logger.debug { "Container Destroy: #{self.id}" }
37
38
 
38
39
  self.node.alive? or return false
40
+ self.node.ok?
39
41
 
40
42
  please_wait(:ui => @ui, :message => format_object_action(self, 'Destroy', :red)) do
41
43
  self.lxc.destroy(%(-f))
@@ -56,6 +58,7 @@ class TestLab
56
58
  @ui.logger.debug { "Container Up: #{self.id}" }
57
59
 
58
60
  self.node.alive? or return false
61
+ self.node.ok?
59
62
 
60
63
  please_wait(:ui => @ui, :message => format_object_action(self, 'Up', :green)) do
61
64
  configure
@@ -101,6 +104,7 @@ class TestLab
101
104
  @ui.logger.debug { "Container Down: #{self.id}" }
102
105
 
103
106
  self.node.alive? or return false
107
+ self.node.ok?
104
108
 
105
109
  please_wait(:ui => @ui, :message => format_object_action(self, 'Down', :red)) do
106
110
 
@@ -8,9 +8,9 @@ class TestLab
8
8
 
9
9
  PBZIP2_MEMORY = 1024
10
10
  READ_SIZE = ((64 * 1024) - 1)
11
- TRANSFER_MESSAGE = "transferring '%s' at %0.2fMB/s -- %0.2fMB of %0.2fMB -- %d%% (%01d:%02dT-%01d:%02d) \r"
11
+ TRANSFER_MESSAGE = "%s '%s' at %0.2fMB/s -- %0.2fMB of %0.2fMB -- %d%% (%01d:%02dT-%01d:%02d) \r"
12
12
 
13
- def transfer_message(filename, current_size, total_size, elapsed)
13
+ def transfer_message(what, filename, current_size, total_size, elapsed)
14
14
  total_size_mb = (total_size.to_f / (1024 * 1024).to_f)
15
15
  current_size_mb = (current_size.to_f / (1024 * 1024).to_f)
16
16
 
@@ -27,7 +27,7 @@ class TestLab
27
27
 
28
28
  percentage_done = ((current_size * 100) / total_size)
29
29
 
30
- @ui.stdout.print(format_message(TRANSFER_MESSAGE.yellow % [File.basename(filename), speed_mb, current_size_mb, total_size_mb, percentage_done, minutes, seconds, est_minutes, est_seconds]))
30
+ @ui.stdout.print(format_message(TRANSFER_MESSAGE.yellow % [what, File.basename(filename), speed_mb, current_size_mb, total_size_mb, percentage_done, minutes, seconds, est_minutes, est_seconds]))
31
31
  end
32
32
 
33
33
  def progress_callback(action, args)
@@ -44,7 +44,7 @@ class TestLab
44
44
  elapsed = (Time.now - @start_time)
45
45
  current_size = (args[1] + args[2].length)
46
46
 
47
- transfer_message(args[0].local, current_size, @total_size, elapsed)
47
+ transfer_message(%(uploading to node:), args[0].local, current_size, @total_size, elapsed)
48
48
 
49
49
  when :finish
50
50
  @ui.stdout.puts
@@ -59,6 +59,9 @@ class TestLab
59
59
  def export(compression=9, local_file=nil)
60
60
  @ui.logger.debug { "Container Export: #{self.id} " }
61
61
 
62
+ self.node.alive? or return false
63
+ self.node.ok?
64
+
62
65
  (self.state == :not_created) and raise ContainerError, 'You must create a container before you can export it!'
63
66
 
64
67
  # Throw an exception if we are attempting to export a container in a
@@ -119,6 +122,9 @@ EOF
119
122
  def import(local_file)
120
123
  @ui.logger.debug { "Container Import: #{self.id}" }
121
124
 
125
+ self.node.alive? or return false
126
+ self.node.ok?
127
+
122
128
  import_tempfile = Tempfile.new('import')
123
129
  remote_filename = File.basename(import_tempfile.path.dup)
124
130
  import_tempfile.close!
@@ -254,7 +260,7 @@ EOF
254
260
  elapsed = (Time.now - start_time)
255
261
  current_size += chunk.size
256
262
 
257
- transfer_message(local_file, current_size, total_size, elapsed)
263
+ transfer_message(%(downloading locally:), local_file, current_size, total_size, elapsed)
258
264
  end
259
265
  @ui.stdout.puts
260
266
 
@@ -13,6 +13,7 @@ class TestLab
13
13
  @ui.logger.debug { "Container Provision: #{self.id} " }
14
14
 
15
15
  self.node.alive? or return false
16
+ self.node.ok?
16
17
 
17
18
  please_wait(:ui => @ui, :message => format_object_action(self, :provision, :green)) do
18
19
  do_provisioner_callbacks(self, :provision, @ui)
@@ -31,6 +32,7 @@ class TestLab
31
32
  @ui.logger.debug { "Container Deprovision: #{self.id} " }
32
33
 
33
34
  self.node.alive? or return false
35
+ self.node.ok?
34
36
 
35
37
  persistent_operation_check(:deprovision)
36
38
 
@@ -20,6 +20,22 @@ class TestLab
20
20
  }
21
21
  end
22
22
 
23
+ def ok?
24
+ result = true
25
+
26
+ # make sure the node has some free space
27
+ free_space_percent = (self.exec(%(df -P /), :ignore_exit_status => true).output.split("\n")[1].split[-2].to_i rescue nil)
28
+ if free_space_percent.nil?
29
+ @ui.stderr.puts(format_message("ERROR: We could not determine how much free space node #{self.id.inspect} has!".red.bold))
30
+ result = false
31
+ elsif (free_space_percent >= 90)
32
+ @ui.stderr.puts(format_message("WARNING: Your TestLab node #{self.id.inspect} is using #{free_space_percent}% of its available disk space!".red.bold))
33
+ result = false
34
+ end
35
+
36
+ result
37
+ end
38
+
23
39
  end
24
40
 
25
41
  end
@@ -1,6 +1,6 @@
1
1
  class TestLab
2
2
  unless const_defined?(:VERSION)
3
3
  # TestLab Gem Version
4
- VERSION = "1.11.2"
4
+ VERSION = "1.11.3"
5
5
  end
6
6
  end
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: 1.11.2
4
+ version: 1.11.3
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-11-04 00:00:00.000000000 Z
12
+ date: 2013-12-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: gli