Class BoxGrinder::Kickstart
In: lib/boxgrinder-build-rpm-based-os-plugin/kickstart.rb
lib/boxgrinder-build-rpm-based-os-plugin/kickstart.rb
Parent: Object

Methods

Public Class methods

[Source]

    # File lib/boxgrinder-build-rpm-based-os-plugin/kickstart.rb, line 26
26:     def initialize(config, appliance_config, repos, dir, options = {})
27:       @config           = config
28:       @repos            = repos
29:       @appliance_config = appliance_config
30:       @dir              = dir
31:       @log              = options[:log] || Logger.new(STDOUT)
32: 
33:       @kickstart_file   = "#{@dir.tmp}/#{@appliance_config.name}.ks"
34:     end

[Source]

    # File lib/boxgrinder-build-rpm-based-os-plugin/kickstart.rb, line 26
26:     def initialize(config, appliance_config, repos, dir, options = {})
27:       @config           = config
28:       @repos            = repos
29:       @appliance_config = appliance_config
30:       @dir              = dir
31:       @log              = options[:log] || Logger.new(STDOUT)
32: 
33:       @kickstart_file   = "#{@dir.tmp}/#{@appliance_config.name}.ks"
34:     end

Public Instance methods

[Source]

     # File lib/boxgrinder-build-rpm-based-os-plugin/kickstart.rb, line 44
 44:     def build_definition
 45:       definition = {}
 46: 
 47:       definition['appliance_config']  = @appliance_config
 48:       definition['repos']             = []
 49:       definition['graphical']         = (@appliance_config.packages.includes.include?( '@base-x' ) or @appliance_config.packages.includes.include?( '@X Window System' )) ? true : false
 50:       definition['packages']          = []
 51: 
 52:       definition['packages'] += @appliance_config.packages.includes
 53: 
 54:       @appliance_config.packages.excludes do |package|
 55:         definition['packages'].push("-#{package}")
 56:       end
 57: 
 58:       definition['root_password'] = @appliance_config.os.password
 59: 
 60:       def definition.method_missing(sym, * args)
 61:         self[sym.to_s]
 62:       end
 63: 
 64:       cost = 40
 65: 
 66:       definition['partitions'] = @appliance_config.hardware.partitions
 67: 
 68:       repos = []
 69:       repos += valid_repos if @appliance_config.default_repos
 70:       repos += @appliance_config.repos
 71: 
 72:       for repo in repos
 73:         if repo.keys.include?('mirrorlist')
 74:           urltype = 'mirrorlist'
 75:         else
 76:           urltype = 'baseurl'
 77:         end
 78: 
 79:         substitutions = {
 80:             /#ARCH#/        => @appliance_config.hardware.arch,
 81:             /#BASE_ARCH#/   => @appliance_config.hardware.base_arch,
 82:             /#OS_VERSION#/  => @appliance_config.os.version,
 83:             /#OS_NAME#/     => @appliance_config.os.name
 84:         }
 85: 
 86:         url   = repo[urltype]
 87:         name  = repo['name']
 88: 
 89:         substitutions.each do |key, value|
 90:           url   = url.gsub(key, value)
 91:           name  = name.gsub(key, value)
 92:         end
 93: 
 94:         repo_def = "repo --name=#{name} --cost=#{cost} --#{urltype}=#{url}"
 95:         repo_def += " --excludepkgs=#{repo['excludes'].join(',')}" unless repo['excludes'].nil? or repo['excludes'].empty?
 96: 
 97:         definition['repos'] << repo_def
 98: 
 99:         cost += 1
100:       end
101: 
102:       definition
103:     end

