boxgrinder-build 0.9.3 → 0.9.4
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 +12 -0
- data/Manifest +6 -5
- data/README.md +1 -1
- data/Rakefile +13 -20
- data/boxgrinder-build.gemspec +7 -10
- data/lib/boxgrinder-build/helpers/aws-helper.rb +81 -0
- data/lib/boxgrinder-build/helpers/ec2-helper.rb +182 -0
- data/lib/boxgrinder-build/helpers/guestfs-helper.rb +5 -1
- data/lib/boxgrinder-build/helpers/s3-helper.rb +124 -0
- data/lib/boxgrinder-build/plugins/delivery/ebs/ebs-plugin.rb +95 -299
- data/lib/boxgrinder-build/plugins/delivery/elastichosts/elastichosts-plugin.rb +2 -1
- data/lib/boxgrinder-build/plugins/delivery/s3/s3-plugin.rb +67 -133
- data/lib/boxgrinder-build/plugins/os/rpm-based/rpm-based-os-plugin.rb +15 -14
- data/rubygem-boxgrinder-build.spec +23 -28
- data/spec/appliance-spec.rb +1 -0
- data/spec/helpers/augeas-helper-spec.rb +1 -0
- data/spec/helpers/ec2-helper-spec.rb +260 -0
- data/spec/helpers/guestfs-helper-spec.rb +34 -7
- data/spec/helpers/image-helper-spec.rb +1 -0
- data/spec/helpers/linux-helper-spec.rb +1 -0
- data/spec/helpers/package-helper-spec.rb +1 -0
- data/spec/helpers/plugin-helper-spec.rb +1 -0
- data/spec/helpers/s3-helper-spec.rb +168 -0
- data/spec/managers/plugin-manager-spec.rb +1 -0
- data/spec/plugins/base-plugin-spec.rb +1 -1
- data/spec/plugins/delivery/ebs/ebs-plugin-spec.rb +115 -204
- data/spec/plugins/delivery/elastichosts/elastichosts-plugin-spec.rb +5 -4
- data/spec/plugins/delivery/local/local-plugin-spec.rb +1 -0
- data/spec/plugins/delivery/s3/s3-plugin-spec.rb +143 -134
- data/spec/plugins/delivery/sftp/sftp-plugin-spec.rb +1 -0
- data/spec/plugins/os/centos/centos-plugin-spec.rb +1 -0
- data/spec/plugins/os/fedora/fedora-plugin-spec.rb +1 -0
- data/spec/plugins/os/rhel/rhel-plugin-spec.rb +1 -0
- data/spec/plugins/os/rpm-based/kickstart-spec.rb +5 -1
- data/spec/plugins/os/rpm-based/rpm-based-os-plugin-spec.rb +9 -7
- data/spec/plugins/os/rpm-based/rpm-dependency-validator-spec.rb +1 -0
- data/spec/plugins/os/sl/sl-plugin-spec.rb +1 -0
- data/spec/plugins/platform/ec2/ec2-plugin-spec.rb +1 -0
- data/spec/plugins/platform/virtualbox/virtualbox-plugin-spec.rb +1 -0
- data/spec/plugins/platform/vmware/vmware-plugin-spec.rb +1 -0
- metadata +17 -23
data/CHANGELOG
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
v0.9.4
|
2
|
+
|
3
|
+
* [BGBUILD-263] NoMethodError: undefined method `item' for nil:NilClass while creating EBS appliance
|
4
|
+
* [BGBUILD-246] Detect when insufficient system memory is available for standard libguestfs, and reduce allocation.
|
5
|
+
* [BGBUILD-269] RPM database is recreated after post section execution preventing installing RPM in post section
|
6
|
+
* [BGBUILD-273] Move to RSpec2
|
7
|
+
* [BGBUILD-272] Move from aws and amazon-ec2 to official aws-sdk gem
|
8
|
+
* [BGBUILD-238] Stop AWS gem warnings
|
9
|
+
* [BGBUILD-265] Resolve concurrency issues in S3 plugin for overwriting
|
10
|
+
* [BGBUILD-249] Warning from S3 AMI plugin that BG is attempting to create a bucket that already exists
|
11
|
+
* [BGBUILD-242] Additional EBS overwrite edge cases
|
12
|
+
|
1
13
|
v0.9.3
|
2
14
|
|
3
15
|
* [BGBUILD-232] boxgrinder doesn't validate config early enough
|
data/Manifest
CHANGED
@@ -28,12 +28,15 @@ integ/spec/modular-spec.rb
|
|
28
28
|
lib/boxgrinder-build.rb
|
29
29
|
lib/boxgrinder-build/appliance.rb
|
30
30
|
lib/boxgrinder-build/helpers/augeas-helper.rb
|
31
|
+
lib/boxgrinder-build/helpers/aws-helper.rb
|
32
|
+
lib/boxgrinder-build/helpers/ec2-helper.rb
|
31
33
|
lib/boxgrinder-build/helpers/guestfs-helper.rb
|
32
34
|
lib/boxgrinder-build/helpers/image-helper.rb
|
33
35
|
lib/boxgrinder-build/helpers/linux-helper.rb
|
34
36
|
lib/boxgrinder-build/helpers/package-helper.rb
|
35
37
|
lib/boxgrinder-build/helpers/plugin-helper.rb
|
36
38
|
lib/boxgrinder-build/helpers/qemu.wrapper
|
39
|
+
lib/boxgrinder-build/helpers/s3-helper.rb
|
37
40
|
lib/boxgrinder-build/managers/plugin-manager.rb
|
38
41
|
lib/boxgrinder-build/plugins/base-plugin.rb
|
39
42
|
lib/boxgrinder-build/plugins/delivery/ebs/ebs-plugin.rb
|
@@ -68,11 +71,13 @@ lib/boxgrinder-build/plugins/platform/vmware/vmware-plugin.rb
|
|
68
71
|
rubygem-boxgrinder-build.spec
|
69
72
|
spec/appliance-spec.rb
|
70
73
|
spec/helpers/augeas-helper-spec.rb
|
74
|
+
spec/helpers/ec2-helper-spec.rb
|
71
75
|
spec/helpers/guestfs-helper-spec.rb
|
72
76
|
spec/helpers/image-helper-spec.rb
|
73
77
|
spec/helpers/linux-helper-spec.rb
|
74
78
|
spec/helpers/package-helper-spec.rb
|
75
79
|
spec/helpers/plugin-helper-spec.rb
|
80
|
+
spec/helpers/s3-helper-spec.rb
|
76
81
|
spec/managers/plugin-manager-spec.rb
|
77
82
|
spec/plugins/base-plugin-spec.rb
|
78
83
|
spec/plugins/delivery/ebs/ebs-plugin-spec.rb
|
@@ -85,8 +90,4 @@ spec/plugins/os/centos/centos-plugin-spec.rb
|
|
85
90
|
spec/plugins/os/fedora/fedora-plugin-spec.rb
|
86
91
|
spec/plugins/os/rhel/rhel-plugin-spec.rb
|
87
92
|
spec/plugins/os/rpm-based/kickstart-spec.rb
|
88
|
-
spec/plugins/os/rpm-based/rpm-based-os-plugin-spec.rb
|
89
|
-
spec/plugins/os/rpm-based/rpm-dependency-validator-spec.rb
|
90
|
-
spec/plugins/os/rpm-based/src/jeos-f13-plain.ks
|
91
|
-
spec/plugins/os/rpm-based/src/jeos-f13-without-version.ks
|
92
|
-
spec/plugins/os/rpm-based
|
93
|
+
spec/plugins/os/rpm-based/rpm-based-os-plugin-spec.rb
|
data/README.md
CHANGED
@@ -129,6 +129,6 @@ Assuming that BoxGrinder had succeeded in building the prior image, the RAW file
|
|
129
129
|
|
130
130
|
-----------------------
|
131
131
|
|
132
|
-
setarch i386 boxgrinder
|
132
|
+
setarch i386 boxgrinder-build fedora-14.appl
|
133
133
|
|
134
134
|
Build an i386 appliance (on an x86_64 machine).
|
data/Rakefile
CHANGED
@@ -17,12 +17,7 @@
|
|
17
17
|
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
|
18
18
|
|
19
19
|
require 'rubygems'
|
20
|
-
|
21
|
-
begin
|
22
|
-
require 'rake/dsl'
|
23
|
-
rescue LoadError
|
24
|
-
end
|
25
|
-
|
20
|
+
require 'rspec/core/rake_task'
|
26
21
|
require 'echoe'
|
27
22
|
|
28
23
|
Echoe.new("boxgrinder-build") do |p|
|
@@ -33,36 +28,34 @@ Echoe.new("boxgrinder-build") do |p|
|
|
33
28
|
p.email = "info@boxgrinder.org"
|
34
29
|
p.runtime_dependencies = [
|
35
30
|
"boxgrinder-core ~>0.3.0",
|
36
|
-
'aws', # S3
|
37
|
-
'amazon-ec2', # EBS and S3
|
31
|
+
'aws-sdk', # EBS and S3
|
38
32
|
'net-sftp', 'net-ssh', 'progressbar', # SFTP
|
39
33
|
'rest-client' # ElasticHosts
|
40
34
|
]
|
41
35
|
end
|
42
36
|
|
43
37
|
desc "Run all integration tests"
|
44
|
-
|
45
|
-
t.libs.unshift "../boxgrinder-core/lib"
|
38
|
+
RSpec::Core::RakeTask.new('integ') do |t|
|
46
39
|
t.rcov = false
|
47
|
-
t.
|
48
|
-
t.
|
40
|
+
t.pattern = "integ/**/*-spec.rb"
|
41
|
+
t.rspec_opts = ['--colour', '--format', 'doc', '-b']
|
49
42
|
t.verbose = true
|
50
43
|
end
|
51
44
|
|
52
45
|
desc "Run all tests"
|
53
|
-
|
54
|
-
t.
|
46
|
+
RSpec::Core::RakeTask.new('spec') do |t|
|
47
|
+
t.ruby_opts = "-I ../boxgrinder-core/lib"
|
55
48
|
t.rcov = false
|
56
|
-
t.
|
57
|
-
t.
|
49
|
+
t.pattern = "spec/**/*-spec.rb"
|
50
|
+
t.rspec_opts = ['--colour', '--format', 'doc', '-b']
|
58
51
|
t.verbose = true
|
59
52
|
end
|
60
53
|
|
61
54
|
desc "Run all tests and generate code coverage report"
|
62
|
-
|
63
|
-
t.
|
64
|
-
t.
|
65
|
-
t.
|
55
|
+
RSpec::Core::RakeTask.new('spec:coverage') do |t|
|
56
|
+
t.ruby_opts = "-I ../boxgrinder-core/lib"
|
57
|
+
t.pattern = "spec/**/*-spec.rb"
|
58
|
+
t.rspec_opts = ['--colour', '--format', 'html', '--out', 'pkg/rspec_report.html', '-b']
|
66
59
|
t.rcov = true
|
67
60
|
t.rcov_opts = ['--exclude', 'spec,teamcity/*,/usr/lib/ruby/,.gem/ruby,/boxgrinder-core/,/gems/']
|
68
61
|
t.verbose = true
|
data/boxgrinder-build.gemspec
CHANGED
@@ -2,17 +2,17 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{boxgrinder-build}
|
5
|
-
s.version = "0.9.
|
5
|
+
s.version = "0.9.4"
|
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-08-17}
|
10
10
|
s.default_executable = %q{boxgrinder-build}
|
11
11
|
s.description = %q{A tool for creating appliances from simple plain text files for various virtual environments.}
|
12
12
|
s.email = %q{info@boxgrinder.org}
|
13
13
|
s.executables = ["boxgrinder-build"]
|
14
|
-
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/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/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/local/local-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/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"]
|
15
|
-
s.files = ["CHANGELOG", "LICENSE", "Manifest", "README.md", "Rakefile", "bin/boxgrinder-build", "boxgrinder-build.gemspec", "integ/appliances/_hardware_cpus.appl", "integ/appliances/_hardware_memory.appl", "integ/appliances/_hardware_partitions_home.appl", "integ/appliances/_hardware_partitions_root.appl", "integ/appliances/_os_password.appl", "integ/appliances/_packages_groups_base.appl", "integ/appliances/_packages_groups_core.appl", "integ/appliances/_packages_squid.appl", "integ/appliances/_packages_utils.appl", "integ/appliances/_repos_boxgrinder_permanent_noarch.appl", "integ/appliances/_repos_testlocal_ephemeral_noarch.appl", "integ/appliances/_test_base.appl", "integ/appliances/gnome-fedora.appl", "integ/appliances/jeos-centos.appl", "integ/appliances/jeos-fedora.appl", "integ/appliances/modular.appl", "integ/packages/ephemeral-repo-test-0.1-1.noarch.rpm", "integ/packages/local-repo-test.spec", "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/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/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/local/local-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/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/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/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/local/local-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/vmware/vmware-plugin-spec.rb"]
|
14
|
+
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/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/local/local-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/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"]
|
15
|
+
s.files = ["CHANGELOG", "LICENSE", "Manifest", "README.md", "Rakefile", "bin/boxgrinder-build", "boxgrinder-build.gemspec", "integ/appliances/_hardware_cpus.appl", "integ/appliances/_hardware_memory.appl", "integ/appliances/_hardware_partitions_home.appl", "integ/appliances/_hardware_partitions_root.appl", "integ/appliances/_os_password.appl", "integ/appliances/_packages_groups_base.appl", "integ/appliances/_packages_groups_core.appl", "integ/appliances/_packages_squid.appl", "integ/appliances/_packages_utils.appl", "integ/appliances/_repos_boxgrinder_permanent_noarch.appl", "integ/appliances/_repos_testlocal_ephemeral_noarch.appl", "integ/appliances/_test_base.appl", "integ/appliances/gnome-fedora.appl", "integ/appliances/jeos-centos.appl", "integ/appliances/jeos-fedora.appl", "integ/appliances/modular.appl", "integ/packages/ephemeral-repo-test-0.1-1.noarch.rpm", "integ/packages/local-repo-test.spec", "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/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/local/local-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/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/local/local-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/vmware/vmware-plugin-spec.rb"]
|
16
16
|
s.homepage = %q{http://boxgrinder.org/}
|
17
17
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Boxgrinder-build", "--main", "README.md"]
|
18
18
|
s.require_paths = ["lib"]
|
@@ -26,16 +26,14 @@ Gem::Specification.new do |s|
|
|
26
26
|
|
27
27
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
28
28
|
s.add_runtime_dependency(%q<boxgrinder-core>, ["~> 0.3.0"])
|
29
|
-
s.add_runtime_dependency(%q<aws>, [">= 0"])
|
30
|
-
s.add_runtime_dependency(%q<amazon-ec2>, [">= 0"])
|
29
|
+
s.add_runtime_dependency(%q<aws-sdk>, [">= 0"])
|
31
30
|
s.add_runtime_dependency(%q<net-sftp>, [">= 0"])
|
32
31
|
s.add_runtime_dependency(%q<net-ssh>, [">= 0"])
|
33
32
|
s.add_runtime_dependency(%q<progressbar>, [">= 0"])
|
34
33
|
s.add_runtime_dependency(%q<rest-client>, [">= 0"])
|
35
34
|
else
|
36
35
|
s.add_dependency(%q<boxgrinder-core>, ["~> 0.3.0"])
|
37
|
-
s.add_dependency(%q<aws>, [">= 0"])
|
38
|
-
s.add_dependency(%q<amazon-ec2>, [">= 0"])
|
36
|
+
s.add_dependency(%q<aws-sdk>, [">= 0"])
|
39
37
|
s.add_dependency(%q<net-sftp>, [">= 0"])
|
40
38
|
s.add_dependency(%q<net-ssh>, [">= 0"])
|
41
39
|
s.add_dependency(%q<progressbar>, [">= 0"])
|
@@ -43,8 +41,7 @@ Gem::Specification.new do |s|
|
|
43
41
|
end
|
44
42
|
else
|
45
43
|
s.add_dependency(%q<boxgrinder-core>, ["~> 0.3.0"])
|
46
|
-
s.add_dependency(%q<aws>, [">= 0"])
|
47
|
-
s.add_dependency(%q<amazon-ec2>, [">= 0"])
|
44
|
+
s.add_dependency(%q<aws-sdk>, [">= 0"])
|
48
45
|
s.add_dependency(%q<net-sftp>, [">= 0"])
|
49
46
|
s.add_dependency(%q<net-ssh>, [">= 0"])
|
50
47
|
s.add_dependency(%q<progressbar>, [">= 0"])
|
@@ -0,0 +1,81 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2010 Red Hat, Inc.
|
3
|
+
#
|
4
|
+
# This is free software; you can redistribute it and/or modify it
|
5
|
+
# under the terms of the GNU Lesser General Public License as
|
6
|
+
# published by the Free Software Foundation; either version 3 of
|
7
|
+
# the License, or (at your option) any later version.
|
8
|
+
#
|
9
|
+
# This software is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12
|
+
# Lesser General Public License for more details.
|
13
|
+
#
|
14
|
+
# You should have received a copy of the GNU Lesser General Public
|
15
|
+
# License along with this software; if not, write to the Free
|
16
|
+
# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
17
|
+
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
|
18
|
+
|
19
|
+
require 'aws-sdk'
|
20
|
+
|
21
|
+
module BoxGrinder
|
22
|
+
class AWSHelper
|
23
|
+
#Setting value of a key to nil in opts_defaults forces non-nil value of key in opts_in
|
24
|
+
def parse_opts(opts_in, opts_defaults)
|
25
|
+
diff_id = opts_in.keys - opts_defaults.keys
|
26
|
+
raise ArgumentError, "Unrecognised argument(s): #{diff_id.join(", ")}" if diff_id.any?
|
27
|
+
|
28
|
+
(opts_in.keys & opts_defaults.keys).each do |k|
|
29
|
+
raise ArgumentError, "Argument #{k.to_s} must not be nil" if opts_defaults[k] == nil and opts_in[k] == nil
|
30
|
+
end
|
31
|
+
|
32
|
+
(opts_defaults.keys - opts_in.keys).each do |k|
|
33
|
+
raise ArgumentError, "Argument #{k.to_s} must not be nil" if opts_defaults[k] == nil
|
34
|
+
opts_in.merge!(k => opts_defaults[k])
|
35
|
+
end
|
36
|
+
opts_in
|
37
|
+
end
|
38
|
+
|
39
|
+
def wait_with_timeout(cycle_seconds, timeout_seconds)
|
40
|
+
Timeout::timeout(timeout_seconds) do
|
41
|
+
while not yield
|
42
|
+
sleep cycle_seconds
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def select_aki(region, pattern)
|
48
|
+
candidates = region.images.with_owner('amazon').
|
49
|
+
filter('manifest-location','*pv-grub*').
|
50
|
+
sort().
|
51
|
+
reverse
|
52
|
+
|
53
|
+
candidates.each do |image|
|
54
|
+
return image.id if image.location =~ pattern
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
#Currently there is no API call for discovering S3 endpoint addresses
|
59
|
+
#but the base is presently the same as the EC2 endpoints, so this somewhat better
|
60
|
+
#than manually maintaining the data.
|
61
|
+
#S3 = /hd0-.*i386/, EBS = /hd00-.*i386/
|
62
|
+
def endpoints(service_name, aki_pattern)
|
63
|
+
endpoints = {}
|
64
|
+
AWS.memoize do
|
65
|
+
@ec2.regions.each do |region|
|
66
|
+
endpoints.merge!({
|
67
|
+
region.name => {
|
68
|
+
:endpoint => "#{service_name}.#{region.name}.amazonaws.com",
|
69
|
+
:location => region.name, #or alias?
|
70
|
+
:kernel => {
|
71
|
+
:i386 => select_aki(region, aki_pattern),
|
72
|
+
:x86_64 => select_aki(region, aki_pattern)
|
73
|
+
}
|
74
|
+
}
|
75
|
+
})
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,182 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2010 Red Hat, Inc.
|
3
|
+
#
|
4
|
+
# This is free software; you can redistribute it and/or modify it
|
5
|
+
# under the terms of the GNU Lesser General Public License as
|
6
|
+
# published by the Free Software Foundation; either version 3 of
|
7
|
+
# the License, or (at your option) any later version.
|
8
|
+
#
|
9
|
+
# This software is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12
|
+
# Lesser General Public License for more details.
|
13
|
+
#
|
14
|
+
# You should have received a copy of the GNU Lesser General Public
|
15
|
+
# License along with this software; if not, write to the Free
|
16
|
+
# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
17
|
+
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
|
18
|
+
|
19
|
+
require 'boxgrinder-build/helpers/aws-helper'
|
20
|
+
require 'aws-sdk'
|
21
|
+
require 'timeout'
|
22
|
+
|
23
|
+
module BoxGrinder
|
24
|
+
class EC2Helper < AWSHelper
|
25
|
+
|
26
|
+
DEF_POLL_FREQ = 1
|
27
|
+
DEF_TIMEOUT = 1000
|
28
|
+
HTTP_TIMEOUT = 10
|
29
|
+
|
30
|
+
def initialize(ec2, opts={})
|
31
|
+
raise ArgumentError, "ec2 argument must not be nil" if ec2.nil?
|
32
|
+
@ec2 = ec2
|
33
|
+
@log = opts[:log] || LogHelper.new
|
34
|
+
end
|
35
|
+
|
36
|
+
# Wait cycles
|
37
|
+
|
38
|
+
def wait_for_image_state(state, ami, opts={})
|
39
|
+
#First wait for the AMI to be confirmed to exist (after creating, an immediate query can cause an error)
|
40
|
+
opts = parse_opts(opts, {:frequency => DEF_POLL_FREQ, :timeout => DEF_TIMEOUT})
|
41
|
+
wait_with_timeout(opts[:frequency], opts[:timeout]){ ami.exists? }
|
42
|
+
wait_with_timeout(opts[:frequency], opts[:timeout]){ ami.state == state }
|
43
|
+
end
|
44
|
+
|
45
|
+
def wait_for_image_death(ami, opts={})
|
46
|
+
opts = parse_opts(opts, {:frequency => DEF_POLL_FREQ, :timeout => DEF_TIMEOUT})
|
47
|
+
wait_with_timeout(opts[:frequency], opts[:timeout]){ !ami.exists? }
|
48
|
+
rescue AWS::EC2::Errors::InvalidImageID::NotFound
|
49
|
+
end
|
50
|
+
|
51
|
+
def wait_for_instance_status(status, instance, opts={})
|
52
|
+
opts = parse_opts(opts, {:frequency => DEF_POLL_FREQ, :timeout => DEF_TIMEOUT})
|
53
|
+
wait_with_timeout(opts[:frequency], opts[:timeout]){ instance.status == status }
|
54
|
+
end
|
55
|
+
|
56
|
+
#Being serial shouldn't be much slower as we are blocked by the slowest stopper anyway
|
57
|
+
def wait_for_instance_death(instance, opts={})
|
58
|
+
wait_for_instance_status(:terminated, instance, opts) if instance.exists?
|
59
|
+
rescue AWS::EC2::Errors::InvalidInstanceID::NotFound
|
60
|
+
end
|
61
|
+
|
62
|
+
def wait_for_snapshot_status(status, snapshot, opts={})
|
63
|
+
opts = parse_opts(opts, {:frequency => DEF_POLL_FREQ, :timeout => DEF_TIMEOUT})
|
64
|
+
progress = -1
|
65
|
+
wait_with_timeout(opts[:frequency], opts[:timeout]) do
|
66
|
+
current_progress = snapshot.progress || 0
|
67
|
+
unless progress == current_progress
|
68
|
+
@log.info "Progress: #{current_progress}%"
|
69
|
+
progress = current_progress
|
70
|
+
end
|
71
|
+
snapshot.status == status
|
72
|
+
end
|
73
|
+
rescue Exception
|
74
|
+
@log.debug "Polling of snapshot #{snapshot.id} for status '#{status}' failed" unless snapshot.nil?
|
75
|
+
raise
|
76
|
+
end
|
77
|
+
|
78
|
+
def wait_for_volume_status(status, volume, opts={})
|
79
|
+
opts = parse_opts(opts, {:frequency => DEF_POLL_FREQ, :timeout => DEF_TIMEOUT})
|
80
|
+
wait_with_timeout(opts[:frequency], opts[:timeout]) do
|
81
|
+
volume.status == status
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
# EC2 meta-data queries
|
86
|
+
|
87
|
+
def self.get_meta_data(path)
|
88
|
+
timeout(HTTP_TIMEOUT) do
|
89
|
+
req = Net::HTTP::Get.new(path)
|
90
|
+
res = Net::HTTP.start('169.254.169.254', 80) {|http| http.request(req)}
|
91
|
+
return res.body if Net::HTTPSuccess
|
92
|
+
res.error!
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def self.current_availability_zone
|
97
|
+
get_meta_data('/latest/meta-data/placement/availability-zone/')
|
98
|
+
end
|
99
|
+
|
100
|
+
def self.current_instance_id
|
101
|
+
get_meta_data('/latest/meta-data/instance-id')
|
102
|
+
end
|
103
|
+
|
104
|
+
def self.availability_zone_to_region(availability_zone)
|
105
|
+
availability_zone.scan(/((\w+)-(\w+)-(\d+))/).flatten.first
|
106
|
+
end
|
107
|
+
|
108
|
+
# EC2 queries
|
109
|
+
|
110
|
+
def ami_by_name(name, account_number)
|
111
|
+
q = @ec2.images.with_owner(account_number).
|
112
|
+
filter("name", name)
|
113
|
+
return nil unless q.any?
|
114
|
+
q.first
|
115
|
+
end
|
116
|
+
|
117
|
+
def snapshot_by_id(snapshot_id)
|
118
|
+
q = @ec2.snapshots.filter('snapshot-id', snapshot_id)
|
119
|
+
return nil unless q.any?
|
120
|
+
q.first
|
121
|
+
end
|
122
|
+
|
123
|
+
def live_instances(ami)
|
124
|
+
q = @ec2.instances.filter('image-id', ami.id)
|
125
|
+
return q.select{|a| a.status != :terminated} if q.any?
|
126
|
+
nil
|
127
|
+
end
|
128
|
+
|
129
|
+
# EC2 Endpoints
|
130
|
+
|
131
|
+
def self.endpoints
|
132
|
+
SERVICES
|
133
|
+
end
|
134
|
+
|
135
|
+
SERVICES = {
|
136
|
+
'eu-west-1' => {
|
137
|
+
:endpoint => 'ec2.eu-west-1.amazonaws.com',
|
138
|
+
:location => 'EU',
|
139
|
+
:kernel => {
|
140
|
+
:i386 => {:aki => 'aki-4deec439'},
|
141
|
+
:x86_64 => {:aki => 'aki-4feec43b'}
|
142
|
+
}
|
143
|
+
},
|
144
|
+
|
145
|
+
'ap-southeast-1' => {
|
146
|
+
:endpoint => 'ec2.ap-southeast-1.amazonaws.com',
|
147
|
+
:location => 'ap-southeast-1',
|
148
|
+
:kernel => {
|
149
|
+
:i386 => {:aki => 'aki-13d5aa41'},
|
150
|
+
:x86_64 => {:aki => 'aki-11d5aa43'}
|
151
|
+
}
|
152
|
+
},
|
153
|
+
|
154
|
+
'ap-northeast-1' => {
|
155
|
+
:endpoint => 'ec2.ap-northeast-1.amazonaws.com',
|
156
|
+
:location => 'ap-northeast-1',
|
157
|
+
:kernel => {
|
158
|
+
:i386 => {:aki => 'aki-d209a2d3'},
|
159
|
+
:x86_64 => {:aki => 'aki-d409a2d5'}
|
160
|
+
}
|
161
|
+
},
|
162
|
+
|
163
|
+
'us-west-1' => {
|
164
|
+
:endpoint => 'ec2.us-west-1.amazonaws.com',
|
165
|
+
:location => 'us-west-1',
|
166
|
+
:kernel => {
|
167
|
+
:i386 => {:aki => 'aki-99a0f1dc'},
|
168
|
+
:x86_64 => {:aki => 'aki-9ba0f1de'}
|
169
|
+
}
|
170
|
+
},
|
171
|
+
|
172
|
+
'us-east-1' => {
|
173
|
+
:endpoint => 'ec2.amazonaws.com',
|
174
|
+
:location => '',
|
175
|
+
:kernel => {
|
176
|
+
:i386 => {:aki => 'aki-407d9529'},
|
177
|
+
:x86_64 => {:aki => 'aki-427d952b'}
|
178
|
+
}
|
179
|
+
}
|
180
|
+
}
|
181
|
+
end
|
182
|
+
end
|
@@ -132,6 +132,10 @@ module BoxGrinder
|
|
132
132
|
@guestfs.set_verbose(1)
|
133
133
|
@guestfs.set_trace(1)
|
134
134
|
|
135
|
+
# https://issues.jboss.org/browse/BGBUILD-246
|
136
|
+
memsize = ENV['LIBGUESTFS_MEMSIZE'].nil? ? 300 : ENV['LIBGUESTFS_MEMSIZE'].to_i
|
137
|
+
@guestfs.set_memsize(memsize)
|
138
|
+
|
135
139
|
# https://bugzilla.redhat.com/show_bug.cgi?id=502058
|
136
140
|
@guestfs.set_append("noapic")
|
137
141
|
|
@@ -291,4 +295,4 @@ module BoxGrinder
|
|
291
295
|
AugeasHelper.new(@guestfs, self, :log => @log).edit(&block)
|
292
296
|
end
|
293
297
|
end
|
294
|
-
end
|
298
|
+
end
|