boxgrinder-build 0.2.0 → 0.3.2
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/bin/boxgrinder-build +81 -0
- data/docs/examples/appliances/appliances.appl +5 -0
- data/docs/examples/appliances/minimal.appl +9 -0
- data/docs/examples/appliances/mix.appl +8 -0
- data/docs/examples/appliances/packages.appl +13 -0
- data/lib/boxgrinder-build/appliance.rb +85 -18
- data/lib/boxgrinder-build/helpers/appliance-customize-helper.rb +2 -2
- data/lib/boxgrinder-build/helpers/guestfs-helper.rb +18 -15
- data/lib/boxgrinder-build/helpers/package-helper.rb +65 -0
- data/lib/boxgrinder-build/helpers/plugin-helper.rb +89 -0
- data/lib/boxgrinder-build/{defaults.rb → managers/base-plugin-manager.rb} +41 -8
- data/lib/{boxgrinder-build.rb → boxgrinder-build/managers/delivery-plugin-manager.rb} +15 -18
- data/lib/boxgrinder-build/managers/operating-system-plugin-manager.rb +6 -0
- data/{bin/boxgrinder → lib/boxgrinder-build/managers/platform-plugin-manager.rb} +6 -3
- data/lib/boxgrinder-build/plugins/base-plugin.rb +98 -0
- data/lib/boxgrinder-build/plugins/delivery/base/base-delivery-plugin.rb +43 -0
- data/lib/boxgrinder-build/plugins/delivery/local/local-plugin.rb +57 -0
- data/lib/boxgrinder-build/{helpers → plugins/delivery/s3}/aws-helper.rb +0 -0
- data/lib/boxgrinder-build/plugins/delivery/s3/s3-plugin.rb +133 -0
- data/lib/boxgrinder-build/{helpers/ssh-helper.rb → plugins/delivery/sftp/sftp-plugin.rb} +61 -42
- data/lib/boxgrinder-build/{appliance-kickstart.rb → plugins/os/base/kickstart.rb} +45 -55
- data/lib/boxgrinder-build/{images/raw-image.rb → plugins/os/base/rpm-based-os-plugin.rb} +63 -60
- data/lib/boxgrinder-build/{erb → plugins/os/base/src}/appliance.ks.erb +2 -5
- data/{src → lib/boxgrinder-build/plugins/os/base/src}/base.repo +0 -0
- data/{src → lib/boxgrinder-build/plugins/os/base/src}/motd.init +0 -0
- data/lib/boxgrinder-build/{validators/appliance-dependency-validator.rb → plugins/os/base/validators/rpm-dependency-validator.rb} +1 -1
- data/lib/boxgrinder-build/{models/ssh-config.rb → plugins/os/base-operating-system-plugin.rb} +10 -17
- data/lib/boxgrinder-build/plugins/os/centos/centos-plugin.rb +72 -0
- data/lib/boxgrinder-build/plugins/os/fedora/fedora-plugin.rb +66 -0
- data/lib/boxgrinder-build/plugins/os/rhel/rhel-plugin.rb +38 -0
- data/lib/boxgrinder-build/plugins/platform/base-platform-plugin.rb +37 -0
- data/lib/boxgrinder-build/plugins/platform/ec2/ec2-plugin.rb +283 -0
- data/{src → lib/boxgrinder-build/plugins/platform/ec2/src}/f12/yum.conf +0 -0
- data/{src/ec2 → lib/boxgrinder-build/plugins/platform/ec2/src}/f12-i386-boxgrinder.repo +0 -0
- data/{src/ec2 → lib/boxgrinder-build/plugins/platform/ec2/src}/f12-x86_64-boxgrinder.repo +0 -0
- data/{src/ec2 → lib/boxgrinder-build/plugins/platform/ec2/src}/fstab_32bit +0 -0
- data/{src/ec2 → lib/boxgrinder-build/plugins/platform/ec2/src}/fstab_64bit +0 -0
- data/{src/ec2 → lib/boxgrinder-build/plugins/platform/ec2/src}/ifcfg-eth0 +0 -0
- data/{src/ec2 → lib/boxgrinder-build/plugins/platform/ec2/src}/rc_local +1 -4
- data/{src/README.vmware → lib/boxgrinder-build/plugins/platform/vmware/src/README} +10 -10
- data/{src → lib/boxgrinder-build/plugins/platform/vmware/src}/base.vmdk +1 -1
- data/{src → lib/boxgrinder-build/plugins/platform/vmware/src}/base.vmx +0 -0
- data/lib/boxgrinder-build/plugins/platform/vmware/vmware-plugin.rb +181 -0
- data/lib/boxgrinder-build/validators/config-validator.rb +0 -19
- metadata +73 -44
- data/docs/examples/appliances/appliances-appliance/appliances-appliance.appl +0 -6
- data/docs/examples/appliances/appliances-appliance/appliances-appliance.pp +0 -16
- data/docs/examples/appliances/minimal-appliance/minimal-appliance.appl +0 -2
- data/docs/examples/appliances/minimal-appliance/minimal-appliance.pp +0 -16
- data/docs/examples/appliances/mix-appliance/mix-appliance.appl +0 -9
- data/docs/examples/appliances/mix-appliance/mix-appliance.pp +0 -16
- data/docs/examples/appliances/packages-appliance/packages-appliance.appl +0 -6
- data/docs/examples/appliances/packages-appliance/packages-appliance.pp +0 -16
- data/extras/sign-rpms +0 -12
- data/lib/boxgrinder-build/boxgrinder.rb +0 -93
- data/lib/boxgrinder-build/helpers/release-helper.rb +0 -136
- data/lib/boxgrinder-build/images/ec2-image.rb +0 -317
- data/lib/boxgrinder-build/images/vmware-image.rb +0 -214
- data/lib/boxgrinder-build/validators/appliance-definition-validator.rb +0 -89
- data/lib/progressbar/progressbar.rb +0 -236
- data/src/oddthesis/RPM-GPG-KEY-oddthesis +0 -30
- data/src/oddthesis/oddthesis.repo +0 -23
@@ -18,76 +18,78 @@
|
|
18
18
|
# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
19
19
|
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
|
20
20
|
|
21
|
-
require '
|
22
|
-
require 'yaml'
|
23
|
-
require 'boxgrinder-build/helpers/guestfs-helper'
|
24
|
-
require 'boxgrinder-core/helpers/exec-helper'
|
21
|
+
require 'boxgrinder-build/plugins/os/base-operating-system-plugin'
|
25
22
|
|
26
23
|
module BoxGrinder
|
27
|
-
class
|
24
|
+
class RPMBasedOSPlugin < BaseOperatingSystemPlugin
|
25
|
+
def after_init
|
26
|
+
@deliverables[:disk] = "#{@appliance_config.path.dir.raw.build_full}/#{@appliance_config.name}-sda.raw"
|
28
27
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
@log = options[:log] || Logger.new(STDOUT)
|
34
|
-
@exec_helper = options[:exec_helper] || ExecHelper.new( { :log => @log } )
|
35
|
-
|
36
|
-
@tmp_dir = "#{@config.dir.root}/#{@config.dir.build}/tmp"
|
37
|
-
|
38
|
-
define_tasks
|
28
|
+
@deliverables[:metadata] = {
|
29
|
+
:descriptor => "#{@appliance_config.path.dir.raw.build_full}/#{@appliance_config.name}.xml"
|
30
|
+
}
|
39
31
|
end
|
40
32
|
|
41
|
-
def
|
42
|
-
|
43
|
-
|
33
|
+
def build_with_appliance_creator( repos )
|
34
|
+
Kickstart.new( @config, @appliance_config, repos, :log => @log ).create
|
35
|
+
RPMDependencyValidator.new( @config, @appliance_config, @options ).resolve_packages
|
44
36
|
|
45
|
-
|
37
|
+
tmp_dir = "#{@config.dir.root}/#{@config.dir.build}/tmp"
|
38
|
+
FileUtils.mkdir_p( tmp_dir )
|
46
39
|
|
47
|
-
|
48
|
-
build_raw_image
|
49
|
-
do_post_build_operations
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
def build_raw_image
|
54
|
-
@log.info "Building #{@appliance_config.simple_name} appliance..."
|
40
|
+
@log.info "Building #{@appliance_config.name} appliance..."
|
55
41
|
|
56
|
-
@exec_helper.execute "sudo
|
42
|
+
@exec_helper.execute "sudo appliance-creator -d -v -t #{tmp_dir} --cache=#{@config.dir.rpms_cache}/#{@appliance_config.main_path} --config #{@appliance_config.path.file.raw.kickstart} -o #{@appliance_config.path.dir.raw.build} --name #{@appliance_config.name} --vmem #{@appliance_config.hardware.memory} --vcpu #{@appliance_config.hardware.cpus}"
|
57
43
|
|
58
44
|
# fix permissions
|
59
45
|
@exec_helper.execute "sudo chmod 777 #{@appliance_config.path.dir.raw.build_full}"
|
60
|
-
@exec_helper.execute "sudo chmod 666 #{@
|
61
|
-
@exec_helper.execute "sudo chmod 666 #{@
|
46
|
+
@exec_helper.execute "sudo chmod 666 #{@deliverables[:disk]}"
|
47
|
+
@exec_helper.execute "sudo chmod 666 #{@deliverables[:metadata][:descriptor]}"
|
48
|
+
|
49
|
+
customize( @deliverables[:disk] ) do |guestfs, guestfs_helper|
|
50
|
+
@log.info "Executing post operations after build..."
|
51
|
+
|
52
|
+
mount_partitions( guestfs, guestfs_helper ) if guestfs.list_partitions.size > 1
|
53
|
+
|
54
|
+
if @appliance_config.post.base.size > 0
|
55
|
+
@appliance_config.post.base.each do |cmd|
|
56
|
+
@log.debug "Executing #{cmd}"
|
57
|
+
guestfs.sh( cmd )
|
58
|
+
end
|
59
|
+
@log.debug "Post commands from appliance definition file executed."
|
60
|
+
else
|
61
|
+
@log.debug "No commands specified, skipping."
|
62
|
+
end
|
62
63
|
|
63
|
-
|
64
|
-
|
64
|
+
change_configuration( guestfs )
|
65
|
+
set_motd( guestfs )
|
66
|
+
install_version_files( guestfs )
|
67
|
+
install_repos( guestfs )
|
68
|
+
|
69
|
+
yield guestfs, guestfs_helper if block_given?
|
65
70
|
|
66
|
-
|
67
|
-
|
71
|
+
@log.info "Post operations executed."
|
72
|
+
end
|
68
73
|
|
69
|
-
|
70
|
-
|
74
|
+
@log.info "Base image for #{@appliance_config.name} appliance was built successfully."
|
75
|
+
end
|
71
76
|
|
72
|
-
|
73
|
-
|
74
|
-
install_version_files( guestfs )
|
75
|
-
install_repos( guestfs )
|
77
|
+
def mount_partitions( guestfs, guestfs_helper )
|
78
|
+
root_partition = nil
|
76
79
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
80
|
+
guestfs.list_partitions.each do |partition|
|
81
|
+
guestfs_helper.mount_partition( partition, '/' )
|
82
|
+
if guestfs.exists( '/sbin/e2label' ) != 0
|
83
|
+
root_partition = partition
|
84
|
+
break
|
82
85
|
end
|
83
|
-
|
84
|
-
else
|
85
|
-
@log.debug "No commands specified, skipping."
|
86
|
+
guestfs.umount( partition )
|
86
87
|
end
|
87
88
|
|
88
|
-
guestfs.
|
89
|
-
|
90
|
-
|
89
|
+
guestfs.list_partitions.each do |partition|
|
90
|
+
next if partition == root_partition
|
91
|
+
guestfs_helper.mount_partition( partition, guestfs.sh( "/sbin/e2label #{partition}" ).chomp.strip )
|
92
|
+
end
|
91
93
|
end
|
92
94
|
|
93
95
|
def change_configuration( guestfs )
|
@@ -99,11 +101,18 @@ module BoxGrinder
|
|
99
101
|
@log.debug "Augeas changes saved."
|
100
102
|
end
|
101
103
|
|
104
|
+
def install_version_files( guestfs )
|
105
|
+
@log.debug "Installing BoxGrinder version files..."
|
106
|
+
guestfs.sh( "echo 'BOXGRINDER_VERSION=#{@config.version_with_release}' > /etc/sysconfig/boxgrinder" )
|
107
|
+
guestfs.sh( "echo 'APPLIANCE_NAME=#{@appliance_config.name}' >> /etc/sysconfig/boxgrinder" )
|
108
|
+
@log.debug "Version files installed."
|
109
|
+
end
|
110
|
+
|
102
111
|
def set_motd( guestfs )
|
103
112
|
@log.debug "Setting up '/etc/motd'..."
|
104
113
|
# set nice banner for SSH
|
105
114
|
motd_file = "/etc/init.d/motd"
|
106
|
-
guestfs.upload( "#{
|
115
|
+
guestfs.upload( "#{File.dirname( __FILE__ )}/src/motd.init", motd_file )
|
107
116
|
guestfs.sh( "sed -i s/#VERSION#/'#{@appliance_config.version}.#{@appliance_config.release}'/ #{motd_file}" )
|
108
117
|
guestfs.sh( "sed -i s/#APPLIANCE#/'#{@appliance_config.name} appliance'/ #{motd_file}" )
|
109
118
|
|
@@ -112,18 +121,11 @@ module BoxGrinder
|
|
112
121
|
@log.debug "'/etc/motd' is nice now."
|
113
122
|
end
|
114
123
|
|
115
|
-
def install_version_files( guestfs )
|
116
|
-
@log.debug "Installing BoxGrinder version files..."
|
117
|
-
guestfs.sh( "echo 'BOXGRINDER_VERSION=#{@config.version_with_release}' > /etc/sysconfig/boxgrinder" )
|
118
|
-
guestfs.sh( "echo 'APPLIANCE_NAME=#{@appliance_config.name}' >> /etc/sysconfig/boxgrinder" )
|
119
|
-
@log.debug "Version files installed."
|
120
|
-
end
|
121
|
-
|
122
124
|
def install_repos( guestfs )
|
123
125
|
@log.debug "Installing repositories from appliance definition file..."
|
124
126
|
@appliance_config.repos.each do |repo|
|
125
127
|
@log.debug "Installing #{repo['name']} repo..."
|
126
|
-
repo_file = File.read( "#{
|
128
|
+
repo_file = File.read( "#{File.dirname( __FILE__ )}/src/base.repo").gsub( /#NAME#/, repo['name'] )
|
127
129
|
|
128
130
|
['baseurl', 'mirrorlist'].each do |type|
|
129
131
|
repo_file << ("#{type}=#{repo[type]}\n") unless repo[type].nil?
|
@@ -133,5 +135,6 @@ module BoxGrinder
|
|
133
135
|
end
|
134
136
|
@log.debug "Repositories installed."
|
135
137
|
end
|
138
|
+
|
136
139
|
end
|
137
140
|
end
|
@@ -17,11 +17,8 @@ services --enabled=network
|
|
17
17
|
|
18
18
|
rootpw <%= root_password %>
|
19
19
|
|
20
|
-
<%
|
21
|
-
part <%=
|
22
|
-
|
23
|
-
<% for user in users %>
|
24
|
-
user --name=<%= user['name'] %><% unless user['home'].nil? %> --homedir=<%= user['home'] %><% end %><% unless user['group'].nil? %> --groups=<%= user['group'] %><% end %><% end unless users.nil? %>
|
20
|
+
<% appliance_config.hardware.partitions.each do |root, partition| %>
|
21
|
+
part <%= root %> --size <%= (partition['size'].to_f * 1024).to_i %> --fstype <%= fstype %> --ondisk sda<% end %>
|
25
22
|
|
26
23
|
<% for repo in repos %>
|
27
24
|
<%= repo %><% end %>
|
File without changes
|
File without changes
|
data/lib/boxgrinder-build/{models/ssh-config.rb → plugins/os/base-operating-system-plugin.rb}
RENAMED
@@ -18,27 +18,20 @@
|
|
18
18
|
# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
19
19
|
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
|
20
20
|
|
21
|
-
require 'boxgrinder-
|
22
|
-
require '
|
21
|
+
require 'boxgrinder-build/managers/operating-system-plugin-manager'
|
22
|
+
require 'boxgrinder-build/plugins/base-plugin'
|
23
23
|
|
24
24
|
module BoxGrinder
|
25
|
-
class
|
26
|
-
def
|
27
|
-
|
28
|
-
|
29
|
-
@options = {}
|
25
|
+
class BaseOperatingSystemPlugin < BasePlugin
|
26
|
+
def self.inherited(klass)
|
27
|
+
OperatingSystemPluginManager.instance << klass
|
28
|
+
end
|
30
29
|
|
31
|
-
|
32
|
-
@options['sftp_create_path'] = true
|
33
|
-
@options['sftp_overwrite'] = false
|
34
|
-
@options['sftp_default_permissions'] = 0644
|
30
|
+
alias_method :execute_original, :execute
|
35
31
|
|
36
|
-
|
37
|
-
|
38
|
-
|
32
|
+
def execute( args = nil )
|
33
|
+
raise "Build cannot be started before the plugin isn't initialized" if @initialized.nil?
|
34
|
+
execute_original( args )
|
39
35
|
end
|
40
|
-
|
41
|
-
attr_reader :options
|
42
|
-
attr_reader :cfg
|
43
36
|
end
|
44
37
|
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# JBoss, Home of Professional Open Source
|
2
|
+
# Copyright 2009, Red Hat Middleware LLC, and individual contributors
|
3
|
+
# by the @authors tag. See the copyright.txt in the distribution for a
|
4
|
+
# full listing of individual contributors.
|
5
|
+
#
|
6
|
+
# This is free software; you can redistribute it and/or modify it
|
7
|
+
# under the terms of the GNU Lesser General Public License as
|
8
|
+
# published by the Free Software Foundation; either version 2.1 of
|
9
|
+
# the License, or (at your option) any later version.
|
10
|
+
#
|
11
|
+
# This software is distributed in the hope that it will be useful,
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
14
|
+
# Lesser General Public License for more details.
|
15
|
+
#
|
16
|
+
# You should have received a copy of the GNU Lesser General Public
|
17
|
+
# License along with this software; if not, write to the Free
|
18
|
+
# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
19
|
+
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
|
20
|
+
|
21
|
+
require 'boxgrinder-build/plugins/os/base/rpm-based-os-plugin'
|
22
|
+
|
23
|
+
module BoxGrinder
|
24
|
+
class CentOSPlugin < RPMBasedOSPlugin
|
25
|
+
|
26
|
+
CENTOS_REPOS = {
|
27
|
+
"5" => {
|
28
|
+
"base" => {
|
29
|
+
"mirrorlist" => "http://mirrorlist.centos.org/?release=#OS_VERSION#&arch=#ARCH#&repo=os"
|
30
|
+
},
|
31
|
+
"updates" => {
|
32
|
+
"mirrorlist" => "http://mirrorlist.centos.org/?release=#OS_VERSION#&arch=#ARCH#&repo=updates"
|
33
|
+
}
|
34
|
+
}
|
35
|
+
}
|
36
|
+
|
37
|
+
def info
|
38
|
+
{
|
39
|
+
:name => :centos,
|
40
|
+
:full_name => "CentOS",
|
41
|
+
:type => :linux,
|
42
|
+
:versions => ["5"]
|
43
|
+
}
|
44
|
+
end
|
45
|
+
|
46
|
+
def execute
|
47
|
+
adjust_partition_table
|
48
|
+
|
49
|
+
disk_path = build_with_appliance_creator( CENTOS_REPOS ) do |guestfs, guestfs_helper|
|
50
|
+
kernel_version = guestfs.ls("/lib/modules").first
|
51
|
+
|
52
|
+
@log.debug "Recreating initrd for #{kernel_version} kernel..."
|
53
|
+
guestfs.sh( "/sbin/mkinitrd -f -v --preload=mptspi /boot/initrd-#{kernel_version}.img #{kernel_version}" )
|
54
|
+
@log.debug "Initrd recreated."
|
55
|
+
|
56
|
+
@log.debug "Applying root password..."
|
57
|
+
guestfs.sh( "/usr/bin/passwd -d root" )
|
58
|
+
guestfs.sh( "/usr/sbin/usermod -p '#{@appliance_config.os.password.crypt((0...8).map{65.+(rand(25)).chr}.join)}' root" )
|
59
|
+
@log.debug "Password applied."
|
60
|
+
end
|
61
|
+
|
62
|
+
@log.info "Done."
|
63
|
+
|
64
|
+
disk_path
|
65
|
+
end
|
66
|
+
|
67
|
+
# https://bugzilla.redhat.com/show_bug.cgi?id=466275
|
68
|
+
def adjust_partition_table
|
69
|
+
@appliance_config.hardware.partitions['/boot'] = { 'root' => '/boot', 'size' => 0.1 } if @appliance_config.hardware.partitions['/boot'].nil?
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# JBoss, Home of Professional Open Source
|
2
|
+
# Copyright 2009, Red Hat Middleware LLC, and individual contributors
|
3
|
+
# by the @authors tag. See the copyright.txt in the distribution for a
|
4
|
+
# full listing of individual contributors.
|
5
|
+
#
|
6
|
+
# This is free software; you can redistribute it and/or modify it
|
7
|
+
# under the terms of the GNU Lesser General Public License as
|
8
|
+
# published by the Free Software Foundation; either version 2.1 of
|
9
|
+
# the License, or (at your option) any later version.
|
10
|
+
#
|
11
|
+
# This software is distributed in the hope that it will be useful,
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
14
|
+
# Lesser General Public License for more details.
|
15
|
+
#
|
16
|
+
# You should have received a copy of the GNU Lesser General Public
|
17
|
+
# License along with this software; if not, write to the Free
|
18
|
+
# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
19
|
+
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
|
20
|
+
|
21
|
+
require 'boxgrinder-build/plugins/os/base/rpm-based-os-plugin'
|
22
|
+
require 'boxgrinder-build/plugins/os/base/kickstart'
|
23
|
+
require 'boxgrinder-build/plugins/os/base/validators/rpm-dependency-validator'
|
24
|
+
|
25
|
+
module BoxGrinder
|
26
|
+
class FedoraPlugin < RPMBasedOSPlugin
|
27
|
+
|
28
|
+
FEDORA_REPOS = {
|
29
|
+
"12" => {
|
30
|
+
"base" => {
|
31
|
+
"mirrorlist" => "http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-12&arch=#ARCH#"
|
32
|
+
},
|
33
|
+
"updates" => {
|
34
|
+
"mirrorlist" => "http://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-f12&arch=#ARCH#"
|
35
|
+
}
|
36
|
+
},
|
37
|
+
"11" => {
|
38
|
+
"base" => {
|
39
|
+
"mirrorlist" => "http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-11&arch=#ARCH#"
|
40
|
+
},
|
41
|
+
"updates" => {
|
42
|
+
"mirrorlist" => "http://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-f11&arch=#ARCH#"
|
43
|
+
}
|
44
|
+
},
|
45
|
+
"rawhide" => {
|
46
|
+
"base" => {
|
47
|
+
"mirrorlist" => "http://mirrors.fedoraproject.org/mirrorlist?repo=rawhide&arch=#ARCH#"
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
}
|
52
|
+
|
53
|
+
def info
|
54
|
+
{
|
55
|
+
:name => :fedora,
|
56
|
+
:full_name => "Fedora",
|
57
|
+
:type => :linux,
|
58
|
+
:versions => ["11", "12", "rawhide"]
|
59
|
+
}
|
60
|
+
end
|
61
|
+
|
62
|
+
def execute
|
63
|
+
build_with_appliance_creator( FEDORA_REPOS )
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# JBoss, Home of Professional Open Source
|
2
|
+
# Copyright 2009, Red Hat Middleware LLC, and individual contributors
|
3
|
+
# by the @authors tag. See the copyright.txt in the distribution for a
|
4
|
+
# full listing of individual contributors.
|
5
|
+
#
|
6
|
+
# This is free software; you can redistribute it and/or modify it
|
7
|
+
# under the terms of the GNU Lesser General Public License as
|
8
|
+
# published by the Free Software Foundation; either version 2.1 of
|
9
|
+
# the License, or (at your option) any later version.
|
10
|
+
#
|
11
|
+
# This software is distributed in the hope that it will be useful,
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
14
|
+
# Lesser General Public License for more details.
|
15
|
+
#
|
16
|
+
# You should have received a copy of the GNU Lesser General Public
|
17
|
+
# License along with this software; if not, write to the Free
|
18
|
+
# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
19
|
+
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
|
20
|
+
|
21
|
+
require 'boxgrinder-build/plugins/os/base/rpm-based-os-plugin'
|
22
|
+
|
23
|
+
module BoxGrinder
|
24
|
+
class RHELPlugin < RPMBasedOSPlugin
|
25
|
+
def info
|
26
|
+
{
|
27
|
+
:name => :rhel,
|
28
|
+
:full_name => "Red Hat Enterprise Linux",
|
29
|
+
:type => :linux,
|
30
|
+
:versions => ["5"]
|
31
|
+
}
|
32
|
+
end
|
33
|
+
|
34
|
+
def build
|
35
|
+
raise "Build cannot be started until the plugin isn't initialized" if @initialized.nil?
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# JBoss, Home of Professional Open Source
|
2
|
+
# Copyright 2009, Red Hat Middleware LLC, and individual contributors
|
3
|
+
# by the @authors tag. See the copyright.txt in the distribution for a
|
4
|
+
# full listing of individual contributors.
|
5
|
+
#
|
6
|
+
# This is free software; you can redistribute it and/or modify it
|
7
|
+
# under the terms of the GNU Lesser General Public License as
|
8
|
+
# published by the Free Software Foundation; either version 2.1 of
|
9
|
+
# the License, or (at your option) any later version.
|
10
|
+
#
|
11
|
+
# This software is distributed in the hope that it will be useful,
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
14
|
+
# Lesser General Public License for more details.
|
15
|
+
#
|
16
|
+
# You should have received a copy of the GNU Lesser General Public
|
17
|
+
# License along with this software; if not, write to the Free
|
18
|
+
# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
19
|
+
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
|
20
|
+
|
21
|
+
require 'boxgrinder-build/managers/platform-plugin-manager'
|
22
|
+
require 'boxgrinder-build/plugins/base-plugin'
|
23
|
+
|
24
|
+
module BoxGrinder
|
25
|
+
class BasePlatformPlugin < BasePlugin
|
26
|
+
def self.inherited(klass)
|
27
|
+
PlatformPluginManager.instance << klass
|
28
|
+
end
|
29
|
+
|
30
|
+
alias_method :execute_original, :execute
|
31
|
+
|
32
|
+
def execute(args = nil)
|
33
|
+
raise "Conversion cannot be started before the plugin isn't initialized" if @initialized.nil?
|
34
|
+
execute_original(args)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|