boxgrinder-build 0.10.0 → 0.10.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 +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
|
-
|