testlab 0.6.7 → 0.6.8

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.
@@ -259,13 +259,18 @@ EOF
259
259
  export.arg_name 'level'
260
260
  export.flag [:c, :compression]
261
261
 
262
+ export.desc 'Specify the shipping container file to export to.'
263
+ # export.default_value nil
264
+ export.arg_name 'filename'
265
+ export.flag [:output]
266
+
262
267
  export.action do |global_options, options, args|
263
268
  help_now!('a name is required') if options[:name].nil?
264
269
 
265
270
  container = @testlab.containers.select{ |n| n.id.to_sym == options[:name].to_sym }.first
266
271
  container.nil? and raise TestLab::TestLabError, "We could not find the container you supplied!"
267
272
 
268
- container.export(options[:compression])
273
+ container.export(options[:compression], options[:output])
269
274
  end
270
275
  end
271
276
 
@@ -274,18 +279,18 @@ EOF
274
279
  c.desc 'Import a shipping container (file)'
275
280
  c.command :import do |import|
276
281
 
277
- import.desc 'Specify the shipping container file to import.'
282
+ import.desc 'Specify the shipping container file to import from.'
278
283
  import.arg_name 'filename'
279
- import.flag [:sc]
284
+ import.flag [:input]
280
285
 
281
286
  import.action do |global_options, options, args|
282
287
  help_now!('a name is required') if options[:name].nil?
283
- help_now!('a filename is required') if options[:sc].nil?
288
+ help_now!('a filename is required') if options[:input].nil?
284
289
 
285
290
  container = @testlab.containers.select{ |n| n.id.to_sym == options[:name].to_sym }.first
286
291
  container.nil? and raise TestLab::TestLabError, "We could not find the container you supplied!"
287
292
 
288
- container.import(options[:sc])
293
+ container.import(options[:input])
289
294
  end
290
295
  end
291
296
 
@@ -2,11 +2,12 @@ class TestLab
2
2
  class Container
3
3
 
4
4
  module IO
5
+ PBZIP2_MEMORY = 256
5
6
 
6
7
  # Export the container
7
8
  #
8
9
  # @return [Boolean] True if successful.
9
- def export(compression=9)
10
+ def export(compression=9, local_file=nil)
10
11
  @ui.logger.debug { "Container Export: #{self.id} " }
11
12
 
12
13
  (self.lxc.state == :not_created) and return false
@@ -14,14 +15,17 @@ class TestLab
14
15
  self.down
15
16
 
16
17
  sc_file = File.join("/", "tmp", "#{self.id}.sc")
17
- local_file = File.join(Dir.pwd, File.basename(sc_file))
18
+ local_file ||= File.join(Dir.pwd, File.basename(sc_file))
18
19
 
19
20
  please_wait(:ui => @ui, :message => format_object_action(self, 'Compress', :cyan)) do
20
21
  self.node.ssh.bootstrap(<<-EOF)
21
22
  set -x
22
23
  set -e
23
- find #{self.lxc.container_root} -print0 -depth | cpio -o0 | pbzip2 -#{compression} -vfcz > #{sc_file}
24
+
25
+ du -sh #{self.lxc.container_root}
26
+ find #{self.lxc.container_root} -print0 -depth | cpio -o0 | pbzip2 -#{compression} -vfczm#{PBZIP2_MEMORY} > #{sc_file}
24
27
  chown ${SUDO_USER}:${SUDO_USER} #{sc_file}
28
+ ls -lah #{sc_file}
25
29
  EOF
26
30
  end
27
31
 
@@ -55,7 +59,10 @@ EOF
55
59
  self.node.ssh.bootstrap(<<-EOF)
56
60
  set -x
57
61
  set -e
58
- pbzip2 -vdc #{sc_file} | cpio -uid && rm -fv #{sc_file}
62
+
63
+ ls -lah #{sc_file}
64
+ pbzip2 -vdcm#{PBZIP2_MEMORY} #{sc_file} | cpio -uid && rm -fv #{sc_file}
65
+ du -sh #{self.lxc.container_root}
59
66
  EOF
60
67
  end
61
68
 
@@ -91,7 +91,7 @@ class TestLab
91
91
 
92
92
  # Inquire the state of the Vagrant-controlled VM
93
93
  def state
94
- output = self.vagrant_cli("status | grep '#{self.instance_id}'").output
94
+ output = self.vagrant_cli("status").output.grep(/#{self.instance_id}/).first
95
95
  result = UNKNOWN_STATE
96
96
  ALL_STATES.map{ |s| s.to_s.gsub('_', ' ') }.each do |state|
97
97
  if output =~ /#{state}/
@@ -20,14 +20,12 @@ class TestLab
20
20
  end
21
21
 
22
22
  def log_details(testlab)
23
- @command = ZTK::Command.new(:silence => true, :ignore_exit_status => true)
24
23
  {
25
24
  "hostname" => Socket.gethostname.inspect,
26
25
  "program" => $0.to_s.inspect,
27
26
  "config_dir" => testlab.config_dir.inspect,
28
27
  "logdev" => testlab.ui.logger.logdev.inspect,
29
- "vagrant_version" => @command.exec(%(/usr/bin/env vagrant --version)).output.strip.inspect,
30
- "virtualbox_version" => @command.exec(%(/usr/bin/env vboxmanage --version)).output.strip.inspect
28
+ "version" => TestLab::VERSION
31
29
  }
32
30
  end
33
31
 
@@ -44,11 +42,15 @@ class TestLab
44
42
  end
45
43
 
46
44
  def log_dependencies
45
+ @command = ZTK::Command.new(:silence => true, :ignore_exit_status => true)
46
+
47
47
  {
48
48
  "gli_version" => ::GLI::VERSION.inspect,
49
49
  "lxc_version" => ::LXC::VERSION.inspect,
50
50
  "ztk_version" => ::ZTK::VERSION.inspect,
51
51
  "activesupport_version" => ::ActiveSupport::VERSION::STRING.inspect,
52
+ "vagrant_version" => @command.exec(%(/usr/bin/env vagrant --version)).output.strip.inspect,
53
+ "virtualbox_version" => @command.exec(%(/usr/bin/env vboxmanage --version)).output.strip.inspect
52
54
  }
53
55
  end
54
56
 
@@ -1,6 +1,6 @@
1
1
  class TestLab
2
2
  unless const_defined?(:VERSION)
3
3
  # TestLab Gem Version
4
- VERSION = "0.6.7"
4
+ VERSION = "0.6.8"
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: 0.6.7
4
+ version: 0.6.8
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-06-16 00:00:00.000000000 Z
12
+ date: 2013-06-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: gli
@@ -300,7 +300,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
300
300
  version: '0'
301
301
  segments:
302
302
  - 0
303
- hash: 1748419604064060777
303
+ hash: 1538648921136541642
304
304
  required_rubygems_version: !ruby/object:Gem::Requirement
305
305
  none: false
306
306
  requirements:
@@ -309,7 +309,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
309
309
  version: '0'
310
310
  segments:
311
311
  - 0
312
- hash: 1748419604064060777
312
+ hash: 1538648921136541642
313
313
  requirements: []
314
314
  rubyforge_project:
315
315
  rubygems_version: 1.8.25