boxgrinder-build 0.9.8 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. data/CHANGELOG +15 -0
  2. data/Manifest +7 -22
  3. data/Rakefile +3 -1
  4. data/bin/boxgrinder-build +1 -1
  5. data/boxgrinder-build.gemspec +17 -13
  6. data/integ/appliances/jeos-centos6.appl +4 -0
  7. data/lib/boxgrinder-build/appliance.rb +61 -23
  8. data/lib/boxgrinder-build/helpers/ec2-helper.rb +18 -0
  9. data/lib/boxgrinder-build/helpers/linux-helper.rb +41 -2
  10. data/lib/boxgrinder-build/helpers/plugin-helper.rb +3 -0
  11. data/lib/boxgrinder-build/helpers/s3-helper.rb +18 -0
  12. data/lib/boxgrinder-build/helpers/sftp-helper.rb +124 -0
  13. data/lib/boxgrinder-build/managers/plugin-manager.rb +5 -3
  14. data/lib/boxgrinder-build/plugins/base-plugin.rb +2 -22
  15. data/lib/boxgrinder-build/plugins/delivery/ebs/ebs-plugin.rb +26 -15
  16. data/lib/boxgrinder-build/plugins/delivery/elastichosts/elastichosts-plugin.rb +2 -1
  17. data/lib/boxgrinder-build/plugins/delivery/libvirt/libvirt-capabilities.rb +164 -0
  18. data/lib/boxgrinder-build/plugins/delivery/libvirt/libvirt-plugin.rb +313 -0
  19. data/lib/boxgrinder-build/plugins/delivery/local/local-plugin.rb +2 -1
  20. data/lib/boxgrinder-build/plugins/delivery/openstack/openstack-plugin.rb +133 -0
  21. data/lib/boxgrinder-build/plugins/delivery/s3/s3-plugin.rb +15 -2
  22. data/lib/boxgrinder-build/plugins/delivery/sftp/sftp-plugin.rb +20 -106
  23. data/lib/boxgrinder-build/plugins/os/centos/centos-plugin.rb +3 -3
  24. data/lib/boxgrinder-build/plugins/os/fedora/fedora-plugin.rb +2 -1
  25. data/lib/boxgrinder-build/plugins/os/rhel/rhel-plugin.rb +2 -1
  26. data/lib/boxgrinder-build/plugins/os/rpm-based/rpm-based-os-plugin.rb +6 -64
  27. data/lib/boxgrinder-build/plugins/os/rpm-based/rpm-dependency-validator.rb +2 -1
  28. data/lib/boxgrinder-build/plugins/os/sl/sl-plugin.rb +1 -2
  29. data/lib/boxgrinder-build/plugins/platform/ec2/ec2-plugin.rb +15 -1
  30. data/lib/boxgrinder-build/plugins/platform/virtualbox/virtualbox-plugin.rb +2 -1
  31. data/lib/boxgrinder-build/plugins/platform/virtualpc/virtualpc-plugin.rb +58 -0
  32. data/lib/boxgrinder-build/plugins/platform/vmware/vmware-plugin.rb +2 -1
  33. data/rubygem-boxgrinder-build.spec +25 -1
  34. data/spec/appliance-spec.rb +1 -58
  35. data/spec/helpers/linux-helper-spec.rb +70 -0
  36. data/spec/managers/plugin-manager-spec.rb +4 -13
  37. data/spec/plugins/delivery/ebs/ebs-plugin-spec.rb +6 -14
  38. data/spec/plugins/delivery/elastichosts/elastichosts-plugin-spec.rb +5 -6
  39. data/spec/plugins/delivery/libvirt/libvirt-plugin-spec.rb +300 -0
  40. data/spec/plugins/delivery/libvirt/libvirt_modified.xml +25 -0
  41. data/spec/plugins/delivery/libvirt/libvirt_modify.sh +18 -0
  42. data/spec/plugins/delivery/libvirt/libvirt_test.xml +24 -0
  43. data/spec/plugins/delivery/local/local-plugin-spec.rb +3 -6
  44. data/spec/plugins/delivery/openstack/openstack-plugin-spec.rb +103 -0
  45. data/spec/plugins/delivery/s3/s3-plugin-spec.rb +16 -5
  46. data/spec/plugins/os/rpm-based/rpm-based-os-plugin-spec.rb +2 -80
  47. data/spec/plugins/platform/ec2/ec2-plugin-spec.rb +15 -1
  48. data/spec/plugins/platform/virtualbox/virtualbox-plugin-spec.rb +6 -6
  49. data/spec/plugins/platform/virtualpc/virtualpc-plugin-spec.rb +90 -0
  50. data/spec/plugins/platform/vmware/vmware-plugin-spec.rb +5 -9
  51. data/spec/rspec-plugin-helper.rb +47 -0
  52. metadata +54 -10
