boxgrinder-build 0.8.0 → 0.8.1

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,3 +1,9 @@
1
+ v0.8.1
2
+
3
+ * [BGBUILD-141] Long delay after "Preparing guestfs" message when creating new image
4
+ * [BGBUILD-150] Cyclical inclusion dependencies in appliance definition files are not detected/handled
5
+ * [BGBUILD-165] Use version in dependencies in gem and in RPM only where necessary
6
+
1
7
  v0.8.0
2
8
 
3
9
  * [BGBUILD-138] enablerepo path is not escaped when calling repoquery
data/Manifest CHANGED
@@ -1,31 +0,0 @@
1
- CHANGELOG
2
- LICENSE
3
- Manifest
4
- README
5
- Rakefile
6
- bin/boxgrinder
7
- boxgrinder-build.gemspec
8
- lib/boxgrinder-build.rb
9
- lib/boxgrinder-build/appliance.rb
10
- lib/boxgrinder-build/helpers/appliance-customize-helper.rb
11
- lib/boxgrinder-build/helpers/augeas-helper.rb
12
- lib/boxgrinder-build/helpers/guestfs-helper.rb
13
- lib/boxgrinder-build/helpers/image-helper.rb
14
- lib/boxgrinder-build/helpers/linux-helper.rb
15
- lib/boxgrinder-build/helpers/package-helper.rb
16
- lib/boxgrinder-build/helpers/plugin-helper.rb
17
- lib/boxgrinder-build/helpers/thor-helper.rb
18
- lib/boxgrinder-build/managers/plugin-manager.rb
19
- lib/boxgrinder-build/plugins/base-plugin.rb
20
- rubygem-boxgrinder-build.spec
21
- spec/Rakefile
22
- spec/appliance-spec.rb
23
- spec/helpers/appliance-customize-helper-spec.rb
24
- spec/helpers/augeas-helper-spec.rb
25
- spec/helpers/guestfs-helper-spec.rb
26
- spec/helpers/image-helper-spec.rb
27
- spec/helpers/linux-helper-spec.rb
28
- spec/helpers/package-helper-spec.rb
29
- spec/helpers/plugin-helper-spec.rb
30
- spec/managers/plugin-manager-spec.rb
31
- spec/plugins/base-plugin-spec.rb
data/README CHANGED
@@ -1,7 +1,7 @@
1
1
  Project home page
2
2
 
3
- http://www.jboss.org/boxgrinder
3
+ http://boxgrinder.org/
4
4
 
5
5
  Project documentation
6
6
 
7
- http://community.jboss.org/docs/DOC-14358
7
+ http://boxgrinder.org/tutorials/
data/Rakefile CHANGED
@@ -26,7 +26,7 @@ Echoe.new("boxgrinder-build") do |p|
26
26
  p.summary = "A tool for creating appliances from simple plain text files for various virtual environments."
27
27
  p.url = "http://www.jboss.org/boxgrinder"
28
28
  p.email = "info@boxgrinder.org"
29
- p.runtime_dependencies = ["thor >=0.13", "boxgrinder-core ~>0.2.0"]
29
+ p.runtime_dependencies = ["thor >=0.13", "boxgrinder-core ~>0.2.1"]
30
30
  end
31
31
 
32
32
  desc "Run all tests"
data/bin/boxgrinder CHANGED
@@ -25,7 +25,7 @@ require 'boxgrinder-build/helpers/thor-helper'
25
25
  #$stderr.reopen($stdout)
26
26
 
27
27
  if Process.uid != 0
28
- puts "This program must be executed with root privileges. Try 'sudo boxgrinder-build'"
28
+ puts "This program must be executed with root privileges. Try 'sudo boxgrinder'"
29
29
  abort
30
30
  end
31
31
 
@@ -41,10 +41,13 @@ module BoxGrinder
41
41
  method_option :force, :type => :boolean, :default => false, :aliases => '-f', :desc => "Force image creation - removes all previous builds for selected appliance. Default: false."
42
42
  method_option :debug, :type => :boolean, :default => false, :desc => "Prints debug information while building. Default: false."
43
43
  method_option :trace, :type => :boolean, :default => false, :desc => "Prints trace information while building. Default: false."
44
+ method_option :backtrace, :type => :boolean, :default => false, :aliases => '-b', :desc => "Prints full backtrace if errors occur whilst building. Default: true if -debug or -trace, else false."
44
45
 
45
46
  def build(appliance_definition_file)
46
47
  log_level = :debug if options.debug?
47
48
  log_level = :trace if options.trace?
49
+ #TODO want to be able to compare log levels like Logger::LVL_X<=>Logger::LVL_Y (as with inbuilt logger CONST values)
50
+ backtrace = options.backtrace || !log_level.nil?
48
51
 
