boxgrinder-build 0.6.2 → 0.6.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.
data/CHANGELOG CHANGED
@@ -1,4 +1,8 @@
1
1
 
2
+ v0.6.3
3
+
4
+ * [BGBUILD-94] Check if set_network call is avaialbe in libguestfs
5
+
2
6
  v0.6.2
3
7
 
4
8
  * [BGBUILD-84] Don't use in libguestfs qemu-kvm where hardware accleration isn't available
data/Manifest CHANGED
@@ -0,0 +1,30 @@
1
+ CHANGELOG
2
+ LICENSE
3
+ Manifest
4
+ README
5
+ Rakefile
6
+ bin/boxgrinder-build
7
+ boxgrinder-build.gemspec
8
+ lib/boxgrinder-build/appliance.rb
9
+ lib/boxgrinder-build/helpers/appliance-customize-helper.rb
10
+ lib/boxgrinder-build/helpers/augeas-helper.rb
11
+ lib/boxgrinder-build/helpers/guestfs-helper.rb
12
+ lib/boxgrinder-build/helpers/image-helper.rb
13
+ lib/boxgrinder-build/helpers/linux-helper.rb
14
+ lib/boxgrinder-build/helpers/package-helper.rb
15
+ lib/boxgrinder-build/helpers/plugin-helper.rb
16
+ lib/boxgrinder-build/managers/plugin-manager.rb
17
+ lib/boxgrinder-build/plugins/base-plugin.rb
18
+ rubygem-boxgrinder-build.spec
19
+ spec/Rakefile
20
+ spec/appliance-spec.rb
21
+ spec/helpers/appliance-customize-helper-spec.rb
22
+ spec/helpers/augeas-helper-spec.rb
23
+ spec/helpers/guestfs-helper-spec.rb
24
+ spec/helpers/image-helper-spec.rb
25
+ spec/helpers/linux-helper-spec.rb
26
+ spec/helpers/package-helper-spec.rb
27
+ spec/helpers/plugin-helper-spec.rb
28
+ spec/managers/plugin-manager-spec.rb
29
+ spec/plugins/base-plugin-spec.rb
30
+ spec/rspec/src/appliances/jeos-f13.appl
data/Rakefile CHANGED
@@ -1,3 +1,23 @@
1
+ #
2
+ # Copyright 2010 Red Hat, Inc.
3
+ #
4
+ # This is free software; you can redistribute it and/or modify it
5
+ # under the terms of the GNU Lesser General Public License as
6
+ # published by the Free Software Foundation; either version 3 of
7
+ # the License, or (at your option) any later version.
8
+ #
9
+ # This software is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
+ # Lesser General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU Lesser General Public
15
+ # License along with this software; if not, write to the Free
16
+ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
17
+ # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
18
+
19
+ require 'rubygems'
20
+ require 'spec/rake/spectask'
1
21
  require 'echoe'
2
22
 
3
23
  Echoe.new("boxgrinder-build") do |p|
@@ -6,6 +26,54 @@ Echoe.new("boxgrinder-build") do |p|
6
26
  p.summary = "A tool for creating appliances from simple plain text files for various virtual environments."
7
27
  p.url = "http://www.jboss.org/boxgrinder"
8
28
  p.email = "info@boxgrinder.org"
9
- p.ignore_pattern = /^(pkg|doc)|\.svn|CVS|\.bzr|\.DS|\.git|\.log/
10
- p.runtime_dependencies = ["commander ~>4.0.3", "boxgrinder-core ~>0.1.1"]
29
+ p.runtime_dependencies = ["commander ~>4.0.3", "boxgrinder-core ~>0.1.2"]
30
+ end
31
+
32
+ desc "Run all tests"
33
+ Spec::Rake::SpecTask.new('spec') do |t|
34
+ t.libs.unshift "../boxgrinder-core/lib"
35
+ t.rcov = false
36
+ t.spec_files = FileList["spec/**/*-spec.rb"]
37
+ t.spec_opts = ['--colour', '--format', 'specdoc', '-b']
38
+ t.verbose = true
39
+ end
40
+
41
+ desc "Run all tests and generate code coverage report"
42
+ Spec::Rake::SpecTask.new('spec:coverage') do |t|
43
+ t.libs.unshift "../boxgrinder-core/lib"
44
+ t.spec_files = FileList["spec/**/*-spec.rb"]
45
+ t.spec_opts = ['--colour', '--format', 'html:pkg/rspec_report.html', '-b']
46
+ t.rcov = true
47
+ t.rcov_opts = ['--exclude', 'spec,teamcity/*,/usr/lib/ruby/,.gem/ruby,/boxgrinder-core/,/gems/']
48
+ t.verbose = true
49
+ end
50
+
51
+ topdir = "#{Dir.pwd}/pkg/rpmbuild"
52
+ directory "#{topdir}/SOURCES"
53
+
54
+ task 'gem:copy' => [:clean, :manifest, :gem, 'rpm:topdir'] do
55
+ Dir["**/pkg/*.gem"].each { |gem| FileUtils.cp(gem, "#{topdir}/SOURCES", :verbose => true) }
56
+ end
57
+
58
+ task 'rpm:topdir' do
59
+ FileUtils.mkdir_p(["#{topdir}/SOURCES", "#{topdir}/RPMS", "#{topdir}/BUILD", "#{topdir}/SPECS", "#{topdir}/SRPMS"], :verbose => true)
11
60
  end
61
+
62
+ desc "Create RPM"
63
+ task 'rpm' => ['gem:copy'] do
64
+ Dir["**/rubygem-*.spec"].each do |spec|
65
+ `rpmbuild --define '_topdir #{topdir}' -ba #{spec}`
66
+ exit 1 unless $? == 0
67
+ end
68
+ end
69
+
70
+ desc "Install RPM"
71
+ task 'rpm:install' => ['rpm'] do
72
+ puts "sudo yum -y remove rubygem-boxgrinder-build"
73
+ system "sudo yum -y remove rubygem-boxgrinder-build"
74
+ exit 1 unless $? == 0
75
+
76
+ puts "sudo yum -y --nogpgcheck localinstall #{topdir}/RPMS/noarch/*.rpm"
77
+ system "sudo yum -y --nogpgcheck localinstall #{topdir}/RPMS/noarch/*.rpm"
78
+ exit 1 unless $? == 0
79
+ end
data/bin/boxgrinder-build CHANGED
@@ -18,10 +18,6 @@
18
18
  # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
19
19
 
20
20
  require 'rubygems'
21
-
22
- gem 'boxgrinder-core', '>= 0.1.1'
23
- gem 'commander', '>= 4.0.3'
24
-
25
21
  require 'boxgrinder-core/helpers/log-helper'
26
22
  require 'boxgrinder-build/appliance'
27
23
 
@@ -35,7 +31,7 @@ end
35
31
  require 'commander/import'
36
32
 
37
33
  program :name, 'BoxGrinder Build'
38
- program :version, '0.6.1'
34
+ program :version, '0.6.3'
39
35
  program :description, "A tool for building VM images from simple definition files."
40
36
  program :help, 'Homepage', 'http://www.jboss.org/boxgrinder/build.html'
41
37
  program :help, 'Documentation', 'http://community.jboss.org/docs/DOC-14358'
@@ -2,17 +2,17 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{boxgrinder-build}
5
- s.version = "0.6.2"
5
+ s.version = "0.6.3"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Marek Goldmann"]
9
- s.date = %q{2010-11-04}
9
+ s.date = %q{2010-11-11}
10
10
  s.default_executable = %q{boxgrinder-build}
11
11
  s.description = %q{A tool for creating appliances from simple plain text files for various virtual environments.}
12
12
  s.email = %q{info@boxgrinder.org}
13
13
  s.executables = ["boxgrinder-build"]