data/CHANGELOG CHANGED
@@ -1,3 +1,18 @@
1
+ v0.10.0
2
+
3
+ * [BGBUILD-313] boxgrinder build fails to build ec2 image if ec2-user already exists
4
+ * [BGBUILD-318] Add support for us-west-2 region
5
+ * [BGBUILD-308] Clearer error message when unrecognised file extension is used
6
+ * [BGBUILD-322] Allow selection of kernel and ramdisk for ec2 and ebs plugins
7
+ * [BGBUILD-302] Add support for VirtualPC platform
8
+ * [BGBUILD-195] Add support for OpenStack
9
+ * [BGBUILD-304] Standarize plugin callbacks
10
+ * [BGBUILD-325] Remove kickstart support
11
+ * [BGBUILD-323] Invalid kernel version recognition makes recreating initrd impossible
12
+ * [BGBUILD-326] Ensure building from root directory is successful
13
+ * [BGBUILD-211] Support for registering appliances with libvirt
14
+ * [BGBUILD-331] Add support for sa-east-1 EC2 region
15
+
1
16
  v0.9.8
2
17
 
3
18
  * [BGBUILD-312] Only use root privileges when necessary
data/Manifest CHANGED
@@ -8,6 +8,7 @@ boxgrinder-build.gemspec
8
8
  integ/appliances/gnome-fedora.appl
9
9
  integ/appliances/jeos-centos5-files.appl
10
10
  integ/appliances/jeos-centos5.appl
11
+ integ/appliances/jeos-centos6.appl
11
12
  integ/appliances/jeos-f15.appl
12
13
  integ/appliances/jeos-f16-files.appl
13
14
  integ/appliances/jeos-f16.appl
@@ -41,11 +42,15 @@ lib/boxgrinder-build/helpers/package-helper.rb
41
42
  lib/boxgrinder-build/helpers/plugin-helper.rb
42
43
  lib/boxgrinder-build/helpers/qemu.wrapper
43
44
  lib/boxgrinder-build/helpers/s3-helper.rb
45
+ lib/boxgrinder-build/helpers/sftp-helper.rb
44
46
  lib/boxgrinder-build/managers/plugin-manager.rb
45
47
  lib/boxgrinder-build/plugins/base-plugin.rb
46
48
  lib/boxgrinder-build/plugins/delivery/ebs/ebs-plugin.rb
47
49
  lib/boxgrinder-build/plugins/delivery/elastichosts/elastichosts-plugin.rb
50
+ lib/boxgrinder-build/plugins/delivery/libvirt/libvirt-capabilities.rb
51
+ lib/boxgrinder-build/plugins/delivery/libvirt/libvirt-plugin.rb
48
52
  lib/boxgrinder-build/plugins/delivery/local/local-plugin.rb
53
+ lib/boxgrinder-build/plugins/delivery/openstack/openstack-plugin.rb
49
54
  lib/boxgrinder-build/plugins/delivery/s3/s3-plugin.rb
50
55
  lib/boxgrinder-build/plugins/delivery/s3/src/cert-ec2.pem
51
56
  lib/boxgrinder-build/plugins/delivery/sftp/sftp-plugin.rb
@@ -67,6 +72,7 @@ lib/boxgrinder-build/plugins/platform/ec2/src/ifcfg-eth0
67
72
  lib/boxgrinder-build/plugins/platform/ec2/src/menu.lst
68
73
  lib/boxgrinder-build/plugins/platform/ec2/src/rc_local
