boxgrinder-build 0.4.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +7 -0
- data/Manifest +0 -0
- data/Rakefile +11 -0
- data/bin/boxgrinder-build +33 -27
- data/boxgrinder-build.gemspec +38 -0
- data/lib/boxgrinder-build/appliance.rb +32 -41
- data/lib/boxgrinder-build/helpers/appliance-customize-helper.rb +3 -48
- data/lib/boxgrinder-build/helpers/guestfs-helper.rb +98 -12
- data/lib/boxgrinder-build/helpers/linux-helper.rb +69 -0
- data/lib/boxgrinder-build/helpers/package-helper.rb +20 -11
- data/lib/boxgrinder-build/helpers/plugin-helper.rb +32 -32
- data/lib/boxgrinder-build/managers/plugin-manager.rb +98 -0
- data/lib/boxgrinder-build/plugins/base-plugin.rb +70 -17
- data/spec/Rakefile +13 -0
- data/spec/appliance-spec.rb +195 -0
- data/spec/helpers/appliance-customize-helper-spec.rb +30 -0
- data/spec/helpers/guestfs-helper-spec.rb +129 -0
- data/spec/helpers/linux-helper-spec.rb +50 -0
- data/spec/helpers/package-helper-spec.rb +6 -0
- data/spec/helpers/plugin-helper-spec.rb +63 -0
- data/spec/managers/plugin-manager-spec.rb +27 -0
- data/spec/plugins/base-plugin-spec.rb +89 -0
- data/spec/rspec/src/appliances/jeos-f13.appl +27 -0
- metadata +60 -157
- data/docs/examples/appliances/appliances.appl +0 -5
- data/docs/examples/appliances/minimal.appl +0 -9
- data/docs/examples/appliances/mix.appl +0 -8
- data/docs/examples/appliances/packages.appl +0 -13
- data/docs/node-info/pom.xml +0 -31
- data/docs/node-info/src/main/webapp/META-INF/MANIFEST.MF +0 -3
- data/docs/node-info/src/main/webapp/WEB-INF/web.xml +0 -7
- data/docs/node-info/src/main/webapp/index.jsp +0 -70
- data/lib/boxgrinder-build/helpers/rake-helper.rb +0 -71
- data/lib/boxgrinder-build/managers/base-plugin-manager.rb +0 -62
- data/lib/boxgrinder-build/managers/delivery-plugin-manager.rb +0 -39
- data/lib/boxgrinder-build/managers/operating-system-plugin-manager.rb +0 -6
- data/lib/boxgrinder-build/managers/platform-plugin-manager.rb +0 -26
- data/lib/boxgrinder-build/plugins/delivery/base/base-delivery-plugin.rb +0 -43
- data/lib/boxgrinder-build/plugins/delivery/local/local-plugin.rb +0 -57
- data/lib/boxgrinder-build/plugins/delivery/s3/aws-helper.rb +0 -64
- data/lib/boxgrinder-build/plugins/delivery/s3/s3-plugin.rb +0 -190
- data/lib/boxgrinder-build/plugins/delivery/sftp/sftp-plugin.rb +0 -159
- data/lib/boxgrinder-build/plugins/os/base/kickstart.rb +0 -148
- data/lib/boxgrinder-build/plugins/os/base/rhel-based-os-plugin.rb +0 -51
- data/lib/boxgrinder-build/plugins/os/base/rpm-based-os-plugin.rb +0 -134
- data/lib/boxgrinder-build/plugins/os/base/src/appliance.ks.erb +0 -41
- data/lib/boxgrinder-build/plugins/os/base/src/base.repo +0 -4
- data/lib/boxgrinder-build/plugins/os/base/src/motd.init +0 -21
- data/lib/boxgrinder-build/plugins/os/base/validators/rpm-dependency-validator.rb +0 -162
- data/lib/boxgrinder-build/plugins/os/base-operating-system-plugin.rb +0 -37
- data/lib/boxgrinder-build/plugins/os/centos/centos-plugin.rb +0 -52
- data/lib/boxgrinder-build/plugins/os/fedora/fedora-plugin.rb +0 -74
- data/lib/boxgrinder-build/plugins/os/rhel/rhel-plugin.rb +0 -40
- data/lib/boxgrinder-build/plugins/platform/base-platform-plugin.rb +0 -37
- data/lib/boxgrinder-build/plugins/platform/ec2/ec2-plugin.rb +0 -332
- data/lib/boxgrinder-build/plugins/platform/ec2/src/f12/yum.conf +0 -24
- data/lib/boxgrinder-build/plugins/platform/ec2/src/f12-i386-boxgrinder.repo +0 -11
- data/lib/boxgrinder-build/plugins/platform/ec2/src/f12-x86_64-boxgrinder.repo +0 -11
- data/lib/boxgrinder-build/plugins/platform/ec2/src/fstab_32bit +0 -8
- data/lib/boxgrinder-build/plugins/platform/ec2/src/fstab_64bit +0 -8
- data/lib/boxgrinder-build/plugins/platform/ec2/src/ifcfg-eth0 +0 -7
- data/lib/boxgrinder-build/plugins/platform/ec2/src/rc_local +0 -29
- data/lib/boxgrinder-build/plugins/platform/vmware/src/README +0 -42
- data/lib/boxgrinder-build/plugins/platform/vmware/src/base.vmdk +0 -19
- data/lib/boxgrinder-build/plugins/platform/vmware/src/base.vmx +0 -45
- data/lib/boxgrinder-build/plugins/platform/vmware/vmware-plugin.rb +0 -181
- data/lib/boxgrinder-build/validators/appliance-config-parameter-validator.rb +0 -37
- data/lib/boxgrinder-build/validators/appliance-validator.rb +0 -84
- data/lib/boxgrinder-build/validators/config-validator.rb +0 -48
- data/lib/boxgrinder-build/validators/ssh-validator.rb +0 -35
- data/lib/boxgrinder-build/validators/validator.rb +0 -91
@@ -0,0 +1,129 @@
|
|
1
|
+
require 'boxgrinder-build/helpers/guestfs-helper'
|
2
|
+
|
3
|
+
module BoxGrinder
|
4
|
+
describe GuestFSHelper do
|
5
|
+
|
6
|
+
before(:each) do
|
7
|
+
@log = Logger.new('/dev/null')
|
8
|
+
@helper = GuestFSHelper.new('a/raw/disk', :log => @log)
|
9
|
+
end
|
10
|
+
|
11
|
+
def prepare_and_launch( partitions )
|
12
|
+
guetfs = mock('Guestfs')
|
13
|
+
guetfs.should_receive(:set_append).with('noapic')
|
14
|
+
guetfs.should_receive(:set_verbose)
|
15
|
+
guetfs.should_receive(:set_trace)
|
16
|
+
|
17
|
+
File.should_receive(:exists?).with('/usr/share/qemu-stable/bin/qemu.wrapper').and_return(true)
|
18
|
+
|
19
|
+
guetfs.should_receive(:set_qemu).with('/usr/share/qemu-stable/bin/qemu.wrapper')
|
20
|
+
guetfs.should_receive(:add_drive).with('a/raw/disk')
|
21
|
+
guetfs.should_receive(:launch)
|
22
|
+
guetfs.should_receive(:list_partitions).and_return( partitions )
|
23
|
+
|
24
|
+
Guestfs.should_receive(:create).and_return(guetfs)
|
25
|
+
|
26
|
+
guetfs
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should prepare and run guestfs" do
|
30
|
+
prepare_and_launch(['/', '/boot'])
|
31
|
+
|
32
|
+
@helper.should_receive(:mount_partitions).with(no_args)
|
33
|
+
|
34
|
+
@helper.execute.should == @helper
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should prepare and run guestfs with one partition" do
|
38
|
+
guestfs = prepare_and_launch(['/'])
|
39
|
+
|
40
|
+
guestfs.should_receive(:list_partitions).and_return(['/'])
|
41
|
+
@helper.should_receive(:mount_partition).with("/", "/")
|
42
|
+
|
43
|
+
@helper.execute.should == @helper
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should prepare and run guestfs with no partitions" do
|
47
|
+
guestfs = prepare_and_launch([])
|
48
|
+
|
49
|
+
guestfs.should_receive(:list_devices).and_return(['/dev/sda'])
|
50
|
+
@helper.should_receive(:mount_partition).with("/dev/sda", "/")
|
51
|
+
|
52
|
+
@helper.execute.should == @helper
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should close guestfs in clean way" do
|
56
|
+
guestfs = mock('Guestfs')
|
57
|
+
|
58
|
+
guestfs.should_receive(:sync)
|
59
|
+
guestfs.should_receive(:umount_all)
|
60
|
+
guestfs.should_receive(:close)
|
61
|
+
|
62
|
+
@helper.instance_variable_set(:@guestfs, guestfs)
|
63
|
+
|
64
|
+
@helper.clean_close
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should mount partition" do
|
68
|
+
guestfs = mock('Guestfs')
|
69
|
+
|
70
|
+
guestfs.should_receive(:mount_options).with("", "/dev/sda", "/")
|
71
|
+
|
72
|
+
@helper.instance_variable_set(:@guestfs, guestfs)
|
73
|
+
@helper.mount_partition("/dev/sda", "/")
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should rebuild RPM database for Fedora" do
|
77
|
+
guestfs = mock('Guestfs')
|
78
|
+
|
79
|
+
guestfs.should_receive(:sh).with("rm -f /var/lib/rpm/__db.*")
|
80
|
+
guestfs.should_receive(:sh).with("rpm --rebuilddb")
|
81
|
+
|
82
|
+
@helper.instance_variable_set(:@guestfs, guestfs)
|
83
|
+
@helper.rebuild_rpm_database
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should mount partitions" do
|
87
|
+
guestfs = mock('Guestfs')
|
88
|
+
|
89
|
+
guestfs.should_receive(:list_partitions).and_return(['/boot', '/'])
|
90
|
+
|
91
|
+
@helper.should_receive(:mount_partition).with('/boot', '/')
|
92
|
+
guestfs.should_receive(:exists).with('/sbin/e2label').and_return(0)
|
93
|
+
guestfs.should_receive(:umount).with('/boot')
|
94
|
+
@helper.should_receive(:mount_partition).with('/', '/')
|
95
|
+
guestfs.should_receive(:exists).with('/sbin/e2label').and_return(1)
|
96
|
+
|
97
|
+
guestfs.should_receive(:list_partitions).and_return(['/boot', '/'])
|
98
|
+
guestfs.should_receive(:sh).with('/sbin/e2label /boot').and_return('/boot')
|
99
|
+
@helper.should_receive(:mount_partition).with('/boot', '/boot')
|
100
|
+
|
101
|
+
@helper.instance_variable_set(:@guestfs, guestfs)
|
102
|
+
@helper.mount_partitions
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should raise when no root partition is found" do
|
106
|
+
guestfs = mock('Guestfs')
|
107
|
+
|
108
|
+
guestfs.should_receive(:list_partitions).and_return(['/boot', '/'])
|
109
|
+
|
110
|
+
@helper.should_receive(:mount_partition).with('/boot', '/')
|
111
|
+
guestfs.should_receive(:exists).with('/sbin/e2label').and_return(0)
|
112
|
+
guestfs.should_receive(:umount).with('/boot')
|
113
|
+
@helper.should_receive(:mount_partition).with('/', '/')
|
114
|
+
guestfs.should_receive(:exists).with('/sbin/e2label').and_return(0)
|
115
|
+
guestfs.should_receive(:umount).with('/')
|
116
|
+
|
117
|
+
@helper.instance_variable_set(:@guestfs, guestfs)
|
118
|
+
|
119
|
+
begin
|
120
|
+
@helper.mount_partitions
|
121
|
+
rescue => e
|
122
|
+
e.message.should == "No root partition found for 'disk' disk!"
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
|
127
|
+
|
128
|
+
end
|
129
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'boxgrinder-build/helpers/linux-helper'
|
2
|
+
|
3
|
+
module BoxGrinder
|
4
|
+
describe LinuxHelper do
|
5
|
+
|
6
|
+
before(:each) do
|
7
|
+
@helper = LinuxHelper.new( :log => Logger.new('/dev/null') )
|
8
|
+
|
9
|
+
@log = @helper.instance_variable_get(:@log)
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should return valid kernel version" do
|
13
|
+
guestfs = mock("guestfs")
|
14
|
+
guestfs.should_receive(:ls).with('/lib/modules').and_return(['2.6.33.6-147.fc13.i686'])
|
15
|
+
@helper.kernel_version( guestfs ).should == '2.6.33.6-147.fc13.i686'
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should return valid PAE kernel version" do
|
19
|
+
guestfs = mock("guestfs")
|
20
|
+
guestfs.should_receive(:ls).with('/lib/modules').and_return(['2.6.33.6-147.fc13.i686.PAE', '2.6.33.6-147.fc13.i686'])
|
21
|
+
@helper.kernel_version( guestfs ).should == '2.6.33.6-147.fc13.i686.PAE'
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should recreate initramfs kernel image using dracut and add xennet module" do
|
25
|
+
guestfs = mock("guestfs")
|
26
|
+
|
27
|
+
@helper.should_receive(:kernel_version).and_return('2.6.33.6-147.fc13.i686.PAE')
|
28
|
+
guestfs.should_receive(:sh).with('ls -1 /boot | grep initramfs | wc -l').and_return("1 ")
|
29
|
+
|
30
|
+
guestfs.should_receive(:exists).with('/sbin/dracut').and_return(1)
|
31
|
+
guestfs.should_receive(:sh).with("/sbin/dracut -f -v --add-drivers xennet /boot/initramfs-2.6.33.6-147.fc13.i686.PAE.img 2.6.33.6-147.fc13.i686.PAE")
|
32
|
+
|
33
|
+
@helper.recreate_kernel_image( guestfs, ['xennet'] )
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should recreate initrd kernel image using mkinitrd and add xenblk and xennet module" do
|
37
|
+
guestfs = mock("guestfs")
|
38
|
+
|
39
|
+
@helper.should_receive(:kernel_version).and_return('2.6.33.6-147.fc13.i686.PAE')
|
40
|
+
guestfs.should_receive(:sh).with('ls -1 /boot | grep initramfs | wc -l').and_return(" 0 ")
|
41
|
+
|
42
|
+
guestfs.should_receive(:exists).with('/sbin/dracut').and_return(0)
|
43
|
+
guestfs.should_receive(:sh).with("/sbin/mkinitrd -f -v --preload=xenblk --preload=xennet /boot/initrd-2.6.33.6-147.fc13.i686.PAE.img 2.6.33.6-147.fc13.i686.PAE")
|
44
|
+
|
45
|
+
@helper.recreate_kernel_image( guestfs, ['xenblk', 'xennet'] )
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'boxgrinder-build/helpers/plugin-helper'
|
2
|
+
require 'rspec/rspec-config-helper'
|
3
|
+
require 'ostruct'
|
4
|
+
|
5
|
+
module BoxGrinder
|
6
|
+
describe PluginHelper do
|
7
|
+
include RSpecConfigHelper
|
8
|
+
|
9
|
+
before(:all) do
|
10
|
+
@current_arch = (-1.size) == 8 ? "x86_64" : "i386"
|
11
|
+
@plugin_array = %w(boxgrinder-build-fedora-os-plugin boxgrinder-build-rhel-os-plugin boxgrinder-build-centos-os-plugin boxgrinder-build-ec2-platform-plugin boxgrinder-build-vmware-platform-plugin boxgrinder-build-s3-delivery-plugin boxgrinder-build-sftp-delivery-plugin boxgrinder-build-local-delivery-plugin)
|
12
|
+
end
|
13
|
+
|
14
|
+
before(:each) do
|
15
|
+
@plugin_helper = PluginHelper.new( :options => OpenStruct.new )
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should parse plugin list and return empty array when no plugins are provided" do
|
19
|
+
@plugin_helper.parse_plugin_list.should == []
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should parse plugin list with double quotes" do
|
23
|
+
@plugin_helper = PluginHelper.new( :options => OpenStruct.new( :plugins => '"abc,def"' ) )
|
24
|
+
@plugin_helper.parse_plugin_list.should == ['abc', 'def']
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should parse plugin list with single quotes" do
|
28
|
+
@plugin_helper = PluginHelper.new( :options => OpenStruct.new( :plugins => "'abc,def'" ) )
|
29
|
+
@plugin_helper.parse_plugin_list.should == ['abc', 'def']
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should parse plugin list with single quotes and clean up it" do
|
33
|
+
@plugin_helper = PluginHelper.new( :options => OpenStruct.new( :plugins => "' abc , def'" ) )
|
34
|
+
@plugin_helper.parse_plugin_list.should == ['abc', 'def']
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should require default plugins" do
|
38
|
+
@plugin_array.each do |plugin|
|
39
|
+
@plugin_helper.should_receive(:gem).ordered.with(plugin)
|
40
|
+
@plugin_helper.should_receive(:require).once.with(plugin)
|
41
|
+
end
|
42
|
+
|
43
|
+
@plugin_helper.read_and_require
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should read plugins specified in command line" do
|
47
|
+
@plugin_helper = PluginHelper.new( :options => OpenStruct.new( :plugins => 'abc,def' ) )
|
48
|
+
|
49
|
+
@plugin_array.each do |plugin|
|
50
|
+
@plugin_helper.should_receive(:gem).ordered.with(plugin)
|
51
|
+
@plugin_helper.should_receive(:require).once.with(plugin)
|
52
|
+
end
|
53
|
+
|
54
|
+
@plugin_helper.should_receive(:gem).ordered.with('abc')
|
55
|
+
@plugin_helper.should_receive(:require).ordered.with('abc')
|
56
|
+
@plugin_helper.should_receive(:gem).ordered.with('def')
|
57
|
+
@plugin_helper.should_receive(:require).ordered.with('def')
|
58
|
+
|
59
|
+
@plugin_helper.read_and_require
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'boxgrinder-build/managers/plugin-manager'
|
2
|
+
|
3
|
+
module BoxGrinder
|
4
|
+
describe PluginManager do
|
5
|
+
|
6
|
+
before(:each) do
|
7
|
+
@manager = PluginManager.instance
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should register simple plugin" do
|
11
|
+
@manager.register_plugin( { :class => PluginManager, :type => :delivery, :name => :abc, :full_name => "Amazon Simple Storage Service (Amazon S3)" } )
|
12
|
+
|
13
|
+
@manager.plugins[:delivery].size.should == 1
|
14
|
+
@manager.plugins[:delivery][:abc][:class].should == PluginManager
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should register plugin with many types" do
|
18
|
+
@manager.register_plugin( { :class => PluginManager, :type => :delivery, :name => :s3, :full_name => "Amazon Simple Storage Service (Amazon S3)", :types => [:s3, :cloudfront, :ami] } )
|
19
|
+
|
20
|
+
@manager.plugins[:delivery].size.should == 4
|
21
|
+
@manager.plugins[:delivery][:abc][:class].should == PluginManager
|
22
|
+
@manager.plugins[:delivery][:ami][:class].should == PluginManager
|
23
|
+
@manager.plugins[:delivery][:s3][:class].should == PluginManager
|
24
|
+
@manager.plugins[:delivery][:cloudfront][:class].should == PluginManager
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
require 'boxgrinder-build/plugins/base-plugin'
|
2
|
+
require 'rspec/rspec-config-helper'
|
3
|
+
require 'rbconfig'
|
4
|
+
|
5
|
+
module BoxGrinder
|
6
|
+
describe BasePlugin do
|
7
|
+
include RSpecConfigHelper
|
8
|
+
|
9
|
+
before(:all) do
|
10
|
+
@arch = RbConfig::CONFIG['host_cpu']
|
11
|
+
end
|
12
|
+
|
13
|
+
before(:each) do
|
14
|
+
@plugin = BasePlugin.new
|
15
|
+
@plugin.init( generate_config, generate_appliance_config, :plugin_info => { :name => :plugin_name })
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should be initialized after running init method" do
|
19
|
+
@plugin.instance_variable_get(:@initialized).should == true
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should register a disk deliverable" do
|
23
|
+
@plugin.register_deliverable(:disk => "name")
|
24
|
+
|
25
|
+
deliverables = @plugin.instance_variable_get(:@deliverables)
|
26
|
+
|
27
|
+
deliverables.disk.should == "build/appliances/#{@arch}/fedora/11/full/plugin_name-plugin/tmp/name"
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should register a metadata deliverable" do
|
31
|
+
@plugin.register_deliverable(:a_name => 'a_path')
|
32
|
+
|
33
|
+
deliverables = @plugin.instance_variable_get(:@deliverables)
|
34
|
+
|
35
|
+
deliverables.size.should == 1
|
36
|
+
deliverables.a_name.should == "build/appliances/#{@arch}/fedora/11/full/plugin_name-plugin/tmp/a_path"
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should register multiple other deliverables" do
|
40
|
+
@plugin.register_deliverable(:a_name => 'a_path', :a_second_name => 'a_path_too')
|
41
|
+
|
42
|
+
deliverables = @plugin.instance_variable_get(:@deliverables)
|
43
|
+
|
44
|
+
deliverables.size.should == 2
|
45
|
+
deliverables.a_name.should == "build/appliances/#{@arch}/fedora/11/full/plugin_name-plugin/tmp/a_path"
|
46
|
+
deliverables.a_second_name.should == "build/appliances/#{@arch}/fedora/11/full/plugin_name-plugin/tmp/a_path_too"
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should have a valid path to tmp directory" do
|
50
|
+
@plugin.instance_variable_get(:@dir).tmp.should == "build/appliances/#{@arch}/fedora/11/full/plugin_name-plugin/tmp"
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should check if deliverables exists and return true" do
|
54
|
+
@plugin.register_deliverable(:disk => "disk")
|
55
|
+
@plugin.register_deliverable(:abc => "def")
|
56
|
+
@plugin.register_deliverable(:file => "a/path")
|
57
|
+
|
58
|
+
File.should_receive(:exists?).exactly(3).times.with(any_args()).and_return(true)
|
59
|
+
|
60
|
+
@plugin.deliverables_exists?.should == true
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should check if deliverables exists and return false" do
|
64
|
+
@plugin.register_deliverable(:disk => "disk")
|
65
|
+
@plugin.register_deliverable(:abc => "def")
|
66
|
+
@plugin.register_deliverable(:file => "a/path")
|
67
|
+
|
68
|
+
File.should_receive(:exists?).once.with(any_args()).and_return(true)
|
69
|
+
File.should_receive(:exists?).once.with(any_args()).and_return(false)
|
70
|
+
File.should_not_receive(:exists?)
|
71
|
+
|
72
|
+
@plugin.deliverables_exists?.should == false
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should run the plugin" do
|
76
|
+
@plugin.register_deliverable(:disk => "disk")
|
77
|
+
|
78
|
+
FileUtils.should_receive(:rm_rf).with("build/appliances/#{@arch}/fedora/11/full/plugin_name-plugin/tmp")
|
79
|
+
FileUtils.should_receive(:mkdir_p).with("build/appliances/#{@arch}/fedora/11/full/plugin_name-plugin/tmp")
|
80
|
+
|
81
|
+
@plugin.should_receive( :execute ).with('a', 3)
|
82
|
+
|
83
|
+
FileUtils.should_receive(:mv).with("build/appliances/#{@arch}/fedora/11/full/plugin_name-plugin/tmp/disk", "build/appliances/#{@arch}/fedora/11/full/plugin_name-plugin/disk")
|
84
|
+
FileUtils.should_receive(:rm_rf).with("build/appliances/#{@arch}/fedora/11/full/plugin_name-plugin/tmp")
|
85
|
+
|
86
|
+
@plugin.run('a', 3)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
name: jeos-f13
|
2
|
+
summary: Just Enough Operating System based on Fedora 13
|
3
|
+
os:
|
4
|
+
name: fedora
|
5
|
+
version: 13
|
6
|
+
hardware:
|
7
|
+
partitions:
|
8
|
+
"/":
|
9
|
+
size: 2
|
10
|
+
packages:
|
11
|
+
includes:
|
12
|
+
- bash
|
13
|
+
- kernel-PAE
|
14
|
+
- grub
|
15
|
+
- e2fsprogs
|
16
|
+
- passwd
|
17
|
+
- policycoreutils
|
18
|
+
- chkconfig
|
19
|
+
- rootfiles
|
20
|
+
- yum
|
21
|
+
- vim-minimal
|
22
|
+
- acpid
|
23
|
+
- dhclient
|
24
|
+
- iputils
|
25
|
+
- openssh-server
|
26
|
+
- openssh-clients
|
27
|
+
- system-config-firewall-base
|
metadata
CHANGED
@@ -4,35 +4,35 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
7
|
+
- 5
|
8
|
+
- 0
|
9
|
+
version: 0.5.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
|
-
-
|
12
|
+
- Marek Goldmann
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-07-21 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
|
-
name:
|
21
|
+
name: commander
|
22
22
|
prerelease: false
|
23
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
segments:
|
28
|
+
- 4
|
28
29
|
- 0
|
29
|
-
-
|
30
|
-
|
31
|
-
version: 0.0.11
|
30
|
+
- 3
|
31
|
+
version: 4.0.3
|
32
32
|
type: :runtime
|
33
33
|
version_requirements: *id001
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
|
-
name:
|
35
|
+
name: boxgrinder-core
|
36
36
|
prerelease: false
|
37
37
|
requirement: &id002 !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
@@ -40,166 +40,68 @@ dependencies:
|
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
segments:
|
42
42
|
- 0
|
43
|
-
- 6
|
44
|
-
- 2
|
45
|
-
version: 0.6.2
|
46
|
-
type: :runtime
|
47
|
-
version_requirements: *id002
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: amazon-ec2
|
50
|
-
prerelease: false
|
51
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
52
|
-
requirements:
|
53
|
-
- - ">="
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
segments:
|
56
|
-
- 0
|
57
|
-
- 9
|
58
|
-
- 6
|
59
|
-
version: 0.9.6
|
60
|
-
type: :runtime
|
61
|
-
version_requirements: *id003
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: net-sftp
|
64
|
-
prerelease: false
|
65
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
66
|
-
requirements:
|
67
|
-
- - ">="
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
segments:
|
70
|
-
- 2
|
71
|
-
- 0
|
72
|
-
- 4
|
73
|
-
version: 2.0.4
|
74
|
-
type: :runtime
|
75
|
-
version_requirements: *id004
|
76
|
-
- !ruby/object:Gem::Dependency
|
77
|
-
name: net-ssh
|
78
|
-
prerelease: false
|
79
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
80
|
-
requirements:
|
81
|
-
- - ">="
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
segments:
|
84
|
-
- 2
|
85
43
|
- 0
|
86
44
|
- 20
|
87
|
-
version:
|
88
|
-
type: :runtime
|
89
|
-
version_requirements: *id005
|
90
|
-
- !ruby/object:Gem::Dependency
|
91
|
-
name: rake
|
92
|
-
prerelease: false
|
93
|
-
requirement: &id006 !ruby/object:Gem::Requirement
|
94
|
-
requirements:
|
95
|
-
- - ">="
|
96
|
-
- !ruby/object:Gem::Version
|
97
|
-
segments:
|
98
|
-
- 0
|
99
|
-
- 8
|
100
|
-
- 7
|
101
|
-
version: 0.8.7
|
102
|
-
type: :runtime
|
103
|
-
version_requirements: *id006
|
104
|
-
- !ruby/object:Gem::Dependency
|
105
|
-
name: progressbar
|
106
|
-
prerelease: false
|
107
|
-
requirement: &id007 !ruby/object:Gem::Requirement
|
108
|
-
requirements:
|
109
|
-
- - ">="
|
110
|
-
- !ruby/object:Gem::Version
|
111
|
-
segments:
|
112
|
-
- 0
|
113
|
-
- 9
|
114
|
-
- 0
|
115
|
-
version: 0.9.0
|
116
|
-
type: :runtime
|
117
|
-
version_requirements: *id007
|
118
|
-
- !ruby/object:Gem::Dependency
|
119
|
-
name: commander
|
120
|
-
prerelease: false
|
121
|
-
requirement: &id008 !ruby/object:Gem::Requirement
|
122
|
-
requirements:
|
123
|
-
- - ">="
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
segments:
|
126
|
-
- 4
|
127
|
-
- 0
|
128
|
-
- 3
|
129
|
-
version: 4.0.3
|
45
|
+
version: 0.0.20
|
130
46
|
type: :runtime
|
131
|
-
version_requirements: *
|
132
|
-
description:
|
47
|
+
version_requirements: *id002
|
48
|
+
description: A tool for creating appliances from simple plain text files for various virtual environments.
|
133
49
|
email: info@boxgrinder.org
|
134
50
|
executables:
|
135
51
|
- boxgrinder-build
|
136
52
|
extensions: []
|
137
53
|
|
138
|
-
extra_rdoc_files:
|
139
|
-
|
140
|
-
|
141
|
-
-
|
142
|
-
-
|
143
|
-
- lib/boxgrinder-build/plugins/delivery/s3/s3-plugin.rb
|
144
|
-
- lib/boxgrinder-build/plugins/delivery/local/local-plugin.rb
|
145
|
-
- lib/boxgrinder-build/plugins/delivery/sftp/sftp-plugin.rb
|
146
|
-
- lib/boxgrinder-build/plugins/delivery/base/base-delivery-plugin.rb
|
147
|
-
- lib/boxgrinder-build/plugins/platform/base-platform-plugin.rb
|
148
|
-
- lib/boxgrinder-build/plugins/platform/vmware/vmware-plugin.rb
|
149
|
-
- lib/boxgrinder-build/plugins/platform/vmware/src/base.vmx
|
150
|
-
- lib/boxgrinder-build/plugins/platform/vmware/src/README
|
151
|
-
- lib/boxgrinder-build/plugins/platform/vmware/src/base.vmdk
|
152
|
-
- lib/boxgrinder-build/plugins/platform/ec2/ec2-plugin.rb
|
153
|
-
- lib/boxgrinder-build/plugins/platform/ec2/src/f12/yum.conf
|
154
|
-
- lib/boxgrinder-build/plugins/platform/ec2/src/fstab_64bit
|
155
|
-
- lib/boxgrinder-build/plugins/platform/ec2/src/f12-i386-boxgrinder.repo
|
156
|
-
- lib/boxgrinder-build/plugins/platform/ec2/src/rc_local
|
157
|
-
- lib/boxgrinder-build/plugins/platform/ec2/src/ifcfg-eth0
|
158
|
-
- lib/boxgrinder-build/plugins/platform/ec2/src/f12-x86_64-boxgrinder.repo
|
159
|
-
- lib/boxgrinder-build/plugins/platform/ec2/src/fstab_32bit
|
160
|
-
- lib/boxgrinder-build/plugins/os/fedora/fedora-plugin.rb
|
161
|
-
- lib/boxgrinder-build/plugins/os/rhel/rhel-plugin.rb
|
162
|
-
- lib/boxgrinder-build/plugins/os/base-operating-system-plugin.rb
|
163
|
-
- lib/boxgrinder-build/plugins/os/centos/centos-plugin.rb
|
164
|
-
- lib/boxgrinder-build/plugins/os/base/rpm-based-os-plugin.rb
|
165
|
-
- lib/boxgrinder-build/plugins/os/base/src/motd.init
|
166
|
-
- lib/boxgrinder-build/plugins/os/base/src/appliance.ks.erb
|
167
|
-
- lib/boxgrinder-build/plugins/os/base/src/base.repo
|
168
|
-
- lib/boxgrinder-build/plugins/os/base/validators/rpm-dependency-validator.rb
|
169
|
-
- lib/boxgrinder-build/plugins/os/base/kickstart.rb
|
170
|
-
- lib/boxgrinder-build/plugins/os/base/rhel-based-os-plugin.rb
|
171
|
-
- lib/boxgrinder-build/managers/base-plugin-manager.rb
|
172
|
-
- lib/boxgrinder-build/managers/platform-plugin-manager.rb
|
173
|
-
- lib/boxgrinder-build/managers/delivery-plugin-manager.rb
|
174
|
-
- lib/boxgrinder-build/managers/operating-system-plugin-manager.rb
|
175
|
-
- lib/boxgrinder-build/validators/appliance-validator.rb
|
176
|
-
- lib/boxgrinder-build/validators/appliance-config-parameter-validator.rb
|
177
|
-
- lib/boxgrinder-build/validators/ssh-validator.rb
|
178
|
-
- lib/boxgrinder-build/validators/validator.rb
|
179
|
-
- lib/boxgrinder-build/validators/config-validator.rb
|
54
|
+
extra_rdoc_files:
|
55
|
+
- CHANGELOG
|
56
|
+
- LICENSE
|
57
|
+
- README
|
58
|
+
- bin/boxgrinder-build
|
180
59
|
- lib/boxgrinder-build/appliance.rb
|
181
|
-
- lib/boxgrinder-build/helpers/
|
60
|
+
- lib/boxgrinder-build/helpers/appliance-customize-helper.rb
|
182
61
|
- lib/boxgrinder-build/helpers/guestfs-helper.rb
|
183
|
-
- lib/boxgrinder-build/helpers/
|
62
|
+
- lib/boxgrinder-build/helpers/linux-helper.rb
|
184
63
|
- lib/boxgrinder-build/helpers/package-helper.rb
|
185
|
-
- lib/boxgrinder-build/helpers/
|
186
|
-
-
|
187
|
-
-
|
188
|
-
|
189
|
-
-
|
190
|
-
- docs/examples/appliances/appliances.appl
|
191
|
-
- docs/examples/appliances/minimal.appl
|
192
|
-
- docs/examples/appliances/mix.appl
|
193
|
-
- docs/examples/appliances/packages.appl
|
194
|
-
- README
|
64
|
+
- lib/boxgrinder-build/helpers/plugin-helper.rb
|
65
|
+
- lib/boxgrinder-build/managers/plugin-manager.rb
|
66
|
+
- lib/boxgrinder-build/plugins/base-plugin.rb
|
67
|
+
files:
|
68
|
+
- CHANGELOG
|
195
69
|
- LICENSE
|
70
|
+
- Manifest
|
71
|
+
- README
|
72
|
+
- Rakefile
|
73
|
+
- bin/boxgrinder-build
|
74
|
+
- lib/boxgrinder-build/appliance.rb
|
75
|
+
- lib/boxgrinder-build/helpers/appliance-customize-helper.rb
|
76
|
+
- lib/boxgrinder-build/helpers/guestfs-helper.rb
|
77
|
+
- lib/boxgrinder-build/helpers/linux-helper.rb
|
78
|
+
- lib/boxgrinder-build/helpers/package-helper.rb
|
79
|
+
- lib/boxgrinder-build/helpers/plugin-helper.rb
|
80
|
+
- lib/boxgrinder-build/managers/plugin-manager.rb
|
81
|
+
- lib/boxgrinder-build/plugins/base-plugin.rb
|
82
|
+
- spec/Rakefile
|
83
|
+
- spec/appliance-spec.rb
|
84
|
+
- spec/helpers/appliance-customize-helper-spec.rb
|
85
|
+
- spec/helpers/guestfs-helper-spec.rb
|
86
|
+
- spec/helpers/linux-helper-spec.rb
|
87
|
+
- spec/helpers/package-helper-spec.rb
|
88
|
+
- spec/helpers/plugin-helper-spec.rb
|
89
|
+
- spec/managers/plugin-manager-spec.rb
|
90
|
+
- spec/plugins/base-plugin-spec.rb
|
91
|
+
- spec/rspec/src/appliances/jeos-f13.appl
|
92
|
+
- boxgrinder-build.gemspec
|
196
93
|
has_rdoc: true
|
197
94
|
homepage: http://www.jboss.org/stormgrind/projects/boxgrinder.html
|
198
95
|
licenses: []
|
199
96
|
|
200
97
|
post_install_message:
|
201
|
-
rdoc_options:
|
202
|
-
|
98
|
+
rdoc_options:
|
99
|
+
- --line-numbers
|
100
|
+
- --inline-source
|
101
|
+
- --title
|
102
|
+
- Boxgrinder-build
|
103
|
+
- --main
|
104
|
+
- README
|
203
105
|
require_paths:
|
204
106
|
- lib
|
205
107
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -214,14 +116,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
214
116
|
- - ">="
|
215
117
|
- !ruby/object:Gem::Version
|
216
118
|
segments:
|
217
|
-
-
|
218
|
-
|
119
|
+
- 1
|
120
|
+
- 2
|
121
|
+
version: "1.2"
|
219
122
|
requirements: []
|
220
123
|
|
221
|
-
rubyforge_project:
|
124
|
+
rubyforge_project: BoxGrinder Build
|
222
125
|
rubygems_version: 1.3.6
|
223
126
|
signing_key:
|
224
127
|
specification_version: 3
|
225
|
-
summary:
|
128
|
+
summary: A tool for creating appliances from simple plain text files for various virtual environments.
|
226
129
|
test_files: []
|
227
130
|
|