49
52
  config = Config.new(options.merge(:platform => options.platform.to_sym, :delivery => options.delivery.to_sym))
50
53
  config.merge!(:log_level => log_level) unless log_level.nil?
@@ -59,7 +62,12 @@ module BoxGrinder
59
62
  begin
60
63
  Appliance.new(appliance_definition_file, config, :log => log).create
61
64
  rescue Exception => e
62
- log.fatal e
65
+ if backtrace
66
+ log.fatal e
67
+ else #demote backtrace to debug so that it is in file log only
68
+ log.fatal e.message
69
+ log.debug e.backtrace.join($/)
70
+ end
63
71
  end
64
72
  end
65
73
 
@@ -117,5 +125,4 @@ begin
117
125
  BoxGrinder::App.start
118
126
  rescue Thor::Error => e
119
127
  puts e.message
120
- end
121
-
128
+ end
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{boxgrinder-build}
5
- s.version = "0.8.0"
5
+ s.version = "0.8.1"
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{2011-02-09}
9
+ s.date = %q{2011-02-22}
10
10
  s.default_executable = %q{boxgrinder}
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}
@@ -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<thor>, [">= 0.13"])
29
- s.add_runtime_dependency(%q<boxgrinder-core>, ["~> 0.2.0"])
29
+ s.add_runtime_dependency(%q<boxgrinder-core>, ["~> 0.2.1"])
30
30
  else
31
31
  s.add_dependency(%q<thor>, [">= 0.13"])
32
- s.add_dependency(%q<boxgrinder-core>, ["~> 0.2.0"])
32
+ s.add_dependency(%q<boxgrinder-core>, ["~> 0.2.1"])
33
33
  end
34
34
  else
35
35
  s.add_dependency(%q<thor>, [">= 0.13"])
36
- s.add_dependency(%q<boxgrinder-core>, ["~> 0.2.0"])
36
+ s.add_dependency(%q<boxgrinder-core>, ["~> 0.2.1"])
37
37
  end
38
38
  end
@@ -21,7 +21,7 @@ require 'hashery/opencascade'
21
21
  require 'boxgrinder-core/helpers/log-helper'
22
22
  require 'boxgrinder-core/models/appliance-config'
23
23
  require 'boxgrinder-core/models/config'
24
- require 'boxgrinder-core/helpers/appliance-helper'
24
+ require 'boxgrinder-core/helpers/appliance-definition-helper'
25
25
  require 'boxgrinder-core/helpers/appliance-config-helper'
26
26
  require 'boxgrinder-build/helpers/plugin-helper'
27
27
  require 'boxgrinder-build/managers/plugin-manager'
@@ -38,7 +38,11 @@ module BoxGrinder
38
38
  def read_definition
39
39
  begin
40
40
  # first try to read as appliance definition file
41
- appliance_configs, appliance_config = ApplianceHelper.new(:log => @log).read_definitions(@appliance_definition)
41
+ appliance_helper = ApplianceDefinitionHelper.new(:log => @log)
42
+ appliance_helper.read_definitions(@appliance_definition)
43
+
44
+ appliance_configs = appliance_helper.appliance_configs
45
+ appliance_config = appliance_configs.first
42
46
  rescue
43
47
  # then try to read OS plugin specific format
44
48
  PluginManager.instance.plugins[:os].each_value do |info|
@@ -19,9 +19,8 @@
19
19
  require 'boxgrinder-build/helpers/augeas-helper'
20
20
  require 'boxgrinder-core/helpers/log-helper'
21
21
  require 'guestfs'
22
- require 'open-uri'
23
- require 'timeout'
24
22
  require 'rbconfig'
23
+ require 'resolv'
25
24
 
26
25
  module BoxGrinder
27
26
  class SilencerProxy
@@ -94,10 +93,8 @@ module BoxGrinder
94
93
  @log.trace "Checking if HW virtualization is available..."
95
94
 
96
95
  begin
97
- Timeout::timeout(2) { open('http://169.254.169.254/1.0/meta-data/local-ipv4') }
98
-
99
- ec2 = true
100
- rescue Exception
96
+ ec2 = Resolv.getname("169.254.169.254").include?(".ec2.internal")
97
+ rescue Resolv::ResolvError
101
98
  ec2 = false
102
99
  end
103
100
 
@@ -73,8 +73,11 @@ module BoxGrinder
73
73
  shell.say "BoxGrinder Build:"
74
74
  shell.say " A tool for building VM images from simple definition files."
75
75
  shell.say
76
+ shell.say "Homepage:"
77
+ shell.say " http://boxgrinder.org/"
78
+ shell.say
76
79
  shell.say "Documentation:"