69
74
  lib/boxgrinder-build/plugins/platform/virtualbox/virtualbox-plugin.rb
75
+ lib/boxgrinder-build/plugins/platform/virtualpc/virtualpc-plugin.rb
70
76
  lib/boxgrinder-build/plugins/platform/vmware/src/README-enterprise
71
77
  lib/boxgrinder-build/plugins/platform/vmware/src/README-personal
72
78
  lib/boxgrinder-build/plugins/platform/vmware/src/base.vmdk
@@ -81,25 +87,4 @@ spec/helpers/image-helper-spec.rb
81
87
  spec/helpers/linux-helper-spec.rb
82
88
  spec/helpers/package-helper-spec.rb
83
89
  spec/helpers/plugin-helper-spec.rb
84
- spec/helpers/s3-helper-spec.rb
85
- spec/managers/plugin-manager-spec.rb
86
- spec/plugins/base-plugin-spec.rb
87
- spec/plugins/delivery/ebs/ebs-plugin-spec.rb
88
- spec/plugins/delivery/ebs/ebs.yaml
89
- spec/plugins/delivery/elastichosts/elastichosts-plugin-spec.rb
90
- spec/plugins/delivery/local/local-plugin-spec.rb
91
- spec/plugins/delivery/s3/s3-plugin-spec.rb
92
- spec/plugins/delivery/sftp/sftp-plugin-spec.rb
93
- spec/plugins/os/centos/centos-plugin-spec.rb
94
- spec/plugins/os/fedora/fedora-plugin-spec.rb
95
- spec/plugins/os/rhel/rhel-plugin-spec.rb
96
- spec/plugins/os/rpm-based/kickstart-spec.rb
97
- spec/plugins/os/rpm-based/rpm-based-os-plugin-spec.rb
98
- spec/plugins/os/rpm-based/rpm-dependency-validator-spec.rb
99
- spec/plugins/os/rpm-based/src/jeos-f13-plain.ks
100
- spec/plugins/os/rpm-based/src/jeos-f13-without-version.ks
101
- spec/plugins/os/rpm-based/src/jeos-f13.ks
102
- spec/plugins/os/sl/sl-plugin-spec.rb
103
- spec/plugins/platform/ec2/ec2-plugin-spec.rb
104
- spec/plugins/platform/virtualbox/virtualbox-plugin-spec.rb
105
- spec/plugins/platform/vmware/vmware-plugin-spec.rb
90
+ spec/helpers/s3-helper-spe
data/Rakefile CHANGED
@@ -30,7 +30,9 @@ Echoe.new("boxgrinder-build") do |p|
30
30
  "boxgrinder-core ~>0.3.0",
31
31
  'aws-sdk >=1.1.1', # EBS and S3
32
32
  'net-sftp', 'net-ssh', 'progressbar', # SFTP
33
- 'rest-client' # ElasticHosts
33
+ 'rest-client', # ElasticHosts
34
+ 'nokogiri',
35
+ 'builder'
34
36
  ]
35
37
  end
36
38
 
data/bin/boxgrinder-build CHANGED
@@ -39,7 +39,7 @@ ARGV_DUP = ARGV.clone
39
39
 
40
40
  def validate_hash_option(options, name, value)
41
41
  value.each do |entry|
42
- if entry =~ /^(\S+):(\S+)$/
42
+ if entry =~ /^(\S+?):(\S+)$/
43
43
 
44
44
  k = $1.strip
45
45
  v = $2.strip
@@ -1,27 +1,25 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
3
  Gem::Specification.new do |s|
4
- s.name = %q{boxgrinder-build}
5
- s.version = "0.9.8"
4
+ s.name = "boxgrinder-build"
5
+ s.version = "0.10.0"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Marek Goldmann"]
9
- s.date = %q{2011-11-15}
10
- s.default_executable = %q{boxgrinder-build}
11
- s.description = %q{A tool for creating appliances from simple plain text files for various virtual environments.}
12
- s.email = %q{info@boxgrinder.org}
9
+ s.date = "2011-12-19"
10
+ s.description = "A tool for creating appliances from simple plain text files for various virtual environments."
11
+ s.email = "info@boxgrinder.org"
13
12
  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/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/gnome-fedora.appl", "integ/appliances/jeos-centos5-files.appl", "integ/appliances/jeos-centos5.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/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
