boxgrinder-core 0.3.8 → 0.3.9
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 +4 -0
- data/Manifest +44 -0
- data/boxgrinder-core.gemspec +2 -2
- data/lib/boxgrinder-core/models/config.rb +17 -1
- data/rubygem-boxgrinder-core.spec +5 -1
- data/spec/models/config-spec.rb +70 -7
- metadata +4 -4
data/CHANGELOG
CHANGED
data/Manifest
CHANGED
@@ -0,0 +1,44 @@
|
|
1
|
+
CHANGELOG
|
2
|
+
LICENSE
|
3
|
+
Manifest
|
4
|
+
README
|
5
|
+
Rakefile
|
6
|
+
boxgrinder-core.gemspec
|
7
|
+
lib/boxgrinder-core.rb
|
8
|
+
lib/boxgrinder-core/appliance-parser.rb
|
9
|
+
lib/boxgrinder-core/appliance-validator.rb
|
10
|
+
lib/boxgrinder-core/errors.rb
|
11
|
+
lib/boxgrinder-core/helpers/appliance-config-helper.rb
|
12
|
+
lib/boxgrinder-core/helpers/appliance-definition-helper.rb
|
13
|
+
lib/boxgrinder-core/helpers/appliance-transformation-helper.rb
|
14
|
+
lib/boxgrinder-core/helpers/exec-helper.rb
|
15
|
+
lib/boxgrinder-core/helpers/log-helper.rb
|
16
|
+
lib/boxgrinder-core/models/appliance-config.rb
|
17
|
+
lib/boxgrinder-core/models/config.rb
|
18
|
+
lib/boxgrinder-core/models/task.rb
|
19
|
+
lib/boxgrinder-core/schemas/appliance_schema_0.8.0.yaml
|
20
|
+
lib/boxgrinder-core/schemas/appliance_schema_0.9.0.yaml
|
21
|
+
lib/boxgrinder-core/schemas/appliance_schema_0.9.6.yaml
|
22
|
+
rubygem-boxgrinder-core.spec
|
23
|
+
spec/appliance-parser-spec.rb
|
24
|
+
spec/appliance-validator-spec.rb
|
25
|
+
spec/helpers/appliance-config-helper-spec.rb
|
26
|
+
spec/helpers/appliance-definition-helper-spec.rb
|
27
|
+
spec/helpers/appliance-transformation-helper-spec.rb
|
28
|
+
spec/helpers/exec-helper-spec.rb
|
29
|
+
spec/helpers/log-helper-spec.rb
|
30
|
+
spec/models/appliance-config-spec.rb
|
31
|
+
spec/models/config-spec.rb
|
32
|
+
spec/rspec/ls/one
|
33
|
+
spec/rspec/ls/two
|
34
|
+
spec/rspec/src/appliances/0.8.x.appl
|
35
|
+
spec/rspec/src/appliances/0.9.x-invalid.appl
|
36
|
+
spec/rspec/src/appliances/0.9.x.appl
|
37
|
+
spec/rspec/src/appliances/comments.appl
|
38
|
+
spec/rspec/src/appliances/ephemeral-repo.appl
|
39
|
+
spec/rspec/src/appliances/full.appl
|
40
|
+
spec/rspec/src/appliances/invalid-yaml.appl
|
41
|
+
spec/rspec/src/appliances/legacy.appl
|
42
|
+
spec/rspec/src/appliances/repo.appl
|
43
|
+
spec/rspec/src/config/empty
|
44
|
+
spec/rspec/src/config/valid
|
data/boxgrinder-core.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{boxgrinder-core}
|
5
|
-
s.version = "0.3.
|
5
|
+
s.version = "0.3.9"
|
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-
|
9
|
+
s.date = %q{2011-11-15}
|
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/appliance-parser.rb", "lib/boxgrinder-core/appliance-validator.rb", "lib/boxgrinder-core/errors.rb", "lib/boxgrinder-core/helpers/appliance-config-helper.rb", "lib/boxgrinder-core/helpers/appliance-definition-helper.rb", "lib/boxgrinder-core/helpers/appliance-transformation-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/schemas/appliance_schema_0.8.0.yaml", "lib/boxgrinder-core/schemas/appliance_schema_0.9.0.yaml", "lib/boxgrinder-core/schemas/appliance_schema_0.9.6.yaml"]
|
@@ -19,6 +19,7 @@
|
|
19
19
|
require 'rubygems'
|
20
20
|
require 'hashery/opencascade'
|
21
21
|
require 'yaml'
|
22
|
+
require 'etc'
|
22
23
|
|
23
24
|
module BoxGrinder
|
24
25
|
class Config < OpenCascade
|
@@ -54,6 +55,8 @@ module BoxGrinder
|
|
54
55
|
merge_with_symbols!(values)
|
55
56
|
|
56
57
|
self.backtrace = true if [:debug, :trace].include?(self.log_level)
|
58
|
+
|
59
|
+
populate_user_ids!
|
57
60
|
end
|
58
61
|
|
59
62
|
def merge_with_symbols!(values)
|
@@ -73,5 +76,18 @@ module BoxGrinder
|
|
73
76
|
end
|
74
77
|
end if second
|
75
78
|
end
|
79
|
+
|
80
|
+
def populate_user_ids!
|
81
|
+
self.uid = Process.uid
|
82
|
+
self.gid = Process.gid
|
83
|
+
begin
|
84
|
+
if env = ENV['SUDO_USER'] || ENV['LOGNAME']
|
85
|
+
user = Etc.getpwnam(env)
|
86
|
+
self.uid = user.uid
|
87
|
+
self.gid = user.gid
|
88
|
+
end
|
89
|
+
rescue ArgumentError #No such name, just use initial defaults.
|
90
|
+
end
|
91
|
+
end
|
76
92
|
end
|
77
|
-
end
|
93
|
+
end
|
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Summary: Core library for BoxGrinder
|
7
7
|
Name: rubygem-%{gemname}
|
8
|
-
Version: 0.3.
|
8
|
+
Version: 0.3.9
|
9
9
|
Release: 1%{?dist}
|
10
10
|
Group: Development/Languages
|
11
11
|
License: LGPLv3+
|
@@ -76,6 +76,10 @@ popd
|
|
76
76
|
%{gemdir}/doc/%{gemname}-%{version}
|
77
77
|
|
78
78
|
%changelog
|
79
|
+
* Fri Oct 14 2011 Marc Savy <msavy@redhat.com> - 0.3.9-1
|
80
|
+
- Upstream release: 0.3.9
|
81
|
+
- [BGBUILD-312] Discover which user to switch to after root dependent sections have been executed
|
82
|
+
|
79
83
|
* Wed Sep 7 2011 Marek Goldmann <mgoldman@redhat.com> - 0.3.8-1
|
80
84
|
- [BGBUILD-305] Incorrect version information in 0.9.6 schema causing validation errors
|
81
85
|
|
data/spec/models/config-spec.rb
CHANGED
@@ -22,18 +22,25 @@ require 'boxgrinder-core/models/config'
|
|
22
22
|
|
23
23
|
module BoxGrinder
|
24
24
|
describe Config do
|
25
|
+
|
26
|
+
def get_config
|
27
|
+
# Some extra challenges due to calls being in initialize
|
28
|
+
Config.any_instance.stub(:populate_user_ids!)
|
29
|
+
config = Config.new
|
30
|
+
config
|
31
|
+
end
|
32
|
+
|
25
33
|
it "should not load options from file if it doesn't exist" do
|
26
34
|
ENV['BG_CONFIG_FILE'] = ""
|
27
35
|
|
28
|
-
lambda {
|
29
|
-
config = Config.new
|
36
|
+
lambda { get_config
|
30
37
|
}.should raise_error(RuntimeError, "You specified empty configuration file path. Please make sure you set correct path for BG_CONFIG_FILE environment variable.")
|
31
38
|
end
|
32
39
|
|
33
40
|
it "should load empty config file" do
|
34
41
|
ENV['BG_CONFIG_FILE'] = "#{File.dirname(__FILE__)}/../rspec/src/config/empty"
|
35
42
|
|
36
|
-
config =
|
43
|
+
config = get_config
|
37
44
|
config.force.should == false
|
38
45
|
config.log_level.should == :info
|
39
46
|
end
|
@@ -41,7 +48,7 @@ module BoxGrinder
|
|
41
48
|
it "should load config file" do
|
42
49
|
ENV['BG_CONFIG_FILE'] = "#{File.dirname(__FILE__)}/../rspec/src/config/valid"
|
43
50
|
|
44
|
-
config =
|
51
|
+
config = get_config
|
45
52
|
config.force.should == true
|
46
53
|
config.log_level.should == 'trace'
|
47
54
|
config.dir.build.should == 'build'
|
@@ -50,22 +57,78 @@ module BoxGrinder
|
|
50
57
|
|
51
58
|
it "should raise a file not found error if BG_CONFIG_FILE is set, but the path is invalid" do
|
52
59
|
ENV['BG_CONFIG_FILE'] = "leo/tol/stoy"
|
53
|
-
lambda {
|
60
|
+
lambda { get_config }.should raise_error(RuntimeError, "Configuration file 'leo/tol/stoy' couldn't be found. Please make sure you set correct path for BG_CONFIG_FILE environment variable.")
|
54
61
|
end
|
55
62
|
|
56
63
|
it "should raise if the specified config file is whitespace" do
|
57
64
|
ENV['BG_CONFIG_FILE'] = " "
|
58
65
|
|
59
66
|
lambda {
|
60
|
-
config =
|
67
|
+
config = get_config
|
61
68
|
}.should raise_error(RuntimeError, "You specified empty configuration file path. Please make sure you set correct path for BG_CONFIG_FILE environment variable.")
|
62
69
|
end
|
63
70
|
|
64
71
|
it "should merge platform" do
|
65
72
|
# Make sure we don't have the variable defined anymore
|
66
73
|
ENV.delete('BG_CONFIG_FILE')
|
67
|
-
config =
|
74
|
+
config = get_config.merge(:platform => :ec2)
|
68
75
|
config.platform.should == :ec2
|
69
76
|
end
|
77
|
+
|
78
|
+
context ".populate_user_ids!" do
|
79
|
+
before(:each) do
|
80
|
+
# Work-around due to unstubbing not working properly.
|
81
|
+
['LOGNAME', 'SUDO_USER'].each{|e| ENV.delete(e)}
|
82
|
+
@user = mock('gravy', :uid => 347, :gid => 547)
|
83
|
+
@root = mock('root', :uid => 0, :gid => 0)
|
84
|
+
Etc.stub!(:getpwnam).and_return(@user)
|
85
|
+
@config = Config.new
|
86
|
+
end
|
87
|
+
|
88
|
+
|
89
|
+
it "should discover a user and group when under su" do
|
90
|
+
ENV['LOGNAME'] = 'gravy1'
|
91
|
+
['SUDO_USER', 'LOGNAME'].each{|v| puts "From config-spec.rb: #{ENV[v]}"}
|
92
|
+
|
93
|
+
Process.should_receive(:uid).and_return(99)
|
94
|
+
Process.should_receive(:gid).and_return(79)
|
95
|
+
Etc.should_receive(:getpwnam).with('gravy1').and_return(@user)
|
96
|
+
|
97
|
+
@config.populate_user_ids!
|
98
|
+
@config.uid.should == 347
|
99
|
+
@config.gid.should == 547
|
100
|
+
end
|
101
|
+
|
102
|
+
it "should discover a user and group when under sudo" do
|
103
|
+
ENV['SUDO_USER'] = 'gravy2'
|
104
|
+
Process.should_receive(:uid).and_return(99)
|
105
|
+
Process.should_receive(:gid).and_return(79)
|
106
|
+
Etc.should_receive(:getpwnam).with('gravy2').and_return(@user)
|
107
|
+
|
108
|
+
@config.populate_user_ids!
|
109
|
+
@config.uid.should == 347
|
110
|
+
@config.gid.should == 547
|
111
|
+
end
|
112
|
+
|
113
|
+
it "should set process uid/gid if variables are not set" do
|
114
|
+
Process.should_receive(:uid).and_return(23)
|
115
|
+
Process.should_receive(:gid).and_return(26)
|
116
|
+
|
117
|
+
@config.populate_user_ids!
|
118
|
+
@config.uid.should == 23
|
119
|
+
@config.gid.should == 26
|
120
|
+
end
|
121
|
+
|
122
|
+
it "should return process uid/gid if user does not exist" do
|
123
|
+
ENV['SUDO_USER'] = 'fakegravy'
|
124
|
+
Process.should_receive(:uid).and_return(23)
|
125
|
+
Process.should_receive(:gid).and_return(26)
|
126
|
+
Etc.should_receive(:getpwnam).with('fakegravy').and_raise(ArgumentError)
|
127
|
+
|
128
|
+
@config.populate_user_ids!
|
129
|
+
@config.uid.should == 23
|
130
|
+
@config.gid.should == 26
|
131
|
+
end
|
132
|
+
end
|
70
133
|
end
|
71
134
|
end
|
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:
|
4
|
+
hash: 1
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 0.3.
|
9
|
+
- 9
|
10
|
+
version: 0.3.9
|
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-
|
18
|
+
date: 2011-11-15 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|