77
- shell.say " http://community.jboss.org/docs/DOC-14358"
80
+ shell.say " http://boxgrinder.org/tutorials/"
78
81
  shell.say
79
82
  end
80
83
  end
@@ -171,9 +171,6 @@ module BoxGrinder
171
171
  # This reads the plugin config from file
172
172
  def read_plugin_config
173
173
  return if @config[:plugins].nil? or @config[:plugins][@plugin_info[:name].to_s].nil?
174
-
175
- @log.debug "Reading configuration for #{@plugin_info[:full_name]} plugin."
176
-
177
174
  @plugin_config = @config[:plugins][@plugin_info[:name].to_s]
178
175
  end
179
176
 
@@ -5,24 +5,26 @@
5
5
 
6
6
  Summary: A tool for creating appliances from simple plain text files
7
7
  Name: rubygem-%{gemname}
8
- Version: 0.8.0
8
+ Version: 0.8.1
9
9
  Release: 1%{?dist}
10
10
  Group: Development/Languages
11
11
  License: LGPLv3+
12
- URL: http://www.jboss.org/boxgrinder
12
+ URL: http://boxgrinder.org/
13
13
  Source0: http://rubygems.org/gems/%{gemname}-%{version}.gem
14
14
  BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
15
15
 
16
16
  Requires: ruby(abi) = %{rubyabi}
17
17
  Requires: rubygem(thor)
18
- Requires: rubygem(boxgrinder-core) >= 0.2.0
18
+ Requires: rubygem(boxgrinder-core) >= 0.2.1
19
+ Requires: rubygem(boxgrinder-core) < 0.3.0
19
20
  Requires: ruby-libguestfs
20
21
  Requires: parted
21
22
  Requires: e2fsprogs
22
23
 
23
24
  BuildRequires: rubygem(rake)
24
25
  BuildRequires: rubygem(rspec)
25
- BuildRequires: rubygem(boxgrinder-core) >= 0.2.0
26
+ BuildRequires: rubygem(boxgrinder-core) >= 0.2.1
27
+ BuildRequires: rubygem(boxgrinder-core) < 0.3.0
26
28
  BuildRequires: rubygem(echoe)
27
29
  BuildRequires: ruby-libguestfs
28
30
 
@@ -86,6 +88,12 @@ popd
86
88
  %{gemdir}/doc/%{gemname}-%{version}
87
89
 
88
90
  %changelog
91
+ * Tue Feb 16 2011 <mgoldman@redhat.com> - 0.8.1-1
92
+ - Upstream release: 0.8.1
93
+ - [BGBUILD-141] Long delay after "Preparing guestfs" message when creating new image
94
+ - [BGBUILD-150] Cyclical inclusion dependencies in appliance definition files are not detected/handled
95
+ - [BGBUILD-165] Use version in dependencies in gem and in RPM only where necessary
96
+
89
97
  * Tue Jan 04 2011 <mgoldman@redhat.com> - 0.8.0-1
90
98
  - Upstream release: 0.8.0
91
99
  - Added BuildRoot tag to build for EPEL 5
@@ -120,10 +120,11 @@ module BoxGrinder
120
120
 
121
121
  appliance_config = ApplianceConfig.new
122
122
 
123
- appliance_helper = mock(ApplianceHelper)
124
- appliance_helper.should_receive(:read_definitions).with("#{File.dirname(__FILE__)}/rspec/src/appliances/jeos-f13.appl").and_return([{}, appliance_config])
123
+ appliance_helper = mock(ApplianceDefinitionHelper)
124
+ appliance_helper.should_receive(:read_definitions).with("#{File.dirname(__FILE__)}/rspec/src/appliances/jeos-f13.appl")
125
+ appliance_helper.should_receive(:appliance_configs).and_return([appliance_config])
125
126
 
126
- ApplianceHelper.should_receive(:new).with(:log => @log).and_return(appliance_helper)
127
+ ApplianceDefinitionHelper.should_receive(:new).with(:log => @log).and_return(appliance_helper)
127
128
 
128
129
  appliance_config_helper = mock(ApplianceConfigHelper)
129
130
 
@@ -133,7 +134,7 @@ module BoxGrinder
133
134
 
134
135
  appliance_config_helper.should_receive(:merge).with(appliance_config).and_return(appliance_config)
135
136
 
136
- ApplianceConfigHelper.should_receive(:new).with({}).and_return(appliance_config_helper)
137
+ ApplianceConfigHelper.should_receive(:new).with([appliance_config]).and_return(appliance_config_helper)
137
138
 
138
139
  @appliance.read_definition
139
140
  end
@@ -143,7 +144,7 @@ module BoxGrinder
143
144
 
144
145
  appliance_config = ApplianceConfig.new
145
146
 
