Class: CFA::Grub2::Default
- Inherits:
-
BaseModel
- Object
- BaseModel
- CFA::Grub2::Default
- Defined in:
- lib/cfa/grub2/default.rb
Overview
Represents grub configuration in /etc/default/grub Main features:
-
Do not overwrite files
-
When setting value first try to just change value if key already exists
-
When key is not set, then try to find commented out line with key and replace it with real config
-
When even commented out code is not there, then append configuration to the end of file
Defined Under Namespace
Classes: KernelParams
Constant Summary collapse
- PATH =
"/etc/default/grub"- VALID_TERMINAL_OPTIONS =
[:serial, :console, :gfxterm].freeze
Instance Method Summary collapse
- #cryptodisk ⇒ Object
-
#initialize(file_handler: nil) ⇒ Default
constructor
A new instance of Default.
- #kernel_params ⇒ Object
- #load ⇒ Object
- #os_prober ⇒ Object
- #recovery_entry ⇒ Object
- #recovery_params ⇒ Object
- #save ⇒ Object
- #serial_console ⇒ Object
-
#serial_console=(value) ⇒ Object
Sets GRUB_SERIAL_COMMAND option.
-
#terminal ⇒ Array<Symbol>?
Reads value of GRUB_TERMINAL from /etc/default/grub.
-
#terminal=(values) ⇒ Object
Sets GRUB_TERMINAL option.
- #xen_hypervisor_params ⇒ Object
- #xen_kernel_params ⇒ Object
Constructor Details
Instance Method Details
#cryptodisk ⇒ Object
102 103 104 105 |
# File 'lib/cfa/grub2/default.rb', line 102 def cryptodisk @cryptodisk ||= BooleanValue.new("GRUB_ENABLE_CRYPTODISK", self, true_value: "y", false_value: "n") end |
#kernel_params ⇒ Object
67 68 69 70 71 |
# File 'lib/cfa/grub2/default.rb', line 67 def kernel_params @kernel_params ||= KernelParams.new( value_for("GRUB_CMDLINE_LINUX_DEFAULT"), "GRUB_CMDLINE_LINUX_DEFAULT" ) end |
#load ⇒ Object
48 49 50 51 52 53 54 55 56 57 |
# File 'lib/cfa/grub2/default.rb', line 48 def load super kernels = [kernel_params, xen_hypervisor_params, xen_kernel_params, recovery_params] kernels.each do |kernel| param_line = value_for(kernel.key) kernel.replace(param_line) if param_line end end |
#os_prober ⇒ Object
59 60 61 62 63 64 65 |
# File 'lib/cfa/grub2/default.rb', line 59 def os_prober @os_prober ||= BooleanValue.new( "GRUB_DISABLE_OS_PROBER", self, # grub key is disable, so use reverse logic true_value: "false", false_value: "true" ) end |
#recovery_entry ⇒ Object
94 95 96 97 98 99 100 |
# File 'lib/cfa/grub2/default.rb', line 94 def recovery_entry @recovery_entry ||= BooleanValue.new( "GRUB_DISABLE_RECOVERY", self, # grub key is disable, so use reverse logic true_value: "false", false_value: "true" ) end |
#recovery_params ⇒ Object
87 88 89 90 91 92 |
# File 'lib/cfa/grub2/default.rb', line 87 def recovery_params @recovery_params ||= KernelParams.new( value_for("GRUB_CMDLINE_LINUX_RECOVERY"), "GRUB_CMDLINE_LINUX_RECOVERY" ) end |
#save ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/cfa/grub2/default.rb', line 36 def save # serialize kernel params object before save kernels = [@kernel_params, @xen_hypervisor_params, @xen_kernel_params, @recovery_params] kernels.each do |params| # FIXME: this empty prevent writing explicit empty kernel params. generic_set(params.key, params.serialize) if params && !params.empty? end super end |
#serial_console ⇒ Object
155 156 157 |
# File 'lib/cfa/grub2/default.rb', line 155 def serial_console value_for("GRUB_SERIAL_COMMAND") end |
#serial_console=(value) ⇒ Object
Sets GRUB_SERIAL_COMMAND option
Updates GRUB_SERIAL_COMMAND with given value, also enables serial console in GRUB_TERMINAL
150 151 152 153 |
# File 'lib/cfa/grub2/default.rb', line 150 def serial_console=(value) self.terminal = (terminal || []) | [:serial] generic_set("GRUB_SERIAL_COMMAND", value) end |
#terminal ⇒ Array<Symbol>?
Reads value of GRUB_TERMINAL from /etc/default/grub
GRUB_TERMINAL option allows multiple values as space separated string
115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/cfa/grub2/default.rb', line 115 def terminal values = value_for("GRUB_TERMINAL") return nil if values.nil? || values.empty? values.split.map do |value| msg = "unknown GRUB_TERMINAL option #{value.inspect}" raise msg if !VALID_TERMINAL_OPTIONS.include?(value.to_sym) value.to_sym end end |
#terminal=(values) ⇒ Object
Sets GRUB_TERMINAL option
Raises an ArgumentError exception in case of invalid value
134 135 136 137 138 139 140 141 142 |
# File 'lib/cfa/grub2/default.rb', line 134 def terminal=(values) values = [] if values.nil? msg = "A value is invalid: #{values.inspect}" invalid = values.any? { |v| !VALID_TERMINAL_OPTIONS.include?(v) } raise ArgumentError, msg if invalid generic_set("GRUB_TERMINAL", values.join(" ")) end |
#xen_hypervisor_params ⇒ Object
73 74 75 76 77 78 |
# File 'lib/cfa/grub2/default.rb', line 73 def xen_hypervisor_params @xen_hypervisor_params ||= KernelParams.new( value_for("GRUB_CMDLINE_XEN_DEFAULT"), "GRUB_CMDLINE_XEN_DEFAULT" ) end |
#xen_kernel_params ⇒ Object
80 81 82 83 84 85 |
# File 'lib/cfa/grub2/default.rb', line 80 def xen_kernel_params @xen_kernel_params ||= KernelParams.new( value_for("GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT"), "GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT" ) end |