| Class | BoxGrinder::ApplianceConfig |
| In: |
lib/boxgrinder-core/models/appliance-config.rb
lib/boxgrinder-core/models/appliance-config.rb |
| Parent: | Object |
| appliances | [RW] | |
| appliances | [RW] | |
| default_repos | [RW] | |
| default_repos | [RW] | |
| files | [R] | |
| files | [R] | |
| hardware | [R] | |
| hardware | [R] | |
| name | [RW] | |
| name | [RW] | |
| os | [R] | |
| os | [R] | |
| packages | [RW] | |
| packages | [RW] | |
| path | [R] | |
| path | [R] | |
| post | [R] | |
| post | [R] | |
| release | [RW] | |
| release | [RW] | |
| repos | [RW] | |
| repos | [RW] | |
| summary | [RW] | |
| summary | [RW] | |
| variables | [R] | |
| variables | [R] | |
| version | [RW] | |
| version | [RW] |
# File lib/boxgrinder-core/models/appliance-config.rb, line 25
25: def initialize
26: @name = nil
27: @summary = nil
28:
29: @default_repos = true
30:
31: @os = AStruct.new
32:
33: @os.name = nil
34: @os.version = nil
35: @os.password = nil
36: @os.pae = true
37:
38: @hardware = AStruct.new
39:
40: @hardware.cpus = 1
41: @hardware.memory = 256
42: @hardware.network = 'NAT'
43: @hardware.partitions = {"/" => {'size' => 1}}
44:
45: @variables = {}
46: @post = {}
47: @files = {}
48:
49: @packages = []
50: @appliances = []
51: @repos = []
52:
53: @version = 1
54: @release = 0
55: end
# File lib/boxgrinder-core/models/appliance-config.rb, line 25
25: def initialize
26: @name = nil
27: @summary = nil
28:
29: @default_repos = true
30:
31: @os = AStruct.new
32:
33: @os.name = nil
34: @os.version = nil
35: @os.password = nil
36: @os.pae = true
37:
38: @hardware = AStruct.new
39:
40: @hardware.cpus = 1
41: @hardware.memory = 256
42: @hardware.network = 'NAT'
43: @hardware.partitions = {"/" => {'size' => 1}}
44:
45: @variables = {}
46: @post = {}
47: @files = {}
48:
49: @packages = []
50: @appliances = []
51: @repos = []
52:
53: @version = 1
54: @release = 0
55: end
# File lib/boxgrinder-core/models/appliance-config.rb, line 73
73: def [](k)
74: instance_variable_get("@#{k}")
75: end
# File lib/boxgrinder-core/models/appliance-config.rb, line 73
73: def [](k)
74: instance_variable_get("@#{k}")
75: end
# File lib/boxgrinder-core/models/appliance-config.rb, line 77
77: def []=(k, v)
78: case k
79: when "hardware"
80: @hardware.cpus = v['cpus'] if v['cpus']
81: @hardware.memory = v['memory'] if v['memory']
82: @hardware.network = v['network'] if v['network']
83: @hardware.partitions = v['partitions'] if v['partitions']
84: when "os"
85: @os.name = v['name'] if v['name']
86: @os.version = v['version'] if v['version']
87: @os.password = v['password'] if v['password']
88: # TODO this is OS specific, move it to OS plugin!
89: @os.pae = false if v['pae'] == false
90: else
91: instance_variable_set("@#{k}", v)
92: end
93:
94: end
# File lib/boxgrinder-core/models/appliance-config.rb, line 77
77: def []=(k, v)
78: case k
79: when "hardware"
80: @hardware.cpus = v['cpus'] if v['cpus']
81: @hardware.memory = v['memory'] if v['memory']
82: @hardware.network = v['network'] if v['network']
83: @hardware.partitions = v['partitions'] if v['partitions']
84: when "os"
85: @os.name = v['name'] if v['name']
86: @os.version = v['version'] if v['version']
87: @os.password = v['password'] if v['password']
88: # TODO this is OS specific, move it to OS plugin!
89: @os.pae = false if v['pae'] == false
90: else
91: instance_variable_set("@#{k}", v)
92: end
93:
94: end
# File lib/boxgrinder-core/models/appliance-config.rb, line 120
120: def all_values(input=nil)
121: avoid = ['@variables']
122: input = (self.instance_variables - avoid).
123: collect{ |v| self.instance_variable_get(v) } if input.nil?
124:
125: vars = input.inject([]) do |arr, var|
126: case var
127: when Hash
128: arr.concat(all_values(var.values))
129: when Array
130: arr.concat(all_values(var))
131: when String
132: arr.push var
133: end
134: arr
135: end
136: vars
137: end
# File lib/boxgrinder-core/models/appliance-config.rb, line 120
120: def all_values(input=nil)
121: avoid = ['@variables']
122: input = (self.instance_variables - avoid).
123: collect{ |v| self.instance_variable_get(v) } if input.nil?
124:
125: vars = input.inject([]) do |arr, var|
126: case var
127: when Hash
128: arr.concat(all_values(var.values))
129: when Array
130: arr.concat(all_values(var))
131: when String
132: arr.push var
133: end
134: arr
135: end
136: vars
137: end
# File lib/boxgrinder-core/models/appliance-config.rb, line 169
169: def clone
170: Marshal::load(Marshal.dump(self))
171: end
# File lib/boxgrinder-core/models/appliance-config.rb, line 169
169: def clone
170: Marshal::load(Marshal.dump(self))
171: end
Returns default filesystem type for current OS
# File lib/boxgrinder-core/models/appliance-config.rb, line 140
140: def default_filesystem_type
141: fs = 'ext4'
142:
143: # Since RHEL 5.6 the default filesystem is ext4
144: #
145: # case @os.name
146: # when 'rhel', 'centos'
147: # case @os.version
148: # when '5'
149: # fs = 'ext3'
150: # end
151: # end
152:
153: fs
154: end
Returns default filesystem type for current OS
# File lib/boxgrinder-core/models/appliance-config.rb, line 140
140: def default_filesystem_type
141: fs = 'ext4'
142:
143: # Since RHEL 5.6 the default filesystem is ext4
144: #
145: # case @os.name
146: # when 'rhel', 'centos'
147: # case @os.version
148: # when '5'
149: # fs = 'ext3'
150: # end
151: # end
152:
153: fs
154: end
# File lib/boxgrinder-core/models/appliance-config.rb, line 161
161: def eql?(other)
162: hash.eql?(other.hash)
163: end
# File lib/boxgrinder-core/models/appliance-config.rb, line 161
161: def eql?(other)
162: hash.eql?(other.hash)
163: end
used to checking if configuration differs from previous in appliance-kickstart
# File lib/boxgrinder-core/models/appliance-config.rb, line 157
157: def hash
158: "#{@name}-#{@summary}-#{@version}-#{@release}-#{@os.name}-#{@os.version}-#{@os.password}-#{@hardware.cpus}-#{@hardware.memory}-#{@hardware.partitions}-#{@appliances}".hash
159: end
used to checking if configuration differs from previous in appliance-kickstart
# File lib/boxgrinder-core/models/appliance-config.rb, line 157
157: def hash
158: "#{@name}-#{@summary}-#{@version}-#{@release}-#{@os.name}-#{@os.version}-#{@os.password}-#{@hardware.cpus}-#{@hardware.memory}-#{@hardware.partitions}-#{@appliances}".hash
159: end
# File lib/boxgrinder-core/models/appliance-config.rb, line 96
96: def init
97: init_arch
98: initialize_paths
99: self
100: end
# File lib/boxgrinder-core/models/appliance-config.rb, line 96
96: def init
97: init_arch
98: initialize_paths
99: self
100: end
# File lib/boxgrinder-core/models/appliance-config.rb, line 102
102: def init_arch
103: @hardware.arch = `uname -m`.chomp.strip
104: @hardware.base_arch = is64bit? ? "x86_64" : "i386"
105: self
106: end
# File lib/boxgrinder-core/models/appliance-config.rb, line 102
102: def init_arch
103: @hardware.arch = `uname -m`.chomp.strip
104: @hardware.base_arch = is64bit? ? "x86_64" : "i386"
105: self
106: end
# File lib/boxgrinder-core/models/appliance-config.rb, line 108
108: def initialize_paths
109: @path = AStruct.new
110:
111: @path.os = "#{@os.name}/#{@os.version}"
112: @path.version = "#{@version}.#{@release}"
113: @path.main = "#{@hardware.arch}/#{@path.os}"
114: @path.appliance = "appliances/#{@path.main}/#{@name}/#{@path.version}"
115: @path.build = "build/#{@path.appliance}"
116:
117: self
118: end
# File lib/boxgrinder-core/models/appliance-config.rb, line 108
108: def initialize_paths
109: @path = AStruct.new
110:
111: @path.os = "#{@os.name}/#{@os.version}"
112: @path.version = "#{@version}.#{@release}"
113: @path.main = "#{@hardware.arch}/#{@path.os}"
114: @path.appliance = "appliances/#{@path.main}/#{@name}/#{@path.version}"
115: @path.build = "build/#{@path.appliance}"
116:
117: self
118: end
# File lib/boxgrinder-core/models/appliance-config.rb, line 165
165: def is64bit?
166: @hardware.arch.eql?("x86_64")
167: end