- s.homepage = %q{http://boxgrinder.org/}
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", "boxgrinder-build.gemspec"]
15
+ s.homepage = "http://boxgrinder.org/"
17
16
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Boxgrinder-build", "--main", "README.md"]
18
17
  s.require_paths = ["lib"]
19
- s.rubyforge_project = %q{BoxGrinder Build}
20
- s.rubygems_version = %q{1.3.7}
21
- s.summary = %q{A tool for creating appliances from simple plain text files for various virtual environments.}
18
+ s.rubyforge_project = "BoxGrinder Build"
19
+ s.rubygems_version = "1.8.11"
20
+ s.summary = "A tool for creating appliances from simple plain text files for various virtual environments."
22
21
 
23
22
  if s.respond_to? :specification_version then
24
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
25
23
  s.specification_version = 3
26
24
 
27
25
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
@@ -31,6 +29,8 @@ Gem::Specification.new do |s|
31
29
  s.add_runtime_dependency(%q<net-ssh>, [">= 0"])
32
30
  s.add_runtime_dependency(%q<progressbar>, [">= 0"])
33
31
  s.add_runtime_dependency(%q<rest-client>, [">= 0"])
32
+ s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
33
+ s.add_runtime_dependency(%q<builder>, [">= 0"])
34
34
  else
35
35
  s.add_dependency(%q<boxgrinder-core>, ["~> 0.3.0"])
36
36
  s.add_dependency(%q<aws-sdk>, [">= 1.1.1"])
@@ -38,6 +38,8 @@ Gem::Specification.new do |s|
38
38
  s.add_dependency(%q<net-ssh>, [">= 0"])
39
39
  s.add_dependency(%q<progressbar>, [">= 0"])
40
40
  s.add_dependency(%q<rest-client>, [">= 0"])
41
+ s.add_dependency(%q<nokogiri>, [">= 0"])
42
+ s.add_dependency(%q<builder>, [">= 0"])
41
43
  end
42
44
  else
43
45
  s.add_dependency(%q<boxgrinder-core>, ["~> 0.3.0"])
@@ -46,5 +48,7 @@ Gem::Specification.new do |s|
46
48
  s.add_dependency(%q<net-ssh>, [">= 0"])
47
49
  s.add_dependency(%q<progressbar>, [">= 0"])
48
50
  s.add_dependency(%q<rest-client>, [">= 0"])
51
+ s.add_dependency(%q<nokogiri>, [">= 0"])
52
+ s.add_dependency(%q<builder>, [">= 0"])
49
53
  end
50
54
  end
@@ -0,0 +1,4 @@
1
+ name: jeos-centos6
2
+ os:
3
+ name: centos
4
+ version: 6
@@ -37,26 +37,14 @@ module BoxGrinder
37
37
  @log = options[:log] || LogHelper.new(:level => @config.log_level)
38
38
  end
39
39
 
40
- # TODO: this is not very clean...
41
40
  def read_definition
42
- # first try to read as appliance definition file
43
41
  appliance_helper = ApplianceDefinitionHelper.new(:log => @log)
44
42
  appliance_helper.read_definitions(@appliance_definition)
45
43
 
46
44
  appliance_configs = appliance_helper.appliance_configs
47
45
  appliance_config = appliance_configs.first
48
46
 
49
- if appliance_config.nil?
50
- # Still nothing? Then try to read OS plugin specific format...
51
- PluginManager.instance.plugins[:os].each_value do |info|
52
- plugin = info[:class].new
53
- appliance_config = plugin.read_file(@appliance_definition) if plugin.respond_to?(:read_file)
54
- break unless appliance_config.nil?
55
- end
56
- appliance_configs = [appliance_config]
57
-
58
- raise ValidationError, "Couldn't read appliance definition file: #{File.basename(@appliance_definition)}." if appliance_config.nil?
59
- end
47
+ raise ValidationError, "Ensure your appliance definition file has a '.appl' extension: #{File.basename(@appliance_definition)}." if appliance_config.nil?
60
48
 
61
49
  appliance_config_helper = ApplianceConfigHelper.new(appliance_configs)
62
50
  @appliance_config = appliance_config_helper.merge(appliance_config.clone.init_arch).initialize_paths
@@ -65,8 +53,8 @@ module BoxGrinder
65
53
  def validate_definition
66
54
  os_plugin = PluginManager.instance.plugins[:os][@appliance_config.os.name.to_sym]
67
55
 
68
- raise "Not supported operating system selected: #{@appliance_config.os.name}. Make sure you have installed right operating system plugin, see http://boxgrinder.org/tutorials/boxgrinder-build-plugins/#Operating_system_plugins. Supported OSes are: #{PluginManager.instance.plugins[:os].keys.join(", ")}" if os_plugin.nil?
69
- raise "Not supported operating system version selected: #{@appliance_config.os.version}. Supported versions are: #{os_plugin[:versions].join(", ")}" unless @appliance_config.os.version.nil? or os_plugin[:versions].include?(@appliance_config.os.version)
56
+ raise "Unsupported operating system selected: #{@appliance_config.os.name}. Make sure you have installed right operating system plugin, see http://boxgrinder.org/tutorials/boxgrinder-build-plugins/#Operating_system_plugins. Supported OSes are: #{PluginManager.instance.plugins[:os].keys.join(", ")}" if os_plugin.nil?
57
+ raise "Unsupported operating system version selected: #{@appliance_config.os.version}. Supported versions are: #{os_plugin[:versions].join(", ")}" unless @appliance_config.os.version.nil? or os_plugin[:versions].include?(@appliance_config.os.version)
70
58
  end
71
59
 
72
60
  # Here we initialize all required plugins and create a plugin chain.
@@ -75,23 +63,51 @@ module BoxGrinder
75
63
  @plugin_chain = []
76
64
 
77
65
  os_plugin, os_plugin_info = PluginManager.instance.initialize_plugin(:os, @appliance_config.os.name.to_sym)
78
- os_plugin.init(@config, @appliance_config, os_plugin_info, :log => @log)
79
-
80
- @plugin_chain << {:plugin => os_plugin, :param => @appliance_definition}
66
+ initialize_plugin(os_plugin, os_plugin_info)
81
67
 
82
68
  if platform_selected?
83
69
  platform_plugin, platform_plugin_info = PluginManager.instance.initialize_plugin(:platform, @config.platform)
84
- platform_plugin.init(@config, @appliance_config, platform_plugin_info, :log => @log, :previous_plugin => @plugin_chain.last[:plugin])
85
-
86
- @plugin_chain << {:plugin => platform_plugin}
70
+ initialize_plugin(platform_plugin, platform_plugin_info)
87
71
  end
88
72
 
89
73
  if delivery_selected?
90
74
  delivery_plugin, delivery_plugin_info = PluginManager.instance.initialize_plugin(:delivery, @config.delivery)
91
- delivery_plugin.init(@config, @appliance_config, delivery_plugin_info, :log => @log, :previous_plugin => @plugin_chain.last[:plugin], :type => @config.delivery)
75
+ # Here we need to specify additionaly the type of the plugin, as some delivery plugins
76
+ # can have multiple types of delivery implemented. See s3-plugin.rb for example.
77
+ initialize_plugin(delivery_plugin, delivery_plugin_info, :type => @config.delivery)
78
+ end
79
+ end
92
80
 
93
- @plugin_chain << {:plugin => delivery_plugin}
81
+ # Initializes the plugin by executing init, after_init, validate and after_validate methods.
82
+ #
83
+ # We can be sure only for init method because it is implemented internally in base-plugin.rb,
84
+ # for all other methods we need to check if they exist.
85
+ def initialize_plugin(plugin, plugin_info, options = {})
86
+ options = {
87
+ :log => @log
88
+ }.merge(options)
89
+
90
+ unless @plugin_chain.empty?
91
+ options.merge!(:previous_plugin => @plugin_chain.last[:plugin])
94
92
  end
93
+
94
+ plugin.init(@config, @appliance_config, plugin_info, options)
95
+
96
+ # Execute callbacks if implemented
97
+ #
98
+ # Order is very important
99
+ [:after_init, :validate, :after_validate].each do |callback|
100
+ plugin.send(callback) if plugin.respond_to?(callback)
101
+ end
102
+
103
+ param = nil
104
+
105
+ # For operating system plugins we need to inject appliance definition.
106
+ if plugin_info[:type] == :os
107
+ param = @appliance_definition
108
+ end
109
+
110
+ @plugin_chain << {:plugin => plugin, :param => param}
95
111
  end
96
112
 
97
113
  def remove_old_builds
@@ -105,6 +121,24 @@ module BoxGrinder
105
121
  @plugin_chain.each { |p| execute_plugin(p[:plugin], p[:param]) }
106
122
  end
107
123
 
124
+ # This creates the appliance by executing the plugin chain.
125
+ #
126
+ # Definition is read and validated. Afterwards a plugin chain is created
127
+ # and every plugin in the chain is initialized and validated. The next step
128
+ # is the execution of the plugin chain, step by step.
129
+ #
130
+ # Below you can find the whole process of bootstraping a plugin.
131
+ #
132
+ # Call Scope
133
+ # ------------------------------------------
134
+ # initialize required, internal
135
+ # init required, internal
136
+ # after_init optional, user implemented
137
+ # validate optional, user implemented
138
+ # after_validate optional, user implemented
139
+ # execute required, user implemented
140
+ # after_execute optional, user implemented
141
+ #
108
142
  def create
109
143
  @log.debug "Launching new build..."
110
144
  @log.trace "Used configuration: #{@config.to_yaml.gsub(/(\S*(key|account|cert|username|host|password)\S*).*:(.*)/, '\1' + ": <REDACTED>")}"
@@ -136,8 +170,12 @@ module BoxGrinder
136
170
  else
137
171
  @log.debug "Executing #{plugin.plugin_info[:type]} plugin..."
138
172
 
173
+ # Actually run the plugin
139
174
  param.nil? ? plugin.run : plugin.run(param)
140
175
 
176
+ # Run after_execute callback, if implemented
177
+ plugin.after_execute if plugin.respond_to?(:after_execute)
178
+
141
179
  @log.debug "#{plugin.plugin_info[:type].to_s.capitalize} plugin executed."
142
180
  end
143
181
  if plugin.plugin_info[:type] == :os
@@ -169,6 +169,15 @@ module BoxGrinder
169
169
  }
