| Class | BoxGrinder::Kickstart |
| In: |
lib/boxgrinder-build/plugins/os/rpm-based/kickstart.rb
lib/boxgrinder-build/plugins/os/rpm-based/kickstart.rb |
| Parent: | Object |
# File lib/boxgrinder-build/plugins/os/rpm-based/kickstart.rb, line 27
27: def initialize(config, appliance_config, repos, dir, options = {})
28: @config = config
29: @repos = repos
30: @appliance_config = appliance_config
31: @dir = dir
32: @log = options[:log] || Logger.new(STDOUT)
33:
34: @linux_helper = LinuxHelper.new(:log => @log)
35:
36: @kickstart_file = "#{@dir.tmp}/#{@appliance_config.name}.ks"
37: end
# File lib/boxgrinder-build/plugins/os/rpm-based/kickstart.rb, line 27
27: def initialize(config, appliance_config, repos, dir, options = {})
28: @config = config
29: @repos = repos
30: @appliance_config = appliance_config
31: @dir = dir
32: @log = options[:log] || Logger.new(STDOUT)
33:
34: @linux_helper = LinuxHelper.new(:log => @log)
35:
36: @kickstart_file = "#{@dir.tmp}/#{@appliance_config.name}.ks"
37: end
# File lib/boxgrinder-build/plugins/os/rpm-based/kickstart.rb, line 47
47: def build_definition
48: definition = {}
49:
50: definition['appliance_config'] = @appliance_config
51: definition['repos'] = []
52: definition['graphical'] = (@appliance_config.packages.include?( '@base-x' ) or @appliance_config.packages.include?( '@X Window System' )) ? true : false
53:
54: def definition.method_missing(sym, * args)
55: self[sym.to_s]
56: end
57:
58: cost = 40
59:
60: definition['mount_points'] = @linux_helper.partition_mount_points(@appliance_config.hardware.partitions)
61:
62: repos = []
63: repos += default_repos if @appliance_config.default_repos
64: repos += @appliance_config.repos
65:
66: for repo in repos
67: if repo.keys.include?('mirrorlist')
68: urltype = 'mirrorlist'
69: else
70: urltype = 'baseurl'
71: end
72:
73: substitutions = {
74: /#ARCH#/ => @appliance_config.hardware.arch,
75: /#BASE_ARCH#/ => @appliance_config.hardware.base_arch,
76: /#OS_VERSION#/ => @appliance_config.os.version,
77: /#OS_NAME#/ => @appliance_config.os.name
78: }
79:
80: url = repo[urltype]
81: name = repo['name']
82:
83: substitutions.each do |key, value|
84: url = url.gsub(key, value)
85: name = name.gsub(key, value)
86: end
87:
88: definition['repos'] << "repo --name=#{name} --cost=#{cost} --#{urltype}=#{url}"
89:
90: cost += 1
91: end
92:
93: definition
94: end
# File lib/boxgrinder-build/plugins/os/rpm-based/kickstart.rb, line 47
47: def build_definition
48: definition = {}
49:
50: definition['appliance_config'] = @appliance_config
51: definition['repos'] = []
52: definition['graphical'] = (@appliance_config.packages.include?( '@base-x' ) or @appliance_config.packages.include?( '@X Window System' )) ? true : false
53:
54: def definition.method_missing(sym, * args)
55: self[sym.to_s]
56: end
57:
58: cost = 40
59:
60: definition['mount_points'] = @linux_helper.partition_mount_points(@appliance_config.hardware.partitions)
61:
62: repos = []
63: repos += default_repos if @appliance_config.default_repos
64: repos += @appliance_config.repos
65:
66: for repo in repos
67: if repo.keys.include?('mirrorlist')
68: urltype = 'mirrorlist'
69: else
70: urltype = 'baseurl'
71: end
72:
73: substitutions = {
74: /#ARCH#/ => @appliance_config.hardware.arch,
75: /#BASE_ARCH#/ => @appliance_config.hardware.base_arch,
76: /#OS_VERSION#/ => @appliance_config.os.version,
77: /#OS_NAME#/ => @appliance_config.os.name
78: }
79:
80: url = repo[urltype]
81: name = repo['name']
82:
83: substitutions.each do |key, value|
84: url = url.gsub(key, value)
85: name = name.gsub(key, value)
86: end
87:
88: definition['repos'] << "repo --name=#{name} --cost=#{cost} --#{urltype}=#{url}"
89:
90: cost += 1
91: end
92:
93: definition
94: end
# File lib/boxgrinder-build/plugins/os/rpm-based/kickstart.rb, line 39
39: def create
40: template = "#{File.dirname(__FILE__)}/src/appliance.ks.erb"
41: kickstart = ERB.new(File.read(template)).result(build_definition.send(:binding))
42: File.open(@kickstart_file, 'w') { |f| f.write(kickstart) }
43:
44: @kickstart_file
45: end
# File lib/boxgrinder-build/plugins/os/rpm-based/kickstart.rb, line 39
39: def create
40: template = "#{File.dirname(__FILE__)}/src/appliance.ks.erb"
41: kickstart = ERB.new(File.read(template)).result(build_definition.send(:binding))
42: File.open(@kickstart_file, 'w') { |f| f.write(kickstart) }
43:
44: @kickstart_file
45: end
# File lib/boxgrinder-build/plugins/os/rpm-based/kickstart.rb, line 96
96: def default_reposdefault_repos
97: os_repos = @repos[@appliance_config.os.version]
98:
99: repos = Array.new
100:
101: for type in ["base", "updates"]
102: unless os_repos.nil? or os_repos[type].nil?
103:
104: mirrorlist = os_repos[type]['mirrorlist']
105: baseurl = os_repos[type]['baseurl']
106:
107: name = "#{@appliance_config.os.name}-#{@appliance_config.os.version}-#{type}"
108:
109: if mirrorlist.nil?
110: repos.push({"name" => name, "baseurl" => baseurl})
111: else
112: repos.push({"name" => name, "mirrorlist" => mirrorlist})
113: end
114: end
115: end
116:
117: repos
118: end
# File lib/boxgrinder-build/plugins/os/rpm-based/kickstart.rb, line 96
96: def default_reposdefault_repos
97: os_repos = @repos[@appliance_config.os.version]
98:
99: repos = Array.new
100:
101: for type in ["base", "updates"]
102: unless os_repos.nil? or os_repos[type].nil?
103:
104: mirrorlist = os_repos[type]['mirrorlist']
105: baseurl = os_repos[type]['baseurl']
106:
107: name = "#{@appliance_config.os.name}-#{@appliance_config.os.version}-#{type}"
108:
109: if mirrorlist.nil?
110: repos.push({"name" => name, "baseurl" => baseurl})
111: else
112: repos.push({"name" => name, "mirrorlist" => mirrorlist})
113: end
114: end
115: end
116:
117: repos
118: end