[Source]

     # File lib/boxgrinder-build-rpm-based-os-plugin/kickstart.rb, line 44
 44:     def build_definition
 45:       definition = {}
 46: 
 47:       definition['appliance_config']  = @appliance_config
 48:       definition['repos']             = []
 49:       definition['graphical']         = (@appliance_config.packages.includes.include?( '@base-x' ) or @appliance_config.packages.includes.include?( '@X Window System' )) ? true : false
 50:       definition['packages']          = []
 51: 
 52:       definition['packages'] += @appliance_config.packages.includes
 53: 
 54:       @appliance_config.packages.excludes do |package|
 55:         definition['packages'].push("-#{package}")
 56:       end
 57: 
 58:       definition['root_password'] = @appliance_config.os.password
 59: 
 60:       def definition.method_missing(sym, * args)
 61:         self[sym.to_s]
 62:       end
 63: 
 64:       cost = 40
 65: 
 66:       definition['partitions'] = @appliance_config.hardware.partitions
 67: 
 68:       repos = []
 69:       repos += valid_repos if @appliance_config.default_repos
 70:       repos += @appliance_config.repos
 71: 
 72:       for repo in repos
 73:         if repo.keys.include?('mirrorlist')
 74:           urltype = 'mirrorlist'
 75:         else
 76:           urltype = 'baseurl'
 77:         end
 78: 
 79:         substitutions = {
 80:             /#ARCH#/        => @appliance_config.hardware.arch,
 81:             /#BASE_ARCH#/   => @appliance_config.hardware.base_arch,
 82:             /#OS_VERSION#/  => @appliance_config.os.version,
 83:             /#OS_NAME#/     => @appliance_config.os.name
 84:         }
 85: 
 86:         url   = repo[urltype]
 87:         name  = repo['name']
 88: 
 89:         substitutions.each do |key, value|
 90:           url   = url.gsub(key, value)
 91:           name  = name.gsub(key, value)
 92:         end
 93: 
 94:         repo_def = "repo --name=#{name} --cost=#{cost} --#{urltype}=#{url}"
 95:         repo_def += " --excludepkgs=#{repo['excludes'].join(',')}" unless repo['excludes'].nil? or repo['excludes'].empty?
 96: 
 97:         definition['repos'] << repo_def
 98: 
 99:         cost += 1
100:       end
101: 
102:       definition
103:     end

[Source]

    # File lib/boxgrinder-build-rpm-based-os-plugin/kickstart.rb, line 36
36:     def create
37:       template = "#{File.dirname(__FILE__)}/src/appliance.ks.erb"
38:       kickstart = ERB.new(File.read(template)).result(build_definition.send(:binding))
39:       File.open(@kickstart_file, 'w') { |f| f.write(kickstart) }
40: 
41:       @kickstart_file
42:     end

[Source]

    # File lib/boxgrinder-build-rpm-based-os-plugin/kickstart.rb, line 36
36:     def create
37:       template = "#{File.dirname(__FILE__)}/src/appliance.ks.erb"
38:       kickstart = ERB.new(File.read(template)).result(build_definition.send(:binding))
39:       File.open(@kickstart_file, 'w') { |f| f.write(kickstart) }
40: 
41:       @kickstart_file
42:     end

[Source]

     # File lib/boxgrinder-build-rpm-based-os-plugin/kickstart.rb, line 105
105:     def  valid_reposvalid_repos
106:       os_repos = @repos[@appliance_config.os.version]
107: 
108:       repos = Array.new
109: 
110:       for type in ["base", "updates"]
111:         unless os_repos.nil? or os_repos[type].nil?
112: 
113:           mirrorlist = os_repos[type]['mirrorlist']
114:           baseurl = os_repos[type]['baseurl']
115: 
116:           name = "#{@appliance_config.os.name}-#{@appliance_config.os.version}-#{type}"
117: 
118:           if mirrorlist.nil?
119:             repos.push({"name" => name, "baseurl" => baseurl})
120:           else
121:             repos.push({"name" => name, "mirrorlist" => mirrorlist})
122:           end
123:         end
124:       end
125: 
126:       repos
127:     end

[Source]

     # File lib/boxgrinder-build-rpm-based-os-plugin/kickstart.rb, line 105
105:     def  valid_reposvalid_repos
106:       os_repos = @repos[@appliance_config.os.version]
107: 
108:       repos = Array.new
109: 
110:       for type in ["base", "updates"]
111:         unless os_repos.nil? or os_repos[type].nil?
112: 
113:           mirrorlist = os_repos[type]['mirrorlist']
114:           baseurl = os_repos[type]['baseurl']
115: 
116:           name = "#{@appliance_config.os.name}-#{@appliance_config.os.version}-#{type}"
117: 
118:           if mirrorlist.nil?
119:             repos.push({"name" => name, "baseurl" => baseurl})
120:           else
121:             repos.push({"name" => name, "mirrorlist" => mirrorlist})
122:           end
123:         end
124:       end
125: 
126:       repos
127:     end

[Validate]