170
170
  },
171
171
 
172
+ 'us-west-2' => {
173
+ :endpoint => 'ec2.us-west-2.amazonaws.com',
174
+ :location => 'us-west-2',
175
+ :kernel => {
176
+ :i386 => {:aki => 'aki-dce26fec'},
177
+ :x86_64 => {:aki => 'aki-98e26fa8'}
178
+ }
179
+ },
180
+
172
181
  'us-east-1' => {
173
182
  :endpoint => 'ec2.amazonaws.com',
174
183
  :location => nil,
@@ -176,7 +185,16 @@ module BoxGrinder
176
185
  :i386 => {:aki => 'aki-407d9529'},
177
186
  :x86_64 => {:aki => 'aki-427d952b'}
178
187
  }
188
+ },
189
+
190
+ 'sa-east-1' => {
191
+ :endpoint => 'ec2.sa-east-1.amazonaws.com',
192
+ :location => 'sa-east-1',
193
+ :kernel => {
194
+ :i386 => {:aki => 'aki-803ce39d'},
195
+ :x86_64 => {:aki => 'aki-d03ce3cd'}
179
196
  }
197
+ }
180
198
  }
181
199
  end
182
200
  end
@@ -19,6 +19,39 @@
19
19
  require 'boxgrinder-core/helpers/log-helper'