14
14
  s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README", "bin/boxgrinder-build", "lib/boxgrinder-build/appliance.rb", "lib/boxgrinder-build/helpers/appliance-customize-helper.rb", "lib/boxgrinder-build/helpers/augeas-helper.rb", "lib/boxgrinder-build/helpers/guestfs-helper.rb", "lib/boxgrinder-build/helpers/image-helper.rb", "lib/boxgrinder-build/helpers/linux-helper.rb", "lib/boxgrinder-build/helpers/package-helper.rb", "lib/boxgrinder-build/helpers/plugin-helper.rb", "lib/boxgrinder-build/managers/plugin-manager.rb", "lib/boxgrinder-build/plugins/base-plugin.rb"]
15
- s.files = ["CHANGELOG", "LICENSE", "Manifest", "README", "Rakefile", "bin/boxgrinder-build", "lib/boxgrinder-build/appliance.rb", "lib/boxgrinder-build/helpers/appliance-customize-helper.rb", "lib/boxgrinder-build/helpers/augeas-helper.rb", "lib/boxgrinder-build/helpers/guestfs-helper.rb", "lib/boxgrinder-build/helpers/image-helper.rb", "lib/boxgrinder-build/helpers/linux-helper.rb", "lib/boxgrinder-build/helpers/package-helper.rb", "lib/boxgrinder-build/helpers/plugin-helper.rb", "lib/boxgrinder-build/managers/plugin-manager.rb", "lib/boxgrinder-build/plugins/base-plugin.rb", "rubygem-boxgrinder-build.spec", "spec/Rakefile", "spec/appliance-spec.rb", "spec/helpers/appliance-customize-helper-spec.rb", "spec/helpers/augeas-helper-spec.rb", "spec/helpers/guestfs-helper-spec.rb", "spec/helpers/image-helper-spec.rb", "spec/helpers/linux-helper-spec.rb", "spec/helpers/package-helper-spec.rb", "spec/helpers/plugin-helper-spec.rb", "spec/managers/plugin-manager-spec.rb", "spec/plugins/base-plugin-spec.rb", "spec/rspec/src/appliances/jeos-f13.appl", "boxgrinder-build.gemspec"]
15
+ s.files = ["CHANGELOG", "LICENSE", "Manifest", "README", "Rakefile", "bin/boxgrinder-build", "boxgrinder-build.gemspec", "lib/boxgrinder-build/appliance.rb", "lib/boxgrinder-build/helpers/appliance-customize-helper.rb", "lib/boxgrinder-build/helpers/augeas-helper.rb", "lib/boxgrinder-build/helpers/guestfs-helper.rb", "lib/boxgrinder-build/helpers/image-helper.rb", "lib/boxgrinder-build/helpers/linux-helper.rb", "lib/boxgrinder-build/helpers/package-helper.rb", "lib/boxgrinder-build/helpers/plugin-helper.rb", "lib/boxgrinder-build/managers/plugin-manager.rb", "lib/boxgrinder-build/plugins/base-plugin.rb", "rubygem-boxgrinder-build.spec", "spec/Rakefile", "spec/appliance-spec.rb", "spec/helpers/appliance-customize-helper-spec.rb", "spec/helpers/augeas-helper-spec.rb", "spec/helpers/guestfs-helper-spec.rb", "spec/helpers/image-helper-spec.rb", "spec/helpers/linux-helper-spec.rb", "spec/helpers/package-helper-spec.rb", "spec/helpers/plugin-helper-spec.rb", "spec/managers/plugin-manager-spec.rb", "spec/plugins/base-plugin-spec.rb", "spec/rspec/src/appliances/jeos-f13.appl"]
16
16
  s.homepage = %q{http://www.jboss.org/boxgrinder}
17
17
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Boxgrinder-build", "--main", "README"]
18
18
  s.require_paths = ["lib"]
@@ -26,13 +26,13 @@ Gem::Specification.new do |s|
26
26
 
27
27
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
28
28
  s.add_runtime_dependency(%q<commander>, ["~> 4.0.3"])
29
- s.add_runtime_dependency(%q<boxgrinder-core>, ["~> 0.1.1"])
29
+ s.add_runtime_dependency(%q<boxgrinder-core>, ["~> 0.1.2"])
30
30
  else
31
31
  s.add_dependency(%q<commander>, ["~> 4.0.3"])
32
- s.add_dependency(%q<boxgrinder-core>, ["~> 0.1.1"])
32
+ s.add_dependency(%q<boxgrinder-core>, ["~> 0.1.2"])
33
33
  end
34
34
  else
35
35
  s.add_dependency(%q<commander>, ["~> 4.0.3"])
36
- s.add_dependency(%q<boxgrinder-core>, ["~> 0.1.1"])
36
+ s.add_dependency(%q<boxgrinder-core>, ["~> 0.1.2"])
37
37
  end
38
38
  end
@@ -20,7 +20,7 @@ require 'logger'
20
20
 
21
21
  module BoxGrinder
22
22
  class AugeasHelper
23
- def initialize( guestfs, guestfs_helper, options = {})
23
+ def initialize(guestfs, guestfs_helper, options = {})
24
24
  @guestfs = guestfs
25
25
  @guestfs_helper = guestfs_helper
26
26
  @log = options[:log] || Logger.new(STDOUT)
@@ -28,7 +28,7 @@ module BoxGrinder
28
28
  @files = {}
29
29
  end
30
30
 
31
- def edit( &block )
31
+ def edit(&block)
32
32
  @log.debug "Changing configuration files using augeas..."
33
33
 
34
34
  instance_eval &block if block
@@ -38,10 +38,12 @@ module BoxGrinder
38
38
  return
39
39
  end
40
40
 
41
- @log.trace "Enabling coredump catching for augeas..."
42
- @guestfs.debug( "core_pattern", [ "/sysroot/core" ] )
41
+ if @guestfs.debug("help", []).include?('core_pattern')
42
+ @log.trace "Enabling coredump catching for augeas..."
43
+ @guestfs.debug("core_pattern", ["/sysroot/core"])
44
+ end
43
45
 
44
- @guestfs.aug_init( "/", 32 )
46
+ @guestfs.aug_init("/", 32)
45
47
 
46
48
  unload = []
47
49
 
@@ -49,7 +51,7 @@ module BoxGrinder
49
51
  unload << ". != '#{file_name}'"
50
52
  end
51
53
 
52
- @guestfs.aug_rm( "/augeas/load//incl[#{unload.join(' and ')}]" )
54
+ @guestfs.aug_rm("/augeas/load//incl[#{unload.join(' and ')}]")
53
55
  @guestfs.aug_load
54
56
 
55
57
  @files.each do |file, changes|
@@ -64,13 +66,13 @@ module BoxGrinder
64
66
  @log.debug "Augeas changes saved."
65
67
  end
66
68
 
67
- def set( name, key, value )
68
- unless @guestfs.exists( name ) != 0
69
+ def set(name, key, value)
70
+ unless @guestfs.exists(name) != 0
69
71
  @log.debug "File '#{name}' doesn't exists, skipping augeas changes..."
70
72
  return
71
73
  end
72
74
 
73
- @files[name] = {} unless @files.has_key?( name )
75
+ @files[name] = {} unless @files.has_key?(name)
74
76
  @files[name][key] = value
75
77
  end
76
78
  end
@@ -159,8 +159,10 @@ module BoxGrinder
159
159
  @guestfs.add_drive(@raw_disk)
160
160
  @log.trace "Drive added."
161
161
 
162
- @log.debug "Enabling networking for GuestFS..."
163
- @guestfs.set_network(1)
162
+ if @guestfs.respond_to?('set_network')
163
+ @log.debug "Enabling networking for GuestFS..."
164
+ @guestfs.set_network(1)
165
+ end
164
166
 
165
167
  @log.debug "Launching guestfs..."
166
168
  @guestfs.launch
@@ -21,7 +21,10 @@ require 'boxgrinder-build/helpers/guestfs-helper'
21
21
 
22
22
  module BoxGrinder
23
23
  class ImageHelper
24
- def initialize(options = {})
24
+ def initialize(config, appliance_config, options = {})
25
+ @config = config
26
+ @appliance_config = appliance_config
27
+
25
28
  @log = options[:log] || Logger.new(STDOUT)
26
29
  @exec_helper = options[:exec_helper] || ExecHelper.new(:log => @log)
27
30
  end
@@ -42,10 +45,10 @@ module BoxGrinder
42
45
  mounts[label] = loop_device
43
46
  end
44
47
 
45
- @exec_helper.execute("mount #{mounts['/']} -t #{get_filesystem_type(mounts['/'])} #{mount_dir}")
48
+ @exec_helper.execute("mount #{mounts['/']} #{mount_dir}")
46
49
 
47
50
  mounts.reject { |key, value| key == '/' }.each do |mount_point, loop_device|
48
- @exec_helper.execute("mount #{loop_device} -t #{get_filesystem_type(loop_device)} #{mount_dir}#{mount_point}")
51
+ @exec_helper.execute("mount #{loop_device} #{mount_dir}#{mount_point}")
49
52
  end
50
53
 
51
54
  @log.trace "Mounts:\n#{mounts}"
@@ -53,12 +56,6 @@ module BoxGrinder
53
56
  mounts
54
57
  end
55
58
 
56
- def get_filesystem_type(device, default_type = 'ext3')
57
- fs_type = @exec_helper.execute("df -T #{device} | tail -1 | awk '{print $2}'")
58
- return default_type if fs_type.empty? or fs_type == '-'
59
- fs_type
60
- end
61
-
62
59
  def umount_image(disk, mount_dir, mounts)
63
60
  @log.debug "Unmounting image '#{File.basename(disk)}'..."
64
61
 
@@ -85,6 +82,8 @@ module BoxGrinder
85
82
 
86
83
  @exec_helper.execute("losetup #{loop_device} #{disk}")
87
84
  offsets = @exec_helper.execute("parted #{loop_device} 'unit B print' | grep -e '^ [0-9]' | awk '{ print $2 }'").scan(/\d+/)
85
+ # wait one secont before freeing loop device
86
+ sleep 1
88
87
  @exec_helper.execute("losetup -d #{loop_device}")
89
88
 
90
89
  @log.trace "Offsets:\n#{offsets}"
@@ -99,10 +98,20 @@ module BoxGrinder
99
98
  end
100
99
 
101
100
  def create_filesystem(disk, options = {})
102
- options = {:type => 'ext3', :label => '/'}.merge(options)
101
+ options = {
102
+ :type => @appliance_config.hardware.partitions['/']['type'],
103
+ :label => '/'
104
+ }.merge(options)
103
105
 
104
106
  @log.trace "Creating filesystem..."
105
- @exec_helper.execute "mke2fs -T #{options[:type]} -L '#{options[:label]}' -F #{disk}"
107
+
108
+ case options[:type]
109
+ when 'ext3', 'ext4'
110
+ @exec_helper.execute "mke2fs -T #{options[:type]} -L '#{options[:label]}' -F #{disk}"
111
+ else
112
+ raise "Unsupported filesystem specified: #{options[:type]}"
113
+ end
114
+
106
115
  @log.trace "Filesystem created"
107
116
  end
108
117
 
@@ -17,6 +17,7 @@
17
17
  # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
18
18
 
19
19
  require 'boxgrinder-core/helpers/exec-helper'
20
+ require 'boxgrinder-core/helpers/log-helper'
20
21
  require 'boxgrinder-build/helpers/image-helper'
21
22
  require 'ostruct'
22
23
  require 'openhash/openhash'
@@ -32,7 +33,7 @@ module BoxGrinder
32
33
 
33
34
  @log = options[:log] || Logger.new(STDOUT)
34
35
  @exec_helper = options[:exec_helper] || ExecHelper.new(:log => @log)
35
- @image_helper = options[:image_helper] || ImageHelper.new(:log => @log)
36
+ @image_helper = options[:image_helper] || ImageHelper.new(@config, @appliance_config, :log => @log)
36
37
 
37
38
  @plugin_info = options[:plugin_info]
38
39
  @previous_plugin_info = options[:previous_plugin_info]
@@ -84,7 +85,7 @@ module BoxGrinder
84
85
  def supported_oses
85
86
  supported = ""
86
87
 
87
- @supported_oses.each do |name, versions|
88
+ @supported_oses.sort.each do |name, versions|
88
89
  supported << ", " unless supported.empty?
89
90
  supported << "#{name} (versions: #{versions.join(", ")})"
90
91
  end
@@ -5,12 +5,13 @@
5
5
 
6
6
  Summary: A tool for creating appliances from simple plain text files
7
7
  Name: rubygem-%{gemname}
8
- Version: 0.6.2
8
+ Version: 0.6.3
9
9
  Release: 1%{?dist}
10
10
  Group: Development/Languages
11
- License: LGPL
11
+ License: LGPLv3+
12
12
  URL: http://www.jboss.org/boxgrinder
13
13
  Source0: http://rubygems.org/gems/%{gemname}-%{version}.gem
14
+ Buildroot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
14
15
 
15
16
  Requires: ruby(abi) = %{rubyabi}
16
17
  Requires: rubygems >= 1.2
@@ -19,8 +20,9 @@ Requires: rubygem(commander) => 4.0.3
19
20
  Requires: rubygem(commander) < 4.1
20
21
  Requires: rubygem(boxgrinder-core) => 0.1.1
21
22
  Requires: rubygem(boxgrinder-core) < 0.2
22
- BuildRequires: rubygems >= 1.2
23
- BuildRequires: ruby >= 0
23
+
24
+ BuildRequires: rubygem(boxgrinder-core) => 0.1.1
25
+ BuildRequires: rubygem(boxgrinder-core) < 0.2
24
26
 
25
27
  BuildArch: noarch
26
28
  Provides: rubygem(%{gemname}) = %{version}
@@ -29,6 +31,14 @@ Provides: rubygem(%{gemname}) = %{version}
29
31
  A tool for creating appliances from simple plain text files for various
30
32
  virtual environments
31
33
 
34
+ %package doc
35
+ Summary: Documentation for %{name}
36
+ Group: Documentation
37
+ Requires:%{name} = %{version}-%{release}
38
+
39
+ %description doc
40
+ Documentation for %{name}
41
+
32
42
  %prep
33
43
 
34
44
  %build
@@ -43,6 +53,12 @@ mv %{buildroot}%{gemdir}/bin/* %{buildroot}/%{_bindir}
43
53
  rmdir %{buildroot}%{gemdir}/bin
44
54
  find %{buildroot}%{geminstdir}/bin -type f | xargs chmod a+x
45
55
 
56
+ %check
57
+ pushd %{buildroot}/%{geminstdir}
58
+ rake spec
59
+ rm -rf log
60
+ popd
61
+
46
62
  %clean
47
63
  rm -rf %{buildroot}
48
64
 
@@ -52,19 +68,26 @@ rm -rf %{buildroot}
52
68
  %dir %{geminstdir}
53
69
  %{geminstdir}/bin
54
70
  %{geminstdir}/lib
55
- %doc %{gemdir}/doc/%{gemname}-%{version}
56
- %doc %{geminstdir}/%{gemname}.gemspec
57
- %doc %{geminstdir}/rubygem-%{gemname}.spec
58
71
  %doc %{geminstdir}/CHANGELOG
59
72
  %doc %{geminstdir}/LICENSE
60
73
  %doc %{geminstdir}/README
61
74
  %doc %{geminstdir}/Manifest
62
- %doc %{geminstdir}/Rakefile
63
- %doc %{geminstdir}/spec
64
75
  %{gemdir}/cache/%{gemname}-%{version}.gem
65
76
  %{gemdir}/specifications/%{gemname}-%{version}.gemspec
66
77
 
78
+ %files doc
79
+ %defattr(-, root, root, -)
80
+ %{geminstdir}/spec
81
+ %{geminstdir}/Rakefile
82
+ %{geminstdir}/rubygem-%{gemname}.spec
83
+ %{geminstdir}/%{gemname}.gemspec
84
+ %{gemdir}/doc/%{gemname}-%{version}
85
+
67
86
  %changelog
87
+ * Tue Nov 09 2010 <mgoldman@redhat.com> - 0.6.3-1
88
+ - [BGBUILD-94] Check if set_network call is avaialbe in libguestfs
89
+ - Added 'check' section that executes tests
90
+
68
91
  * Wed Nov 03 2010 <mgoldman@redhat.com> - 0.6.2-1
69
92
  - [BGBUILD-84] Don't use in libguestfs qemu-kvm where hardware accleration isn't available
70
93
 
data/spec/Rakefile CHANGED
@@ -16,6 +16,7 @@
16
16
  # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
17
17
  # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
18
18
 
19
+ require 'rubygems'
19
20
  require 'rake'
20
21
  require 'spec/rake/spectask'
21
22
 
@@ -16,41 +16,66 @@
16
16
  # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
17
17
  # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
18
18
 
19
+ require 'rubygems'
19
20
  require 'boxgrinder-build/appliance'
20
- require 'rspec/rspec-config-helper'
21
+ #require 'rspec/rspec-config-helper'
21
22
  require 'ostruct'
23
+ require 'logger'
22
24
 
23
25
  module BoxGrinder
24
26
  describe Appliance do
25
- include RSpecConfigHelper
26
-
27
- before(:all) do
28
- @arch = `uname -m`.chomp.strip
29
- end
30
-
31
- def prepare_appliance( options = OpenStruct.new )
27
+ def prepare_appliance(options = OpenStruct.new)
32
28
  options.name = 'boxgrinder'
33
29
  options.version = '1.0'
34
30
 
35
31
  @options = options
36
32
  @log = Logger.new('/dev/null')
37
33
 
38
- @plugin_manager = mock( PluginManager )
34
+ @plugin_manager = mock(PluginManager)
39
35
 
40
- PluginManager.stub!(:instance).and_return( @plugin_manager )
36
+ PluginManager.stub!(:instance).and_return(@plugin_manager)
41
37
 
42
- @appliance = Appliance.new( "#{File.dirname( __FILE__ )}/rspec/src/appliances/jeos-f13.appl", :log => @log, :options => @options )
38
+ @appliance = Appliance.new("#{File.dirname(__FILE__)}/rspec/src/appliances/jeos-f13.appl", :log => @log, :options => @options)
43
39
  end
44
40
 
45
- before(:each) do
46
- prepare_appliance
41
+ def prepare_appliance_config
42
+ @appliance_config = mock('ApplianceConfig')
43
+
44
+ @appliance_config.stub!(:path).and_return(OpenHash.new({:build => 'build/path'}))
45
+ @appliance_config.stub!(:name).and_return('full')
46
+ @appliance_config.stub!(:summary).and_return('asd')
47
+ @appliance_config.stub!(:version).and_return(1)
48
+ @appliance_config.stub!(:release).and_return(0)
49
+ @appliance_config.stub!(:os).and_return(OpenHash.new({:name => 'fedora', :version => '11'}))
50
+
51
+ @appliance_config.stub!(:hardware).and_return(
52
+ OpenHash.new({
53
+ :partitions =>
54
+ {
55
+ '/' => {'size' => 2},
56
+ '/home' => {'size' => 3},
57
+ },
58
+ :arch => 'i686',
59
+ :base_arch => 'i386',
60
+ :cpus => 1,
61
+ :memory => 256,
62
+ })
63
+ )
64
+
65
+ @appliance_config
47
66
  end
48
67
 
68
+ # before(:each) do
69
+ # prepare_appliance
70
+ # end
71
+
49
72
  it "should prepare appliance to build" do
73
+ prepare_appliance
74
+
50
75
  plugin_helper = mock(PluginHelper)
51
76
  plugin_helper.should_receive(:load_plugins)
52
77
 
53
- PluginHelper.should_receive( :new ).with( :options => @options, :log => @log ).and_return( plugin_helper )
78
+ PluginHelper.should_receive(:new).with(:options => @options, :log => @log).and_return(plugin_helper)
54
79
 
55
80
  @appliance.should_receive(:read_and_validate_definition)
56
81
  @appliance.should_not_receive(:remove_old_builds)
@@ -60,12 +85,12 @@ module BoxGrinder
60
85
  end
61
86
 
62
87
  it "should prepare appliance to build with removing old files" do
63
- prepare_appliance( OpenStruct.new( :force => true ) )
88
+ prepare_appliance(OpenStruct.new(:force => true))
64
89
 
65
90
  plugin_helper = mock(PluginHelper)
66
91
  plugin_helper.should_receive(:load_plugins)
67
92
 
68
- PluginHelper.should_receive( :new ).with( :options => @options, :log => @log ).and_return( plugin_helper )
93
+ PluginHelper.should_receive(:new).with(:options => @options, :log => @log).and_return(plugin_helper)
69
94
 
70
95
  @appliance.should_receive(:read_and_validate_definition)
71
96
  @appliance.should_receive(:remove_old_builds)
@@ -75,12 +100,14 @@ module BoxGrinder
75
100
  end
76
101
 
77
102
  it "should read and validate definition" do
103
+ prepare_appliance
104
+
78
105
  appliance_config = ApplianceConfig.new
79
106
 
80
107
  appliance_helper = mock(ApplianceHelper)
81
- appliance_helper.should_receive(:read_definitions).with( "#{File.dirname( __FILE__ )}/rspec/src/appliances/jeos-f13.appl" ).and_return([{}, appliance_config])
108
+ appliance_helper.should_receive(:read_definitions).with("#{File.dirname(__FILE__)}/rspec/src/appliances/jeos-f13.appl").and_return([{}, appliance_config])
82
109
 
83
- ApplianceHelper.should_receive(:new).with( :log => @log ).and_return(appliance_helper)
110
+ ApplianceHelper.should_receive(:new).with(:log => @log).and_return(appliance_helper)
84
111
 
85
112
  appliance_config_helper = mock(ApplianceConfigHelper)
86
113
 
@@ -88,120 +115,126 @@ module BoxGrinder
88
115
  appliance_config.should_receive(:init_arch).and_return(appliance_config)
89
116
  appliance_config.should_receive(:initialize_paths).and_return(appliance_config)
90
117
 
91
- appliance_config_helper.should_receive(:merge).with( appliance_config ).and_return( appliance_config )
118
+ appliance_config_helper.should_receive(:merge).with(appliance_config).and_return(appliance_config)
92
119
 
93
- ApplianceConfigHelper.should_receive(:new).with( {} ).and_return( appliance_config_helper )
120
+ ApplianceConfigHelper.should_receive(:new).with({}).and_return(appliance_config_helper)
94
121
 
95
122
  appliance_config_validator = mock(ApplianceConfigValidator)
96
123
  appliance_config_validator.should_receive(:validate)
97
124
 
98
- ApplianceConfigValidator.should_receive(:new).with( appliance_config ).and_return(appliance_config_validator)
125
+ ApplianceConfigValidator.should_receive(:new).with(appliance_config).and_return(appliance_config_validator)
99
126
 
100
127
  @appliance.read_and_validate_definition
101
128
  end
102
129
 
103
130
  it "should remove old builds" do
104
- @appliance.instance_variable_set(:@appliance_config, generate_appliance_config )
105
- FileUtils.should_receive(:rm_rf).with("build/appliances/#{@arch}/fedora/11/full")
131
+ prepare_appliance
132
+
133
+ @appliance.instance_variable_set(:@appliance_config, prepare_appliance_config)
134
+ FileUtils.should_receive(:rm_rf).with("build/path")
106
135
  @appliance.remove_old_builds
107
136
  end
108
137
 
109
138
  it "should build base appliance" do
110
- @appliance.instance_variable_set(:@appliance_config, generate_appliance_config )
139
+ prepare_appliance
140
+
141
+ @appliance.instance_variable_set(:@appliance_config, prepare_appliance_config)
111
142
 
112
143
  os_plugin = mock('FedoraPlugin')
113
144
  os_plugin.should_receive(:init)
114
145
  os_plugin.should_receive(:deliverables_exists?).and_return(false)
115
146
  os_plugin.should_receive(:run)
116
- os_plugin.should_receive(:deliverables).and_return({ :disk => 'abc'})
147
+ os_plugin.should_receive(:deliverables).and_return({:disk => 'abc'})
117
148
 
118
- @plugin_manager.should_receive(:plugins).and_return( { :os => "something" } )
119
- @plugin_manager.should_receive(:initialize_plugin).once.with(:os, :fedora).and_return([ os_plugin, {:class => Appliance, :type => :os, :name => :fedora, :full_name => "Fedora", :versions => ["11", "12", "13", "rawhide"] } ] )
149
+ @plugin_manager.should_receive(:plugins).and_return({:os => "something"})
150
+ @plugin_manager.should_receive(:initialize_plugin).once.with(:os, :fedora).and_return([os_plugin, {:class => Appliance, :type => :os, :name => :fedora, :full_name => "Fedora", :versions => ["11", "12", "13", "rawhide"]}])
120
151
 
121
152
  @appliance.execute_plugin_chain
122
153
  end
123
154
 
124
155
  it "should not build base appliance because deliverable already exists" do
125
- @appliance.instance_variable_set(:@appliance_config, generate_appliance_config )
156
+ prepare_appliance
157
+
158
+ @appliance.instance_variable_set(:@appliance_config, prepare_appliance_config)
126
159
 
127
160
  os_plugin = mock('FedoraPlugin')
128
161
  os_plugin.should_receive(:init)
129
162
  os_plugin.should_receive(:deliverables_exists?).and_return(true)
130
163
  os_plugin.should_not_receive(:run)
131
- os_plugin.should_receive(:deliverables).and_return({ :disk => 'abc'})
164
+ os_plugin.should_receive(:deliverables).and_return({:disk => 'abc'})
132
165
 
133
- @plugin_manager.should_receive(:plugins).and_return( { :os => "something" } )
134
- @plugin_manager.should_receive(:initialize_plugin).once.with(:os, :fedora).and_return([ os_plugin, {:class => Appliance, :type => :os, :name => :fedora, :full_name => "Fedora", :versions => ["11", "12", "13", "rawhide"] } ] )
166
+ @plugin_manager.should_receive(:plugins).and_return({:os => "something"})
167
+ @plugin_manager.should_receive(:initialize_plugin).once.with(:os, :fedora).and_return([os_plugin, {:class => Appliance, :type => :os, :name => :fedora, :full_name => "Fedora", :versions => ["11", "12", "13", "rawhide"]}])
135
168
 
136
169
  @appliance.execute_plugin_chain
137
170
  end
138
171
 
139
172
  it "should build appliance and convert it to VMware format" do
140
- prepare_appliance( OpenStruct.new({ :platform => :vmware }) )
173
+ prepare_appliance(OpenStruct.new({:platform => :vmware}))
141
174
 
142
- @appliance.instance_variable_set(:@appliance_config, generate_appliance_config )
143
- @appliance.should_receive( :execute_os_plugin ).and_return( {} )
175
+ @appliance.instance_variable_set(:@appliance_config, prepare_appliance_config)
176
+ @appliance.should_receive(:execute_os_plugin).and_return({})
144
177
 
145
178
  platform_plugin = mock('VMware Plugin')
146
179
  platform_plugin.should_receive(:init)
147
180
  platform_plugin.should_receive(:deliverables_exists?).and_return(false)
148
181
  platform_plugin.should_receive(:run)
149
- platform_plugin.should_receive(:deliverables).and_return({ :disk => 'abc' })
182
+ platform_plugin.should_receive(:deliverables).and_return({:disk => 'abc'})
150
183
 
151
- @plugin_manager.should_receive(:plugins).and_return( { :platform => "something" } )
152
- @plugin_manager.should_receive(:initialize_plugin).once.with(:platform, :vmware).and_return([ platform_plugin, {:class => Appliance, :type => :platform, :name => :vmware, :full_name => "VMware"} ] )
184
+ @plugin_manager.should_receive(:plugins).and_return({:platform => "something"})
185
+ @plugin_manager.should_receive(:initialize_plugin).once.with(:platform, :vmware).and_return([platform_plugin, {:class => Appliance, :type => :platform, :name => :vmware, :full_name => "VMware"}])
153
186
 
154
187
  @appliance.execute_plugin_chain
155
188
  end
156
189
 
157
190
  it "should build appliance and convert it to VMware format because deliverable already exists" do
158
- prepare_appliance( OpenStruct.new({ :platform => :vmware }) )
191
+ prepare_appliance(OpenStruct.new({:platform => :vmware}))
159
192
 
160
- @appliance.instance_variable_set(:@appliance_config, generate_appliance_config )
161
- @appliance.should_receive( :execute_os_plugin ).and_return( {} )
193
+ @appliance.instance_variable_set(:@appliance_config, prepare_appliance_config)
194
+ @appliance.should_receive(:execute_os_plugin).and_return({})
162
195
 
163
196
  platform_plugin = mock('VMware Plugin')
164
197
  platform_plugin.should_receive(:init)
165
198
  platform_plugin.should_receive(:deliverables_exists?).and_return(true)
166
199
  platform_plugin.should_not_receive(:run)
167
- platform_plugin.should_receive(:deliverables).and_return({ :disk => 'abc' })
200
+ platform_plugin.should_receive(:deliverables).and_return({:disk => 'abc'})
168
201
 
169
- @plugin_manager.should_receive(:plugins).and_return( { :platform => "something" } )
170
- @plugin_manager.should_receive(:initialize_plugin).once.with(:platform, :vmware).and_return([ platform_plugin, {:class => Appliance, :type => :platform, :name => :vmware, :full_name => "VMware"} ] )
202
+ @plugin_manager.should_receive(:plugins).and_return({:platform => "something"})
203
+ @plugin_manager.should_receive(:initialize_plugin).once.with(:platform, :vmware).and_return([platform_plugin, {:class => Appliance, :type => :platform, :name => :vmware, :full_name => "VMware"}])
171
204
 
172
205
  @appliance.execute_plugin_chain
173
206
  end
174
207
 
175
208
  it "should build appliance, convert it to EC2 format and deliver it using S3 ami type" do
176
- prepare_appliance( OpenStruct.new({ :platform => :ec2, :delivery => :ami }) )
209
+ prepare_appliance(OpenStruct.new({:platform => :ec2, :delivery => :ami}))
177
210
 
178
- @appliance.instance_variable_set(:@appliance_config, generate_appliance_config )
179
- @appliance.should_receive( :execute_os_plugin ).and_return( { :abc => 'def'} )
180
- @appliance.should_receive( :execute_platform_plugin ).with( { :abc => 'def'} ).and_return( { :def => 'ghi'} )
211
+ @appliance.instance_variable_set(:@appliance_config, prepare_appliance_config)
212
+ @appliance.should_receive(:execute_os_plugin).and_return({:abc => 'def'})
213
+ @appliance.should_receive(:execute_platform_plugin).with({:abc => 'def'}).and_return({:def => 'ghi'})
181
214
 
182
215
  delivery_plugin = mock('S3 Plugin')
183
216
  delivery_plugin.should_receive(:init)
184
217
  delivery_plugin.should_receive(:run).with(:ami)
185
218
 
186
- @plugin_manager.should_receive(:plugins).and_return( { :delivery => "something" } )
187
- @plugin_manager.should_receive(:initialize_plugin).with(:delivery, :ami).and_return([ delivery_plugin, {:class => Appliance, :type => :delivery, :name => :s3, :full_name => "Amazon Simple Storage Service (Amazon S3)", :types => [:s3, :cloudfront, :ami]} ] )
219
+ @plugin_manager.should_receive(:plugins).and_return({:delivery => "something"})
220
+ @plugin_manager.should_receive(:initialize_plugin).with(:delivery, :ami).and_return([delivery_plugin, {:class => Appliance, :type => :delivery, :name => :s3, :full_name => "Amazon Simple Storage Service (Amazon S3)", :types => [:s3, :cloudfront, :ami]}])
188
221
 
189
222
  @appliance.execute_plugin_chain
190
223
  end
191
224
 
192
225
  it "should build appliance, convert it to EC2 format and deliver it using delivery plugin with only one delivery type" do
193
- prepare_appliance( OpenStruct.new({ :platform => :ec2, :delivery => :same }) )
226
+ prepare_appliance(OpenStruct.new({:platform => :ec2, :delivery => :same}))
194
227
 
195
- @appliance.instance_variable_set(:@appliance_config, generate_appliance_config )
196
- @appliance.should_receive( :execute_os_plugin ).and_return( { :abc => 'def'} )
197
- @appliance.should_receive( :execute_platform_plugin ).with( { :abc => 'def'} ).and_return( { :def => 'ghi'} )
228
+ @appliance.instance_variable_set(:@appliance_config, prepare_appliance_config)
229
+ @appliance.should_receive(:execute_os_plugin).and_return({:abc => 'def'})
230
+ @appliance.should_receive(:execute_platform_plugin).with({:abc => 'def'}).and_return({:def => 'ghi'})
198
231
 
199
232
  delivery_plugin = mock('S3 Plugin')
200
233
  delivery_plugin.should_receive(:init)
201
- delivery_plugin.should_receive(:run).with( :same )
234
+ delivery_plugin.should_receive(:run).with(:same)
202
235
 
203
- @plugin_manager.should_receive(:plugins).and_return( { :delivery => "something" } )
204
- @plugin_manager.should_receive(:initialize_plugin).with(:delivery, :same).and_return([ delivery_plugin, {:class => Appliance, :type => :delivery, :name => :same, :full_name => "A plugin"} ] )
236
+ @plugin_manager.should_receive(:plugins).and_return({:delivery => "something"})
237
+ @plugin_manager.should_receive(:initialize_plugin).with(:delivery, :same).and_return([delivery_plugin, {:class => Appliance, :type => :delivery, :name => :same, :full_name => "A plugin"}])
205
238
 
206
239
  @appliance.execute_plugin_chain
207
240
  end
@@ -17,14 +17,40 @@
17
17
  # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
18
18
 
19
19
  require 'boxgrinder-build/helpers/appliance-customize-helper'
20
- require 'rspec/rspec-config-helper'
21
20
 
22
21
  module BoxGrinder
23
22
  describe ApplianceCustomizeHelper do
24
- include RSpecConfigHelper
25
23
 
26
24
  before(:each) do
27
- @helper = ApplianceCustomizeHelper.new(generate_config, generate_appliance_config, 'a/disk', :log => Logger.new('/dev/null'))
25
+ @config = mock('Config')
26
+ @config.stub!(:name).and_return('BoxGrinder')
27
+ @config.stub!(:version_with_release).and_return('0.1.2')
28
+
29
+ @appliance_config = mock('ApplianceConfig')
30
+
31
+ @appliance_config.stub!(:path).and_return(OpenHash.new({:build => 'build/path'}))
32
+ @appliance_config.stub!(:name).and_return('full')
33
+ @appliance_config.stub!(:summary).and_return('asd')
34
+ @appliance_config.stub!(:version).and_return(1)
35
+ @appliance_config.stub!(:release).and_return(0)
36
+ @appliance_config.stub!(:os).and_return(OpenHash.new({:name => 'fedora', :version => '11'}))
37
+ @appliance_config.stub!(:post).and_return(OpenHash.new({:vmware => []}))
38
+
39
+ @appliance_config.stub!(:hardware).and_return(
40
+ OpenHash.new({
41
+ :partitions =>
42
+ {
43
+ '/' => {'size' => 2},
44
+ '/home' => {'size' => 3},
45
+ },
46
+ :arch => 'i686',
47
+ :base_arch => 'i386',
48
+ :cpus => 1,
49
+ :memory => 256,
50
+ })
51
+ )
52
+
53
+ @helper = ApplianceCustomizeHelper.new(@config, @appliance_config, 'a/disk', :log => Logger.new('/dev/null'))
28
54
 
29
55
  @log = @helper.instance_variable_get(:@log)
30
56
  end
@@ -37,11 +63,11 @@ module BoxGrinder
37
63
  guestfs_helper.should_receive(:guestfs).and_return(guestfs)
38
64
  guestfs_helper.should_receive(:clean_close)
39
65
 
40
- GuestFSHelper.should_receive(:new).with('a/disk', :log => @log ).and_return(guestfs_helper)
66
+ GuestFSHelper.should_receive(:new).with('a/disk', :log => @log).and_return(guestfs_helper)
41
67
 
42
68
  @helper.customize do |gf, gf_helper|
43
- gf_helper.should == guestfs_helper
44
- gf.should == guestfs
69
+ gf_helper.should == guestfs_helper
70
+ gf.should == guestfs
45
71
  end
46
72
  end
47
73
  end
@@ -27,7 +27,7 @@ module BoxGrinder
27
27
  @guestfs = mock('GuestFS')
28
28
  @guestfs_helper = mock('GuestFSHelper')
29
29
 
30
- @helper = AugeasHelper.new( @guestfs, @guestfs_helper, :log => @log)
30
+ @helper = AugeasHelper.new(@guestfs, @guestfs_helper, :log => @log)
31
31
  end
32
32
 
33
33
  it "should not execute augeas commands if there a no files to change" do
@@ -36,6 +36,7 @@ module BoxGrinder
36
36
  end
37
37
 
38
38
  it "should change configuration for one file" do
39
+ @guestfs.should_receive(:debug).with("help", []).and_return("core_pattern")
39
40
  @guestfs.should_receive(:debug).with("core_pattern", ["/sysroot/core"])
40
41
  @guestfs.should_receive(:exists).with('/etc/ssh/sshd_config').and_return(1)
41
42
  @guestfs.should_receive(:aug_init).with('/', 32)
@@ -45,11 +46,12 @@ module BoxGrinder
45
46
  @guestfs.should_receive(:aug_save)
46
47
 
47
48
  @helper.edit do
48
- set( '/etc/ssh/sshd_config', 'UseDNS', 'no')
49
+ set('/etc/ssh/sshd_config', 'UseDNS', 'no')
49
50
  end
50
51
  end
51
52
 
52
53
  it "should change configuration for two files" do
54
+ @guestfs.should_receive(:debug).with("help", []).and_return("core_pattern")
53
55
  @guestfs.should_receive(:debug).with("core_pattern", ["/sysroot/core"])
54
56
  @guestfs.should_receive(:exists).with('/etc/ssh/sshd_config').and_return(1)
55
57
  @guestfs.should_receive(:exists).with('/etc/sysconfig/selinux').and_return(1)
@@ -61,12 +63,13 @@ module BoxGrinder
61
63
  @guestfs.should_receive(:aug_save)
62
64
 
63
65
  @helper.edit do
64
- set( '/etc/ssh/sshd_config', 'UseDNS', 'no')
65
- set( '/etc/sysconfig/selinux', 'SELINUX', 'permissive')
66
+ set('/etc/ssh/sshd_config', 'UseDNS', 'no')
67
+ set('/etc/sysconfig/selinux', 'SELINUX', 'permissive')
66
68
  end
67
69
  end
68
70
 
69
71
  it "should change one configuration for two files because one file doesn't exists" do
72
+ @guestfs.should_receive(:debug).with("help", []).and_return("core_pattern")
70
73
  @guestfs.should_receive(:debug).with("core_pattern", ["/sysroot/core"])
71
74
  @guestfs.should_receive(:exists).with('/etc/ssh/sshd_config').and_return(1)
72
75
  @guestfs.should_receive(:exists).with('/etc/sysconfig/selinux').and_return(0)
@@ -77,8 +80,23 @@ module BoxGrinder
77
80
  @guestfs.should_receive(:aug_save)
78
81
 
79
82
  @helper.edit do
80
- set( '/etc/ssh/sshd_config', 'UseDNS', 'no')
81
- set( '/etc/sysconfig/selinux', 'SELINUX', 'permissive')
83
+ set('/etc/ssh/sshd_config', 'UseDNS', 'no')
84
+ set('/etc/sysconfig/selinux', 'SELINUX', 'permissive')
85
+ end
86
+ end
87
+
88
+ it "should not set core_patter debug method because it's not supported" do
89
+ @guestfs.should_receive(:debug).with("help", []).and_return("something")
90
+ @guestfs.should_not_receive(:debug).with("core_pattern", ["/sysroot/core"])
91
+ @guestfs.should_receive(:exists).with('/etc/ssh/sshd_config').and_return(1)
92
+ @guestfs.should_receive(:aug_init).with('/', 32)
93
+ @guestfs.should_receive(:aug_rm).with("/augeas/load//incl[. != '/etc/ssh/sshd_config']")
94
+ @guestfs.should_receive(:aug_load)
95
+ @guestfs.should_receive(:aug_set).with("/files/etc/ssh/sshd_config/UseDNS", "no")
96
+ @guestfs.should_receive(:aug_save)
97
+
98
+ @helper.edit do
99
+ set('/etc/ssh/sshd_config', 'UseDNS', 'no')
82
100
  end
83
101
  end
84
102
  end
@@ -22,7 +22,26 @@ module BoxGrinder
22
22
  describe ImageHelper do
23
23
 
24
24
  before(:each) do
25
- @helper = ImageHelper.new(:log => Logger.new('/dev/null'))
25
+ @config = mock('Config')
26
+
27
+ @appliance_config = mock('ApplianceConfig')
28
+
29
+ @appliance_config.stub!(:name).and_return('full')
30
+ @appliance_config.stub!(:hardware).and_return(
31
+ OpenHash.new({
32
+ :partitions =>
33
+ {
34
+ '/' => {'size' => 2, 'type' => 'ext4'},
35
+ '/home' => {'size' => 3, 'type' => 'ext3'},
36
+ },
37
+ :arch => 'i686',
38
+ :base_arch => 'i386',
39
+ :cpus => 1,
40
+ :memory => 256,
41
+ })
42
+ )
43
+
44
+ @helper = ImageHelper.new(@config, @appliance_config, :log => Logger.new('/dev/null'))
26
45
 
27
46
  @log = @helper.instance_variable_get(:@log)
28
47
  @exec_helper = @helper.instance_variable_get(:@exec_helper)
@@ -34,8 +53,7 @@ module BoxGrinder
34
53
  @helper.should_receive(:get_loop_device).and_return('/dev/loop0')
35
54
  @exec_helper.should_receive(:execute).with('losetup -o 0 /dev/loop0 disk.raw')
36
55
  @exec_helper.should_receive(:execute).with('e2label /dev/loop0').and_return('/')
37
- @exec_helper.should_receive(:execute).with("df -T /dev/loop0 | tail -1 | awk '{print $2}'").and_return('ext3')
38
- @exec_helper.should_receive(:execute).with('mount /dev/loop0 -t ext3 mount_dir')
56
+ @exec_helper.should_receive(:execute).with('mount /dev/loop0 mount_dir')
39
57
 
40
58
  @helper.mount_image('disk.raw', 'mount_dir').should == {"/"=>"/dev/loop0"}
41
59
  end
@@ -50,11 +68,8 @@ module BoxGrinder
50
68
  @exec_helper.should_receive(:execute).with('losetup -o 562 /dev/loop1 disk.raw')
51
69
  @exec_helper.should_receive(:execute).with('e2label /dev/loop1').and_return('_/')
52
70
 
53
- @exec_helper.should_receive(:execute).with("df -T /dev/loop1 | tail -1 | awk '{print $2}'").and_return('ext3')
54
- @exec_helper.should_receive(:execute).with("df -T /dev/loop0 | tail -1 | awk '{print $2}'").and_return('ext4')
55
-
56
- @exec_helper.should_receive(:execute).with('mount /dev/loop1 -t ext3 mount_dir')
57
- @exec_helper.should_receive(:execute).with('mount /dev/loop0 -t ext4 mount_dir/home')
71
+ @exec_helper.should_receive(:execute).with('mount /dev/loop1 mount_dir')
72
+ @exec_helper.should_receive(:execute).with('mount /dev/loop0 mount_dir/home')
58
73
 
59
74
  @helper.mount_image('disk.raw', 'mount_dir').should == {"/"=>"/dev/loop1", "/home"=>"/dev/loop0"}
60
75
  end
@@ -100,15 +115,29 @@ module BoxGrinder
100
115
  end
101
116
 
102
117
  it "should create default filesystem on selected device" do
103
- @exec_helper.should_receive(:execute).with("mke2fs -T ext3 -L '/' -F /dev/loop0")
118
+ @exec_helper.should_receive(:execute).with("mke2fs -T ext4 -L '/' -F /dev/loop0")
104
119
 
105
120
  @helper.create_filesystem('/dev/loop0')
106
121
  end
107
122
 
108
123
  it "should create ext4 filesystem on selected device" do
109
- @exec_helper.should_receive(:execute).with("mke2fs -T ext4 -L '/' -F /dev/loop0")
124
+ @appliance_config.should_receive(:hardware).and_return(
125
+ OpenHash.new({
126
+ :partitions =>
127
+ {
128
+ '/' => {'size' => 2, 'type' => 'ext3'},
129
+ '/home' => {'size' => 3, 'type' => 'ext3'},
130
+ },
131
+ :arch => 'i686',
132
+ :base_arch => 'i386',
133
+ :cpus => 1,
134
+ :memory => 256,
135
+ })
136
+ )
110
137
 
111
- @helper.create_filesystem('/dev/loop0', :type => 'ext4')
138
+ @exec_helper.should_receive(:execute).with("mke2fs -T ext3 -L '/' -F /dev/loop0")
139
+
140
+ @helper.create_filesystem('/dev/loop0')
112
141
  end
113
142
 
114
143
  it "should create ext4 filesystem on selected device with a label" do
@@ -17,13 +17,10 @@
17
17
  # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
18
18
 
19
19
  require 'boxgrinder-build/helpers/plugin-helper'
20
- require 'rspec/rspec-config-helper'
21
20
  require 'ostruct'
22
21
 
23
22
  module BoxGrinder
24
23
  describe PluginHelper do
25
- include RSpecConfigHelper
26
-
27
24
  before(:all) do
28
25
  @current_arch = (-1.size) == 8 ? "x86_64" : "i386"
29
26
  @plugin_array = %w(boxgrinder-build-fedora-os-plugin boxgrinder-build-rhel-os-plugin boxgrinder-build-centos-os-plugin boxgrinder-build-ec2-platform-plugin boxgrinder-build-vmware-platform-plugin boxgrinder-build-s3-delivery-plugin boxgrinder-build-sftp-delivery-plugin boxgrinder-build-local-delivery-plugin boxgrinder-build-ebs-delivery-plugin)
@@ -16,20 +16,24 @@
16
16
  # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
17
17
  # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
18
18
 
19
+ require 'rubygems'
19
20
  require 'boxgrinder-build/plugins/base-plugin'
20
- require 'rspec/rspec-config-helper'
21
+ require 'yaml'
21
22
 
22
23
  module BoxGrinder
23
24
  describe BasePlugin do
24
- include RSpecConfigHelper
25
+ before(:each) do
26
+ @config = mock('Config')
27
+ @config.stub!(:name).and_return('BoxGrinder')
28
+ @config.stub!(:version_with_release).and_return('0.1.2')
25
29
 
26
- before(:all) do
27
- @arch = `uname -m`.chomp.strip
28
- end
30
+ @appliance_config = mock('ApplianceConfig')
31
+
32
+ @appliance_config.stub!(:path).and_return(OpenHash.new({:build => 'build/path'}))
33
+ @appliance_config.stub!(:os).and_return(OpenHash.new({:name => 'fedora', :version => '11'}))
29
34
 
30
- before(:each) do
31
35
  @plugin = BasePlugin.new
32
- @plugin.init(generate_config, generate_appliance_config, :plugin_info => {:name => :plugin_name}, :log => Logger.new('/dev/null'))
36
+ @plugin.init(@config, @appliance_config, :plugin_info => {:name => :plugin_name}, :log => Logger.new('/dev/null'))
33
37
  end
34
38
 
35
39
  it "should be initialized after running init method" do
@@ -41,7 +45,7 @@ module BoxGrinder
41
45
 
42
46
  deliverables = @plugin.instance_variable_get(:@deliverables)
43
47
 
44
- deliverables.disk.should == "build/appliances/#{@arch}/fedora/11/full/plugin_name-plugin/tmp/name"
48
+ deliverables.disk.should == "build/path/plugin_name-plugin/tmp/name"
45
49
  end
46
50
 
47
51
  it "should register a metadata deliverable" do
@@ -50,7 +54,7 @@ module BoxGrinder
50
54
  deliverables = @plugin.instance_variable_get(:@deliverables)
51
55
 
52
56
  deliverables.size.should == 1
53
- deliverables.a_name.should == "build/appliances/#{@arch}/fedora/11/full/plugin_name-plugin/tmp/a_path"
57
+ deliverables.a_name.should == "build/path/plugin_name-plugin/tmp/a_path"
54
58
  end
55
59
 
56
60
  it "should register multiple other deliverables" do
@@ -59,12 +63,12 @@ module BoxGrinder
59
63
  deliverables = @plugin.instance_variable_get(:@deliverables)
60
64
 
61
65
  deliverables.size.should == 2
62
- deliverables.a_name.should == "build/appliances/#{@arch}/fedora/11/full/plugin_name-plugin/tmp/a_path"
63
- deliverables.a_second_name.should == "build/appliances/#{@arch}/fedora/11/full/plugin_name-plugin/tmp/a_path_too"
66
+ deliverables.a_name.should == "build/path/plugin_name-plugin/tmp/a_path"
67
+ deliverables.a_second_name.should == "build/path/plugin_name-plugin/tmp/a_path_too"
64
68
  end
65
69
 
66
70
  it "should have a valid path to tmp directory" do
67
- @plugin.instance_variable_get(:@dir).tmp.should == "build/appliances/#{@arch}/fedora/11/full/plugin_name-plugin/tmp"
71
+ @plugin.instance_variable_get(:@dir).tmp.should == "build/path/plugin_name-plugin/tmp"
68
72
  end
69
73
 
70
74
  it "should check if deliverables exists and return true" do
@@ -92,13 +96,13 @@ module BoxGrinder
92
96
  it "should run the plugin" do
93
97
  @plugin.register_deliverable(:disk => "disk")
94
98
 
95
- FileUtils.should_receive(:rm_rf).with("build/appliances/#{@arch}/fedora/11/full/plugin_name-plugin/tmp")
96
- FileUtils.should_receive(:mkdir_p).with("build/appliances/#{@arch}/fedora/11/full/plugin_name-plugin/tmp")
99
+ FileUtils.should_receive(:rm_rf).with("build/path/plugin_name-plugin/tmp")
100
+ FileUtils.should_receive(:mkdir_p).with("build/path/plugin_name-plugin/tmp")
97
101
 
98
102
  @plugin.should_receive(:execute).with('a', 3)
99
103
 
100
- FileUtils.should_receive(:mv).with("build/appliances/#{@arch}/fedora/11/full/plugin_name-plugin/tmp/disk", "build/appliances/#{@arch}/fedora/11/full/plugin_name-plugin/disk")
101
- FileUtils.should_receive(:rm_rf).with("build/appliances/#{@arch}/fedora/11/full/plugin_name-plugin/tmp")
104
+ FileUtils.should_receive(:mv).with("build/path/plugin_name-plugin/tmp/disk", "build/path/plugin_name-plugin/disk")
105
+ FileUtils.should_receive(:rm_rf).with("build/path/plugin_name-plugin/tmp")
102
106
 
103
107
  @plugin.run('a', 3)
104
108
  end
@@ -135,7 +139,7 @@ module BoxGrinder
135
139
  @plugin.register_supported_os('fedora', ['12', '13'])
136
140
  @plugin.register_supported_os('centos', ['5'])
137
141
 
138
- @plugin.supported_oses.should == "fedora (versions: 12, 13), centos (versions: 5)"
142
+ @plugin.supported_oses.should == "centos (versions: 5), fedora (versions: 12, 13)"
139
143
  end
140
144
 
141
145
  it "should set default config value" do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: boxgrinder-build
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
4
+ hash: 1
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 6
9
- - 2
10
- version: 0.6.2
9
+ - 3
10
+ version: 0.6.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Marek Goldmann
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-11-04 00:00:00 +01:00
18
+ date: 2010-11-11 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -42,12 +42,12 @@ dependencies:
42
42
  requirements:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
- hash: 25
45
+ hash: 31
46
46
  segments:
47
47
  - 0
48
48
  - 1
49
- - 1
50
- version: 0.1.1
49
+ - 2
50
+ version: 0.1.2
51
51
  type: :runtime
52
52
  version_requirements: *id002
53
53
  description: A tool for creating appliances from simple plain text files for various virtual environments.
@@ -78,6 +78,7 @@ files:
78
78
  - README
79
79
  - Rakefile
80
80
  - bin/boxgrinder-build
81
+ - boxgrinder-build.gemspec
81
82
  - lib/boxgrinder-build/appliance.rb
82
83
  - lib/boxgrinder-build/helpers/appliance-customize-helper.rb
83
84
  - lib/boxgrinder-build/helpers/augeas-helper.rb
@@ -101,7 +102,6 @@ files:
101
102
  - spec/managers/plugin-manager-spec.rb
102
103
  - spec/plugins/base-plugin-spec.rb
103
104
  - spec/rspec/src/appliances/jeos-f13.appl
104
- - boxgrinder-build.gemspec
105
105
  has_rdoc: true
106
106
  homepage: http://www.jboss.org/boxgrinder
107
107
  licenses: []