| 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