boxgrinder-build 0.10.0 → 0.10.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +11 -0
- data/Manifest +6 -7
- data/Rakefile +11 -6
- data/bash_completion +37 -0
- data/bin/boxgrinder-build +20 -5
- data/boxgrinder-build.gemspec +4 -4
- data/lib/boxgrinder-build.rb +2 -1
- data/lib/boxgrinder-build/appliance.rb +26 -24
- data/lib/boxgrinder-build/helpers/augeas-helper.rb +1 -1
- data/lib/boxgrinder-build/helpers/ec2-helper.rb +2 -2
- data/lib/boxgrinder-build/helpers/guestfs-helper.rb +1 -1
- data/lib/boxgrinder-build/helpers/s3-helper.rb +2 -2
- data/lib/boxgrinder-build/managers/plugin-manager.rb +1 -1
- data/lib/boxgrinder-build/plugins/delivery/ebs/ebs-plugin.rb +1 -1
- data/lib/boxgrinder-build/plugins/delivery/elastichosts/elastichosts-plugin.rb +2 -2
- data/lib/boxgrinder-build/plugins/delivery/openstack/openstack-plugin.rb +3 -3
- data/lib/boxgrinder-build/plugins/delivery/s3/s3-plugin.rb +16 -10
- data/lib/boxgrinder-build/plugins/os/centos/centos-plugin.rb +1 -1
- data/lib/boxgrinder-build/plugins/os/fedora/fedora-plugin.rb +1 -1
- data/lib/boxgrinder-build/plugins/os/rhel/rhel-plugin.rb +1 -1
- data/lib/boxgrinder-build/plugins/os/rpm-based/kickstart.rb +5 -1
- data/lib/boxgrinder-build/plugins/os/rpm-based/rpm-based-os-plugin.rb +8 -3
- data/lib/boxgrinder-build/plugins/os/rpm-based/rpm-dependency-validator.rb +1 -1
- data/lib/boxgrinder-build/plugins/os/sl/sl-plugin.rb +1 -1
- data/lib/boxgrinder-build/plugins/platform/ec2/ec2-plugin.rb +1 -1
- data/lib/boxgrinder-build/util/concurrent/get_set.rb +46 -0
- data/lib/boxgrinder-build/util/permissions/fs-monitor.rb +182 -0
- data/lib/boxgrinder-build/util/permissions/fs-observer.rb +82 -0
- data/lib/boxgrinder-build/util/permissions/user-switcher.rb +42 -0
- data/rubygem-boxgrinder-build.spec +25 -3
- data/spec/appliance-spec.rb +69 -82
- data/spec/helpers/augeas-helper-spec.rb +0 -2
- data/spec/helpers/guestfs-helper-spec.rb +1 -3
- data/spec/helpers/image-helper-spec.rb +0 -2
- data/spec/helpers/linux-helper-spec.rb +0 -2
- data/spec/helpers/package-helper-spec.rb +0 -2
- data/spec/helpers/plugin-helper-spec.rb +0 -2
- data/spec/helpers/s3-helper-spec.rb +0 -2
- data/spec/managers/plugin-manager-spec.rb +0 -2
- data/spec/plugins/base-plugin-spec.rb +0 -2
- data/spec/plugins/delivery/ebs/ebs-plugin-spec.rb +0 -2
- data/spec/plugins/delivery/elastichosts/elastichosts-plugin-spec.rb +3 -5
- data/spec/plugins/delivery/libvirt/libvirt-plugin-spec.rb +19 -17
- data/spec/plugins/delivery/local/local-plugin-spec.rb +0 -2
- data/spec/plugins/delivery/s3/s3-plugin-spec.rb +6 -8
- data/spec/plugins/delivery/sftp/sftp-plugin-spec.rb +0 -2
- data/spec/plugins/os/centos/centos-plugin-spec.rb +0 -2
- data/spec/plugins/os/fedora/fedora-plugin-spec.rb +0 -2
- data/spec/plugins/os/rhel/rhel-plugin-spec.rb +0 -2
- data/spec/plugins/os/rpm-based/kickstart-spec.rb +0 -2
- data/spec/plugins/os/rpm-based/rpm-based-os-plugin-spec.rb +16 -4
- data/spec/plugins/os/rpm-based/rpm-dependency-validator-spec.rb +0 -2
- data/spec/plugins/platform/ec2/ec2-plugin-spec.rb +0 -2
- data/spec/plugins/platform/virtualbox/virtualbox-plugin-spec.rb +1 -3
- data/spec/plugins/platform/virtualpc/virtualpc-plugin-spec.rb +0 -1
- data/spec/plugins/platform/vmware/vmware-plugin-spec.rb +25 -24
- data/spec/rcov_helper.rb +2 -0
- data/spec/spec_helper.rb +9 -0
- data/spec/util/concurrent/get-set-spec.rb +43 -0
- data/spec/util/permissions/fs-monitor-spec.rb +233 -0
- data/spec/util/permissions/fs-observer-spec.rb +141 -0
- data/spec/util/permissions/user-switcher-spec.rb +69 -0
- metadata +20 -5
data/CHANGELOG
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
v0.10.1
|
2
|
+
|
3
|
+
* [BGBUILD-332] Add support for bash completion
|
4
|
+
* [BGBUILD-338] Weed out non-deterministic tests
|
5
|
+
* [BGBUILD-337] In SL if default repos are disabled, /etc/yum.repos.d folder is not created
|
6
|
+
* [BGBUILD-344] New filesystem monitoring improvements (Fixes: Shifting failed. Permission denied issues)
|
7
|
+
* [BGBUILD-345] Change sudo/chown magic so it only occurs when running without explicit sudo/su (or --change-to-user)
|
8
|
+
* [BGBUILD-346] Confirm Ruby 1.9.3 support
|
9
|
+
* [BGBUILD-348] Simplecov coverage testing for Ruby >=1.9
|
10
|
+
* [BGBUILD-349] Use RbConfig instead of obsolete and deprecated Config deprecation warning with Ruby 1.9.3
|
11
|
+
|
1
12
|
v0.10.0
|
2
13
|
|
3
14
|
* [BGBUILD-313] boxgrinder build fails to build ec2 image if ec2-user already exists
|
data/Manifest
CHANGED
@@ -3,6 +3,7 @@ LICENSE
|
|
3
3
|
Manifest
|
4
4
|
README.md
|
5
5
|
Rakefile
|
6
|
+
bash_completion
|
6
7
|
bin/boxgrinder-build
|
7
8
|
boxgrinder-build.gemspec
|
8
9
|
integ/appliances/gnome-fedora.appl
|
@@ -78,13 +79,11 @@ lib/boxgrinder-build/plugins/platform/vmware/src/README-personal
|
|
78
79
|
lib/boxgrinder-build/plugins/platform/vmware/src/base.vmdk
|
79
80
|
lib/boxgrinder-build/plugins/platform/vmware/src/base.vmx
|
80
81
|
lib/boxgrinder-build/plugins/platform/vmware/vmware-plugin.rb
|
82
|
+
lib/boxgrinder-build/util/concurrent/get_set.rb
|
83
|
+
lib/boxgrinder-build/util/permissions/fs-monitor.rb
|
84
|
+
lib/boxgrinder-build/util/permissions/fs-observer.rb
|
85
|
+
lib/boxgrinder-build/util/permissions/user-switcher.rb
|
81
86
|
rubygem-boxgrinder-build.spec
|
82
87
|
spec/appliance-spec.rb
|
83
88
|
spec/helpers/augeas-helper-spec.rb
|
84
|
-
spec/
|
85
|
-
spec/helpers/guestfs-helper-spec.rb
|
86
|
-
spec/helpers/image-helper-spec.rb
|
87
|
-
spec/helpers/linux-helper-spec.rb
|
88
|
-
spec/helpers/package-helper-spec.rb
|
89
|
-
spec/helpers/plugin-helper-spec.rb
|
90
|
-
spec/helpers/s3-helper-spe
|
89
|
+
spec/help
|
data/Rakefile
CHANGED
@@ -40,7 +40,7 @@ desc "Run all integration tests"
|
|
40
40
|
RSpec::Core::RakeTask.new('integ') do |t|
|
41
41
|
t.rcov = false
|
42
42
|
t.pattern = "integ/**/*-spec.rb"
|
43
|
-
t.rspec_opts = ['--colour', '--format', 'doc', '-b']
|
43
|
+
t.rspec_opts = ['-r boxgrinder-core', '-r rubygems', '--colour', '--format', 'doc', '-b']
|
44
44
|
t.verbose = true
|
45
45
|
end
|
46
46
|
|
@@ -49,16 +49,21 @@ RSpec::Core::RakeTask.new('spec') do |t|
|
|
49
49
|
t.ruby_opts = "-I ../boxgrinder-core/lib"
|
50
50
|
t.rcov = false
|
51
51
|
t.pattern = "spec/**/*-spec.rb"
|
52
|
-
t.rspec_opts = ['--colour', '--format', 'doc', '-b']
|
52
|
+
t.rspec_opts = ['-r boxgrinder-core', '-r rubygems', '--colour', '--format', 'doc', '-b']
|
53
53
|
t.verbose = true
|
54
54
|
end
|
55
55
|
|
56
|
-
desc "Run all tests and generate code coverage report"
|
57
56
|
RSpec::Core::RakeTask.new('spec:coverage') do |t|
|
58
57
|
t.ruby_opts = "-I ../boxgrinder-core/lib"
|
59
58
|
t.pattern = "spec/**/*-spec.rb"
|
60
|
-
t.rspec_opts = ['
|
61
|
-
|
62
|
-
t.rcov_opts = ['--exclude', 'spec,teamcity/*,/usr/lib/ruby/,.gem/ruby,/boxgrinder-core/,/gems/']
|
59
|
+
t.rspec_opts = ['-r spec_helper', '-r boxgrinder-core', '-r rubygems', '--colour',
|
60
|
+
'--format', 'html', '--out', 'pkg/rspec_report.html', '-b']
|
63
61
|
t.verbose = true
|
62
|
+
|
63
|
+
if RUBY_VERSION =~ /^1.8/
|
64
|
+
t.rcov = true
|
65
|
+
t.rcov_opts = ["-Ispec:lib spec/rcov_helper.rb", '--exclude', 'spec,teamcity/*,/usr/lib/ruby/,.gem/ruby,/boxgrinder-build/,/gems/']
|
66
|
+
else
|
67
|
+
ENV['COVERAGE'] = 'true'
|
68
|
+
end
|
64
69
|
end
|
data/bash_completion
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
_boxgrinder-build()
|
2
|
+
{
|
3
|
+
local cur prev opts
|
4
|
+
COMPREPLY=()
|
5
|
+
cur="${COMP_WORDS[COMP_CWORD]}"
|
6
|
+
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
7
|
+
opts="--help --version --platform --delivery --force --os-config --platform-config --delivery-config --plugins --debug --trace --backtrace"
|
8
|
+
|
9
|
+
if [[ ${cur} == -* ]] ; then
|
10
|
+
COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
|
11
|
+
return 0
|
12
|
+
fi
|
13
|
+
|
14
|
+
case "${prev}" in
|
15
|
+
--os-config|--platform-config|--delivery-config|-l|--plugins)
|
16
|
+
return 0
|
17
|
+
;;
|
18
|
+
-p|--platform)
|
19
|
+
local platform="ec2 virtualbox virtualpc vmware"
|
20
|
+
COMPREPLY=($(compgen -W "${platform}" -- ${cur}))
|
21
|
+
;;
|
22
|
+
-d|--delivery)
|
23
|
+
local delivery="ami cloudfront ebs elastichosts libvirt local openstack s3 sftp"
|
24
|
+
COMPREPLY=($(compgen -W "${delivery}" -- ${cur}))
|
25
|
+
;;
|
26
|
+
*)
|
27
|
+
if [[ ${COMP_CWORD} -eq 1 ]]; then
|
28
|
+
_filedir appl
|
29
|
+
else
|
30
|
+
COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
|
31
|
+
fi
|
32
|
+
;;
|
33
|
+
esac
|
34
|
+
}
|
35
|
+
|
36
|
+
complete -F _boxgrinder-build boxgrinder-build
|
37
|
+
|
data/bin/boxgrinder-build
CHANGED
@@ -26,13 +26,17 @@ require 'boxgrinder-core/models/config'
|
|
26
26
|
require 'boxgrinder-core/helpers/log-helper'
|
27
27
|
require 'boxgrinder-build/appliance'
|
28
28
|
|
29
|
+
require 'boxgrinder-build/util/permissions/fs-observer'
|
30
|
+
require 'boxgrinder-build/util/permissions/fs-monitor'
|
31
|
+
|
29
32
|
options = OpenCascade.new(
|
30
33
|
:platform => :none,
|
31
34
|
:delivery => :none,
|
32
35
|
:os_config => {},
|
33
36
|
:platform_config => {},
|
34
37
|
:delivery_config => {},
|
35
|
-
:additional_plugins => []
|
38
|
+
:additional_plugins => [],
|
39
|
+
:change_to_user => false
|
36
40
|
)
|
37
41
|
|
38
42
|
ARGV_DUP = ARGV.clone
|
@@ -135,6 +139,7 @@ EOB
|
|
135
139
|
puts opts
|
136
140
|
exit
|
137
141
|
end
|
142
|
+
|
138
143
|
opts.on_tail('--version', 'Print the version.') do
|
139
144
|
puts "BoxGrinder Build #{File.read("#{File.dirname(__FILE__)}/../CHANGELOG").match(/^v(.*)/)[1]}"
|
140
145
|
|
@@ -148,16 +153,20 @@ EOB
|
|
148
153
|
|
149
154
|
exit
|
150
155
|
end
|
156
|
+
|
157
|
+
opts.on('--change-to-user', 'Change from root to local user after the OS plugin completes.') do
|
158
|
+
options[:change_to_user] = true
|
159
|
+
end
|
151
160
|
end
|
152
161
|
end
|
153
162
|
|
154
163
|
def ensure_root
|
155
164
|
unless Process.uid == 0
|
156
|
-
puts("Currently running as non-root user, BoxGrinder will
|
165
|
+
puts("Currently running as non-root user, BoxGrinder will re-launch under `sudo -E` and change to your local user after the OS plugin.")
|
157
166
|
# http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/151376
|
158
|
-
ruby = File.join(
|
159
|
-
|
160
|
-
exec("sudo -E #{ruby} -I#{$:.join(':')} #{Pathname.new(__FILE__).realpath} #{ARGV_DUP.join(" ")}")
|
167
|
+
ruby = File.join(RbConfig::CONFIG["bindir"],
|
168
|
+
RbConfig::CONFIG["RUBY_INSTALL_NAME"] + RbConfig::CONFIG["EXEEXT"])
|
169
|
+
exec("sudo -E #{ruby} -I#{$:.join(':')} #{Pathname.new(__FILE__).realpath} #{ARGV_DUP.join(" ")} --change-to-user")
|
161
170
|
end
|
162
171
|
end
|
163
172
|
|
@@ -183,6 +192,10 @@ begin
|
|
183
192
|
end
|
184
193
|
|
185
194
|
config = BoxGrinder::Config.new(options)
|
195
|
+
# Begin monitoring.
|
196
|
+
observer = config.change_to_user ? BoxGrinder::FSObserver.new(config.uid, config.gid) : nil
|
197
|
+
BoxGrinder::FSMonitor.instance.capture(observer)
|
198
|
+
|
186
199
|
log = BoxGrinder::LogHelper.new(:level => config.log_level)
|
187
200
|
|
188
201
|
begin
|
@@ -201,4 +214,6 @@ rescue => e
|
|
201
214
|
puts
|
202
215
|
puts e.message
|
203
216
|
abort
|
217
|
+
ensure
|
218
|
+
BoxGrinder::FSMonitor.instance.stop
|
204
219
|
end
|
data/boxgrinder-build.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "boxgrinder-build"
|
5
|
-
s.version = "0.10.
|
5
|
+
s.version = "0.10.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 = "
|
9
|
+
s.date = "2012-03-19"
|
10
10
|
s.description = "A tool for creating appliances from simple plain text files for various virtual environments."
|
11
11
|
s.email = "info@boxgrinder.org"
|
12
12
|
s.executables = ["boxgrinder-build"]
|
13
|
-
s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README.md", "bin/boxgrinder-build", "lib/boxgrinder-build.rb", "lib/boxgrinder-build/appliance.rb", "lib/boxgrinder-build/helpers/augeas-helper.rb", "lib/boxgrinder-build/helpers/aws-helper.rb", "lib/boxgrinder-build/helpers/ec2-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/helpers/qemu.wrapper", "lib/boxgrinder-build/helpers/s3-helper.rb", "lib/boxgrinder-build/helpers/sftp-helper.rb", "lib/boxgrinder-build/managers/plugin-manager.rb", "lib/boxgrinder-build/plugins/base-plugin.rb", "lib/boxgrinder-build/plugins/delivery/ebs/ebs-plugin.rb", "lib/boxgrinder-build/plugins/delivery/elastichosts/elastichosts-plugin.rb", "lib/boxgrinder-build/plugins/delivery/libvirt/libvirt-capabilities.rb", "lib/boxgrinder-build/plugins/delivery/libvirt/libvirt-plugin.rb", "lib/boxgrinder-build/plugins/delivery/local/local-plugin.rb", "lib/boxgrinder-build/plugins/delivery/openstack/openstack-plugin.rb", "lib/boxgrinder-build/plugins/delivery/s3/s3-plugin.rb", "lib/boxgrinder-build/plugins/delivery/s3/src/cert-ec2.pem", "lib/boxgrinder-build/plugins/delivery/sftp/sftp-plugin.rb", "lib/boxgrinder-build/plugins/delivery/usb/usb-plugin.rb", "lib/boxgrinder-build/plugins/os/centos/centos-plugin.rb", "lib/boxgrinder-build/plugins/os/fedora/fedora-plugin.rb", "lib/boxgrinder-build/plugins/os/rhel/rhel-plugin.rb", "lib/boxgrinder-build/plugins/os/rpm-based/kickstart.rb", "lib/boxgrinder-build/plugins/os/rpm-based/rpm-based-os-plugin.rb", "lib/boxgrinder-build/plugins/os/rpm-based/rpm-dependency-validator.rb", "lib/boxgrinder-build/plugins/os/rpm-based/src/appliance.ks.erb", "lib/boxgrinder-build/plugins/os/rpm-based/src/base.repo", "lib/boxgrinder-build/plugins/os/rpm-based/src/motd.init", "lib/boxgrinder-build/plugins/os/sl/sl-plugin.rb", "lib/boxgrinder-build/plugins/platform/ec2/ec2-plugin.rb", "lib/boxgrinder-build/plugins/platform/ec2/src/fstab_32bit", "lib/boxgrinder-build/plugins/platform/ec2/src/fstab_64bit", "lib/boxgrinder-build/plugins/platform/ec2/src/ifcfg-eth0", "lib/boxgrinder-build/plugins/platform/ec2/src/menu.lst", "lib/boxgrinder-build/plugins/platform/ec2/src/rc_local", "lib/boxgrinder-build/plugins/platform/virtualbox/virtualbox-plugin.rb", "lib/boxgrinder-build/plugins/platform/virtualpc/virtualpc-plugin.rb", "lib/boxgrinder-build/plugins/platform/vmware/src/README-enterprise", "lib/boxgrinder-build/plugins/platform/vmware/src/README-personal", "lib/boxgrinder-build/plugins/platform/vmware/src/base.vmdk", "lib/boxgrinder-build/plugins/platform/vmware/src/base.vmx", "lib/boxgrinder-build/plugins/platform/vmware/vmware-plugin.rb"]
|
14
|
-
s.files = ["CHANGELOG", "LICENSE", "Manifest", "README.md", "Rakefile", "bin/boxgrinder-build", "integ/appliances/gnome-fedora.appl", "integ/appliances/jeos-centos5-files.appl", "integ/appliances/jeos-centos5.appl", "integ/appliances/jeos-centos6.appl", "integ/appliances/jeos-f15.appl", "integ/appliances/jeos-f16-files.appl", "integ/appliances/jeos-f16.appl", "integ/appliances/modular/_hardware_cpus.appl", "integ/appliances/modular/_hardware_memory.appl", "integ/appliances/modular/_hardware_partitions_home.appl", "integ/appliances/modular/_hardware_partitions_root.appl", "integ/appliances/modular/_os_password.appl", "integ/appliances/modular/_packages_groups_base.appl", "integ/appliances/modular/_packages_groups_core.appl", "integ/appliances/modular/_packages_squid.appl", "integ/appliances/modular/_packages_utils.appl", "integ/appliances/modular/_repos_boxgrinder_permanent_noarch.appl", "integ/appliances/modular/_repos_testlocal_ephemeral_noarch.appl", "integ/appliances/modular/_test_base.appl", "integ/appliances/modular/modular.appl", "integ/packages/ephemeral-repo-test-0.1-1.noarch.rpm", "integ/packages/local-repo-test.spec", "integ/spec/files-spec.rb", "integ/spec/jeos-spec.rb", "integ/spec/modular-spec.rb", "lib/boxgrinder-build.rb", "lib/boxgrinder-build/appliance.rb", "lib/boxgrinder-build/helpers/augeas-helper.rb", "lib/boxgrinder-build/helpers/aws-helper.rb", "lib/boxgrinder-build/helpers/ec2-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/helpers/qemu.wrapper", "lib/boxgrinder-build/helpers/s3-helper.rb", "lib/boxgrinder-build/helpers/sftp-helper.rb", "lib/boxgrinder-build/managers/plugin-manager.rb", "lib/boxgrinder-build/plugins/base-plugin.rb", "lib/boxgrinder-build/plugins/delivery/ebs/ebs-plugin.rb", "lib/boxgrinder-build/plugins/delivery/elastichosts/elastichosts-plugin.rb", "lib/boxgrinder-build/plugins/delivery/libvirt/libvirt-capabilities.rb", "lib/boxgrinder-build/plugins/delivery/libvirt/libvirt-plugin.rb", "lib/boxgrinder-build/plugins/delivery/local/local-plugin.rb", "lib/boxgrinder-build/plugins/delivery/openstack/openstack-plugin.rb", "lib/boxgrinder-build/plugins/delivery/s3/s3-plugin.rb", "lib/boxgrinder-build/plugins/delivery/s3/src/cert-ec2.pem", "lib/boxgrinder-build/plugins/delivery/sftp/sftp-plugin.rb", "lib/boxgrinder-build/plugins/delivery/usb/usb-plugin.rb", "lib/boxgrinder-build/plugins/os/centos/centos-plugin.rb", "lib/boxgrinder-build/plugins/os/fedora/fedora-plugin.rb", "lib/boxgrinder-build/plugins/os/rhel/rhel-plugin.rb", "lib/boxgrinder-build/plugins/os/rpm-based/kickstart.rb", "lib/boxgrinder-build/plugins/os/rpm-based/rpm-based-os-plugin.rb", "lib/boxgrinder-build/plugins/os/rpm-based/rpm-dependency-validator.rb", "lib/boxgrinder-build/plugins/os/rpm-based/src/appliance.ks.erb", "lib/boxgrinder-build/plugins/os/rpm-based/src/base.repo", "lib/boxgrinder-build/plugins/os/rpm-based/src/motd.init", "lib/boxgrinder-build/plugins/os/sl/sl-plugin.rb", "lib/boxgrinder-build/plugins/platform/ec2/ec2-plugin.rb", "lib/boxgrinder-build/plugins/platform/ec2/src/fstab_32bit", "lib/boxgrinder-build/plugins/platform/ec2/src/fstab_64bit", "lib/boxgrinder-build/plugins/platform/ec2/src/ifcfg-eth0", "lib/boxgrinder-build/plugins/platform/ec2/src/menu.lst", "lib/boxgrinder-build/plugins/platform/ec2/src/rc_local", "lib/boxgrinder-build/plugins/platform/virtualbox/virtualbox-plugin.rb", "lib/boxgrinder-build/plugins/platform/virtualpc/virtualpc-plugin.rb", "lib/boxgrinder-build/plugins/platform/vmware/src/README-enterprise", "lib/boxgrinder-build/plugins/platform/vmware/src/README-personal", "lib/boxgrinder-build/plugins/platform/vmware/src/base.vmdk", "lib/boxgrinder-build/plugins/platform/vmware/src/base.vmx", "lib/boxgrinder-build/plugins/platform/vmware/vmware-plugin.rb", "rubygem-boxgrinder-build.spec", "spec/appliance-spec.rb", "spec/helpers/augeas-helper-spec.rb", "spec/helpers/ec2-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/helpers/s3-helper-spec.rb", "spec/managers/plugin-manager-spec.rb", "spec/plugins/base-plugin-spec.rb", "spec/plugins/delivery/ebs/ebs-plugin-spec.rb", "spec/plugins/delivery/ebs/ebs.yaml", "spec/plugins/delivery/elastichosts/elastichosts-plugin-spec.rb", "spec/plugins/delivery/libvirt/libvirt-plugin-spec.rb", "spec/plugins/delivery/libvirt/libvirt_modified.xml", "spec/plugins/delivery/libvirt/libvirt_modify.sh", "spec/plugins/delivery/libvirt/libvirt_test.xml", "spec/plugins/delivery/local/local-plugin-spec.rb", "spec/plugins/delivery/openstack/openstack-plugin-spec.rb", "spec/plugins/delivery/s3/s3-plugin-spec.rb", "spec/plugins/delivery/sftp/sftp-plugin-spec.rb", "spec/plugins/os/centos/centos-plugin-spec.rb", "spec/plugins/os/fedora/fedora-plugin-spec.rb", "spec/plugins/os/rhel/rhel-plugin-spec.rb", "spec/plugins/os/rpm-based/kickstart-spec.rb", "spec/plugins/os/rpm-based/rpm-based-os-plugin-spec.rb", "spec/plugins/os/rpm-based/rpm-dependency-validator-spec.rb", "spec/plugins/os/rpm-based/src/jeos-f13-plain.ks", "spec/plugins/os/rpm-based/src/jeos-f13-without-version.ks", "spec/plugins/os/rpm-based/src/jeos-f13.ks", "spec/plugins/os/sl/sl-plugin-spec.rb", "spec/plugins/platform/ec2/ec2-plugin-spec.rb", "spec/plugins/platform/virtualbox/virtualbox-plugin-spec.rb", "spec/plugins/platform/virtualpc/virtualpc-plugin-spec.rb", "spec/plugins/platform/vmware/vmware-plugin-spec.rb", "spec/rspec-plugin-helper.rb", "
|
13
|
+
s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README.md", "bin/boxgrinder-build", "lib/boxgrinder-build.rb", "lib/boxgrinder-build/appliance.rb", "lib/boxgrinder-build/helpers/augeas-helper.rb", "lib/boxgrinder-build/helpers/aws-helper.rb", "lib/boxgrinder-build/helpers/ec2-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/helpers/qemu.wrapper", "lib/boxgrinder-build/helpers/s3-helper.rb", "lib/boxgrinder-build/helpers/sftp-helper.rb", "lib/boxgrinder-build/managers/plugin-manager.rb", "lib/boxgrinder-build/plugins/base-plugin.rb", "lib/boxgrinder-build/plugins/delivery/ebs/ebs-plugin.rb", "lib/boxgrinder-build/plugins/delivery/elastichosts/elastichosts-plugin.rb", "lib/boxgrinder-build/plugins/delivery/libvirt/libvirt-capabilities.rb", "lib/boxgrinder-build/plugins/delivery/libvirt/libvirt-plugin.rb", "lib/boxgrinder-build/plugins/delivery/local/local-plugin.rb", "lib/boxgrinder-build/plugins/delivery/openstack/openstack-plugin.rb", "lib/boxgrinder-build/plugins/delivery/s3/s3-plugin.rb", "lib/boxgrinder-build/plugins/delivery/s3/src/cert-ec2.pem", "lib/boxgrinder-build/plugins/delivery/sftp/sftp-plugin.rb", "lib/boxgrinder-build/plugins/delivery/usb/usb-plugin.rb", "lib/boxgrinder-build/plugins/os/centos/centos-plugin.rb", "lib/boxgrinder-build/plugins/os/fedora/fedora-plugin.rb", "lib/boxgrinder-build/plugins/os/rhel/rhel-plugin.rb", "lib/boxgrinder-build/plugins/os/rpm-based/kickstart.rb", "lib/boxgrinder-build/plugins/os/rpm-based/rpm-based-os-plugin.rb", "lib/boxgrinder-build/plugins/os/rpm-based/rpm-dependency-validator.rb", "lib/boxgrinder-build/plugins/os/rpm-based/src/appliance.ks.erb", "lib/boxgrinder-build/plugins/os/rpm-based/src/base.repo", "lib/boxgrinder-build/plugins/os/rpm-based/src/motd.init", "lib/boxgrinder-build/plugins/os/sl/sl-plugin.rb", "lib/boxgrinder-build/plugins/platform/ec2/ec2-plugin.rb", "lib/boxgrinder-build/plugins/platform/ec2/src/fstab_32bit", "lib/boxgrinder-build/plugins/platform/ec2/src/fstab_64bit", "lib/boxgrinder-build/plugins/platform/ec2/src/ifcfg-eth0", "lib/boxgrinder-build/plugins/platform/ec2/src/menu.lst", "lib/boxgrinder-build/plugins/platform/ec2/src/rc_local", "lib/boxgrinder-build/plugins/platform/virtualbox/virtualbox-plugin.rb", "lib/boxgrinder-build/plugins/platform/virtualpc/virtualpc-plugin.rb", "lib/boxgrinder-build/plugins/platform/vmware/src/README-enterprise", "lib/boxgrinder-build/plugins/platform/vmware/src/README-personal", "lib/boxgrinder-build/plugins/platform/vmware/src/base.vmdk", "lib/boxgrinder-build/plugins/platform/vmware/src/base.vmx", "lib/boxgrinder-build/plugins/platform/vmware/vmware-plugin.rb", "lib/boxgrinder-build/util/concurrent/get_set.rb", "lib/boxgrinder-build/util/permissions/fs-monitor.rb", "lib/boxgrinder-build/util/permissions/fs-observer.rb", "lib/boxgrinder-build/util/permissions/user-switcher.rb"]
|
14
|
+
s.files = ["CHANGELOG", "LICENSE", "Manifest", "README.md", "Rakefile", "bash_completion", "bin/boxgrinder-build", "boxgrinder-build.gemspec", "integ/appliances/gnome-fedora.appl", "integ/appliances/jeos-centos5-files.appl", "integ/appliances/jeos-centos5.appl", "integ/appliances/jeos-centos6.appl", "integ/appliances/jeos-f15.appl", "integ/appliances/jeos-f16-files.appl", "integ/appliances/jeos-f16.appl", "integ/appliances/modular/_hardware_cpus.appl", "integ/appliances/modular/_hardware_memory.appl", "integ/appliances/modular/_hardware_partitions_home.appl", "integ/appliances/modular/_hardware_partitions_root.appl", "integ/appliances/modular/_os_password.appl", "integ/appliances/modular/_packages_groups_base.appl", "integ/appliances/modular/_packages_groups_core.appl", "integ/appliances/modular/_packages_squid.appl", "integ/appliances/modular/_packages_utils.appl", "integ/appliances/modular/_repos_boxgrinder_permanent_noarch.appl", "integ/appliances/modular/_repos_testlocal_ephemeral_noarch.appl", "integ/appliances/modular/_test_base.appl", "integ/appliances/modular/modular.appl", "integ/packages/ephemeral-repo-test-0.1-1.noarch.rpm", "integ/packages/local-repo-test.spec", "integ/spec/files-spec.rb", "integ/spec/jeos-spec.rb", "integ/spec/modular-spec.rb", "lib/boxgrinder-build.rb", "lib/boxgrinder-build/appliance.rb", "lib/boxgrinder-build/helpers/augeas-helper.rb", "lib/boxgrinder-build/helpers/aws-helper.rb", "lib/boxgrinder-build/helpers/ec2-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/helpers/qemu.wrapper", "lib/boxgrinder-build/helpers/s3-helper.rb", "lib/boxgrinder-build/helpers/sftp-helper.rb", "lib/boxgrinder-build/managers/plugin-manager.rb", "lib/boxgrinder-build/plugins/base-plugin.rb", "lib/boxgrinder-build/plugins/delivery/ebs/ebs-plugin.rb", "lib/boxgrinder-build/plugins/delivery/elastichosts/elastichosts-plugin.rb", "lib/boxgrinder-build/plugins/delivery/libvirt/libvirt-capabilities.rb", "lib/boxgrinder-build/plugins/delivery/libvirt/libvirt-plugin.rb", "lib/boxgrinder-build/plugins/delivery/local/local-plugin.rb", "lib/boxgrinder-build/plugins/delivery/openstack/openstack-plugin.rb", "lib/boxgrinder-build/plugins/delivery/s3/s3-plugin.rb", "lib/boxgrinder-build/plugins/delivery/s3/src/cert-ec2.pem", "lib/boxgrinder-build/plugins/delivery/sftp/sftp-plugin.rb", "lib/boxgrinder-build/plugins/delivery/usb/usb-plugin.rb", "lib/boxgrinder-build/plugins/os/centos/centos-plugin.rb", "lib/boxgrinder-build/plugins/os/fedora/fedora-plugin.rb", "lib/boxgrinder-build/plugins/os/rhel/rhel-plugin.rb", "lib/boxgrinder-build/plugins/os/rpm-based/kickstart.rb", "lib/boxgrinder-build/plugins/os/rpm-based/rpm-based-os-plugin.rb", "lib/boxgrinder-build/plugins/os/rpm-based/rpm-dependency-validator.rb", "lib/boxgrinder-build/plugins/os/rpm-based/src/appliance.ks.erb", "lib/boxgrinder-build/plugins/os/rpm-based/src/base.repo", "lib/boxgrinder-build/plugins/os/rpm-based/src/motd.init", "lib/boxgrinder-build/plugins/os/sl/sl-plugin.rb", "lib/boxgrinder-build/plugins/platform/ec2/ec2-plugin.rb", "lib/boxgrinder-build/plugins/platform/ec2/src/fstab_32bit", "lib/boxgrinder-build/plugins/platform/ec2/src/fstab_64bit", "lib/boxgrinder-build/plugins/platform/ec2/src/ifcfg-eth0", "lib/boxgrinder-build/plugins/platform/ec2/src/menu.lst", "lib/boxgrinder-build/plugins/platform/ec2/src/rc_local", "lib/boxgrinder-build/plugins/platform/virtualbox/virtualbox-plugin.rb", "lib/boxgrinder-build/plugins/platform/virtualpc/virtualpc-plugin.rb", "lib/boxgrinder-build/plugins/platform/vmware/src/README-enterprise", "lib/boxgrinder-build/plugins/platform/vmware/src/README-personal", "lib/boxgrinder-build/plugins/platform/vmware/src/base.vmdk", "lib/boxgrinder-build/plugins/platform/vmware/src/base.vmx", "lib/boxgrinder-build/plugins/platform/vmware/vmware-plugin.rb", "lib/boxgrinder-build/util/concurrent/get_set.rb", "lib/boxgrinder-build/util/permissions/fs-monitor.rb", "lib/boxgrinder-build/util/permissions/fs-observer.rb", "lib/boxgrinder-build/util/permissions/user-switcher.rb", "rubygem-boxgrinder-build.spec", "spec/appliance-spec.rb", "spec/helpers/augeas-helper-spec.rb", "spec/helpers/ec2-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/helpers/s3-helper-spec.rb", "spec/managers/plugin-manager-spec.rb", "spec/plugins/base-plugin-spec.rb", "spec/plugins/delivery/ebs/ebs-plugin-spec.rb", "spec/plugins/delivery/ebs/ebs.yaml", "spec/plugins/delivery/elastichosts/elastichosts-plugin-spec.rb", "spec/plugins/delivery/libvirt/libvirt-plugin-spec.rb", "spec/plugins/delivery/libvirt/libvirt_modified.xml", "spec/plugins/delivery/libvirt/libvirt_modify.sh", "spec/plugins/delivery/libvirt/libvirt_test.xml", "spec/plugins/delivery/local/local-plugin-spec.rb", "spec/plugins/delivery/openstack/openstack-plugin-spec.rb", "spec/plugins/delivery/s3/s3-plugin-spec.rb", "spec/plugins/delivery/sftp/sftp-plugin-spec.rb", "spec/plugins/os/centos/centos-plugin-spec.rb", "spec/plugins/os/fedora/fedora-plugin-spec.rb", "spec/plugins/os/rhel/rhel-plugin-spec.rb", "spec/plugins/os/rpm-based/kickstart-spec.rb", "spec/plugins/os/rpm-based/rpm-based-os-plugin-spec.rb", "spec/plugins/os/rpm-based/rpm-dependency-validator-spec.rb", "spec/plugins/os/rpm-based/src/jeos-f13-plain.ks", "spec/plugins/os/rpm-based/src/jeos-f13-without-version.ks", "spec/plugins/os/rpm-based/src/jeos-f13.ks", "spec/plugins/os/sl/sl-plugin-spec.rb", "spec/plugins/platform/ec2/ec2-plugin-spec.rb", "spec/plugins/platform/virtualbox/virtualbox-plugin-spec.rb", "spec/plugins/platform/virtualpc/virtualpc-plugin-spec.rb", "spec/plugins/platform/vmware/vmware-plugin-spec.rb", "spec/rcov_helper.rb", "spec/rspec-plugin-helper.rb", "spec/spec_helper.rb", "spec/util/concurrent/get-set-spec.rb", "spec/util/permissions/fs-monitor-spec.rb", "spec/util/permissions/fs-observer-spec.rb", "spec/util/permissions/user-switcher-spec.rb"]
|
15
15
|
s.homepage = "http://boxgrinder.org/"
|
16
16
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Boxgrinder-build", "--main", "README.md"]
|
17
17
|
s.require_paths = ["lib"]
|
data/lib/boxgrinder-build.rb
CHANGED
@@ -25,6 +25,9 @@ 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'
|
28
|
+
require 'boxgrinder-build/util/permissions/fs-monitor'
|
29
|
+
require 'boxgrinder-build/util/permissions/fs-observer'
|
30
|
+
require 'boxgrinder-build/util/permissions/user-switcher'
|
28
31
|
|
29
32
|
module BoxGrinder
|
30
33
|
class Appliance
|
@@ -72,7 +75,7 @@ module BoxGrinder
|
|
72
75
|
|
73
76
|
if delivery_selected?
|
74
77
|
delivery_plugin, delivery_plugin_info = PluginManager.instance.initialize_plugin(:delivery, @config.delivery)
|
75
|
-
# Here we need to specify
|
78
|
+
# Here we need to specify additionally the type of the plugin, as some delivery plugins
|
76
79
|
# can have multiple types of delivery implemented. See s3-plugin.rb for example.
|
77
80
|
initialize_plugin(delivery_plugin, delivery_plugin_info, :type => @config.delivery)
|
78
81
|
end
|
@@ -118,7 +121,14 @@ module BoxGrinder
|
|
118
121
|
|
119
122
|
def execute_plugin_chain
|
120
123
|
@log.info "Building '#{@appliance_config.name}' appliance for #{@appliance_config.hardware.arch} architecture."
|
121
|
-
|
124
|
+
|
125
|
+
@plugin_chain.each do |p|
|
126
|
+
if @config.change_to_user
|
127
|
+
execute_with_userchange(p)
|
128
|
+
else
|
129
|
+
execute_without_userchange(p)
|
130
|
+
end
|
131
|
+
end
|
122
132
|
end
|
123
133
|
|
124
134
|
# This creates the appliance by executing the plugin chain.
|
@@ -127,7 +137,7 @@ module BoxGrinder
|
|
127
137
|
# and every plugin in the chain is initialized and validated. The next step
|
128
138
|
# is the execution of the plugin chain, step by step.
|
129
139
|
#
|
130
|
-
# Below you can find the whole process of
|
140
|
+
# Below you can find the whole process of bootstrapping a plugin.
|
131
141
|
#
|
132
142
|
# Call Scope
|
133
143
|
# ------------------------------------------
|
@@ -178,31 +188,23 @@ module BoxGrinder
|
|
178
188
|
|
179
189
|
@log.debug "#{plugin.plugin_info[:type].to_s.capitalize} plugin executed."
|
180
190
|
end
|
181
|
-
if plugin.plugin_info[:type] == :os
|
182
|
-
FileUtils.chown_R(@config.uid, @config.gid, File.join(@config.dir.root, @config.dir.build))
|
183
|
-
@log.debug "Lowering from root to user."
|
184
|
-
change_user(@config.uid, @config.gid)
|
185
|
-
end
|
186
191
|
end
|
187
192
|
|
188
|
-
|
189
|
-
begin
|
190
|
-
if Process::Sys.respond_to?(:setresgid) && Process::Sys.respond_to?(:setresuid)
|
191
|
-
Process::Sys.setresgid(g, g, g)
|
192
|
-
Process::Sys.setresuid(u, u, u)
|
193
|
-
return
|
194
|
-
end
|
195
|
-
rescue NotImplementedError
|
196
|
-
end
|
193
|
+
private
|
197
194
|
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
rescue NotImplementedError
|
195
|
+
def execute_with_userchange(p)
|
196
|
+
# Set ids to root if the next plugin requires root permissions
|
197
|
+
uid, gid = p[:plugin].plugin_info[:require_root] ? [0, 0] : [@config.uid, @config.gid]
|
198
|
+
|
199
|
+
UserSwitcher.change_user(uid, gid) do
|
200
|
+
execute_plugin(p[:plugin], p[:param])
|
205
201
|
end
|
202
|
+
# Trigger ownership change before next plugin
|
203
|
+
FSMonitor.instance.trigger
|
204
|
+
end
|
205
|
+
|
206
|
+
def execute_without_userchange(p)
|
207
|
+
execute_plugin(p[:plugin], p[:param])
|
206
208
|
end
|
207
209
|
end
|
208
210
|
end
|
@@ -191,8 +191,8 @@ module BoxGrinder
|
|
191
191
|
:endpoint => 'ec2.sa-east-1.amazonaws.com',
|
192
192
|
:location => 'sa-east-1',
|
193
193
|
:kernel => {
|
194
|
-
:i386 => {:aki => 'aki-
|
195
|
-
:x86_64 => {:aki => 'aki-
|
194
|
+
:i386 => {:aki => 'aki-863ce39b'},
|
195
|
+
:x86_64 => {:aki => 'aki-d63ce3cb'}
|
196
196
|
}
|
197
197
|
}
|
198
198
|
}
|
@@ -27,7 +27,7 @@ require 'timeout'
|
|
27
27
|
module BoxGrinder
|
28
28
|
class GuestFSHelper
|
29
29
|
def initialize(disks, appliance_config, config, options = {})
|
30
|
-
@disks = disks
|
30
|
+
@disks = Array(disks)
|
31
31
|
@appliance_config = appliance_config
|
32
32
|
@config = config
|
33
33
|
@log = options[:log] || LogHelper.new
|
@@ -127,8 +127,8 @@ module BoxGrinder
|
|
127
127
|
:endpoint => 's3-sa-east-1.amazonaws.com',
|
128
128
|
:location => 'sa-east-1',
|
129
129
|
:kernel => {
|
130
|
-
:i386 => {:aki => 'aki-
|
131
|
-
:x86_64 => {:aki => 'aki-
|
130
|
+
:i386 => {:aki => 'aki-863ce39b'},
|
131
|
+
:x86_64 => {:aki => 'aki-d63ce3cb'}
|
132
132
|
}
|
133
133
|
}
|
134
134
|
}
|
@@ -32,7 +32,7 @@ module BoxGrinder
|
|
32
32
|
TIMEOUT = 1000 #seconds
|
33
33
|
EC2_HOSTNAME_LOOKUP_TIMEOUT = 10
|
34
34
|
|
35
|
-
plugin :type => :delivery, :name => :ebs, :full_name => "Elastic Block Storage"
|
35
|
+
plugin :type => :delivery, :name => :ebs, :full_name => "Elastic Block Storage", :require_root => true
|
36
36
|
|
37
37
|
def validate
|
38
38
|
@ec2_endpoints = EC2Helper::endpoints
|
@@ -52,7 +52,7 @@ module BoxGrinder
|
|
52
52
|
def hash_to_request(h)
|
53
53
|
body = ""
|
54
54
|
|
55
|
-
h.each do |k, v|
|
55
|
+
h.sort.each do |k, v|
|
56
56
|
body << "#{k} #{v.to_s}\n"
|
57
57
|
end
|
58
58
|
|
@@ -205,7 +205,7 @@ module BoxGrinder
|
|
205
205
|
@log.info "Server was registered with '#{ret['name']}' name as '#{ret['server']}' UUID. Use web UI or API tools to start your server."
|
206
206
|
rescue => e
|
207
207
|
@log.error e.info
|
208
|
-
raise PluginError, "An error
|
208
|
+
raise PluginError, "An error occurred while creating the server, #{e.message}. See logs for more info."
|
209
209
|
end
|
210
210
|
end
|
211
211
|
end
|
@@ -68,12 +68,12 @@ module BoxGrinder
|
|
68
68
|
|
69
69
|
if @previous_plugin_info[:type] == :platform
|
70
70
|
case @previous_plugin_info[:name]
|
71
|
-
when :ec2
|
71
|
+
when :ec2
|
72
72
|
disk_format = :ami
|
73
73
|
container_format = :ami
|
74
|
-
when :vmware
|
74
|
+
when :vmware
|
75
75
|
disk_format = :vmdk
|
76
|
-
when :virtualbox
|
76
|
+
when :virtualbox
|
77
77
|
disk_format = :vmdk
|
78
78
|
end
|
79
79
|
end
|
@@ -75,7 +75,7 @@ module BoxGrinder
|
|
75
75
|
# If there is an existing bucket, determine whether its location_constraint matches the region selected
|
76
76
|
if existing_bucket = asset_bucket(false)
|
77
77
|
raise PluginValidationError, "Existing bucket #{@plugin_config['bucket']} has a location constraint that does not match the region selected. " <<
|
78
|
-
|
78
|
+
"AMI region and bucket location constraint must match." unless constraint_equal?(@plugin_config['region'], existing_bucket.location_constraint)
|
79
79
|
end
|
80
80
|
end
|
81
81
|
|
@@ -175,7 +175,16 @@ module BoxGrinder
|
|
175
175
|
def upload_image(ami_dir)
|
176
176
|
@log.info "Uploading #{@appliance_config.name} AMI to bucket '#{@plugin_config['bucket']}'..."
|
177
177
|
|
178
|
-
|
178
|
+
endpoint = @plugin_config['url'] || "http://#{@s3_endpoints[@plugin_config['region']][:endpoint]}"
|
179
|
+
|
180
|
+
cmd_str = "euca-upload-bundle " <<
|
181
|
+
"-U #{endpoint} " <<
|
182
|
+
"-b #{@plugin_config['bucket']}/#{ami_dir} " <<
|
183
|
+
"-m #{@ami_manifest} " <<
|
184
|
+
"-a #{@plugin_config['access_key']} " <<
|
185
|
+
"-s #{@plugin_config['secret_access_key']}"
|
186
|
+
|
187
|
+
@exec_helper.execute(cmd_str, :redacted => [@plugin_config['access_key'], @plugin_config['secret_access_key']])
|
179
188
|
end
|
180
189
|
|
181
190
|
def register_image(ami_manifest_key)
|
@@ -212,21 +221,18 @@ module BoxGrinder
|
|
212
221
|
|
213
222
|
@log.info "Determining snapshot name"
|
214
223
|
snapshot = 1
|
215
|
-
while @s3helper.stub_s3obj(@bucket, "#{base_path}-
|
224
|
+
while @s3helper.stub_s3obj(@bucket, "#{base_path}-snapshot-#{snapshot}/#{@appliance_config.hardware.arch}/").exists?
|
216
225
|
snapshot += 1
|
217
226
|
end
|
218
227
|
# Reuse the last key (if there was one)
|
219
228
|
snapshot -=1 if snapshot > 1 and @plugin_config['overwrite']
|
220
229
|
|
221
|
-
"#{base_path}-
|
230
|
+
"#{base_path}-snapshot-#{snapshot}/#{@appliance_config.hardware.arch}"
|
222
231
|
end
|
223
232
|
|
224
|
-
#US constraint is often represented as '' or nil
|
225
|
-
def constraint_equal?(
|
226
|
-
[
|
227
|
-
a == b
|
233
|
+
# US default constraint is often represented as '' or nil
|
234
|
+
def constraint_equal?(region, constraint)
|
235
|
+
[region, constraint].collect{ |v| v.nil? || v == '' ? 'us-east-1' : v }.reduce(:==)
|
228
236
|
end
|
229
|
-
|
230
237
|
end
|
231
238
|
end
|
232
|
-
|