boxgrinder-build 0.7.1 → 0.8.0
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 +13 -0
- data/Manifest +3 -3
- data/Rakefile +1 -1
- data/bin/boxgrinder +121 -0
- data/boxgrinder-build.gemspec +12 -12
- data/lib/boxgrinder-build.rb +19 -0
- data/lib/boxgrinder-build/appliance.rb +30 -35
- data/lib/boxgrinder-build/helpers/appliance-customize-helper.rb +2 -2
- data/lib/boxgrinder-build/helpers/augeas-helper.rb +2 -2
- data/lib/boxgrinder-build/helpers/guestfs-helper.rb +16 -7
- data/lib/boxgrinder-build/helpers/image-helper.rb +48 -20
- data/lib/boxgrinder-build/helpers/linux-helper.rb +2 -2
- data/lib/boxgrinder-build/helpers/package-helper.rb +9 -12
- data/lib/boxgrinder-build/helpers/plugin-helper.rb +11 -19
- data/lib/boxgrinder-build/helpers/thor-helper.rb +82 -0
- data/lib/boxgrinder-build/managers/plugin-manager.rb +10 -25
- data/lib/boxgrinder-build/plugins/base-plugin.rb +50 -33
- data/rubygem-boxgrinder-build.spec +20 -5
- data/spec/appliance-spec.rb +60 -46
- data/spec/helpers/guestfs-helper-spec.rb +123 -37
- data/spec/helpers/image-helper-spec.rb +126 -56
- data/spec/helpers/package-helper-spec.rb +35 -0
- data/spec/helpers/plugin-helper-spec.rb +64 -20
- data/spec/managers/plugin-manager-spec.rb +33 -2
- data/spec/plugins/base-plugin-spec.rb +83 -27
- metadata +21 -20
- data/bin/boxgrinder-build +0 -91
- data/spec/rspec/src/appliances/jeos-f13.appl +0 -27
- data/spec/rspec/src/appliances/jeos-f13.ks +0 -23
data/bin/boxgrinder-build
DELETED
@@ -1,91 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
# Copyright 2010 Red Hat, Inc.
|
4
|
-
#
|
5
|
-
# This is free software; you can redistribute it and/or modify it
|
6
|
-
# under the terms of the GNU Lesser General Public License as
|
7
|
-
# published by the Free Software Foundation; either version 3 of
|
8
|
-
# the License, or (at your option) any later version.
|
9
|
-
#
|
10
|
-
# This software is distributed in the hope that it will be useful,
|
11
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
13
|
-
# Lesser General Public License for more details.
|
14
|
-
#
|
15
|
-
# You should have received a copy of the GNU Lesser General Public
|
16
|
-
# License along with this software; if not, write to the Free
|
17
|
-
# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
18
|
-
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
|
19
|
-
|
20
|
-
require 'rubygems'
|
21
|
-
require 'boxgrinder-core/helpers/log-helper'
|
22
|
-
require 'boxgrinder-build/appliance'
|
23
|
-
|
24
|
-
#$stderr.reopen($stdout)
|
25
|
-
|
26
|
-
if Process.uid != 0
|
27
|
-
puts "This program must be executed with root privileges. Try 'sudo boxgrinder-build'"
|
28
|
-
abort
|
29
|
-
end
|
30
|
-
|
31
|
-
require 'commander/import'
|
32
|
-
|
33
|
-
module Commander
|
34
|
-
class Runner
|
35
|
-
def run!
|
36
|
-
require_program :version, :description
|
37
|
-
trap('INT') { abort program(:int_message) } if program(:int_message)
|
38
|
-
trap('INT') { program(:int_block).call } if program(:int_block)
|
39
|
-
global_option('-h', '--help', 'Display help documentation') { command(:help).run *@args[1..-1]; return }
|
40
|
-
global_option('-v', '--version', 'Display version information') { say version; return }
|
41
|
-
parse_global_options
|
42
|
-
remove_global_options options, @args
|
43
|
-
run_active_command
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
program :name, 'BoxGrinder Build'
|
49
|
-
program :version, '0.7.1'
|
50
|
-
program :description, "A tool for building VM images from simple definition files."
|
51
|
-
program :help, 'Homepage', 'http://www.jboss.org/boxgrinder/build.html'
|
52
|
-
program :help, 'Documentation', 'http://community.jboss.org/docs/DOC-14358'
|
53
|
-
program :help, 'Examples', "Run 'boxgrinder-build -h build' for more info about syntax."
|
54
|
-
default_command :build
|
55
|
-
|
56
|
-
$log_level = :info
|
57
|
-
|
58
|
-
global_option('-V', '--verbose', TrueClass, "Prints debug information while building. Default: false.") { $log_level = :debug }
|
59
|
-
global_option('-W', '--very-verbose', TrueClass, "Prints trace information while building. Default: false.") { $log_level = :trace }
|
60
|
-
|
61
|
-
module BoxGrinder
|
62
|
-
command :build do |c|
|
63
|
-
c.syntax = 'build appliance_definition.appl [options]'
|
64
|
-
c.description = 'Creates an image from selected appliance definition for selected platform.'
|
65
|
-
c.examples = "boxgrinder-build test.appl -p vmware\nboxgrinder-build test.appl -p ec2 -d ami\nboxgrinder-build test.appl -d sftp"
|
66
|
-
|
67
|
-
force = false
|
68
|
-
|
69
|
-
c.option '-p STRING', '--platform STRING', String, "The type of platform. Default: none." # Valid types are: #{PlatformPluginManager.instance.plugins.keys.join(', ')}. Default: none."
|
70
|
-
c.option '-d STRING', '--delivery STRING', String, "The delivery type for selected image. Default: none." # Valid types are: #{DeliveryPluginManager.instance.types.keys.join(', ')}. Default: none."
|
71
|
-
c.option('-f', '--force', "Force image creation - removes all previous builds for selected appliance.") { force = true }
|
72
|
-
c.option '-l STRING', '--plugins STRING', String, "Comma separated list of plugins. Default: default plugins will be available."
|
73
|
-
|
74
|
-
c.action do |args, options|
|
75
|
-
options.default :platform => :none
|
76
|
-
options.default :delivery => :none
|
77
|
-
|
78
|
-
options.force = force
|
79
|
-
options.name = program(:name)
|
80
|
-
options.version = program(:version)
|
81
|
-
options.platform = options.platform.to_s.downcase.to_sym
|
82
|
-
options.delivery = options.delivery.to_s.downcase.to_sym
|
83
|
-
|
84
|
-
appliance_definition_file = args.shift or raise("You need to specify appliance definition file. Run 'boxgrinder-build -h' for more info")
|
85
|
-
|
86
|
-
raise "Appliance definition file '#{appliance_definition_file}' could not be found" unless File.exists?(appliance_definition_file)
|
87
|
-
|
88
|
-
Appliance.new(appliance_definition_file, :options => options, :log => LogHelper.new(:threshold => $log_level)).create
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
@@ -1,27 +0,0 @@
|
|
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
|
@@ -1,23 +0,0 @@
|
|
1
|
-
# bg_os_name: fedora
|
2
|
-
# bg_os_version: 13
|
3
|
-
|
4
|
-
lang en_US.UTF-8
|
5
|
-
keyboard us
|
6
|
-
timezone US/Eastern
|
7
|
-
auth --useshadow --enablemd5
|
8
|
-
selinux --permissive
|
9
|
-
firewall --disabled
|
10
|
-
bootloader --timeout=1 --append="acpi=force scsi_mod.scan=sync"
|
11
|
-
firstboot --disabled
|
12
|
-
network --bootproto=dhcp --device=eth0 --onboot=on
|
13
|
-
services --enabled=network
|
14
|
-
rootpw boxgrinder
|
15
|
-
|
16
|
-
part / --size 2048 --fstype ext4 --ondisk sda
|
17
|
-
|
18
|
-
repo --name=fedora-14-base --cost=40 --mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-13&arch=x86_64
|
19
|
-
repo --name=fedora-14-updates --cost=41 --mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-f13&arch=x86_64
|
20
|
-
|
21
|
-
%packages --excludedocs --nobase
|
22
|
-
@core
|
23
|
-
%end
|