Class | BoxGrinder::Kickstart |
In: |
lib/boxgrinder-build-rpm-based-os-plugin/kickstart.rb
lib/boxgrinder-build-rpm-based-os-plugin/kickstart.rb |
Parent: | Object |
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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