boxgrinder-core 0.2.1 → 0.3.0

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,8 @@
1
+ v0.3.0
2
+
3
+ * [BGBUILD-178] Remove sensitive data from logs
4
+ * [BGBUILD-168] Support deprecated package inclusion format in appliance definitions
5
+
1
6
  v0.2.1
2
7
 
3
8
  * [BGBUILD-142] Backtraces make output unreadable - add option to enable them, and disable by default
@@ -2,15 +2,15 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{boxgrinder-core}
5
- s.version = "0.2.1"
5
+ s.version = "0.3.0"
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-22}
9
+ s.date = %q{2011-03-09}
10
10
  s.description = %q{Core library for BoxGrinder}
11
11
  s.email = %q{info@boxgrinder.org}
12
12
  s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README", "lib/boxgrinder-core.rb", "lib/boxgrinder-core/helpers/appliance-config-helper.rb", "lib/boxgrinder-core/helpers/appliance-definition-helper.rb", "lib/boxgrinder-core/helpers/exec-helper.rb", "lib/boxgrinder-core/helpers/log-helper.rb", "lib/boxgrinder-core/models/appliance-config.rb", "lib/boxgrinder-core/models/config.rb", "lib/boxgrinder-core/models/task.rb", "lib/boxgrinder-core/validators/appliance-config-validator.rb", "lib/boxgrinder-core/validators/errors.rb"]