20
20
 
21
21
  module BoxGrinder
22
+
23
+ # A class tha helps dealing with RPM version numbers
24
+ #
25
+ class RPMVersion
26
+ def split(version)
27
+ version_array = []
28
+
29
+ version.split('-').each do |v|
30
+ v.split('.').each { |nb| version_array << nb }
31
+ end
32
+
33
+ version_array
34
+ end
35
+
36
+ def compare(v1, v2)
37
+ s1 = split(v1)
38
+ s2 = split(v2)
39
+
40
+ for i in (0..s1.size-1)
41
+ cmp = (s1[i].to_i <=> s2[i].to_i)
42
+ return cmp unless cmp == 0
43
+ end
44
+
45
+ 0
46
+ end
47
+
48
+ # Returns newest version from the array
49
+ #
50
+ def newest(versions)
51
+ versions.sort { |x,y| compare(x,y) }.last
52
+ end
53
+ end
54
+
22
55
  class LinuxHelper
23
56
  def initialize(options = {})
24
57
  @log = options[:log] || LogHelper.new
@@ -60,11 +93,14 @@ module BoxGrinder
60
93
 
61
94
  def kernel_version(guestfs)
62
95
  kernel_versions = guestfs.ls("/lib/modules")
63
- version = kernel_versions.last
64
96
 