146
- appliance_helper = mock(ApplianceHelper)
147
+ appliance_helper = mock(ApplianceDefinitionHelper)
147
148
  appliance_helper.should_receive(:read_definitions).with("#{File.dirname(__FILE__)}/rspec/src/appliances/jeos-f13.ks").and_raise("Unknown format")
148
149
 
149
150
  clazz = mock('PluginClass')
@@ -159,7 +160,7 @@ module BoxGrinder
159
160
 
160
161
  PluginManager.should_receive(:instance).and_return(plugin_manager)
161
162
 
162
- ApplianceHelper.should_receive(:new).with(:log => @log).and_return(appliance_helper)
163
+ ApplianceDefinitionHelper.should_receive(:new).with(:log => @log).and_return(appliance_helper)
163
164
 
164
165
  appliance_config_helper = mock(ApplianceConfigHelper)
165
166
 
@@ -177,7 +178,7 @@ module BoxGrinder
177
178
  it "should read definition with kickstart appliance definition file and fail because there was no plugin able to read .ks" do
178
179
  prepare_appliance({}, "#{File.dirname(__FILE__)}/rspec/src/appliances/jeos-f13.ks")
179
180
 
180
- appliance_helper = mock(ApplianceHelper)
181
+ appliance_helper = mock(ApplianceDefinitionHelper)
181
182
  appliance_helper.should_receive(:read_definitions).with("#{File.dirname(__FILE__)}/rspec/src/appliances/jeos-f13.ks").and_raise("Unknown format")
182
183
 
183
184
  plugin_manager = mock(PluginManager)
@@ -186,7 +187,7 @@ module BoxGrinder
186
187
 
187
188
  PluginManager.should_receive(:instance).and_return(plugin_manager)
188
189
 
189
- ApplianceHelper.should_receive(:new).with(:log => @log).and_return(appliance_helper)
190
+ ApplianceDefinitionHelper.should_receive(:new).with(:log => @log).and_return(appliance_helper)
190
191
 
191
192
  lambda {
192
193
  @appliance.read_definition
@@ -265,25 +265,19 @@ module BoxGrinder
265
265
 
266
266
  describe ".hw_virtualization_available?" do
267
267
  it "should return true if HW acceleration is available" do
268
- @helper.should_receive(:open).with('http://169.254.169.254/1.0/meta-data/local-ipv4').and_raise("blah")
268
+ Resolv.should_receive(:getname).with("169.254.169.254").and_return("blah")
269
269
  @helper.should_receive(:`).with('cat /proc/cpuinfo | grep flags | grep vmx | wc -l').and_return("2")
270
270
  @helper.hw_virtualization_available?.should == true
271
271
  end
272
272
 
273
273
  it "should return false if no vmx flag is present" do
274
- @helper.should_receive(:open).with('http://169.254.169.254/1.0/meta-data/local-ipv4').and_raise("blah")
274
+ Resolv.should_receive(:getname).with("169.254.169.254").and_return("blah")
275
275
  @helper.should_receive(:`).with('cat /proc/cpuinfo | grep flags | grep vmx | wc -l').and_return("0")
276
276
  @helper.hw_virtualization_available?.should == false
277
277
  end
278
278
 
279
279
  it "should return false if we're on EC2" do
280
- @helper.should_receive(:open).with('http://169.254.169.254/1.0/meta-data/local-ipv4').and_return("IP")
281
- @helper.hw_virtualization_available?.should == false
282
- end
283
-
284
- it "should return false if timeout exception is thrown" do
285
- @helper.should_receive(:open).with('http://169.254.169.254/1.0/meta-data/local-ipv4').and_raise(Timeout::Error.new('something'))
286
- @helper.should_receive(:`).with('cat /proc/cpuinfo | grep flags | grep vmx | wc -l').and_return("0")
280
+ Resolv.should_receive(:getname).with("169.254.169.254").and_return("instance-data.ec2.internal")
287
281
  @helper.hw_virtualization_available?.should == false
288
282
  end
289
283
  end
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: 63
4
+ hash: 61
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 8
9
- - 0
10
- version: 0.8.0
9
+ - 1
10
+ version: 0.8.1
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: 2011-02-09 00:00:00 +01:00
18
+ date: 2011-02-22 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -41,12 +41,12 @@ dependencies:
41
41
  requirements:
42
42
  - - ~>
43
43
  - !ruby/object:Gem::Version
44
- hash: 23
44
+ hash: 21
45
45
  segments:
46
46
  - 0
47
47
  - 2
48
- - 0
49
- version: 0.2.0
48
+ - 1
49
+ version: 0.2.1
50
50
  type: :runtime
51
51
  version_requirements: *id002
52
52
  description: A tool for creating appliances from simple plain text files for various virtual environments.