class BoxGrinder::Kickstart
Public Class Methods
new(config, appliance_config, dir, options = {})
click to toggle source
# File lib/boxgrinder-build/plugins/os/rpm-based/kickstart.rb, line 27 def initialize(config, appliance_config, dir, options = {}) @config = config @appliance_config = appliance_config @dir = dir @log = options[:log] || Logger.new(STDOUT) @linux_helper = LinuxHelper.new(:log => @log) @kickstart_file = "#{@dir.tmp}/#{@appliance_config.name}.ks" end
Public Instance Methods
build_definition()
click to toggle source
# File lib/boxgrinder-build/plugins/os/rpm-based/kickstart.rb, line 46 def build_definition definition = {} definition['appliance_config'] = @appliance_config definition['repos'] = [] definition['graphical'] = (@appliance_config.packages.include?( '@base-x' ) or @appliance_config.packages.include?( '@X Window System' )) ? true : false def definition.method_missing(sym, * args) self[sym.to_s] end def definition.get_binding binding end cost = 40 definition['mount_points'] = @linux_helper.partition_mount_points(@appliance_config.hardware.partitions) for repo in @appliance_config.repos if repo.keys.include?('mirrorlist') urltype = 'mirrorlist' else urltype = 'baseurl' end substitutions = { /#ARCH#/ => @appliance_config.hardware.arch, /#BASE_ARCH#/ => @appliance_config.hardware.base_arch, /#OS_VERSION#/ => @appliance_config.os.version, /#OS_NAME#/ => @appliance_config.os.name } url = repo[urltype] name = repo['name'] substitutions.each do |key, value| url = url.gsub(key, value) name = name.gsub(key, value) end definition['repos'] << "repo --name=#{name} --cost=#{cost} --#{urltype}=#{url}" cost += 1 end definition end
create()
click to toggle source
# File lib/boxgrinder-build/plugins/os/rpm-based/kickstart.rb, line 38 def create template = "#{File.dirname(__FILE__)}/src/appliance.ks.erb" kickstart = ERB.new(File.read(template)).result(build_definition.get_binding) File.open(@kickstart_file, 'w') { |f| f.write(kickstart) } @kickstart_file end