97
+ # By default use the latest available kernel...
98
+ version = RPMVersion.new.newest(kernel_versions)
99
+
100
+ # ...but prefer xen or PAE kernel over others
65
101
  if kernel_versions.size > 1
66
102
  kernel_versions.each do |v|
67
- if v.match(/PAE$/)
103
+ if v.match(/xen$/) or v.match(/PAE$/)
68
104
  version = v
69
105
  break
70
106
  end
@@ -80,6 +116,9 @@ module BoxGrinder
80
116
 
81
117
  def recreate_kernel_image(guestfs, modules = [])
82
118
  kernel_version = kernel_version(guestfs)
119
+
120
+ raise "Cannot find valid kernel installs in the appliance. Make sure you have your kernel installed in '/lib/modules'." if kernel_version.nil?
121
+
83
122
  kernel_image_name = kernel_image_name(guestfs)
84
123
 
85
124
  if guestfs.exists("/sbin/dracut") != 0
@@ -25,10 +25,13 @@ require 'boxgrinder-build/plugins/delivery/sftp/sftp-plugin'
25
25
  require 'boxgrinder-build/plugins/delivery/ebs/ebs-plugin'
26
26
  require 'boxgrinder-build/plugins/delivery/local/local-plugin'
27
27
  require 'boxgrinder-build/plugins/delivery/elastichosts/elastichosts-plugin'
28
+ require 'boxgrinder-build/plugins/delivery/openstack/openstack-plugin'
29
+ require 'boxgrinder-build/plugins/delivery/libvirt/libvirt-plugin'
28
30
 
29
31
  require 'boxgrinder-build/plugins/platform/vmware/vmware-plugin'
30
32
  require 'boxgrinder-build/plugins/platform/ec2/ec2-plugin'
31
33
  require 'boxgrinder-build/plugins/platform/virtualbox/virtualbox-plugin'
34
+ require 'boxgrinder-build/plugins/platform/virtualpc/virtualpc-plugin'
32
35
 
33
36
  require 'boxgrinder-build/plugins/os/centos/centos-plugin'
34
37
  require 'boxgrinder-build/plugins/os/rhel/rhel-plugin'
@@ -105,6 +105,15 @@ module BoxGrinder
105
105
  }
106
106
  },
107
107
 
108
+ 'us-west-2' => {
109
+ :endpoint => 's3-us-west-2.amazonaws.com',
110
+ :location => 'us-west-2',
111
+ :kernel => {
112
+ :i386 => {:aki => 'aki-dce26fec'},
113
+ :x86_64 => {:aki => 'aki-98e26fa8'}
114
+ }
115
+ },
116
+
108
117
  'us-east-1' => {
109
118
  :endpoint => 's3.amazonaws.com',
110
119
  :location => nil,
@@ -112,6 +121,15 @@ module BoxGrinder
112
121
  :i386 => {:aki => 'aki-407d9529'},
113
122
  :x86_64 => {:aki => 'aki-427d952b'}
114
123
  }
124
+ },
125
+
126
+ 'sa-east-1' => {
127
+ :endpoint => 's3-sa-east-1.amazonaws.com',
128
+ :location => 'sa-east-1',
129
+ :kernel => {
130
+ :i386 => {:aki => 'aki-803ce39d'},
131
+ :x86_64 => {:aki => 'aki-d03ce3cd'}
132
+ }
115
133
  }
116
134
  }
117
135