13
- s.files = ["CHANGELOG", "LICENSE", "Manifest", "README", "Rakefile", "boxgrinder-core.gemspec", "lib/boxgrinder-core.rb", "lib/boxgrinder-core/helpers/appliance-config-helper.rb", "lib/boxgrinder-core/helpers/appliance-definition-helper.rb", "lib/boxgrinder-core/helpers/exec-helper.rb", "lib/boxgrinder-core/helpers/log-helper.rb", "lib/boxgrinder-core/models/appliance-config.rb", "lib/boxgrinder-core/models/config.rb", "lib/boxgrinder-core/models/task.rb", "lib/boxgrinder-core/validators/appliance-config-validator.rb", "lib/boxgrinder-core/validators/errors.rb", "rubygem-boxgrinder-core.spec", "spec/helpers/appliance-config-helper-spec.rb", "spec/helpers/appliance-definition-helper-spec.rb", "spec/helpers/exec-helper-spec.rb", "spec/helpers/log-helper-spec.rb", "spec/models/config-spec.rb", "spec/rspec/ls/one", "spec/rspec/ls/two", "spec/rspec/src/appliances/ephemeral-repo.appl", "spec/rspec/src/appliances/full.appl", "spec/rspec/src/appliances/invalid_yaml.appl", "spec/rspec/src/appliances/repo.appl", "spec/rspec/src/config/empty", "spec/rspec/src/config/valid", "spec/validators/appliance-config-validator-spec.rb"]
13
+ s.files = ["CHANGELOG", "LICENSE", "Manifest", "README", "Rakefile", "boxgrinder-core.gemspec", "lib/boxgrinder-core.rb", "lib/boxgrinder-core/helpers/appliance-config-helper.rb", "lib/boxgrinder-core/helpers/appliance-definition-helper.rb", "lib/boxgrinder-core/helpers/exec-helper.rb", "lib/boxgrinder-core/helpers/log-helper.rb", "lib/boxgrinder-core/models/appliance-config.rb", "lib/boxgrinder-core/models/config.rb", "lib/boxgrinder-core/models/task.rb", "lib/boxgrinder-core/validators/appliance-config-validator.rb", "lib/boxgrinder-core/validators/errors.rb", "rubygem-boxgrinder-core.spec", "spec/helpers/appliance-config-helper-spec.rb", "spec/helpers/appliance-definition-helper-spec.rb", "spec/helpers/exec-helper-spec.rb", "spec/helpers/log-helper-spec.rb", "spec/models/config-spec.rb", "spec/rspec/ls/one", "spec/rspec/ls/two", "spec/rspec/src/appliances/ephemeral-repo.appl", "spec/rspec/src/appliances/full.appl", "spec/rspec/src/appliances/invalid-yaml.appl", "spec/rspec/src/appliances/legacy.appl", "spec/rspec/src/appliances/repo.appl", "spec/rspec/src/config/empty", "spec/rspec/src/config/valid", "spec/validators/appliance-config-validator-spec.rb"]
14
14
  s.homepage = %q{http://www.jboss.org/boxgrinder}
15
15
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Boxgrinder-core", "--main", "README"]
16
16
  s.require_paths = ["lib"]
@@ -105,9 +105,24 @@ module BoxGrinder
105
105
 
106
106
  definition['variables'].each { |key, value| appliance_config.variables[key] = value } unless definition['variables'].nil?
107
107
 
108
- raise "packages section should be an Array" if !definition['packages'].nil? and !definition['packages'].is_a?(Array)
108
+ @log.debug "Adding packages to appliance..."
109
+
110
+ unless definition['packages'].nil?
111
+ if definition['packages'].is_a?(Array)
112
+ # new format
113
+ appliance_config.packages = definition['packages']
114
+ elsif definition['packages'].is_a?(Hash)
115
+ # legacy format
116
+ @log.warn "BoxGrinder Build packages section format has been changed. Support for legacy format will be removed in the future. See http://boxgrinder.org/tutorials/appliance-definition/ for more information about current format."
117
+ appliance_config.packages = definition['packages']['includes'] if definition['packages']['includes'].is_a?(Array)
118
+ @log.warn "BoxGrinder Build no longer supports package exclusion, the following packages will not be explicitly excluded: #{definition['packages']['excludes'].join(", ")}." if definition['packages']['excludes'].is_a?(Array)
119
+ else
120
+ @log.warn "Unsupported format for packages section."
121
+ end
122
+ end
123
+
124
+ @log.debug "#{appliance_config.packages.size} package(s) added to appliance."
109
125
 
110
- appliance_config.packages = definition['packages'] if definition['packages'].is_a?(Array)
111
126
  appliance_config.appliances = definition['appliances'] unless definition['appliances'].nil?
112
127
  appliance_config.repos = definition['repos'] unless definition['repos'].nil?
113
128
 
@@ -26,8 +26,13 @@ module BoxGrinder
26
26
  @log = options[:log] || Logger.new(STDOUT)
27
27
  end
28
28
 
29
- def execute( command )
30
- @log.debug "Executing command: '#{command}'"
29
+ def execute( command, options = {} )
30
+ redacted = options[:redacted] || []
31
+
32
+ redacted_command = command
33
+ redacted.each { |word| redacted_command = redacted_command.gsub(word, '<REDACTED>') }
34
+
35
+ @log.debug "Executing command: '#{redacted_command}'"
31
36
 
32
37
  output = ""
33
38
 
@@ -66,8 +71,7 @@ module BoxGrinder
66
71
  return output.strip
67
72
  rescue => e
68
73
  @log.error e.backtrace.join($/)
69
- @log.error "An error occurred while executing command: '#{command}', #{e.message}"
70
- raise "An error occurred while executing command: '#{command}', #{e.message}"
74
+ raise "An error occurred while executing command: '#{redacted_command}', #{e.message}"
71
75
  end
72
76
  end
73
77
  end
@@ -67,7 +67,7 @@ module BoxGrinder
67
67
  FileUtils.mkdir_p(File.dirname(location))
68
68
 
69
69
  @file_log = Logger.new(location, 10, 1024000)
70
- @file_log.level = threshold == Logger::TRACE ? Logger::TRACE : Logger::DEBUG
70
+ @file_log.level = Logger::TRACE
71
71
  @file_log.formatter = formatter
72
72
  end
73
73
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  Summary: Core library for BoxGrinder
7
7
  Name: rubygem-%{gemname}
8
- Version: 0.2.1
8
+ Version: 0.3.0
9
9
  Release: 1%{?dist}
10
10
  Group: Development/Languages
11
11
  License: LGPLv3+
@@ -74,6 +74,11 @@ popd
74
74
  %{gemdir}/doc/%{gemname}-%{version}
75
75
 
76
76
  %changelog
77
+ * Sat Mar 05 2011 <mgoldman@redhat.com> - 0.3.0-1
78
+ - Upstream release: 0.3.0
79
+ - [BGBUILD-178] Remove sensitive data from logs
80
+ - [BGBUILD-168] Support deprecated package inclusion format in appliance definitions
81
+
77
82
  * Tue Feb 16 2011 <mgoldman@redhat.com> - 0.2.1-1
78
83
  - Upstream release: 0.2.1
79
84
  - [BGBUILD-142] Backtraces make output unreadable - add option to enable them, and disable by default
@@ -22,7 +22,7 @@ module BoxGrinder
22
22
  describe ApplianceDefinitionHelper do
23
23
 
24
24
  before(:each) do
25
- @helper = ApplianceDefinitionHelper.new(:log => Logger.new('/dev/null'))
25
+ @helper = ApplianceDefinitionHelper.new(:log => LogHelper.new(:level => :trace, :type => :stdout))
26
26
  end
27
27
 
28
28
  describe ".read_definitions" do
@@ -166,7 +166,7 @@ module BoxGrinder
166
166
  configs.first.should == appliance_a
167
167
  end
168
168
 
169
- it "should read a YAML content instead of a loading a file" do
169
+ it "should read YAML content instead of loading a file" do
170
170
  yaml = "name: abc\nos:\n name: fedora\n version: 13\npackages:\n - @core\nhardware:\n partitions:\n \"/\":\n size: 6"
171
171
  appliance = @helper.read_definitions(yaml).last
172
172
 
@@ -184,7 +184,7 @@ module BoxGrinder
184
184
  end
185
185
 
186
186
  it "should catch exception if YAML file parsing raises it" do
187
- lambda { @helper.read_definitions("#{File.dirname(__FILE__)}/../rspec/src/appliances/invalid_yaml.appl") }.should raise_error(RuntimeError, /File '(.*)' could not be read./)
187
+ lambda { @helper.read_definitions("#{File.dirname(__FILE__)}/../rspec/src/appliances/invalid-yaml.appl") }.should raise_error(RuntimeError, /File '(.*)' could not be read./)
188
188
  end
189
189
 
190
190
  it "should raise because xml files aren't supported yet" do
@@ -263,6 +263,12 @@ module BoxGrinder
263
263
  appliance_config.hardware.partitions['/'].should == {'size' => 1}
264
264
  appliance_config.hardware.partitions['/home'].should == {'size' => 1}
265
265
  end
266
+
267
+ it "should allow legacy package inclusion style" do
268
+ appliance = @helper.read_yaml_file("#{File.dirname(__FILE__)}/../rspec/src/appliances/legacy.appl")
269
+ appliance.packages.should == ['squid','boxgrinder-rest']
270
+ end
271
+
266
272
  end
267
273
  end
268
274
  end
@@ -21,11 +21,11 @@ require 'boxgrinder-core/helpers/exec-helper'
21
21
  module BoxGrinder
22
22
  describe ExecHelper do
23
23
  before(:each) do
24
- @helper = ExecHelper.new( :log => Logger.new('/dev/null') )
24
+ @helper = ExecHelper.new(:log => Logger.new('/dev/null'))
25
25
  end
26
26
 
27
27
  it "should fail when command doesn't exists" do
28
- Open4.should_receive( :popen4 ).with('thisdoesntexists').and_raise('abc')
28
+ Open4.should_receive(:popen4).with('thisdoesntexists').and_raise('abc')
29
29
 
30
30
  proc { @helper.execute("thisdoesntexists") }.should raise_error("An error occurred while executing command: 'thisdoesntexists', abc")
31
31
  end
@@ -34,7 +34,7 @@ module BoxGrinder
34
34
  open4 = mock(Open4)
35
35
  open4.stub!(:exitstatus).and_return(1)
36
36
 
37
- Open4.should_receive( :popen4 ).with('abc').and_return(open4)
37
+ Open4.should_receive(:popen4).with('abc').and_return(open4)
38
38
 
39
39
  proc { @helper.execute("abc") }.should raise_error("An error occurred while executing command: 'abc', process exited with wrong exit status: 1")
40
40
  end
@@ -43,17 +43,27 @@ module BoxGrinder
43
43
  open4 = mock(Open4)
44
44
  open4.stub!(:exitstatus).and_return(0)
45
45
 
46
- Open4.should_receive( :popen4 ).with('abc').and_return(open4)
46
+ Open4.should_receive(:popen4).with('abc').and_return(open4)
47
47
 
48
48
  proc { @helper.execute("abc") }.should_not raise_error
49
49
  end
50
50
 
51
51
  it "should execute the command and return output" do
52
- @helper.execute("ls #{File.dirname( __FILE__ )}/../rspec/ls | wc -l").should == "2"
52
+ @helper.execute("ls #{File.dirname(__FILE__)}/../rspec/ls | wc -l").should == "2"
53
53
  end
54
54
 
55
55
  it "should execute the command and return multi line output" do
56
- @helper.execute("ls -1 #{File.dirname( __FILE__ )}/../rspec/ls").should == "one\ntwo"
56
+ @helper.execute("ls -1 #{File.dirname(__FILE__)}/../rspec/ls").should == "one\ntwo"
57
+ end
58
+
59
+ it "should redact some words from a command" do
60
+ log = mock('Logger')
61
+ log.should_receive(:debug).with("Executing command: 'ala ma <REDACTED> i jest fajnie'")
62
+
63
+ @helper = ExecHelper.new(:log => log)
64
+ Open4.should_receive(:popen4).and_return(OpenStruct.new(:exitstatus => 0))
65
+
66
+ @helper.execute("ala ma kota i jest fajnie", :redacted => ['kota'])
57
67
  end
58
68
  end
59
69
  end
@@ -36,7 +36,7 @@ module BoxGrinder
36
36
  file_log = @helper.instance_variable_get(:@file_log)
37
37
 
38
38
  stdout_log.level.should == Logger::INFO
39
- file_log.level.should == Logger::DEBUG
39
+ file_log.level.should == Logger::TRACE
40
40
  end
41
41
 
42
42
  it "should allow to log in every known log level" do
@@ -56,7 +56,7 @@ module BoxGrinder
56
56
  file_log = @helper.instance_variable_get(:@file_log)
57
57
 
58
58
  stdout_log.level.should == Logger::DEBUG
59
- file_log.level.should == Logger::DEBUG
59
+ file_log.level.should == Logger::TRACE
60
60
  end
61
61
 
62
62
  it "should change log level" do
@@ -68,7 +68,7 @@ module BoxGrinder
68
68
  file_log = @helper.instance_variable_get(:@file_log)
69
69
 
70
70
  stdout_log.level.should == Logger::INFO
71
- file_log.level.should == Logger::DEBUG
71
+ file_log.level.should == Logger::TRACE
72
72
  end
73
73
  end
74
74
  end
@@ -0,0 +1,8 @@
1
+ name: legacy test
2
+ summary: testing legacy format support
3
+ packages:
4
+ includes:
5
+ - squid
6
+ - boxgrinder-rest
7
+ excludes:
8
+ - useless
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: boxgrinder-core
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 2
9
- - 1
10
- version: 0.2.1
8
+ - 3
9
+ - 0
10
+ version: 0.3.0
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-22 00:00:00 +01:00
18
+ date: 2011-03-09 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -97,7 +97,8 @@ files:
97
97
  - spec/rspec/ls/two
98
98
  - spec/rspec/src/appliances/ephemeral-repo.appl
99
99
  - spec/rspec/src/appliances/full.appl
100
- - spec/rspec/src/appliances/invalid_yaml.appl
100
+ - spec/rspec/src/appliances/invalid-yaml.appl
101
+ - spec/rspec/src/appliances/legacy.appl
101
102
  - spec/rspec/src/appliances/repo.appl
102
103
  - spec/rspec/src/config/empty
103
104
  - spec/rspec/src/config/valid