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
- PARSER =
AugeasParser.new("sysconfig.lns")
- PATH =
"/etc/default/grub"- VALID_TERMINAL_OPTIONS =
[:serial, :console, :gfxterm]
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(changes_only: false) ⇒ Object
- #serial_console ⇒ Object
- #serial_console=(value) ⇒ Object
- #terminal ⇒ Object
- #terminal=(value) ⇒ Object
- #xen_hypervisor_params ⇒ Object
- #xen_kernel_params ⇒ Object
Constructor Details
Instance Method Details
#cryptodisk ⇒ Object
96 97 98 |
# File 'lib/cfa/grub2/default.rb', line 96 def cryptodisk @cryptodisk ||= BooleanValue.new("GRUB_ENABLE_CRYPTODISK", self) end |
#kernel_params ⇒ Object
63 64 65 66 67 |
# File 'lib/cfa/grub2/default.rb', line 63 def kernel_params @kernel_params ||= KernelParams.new( data["GRUB_CMDLINE_LINUX_DEFAULT"], "GRUB_CMDLINE_LINUX_DEFAULT" ) end |
#load ⇒ Object
44 45 46 47 48 49 50 51 52 53 |
# File 'lib/cfa/grub2/default.rb', line 44 def load super kernels = [kernel_params, xen_hypervisor_params, xen_kernel_params, recovery_params] kernels.each do |kernel| param_line = data[kernel.key] kernel.replace(param_line) if param_line end end |
#os_prober ⇒ Object
55 56 57 58 59 60 61 |
# File 'lib/cfa/grub2/default.rb', line 55 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
88 89 90 91 92 93 94 |
# File 'lib/cfa/grub2/default.rb', line 88 def recovery_entry @recovery ||= BooleanValue.new( "GRUB_DISABLE_RECOVERY", self, # grub key is disable, so use reverse logic true_value: "false", false_value: "true" ) end |
#recovery_params ⇒ Object
82 83 84 85 86 |
# File 'lib/cfa/grub2/default.rb', line 82 def recovery_params @recovery_params ||= KernelParams.new( data["GRUB_CMDLINE_LINUX_RECOVERY"], "GRUB_CMDLINE_LINUX_RECOVERY" ) end |
#save(changes_only: false) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/cfa/grub2/default.rb', line 32 def save(changes_only: false) # 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
125 126 127 |
# File 'lib/cfa/grub2/default.rb', line 125 def serial_console data["GRUB_SERIAL_COMMAND"] end |
#serial_console=(value) ⇒ Object
120 121 122 123 |
# File 'lib/cfa/grub2/default.rb', line 120 def serial_console=(value) self.terminal = :serial generic_set("GRUB_SERIAL_COMMAND", value) end |
#terminal ⇒ Object
100 101 102 103 104 105 106 107 108 109 |
# File 'lib/cfa/grub2/default.rb', line 100 def terminal case data["GRUB_TERMINAL"] when "", nil then nil when "console" then :console when "serial" then :serial when "gfxterm" then :gfxterm else raise "unknown GRUB_TERMINAL option #{data["GRUB_TERMINAL"].inspect}" end end |
#terminal=(value) ⇒ Object
112 113 114 115 116 117 118 |
# File 'lib/cfa/grub2/default.rb', line 112 def terminal=(value) if !VALID_TERMINAL_OPTIONS.include?(value) raise ArgumentError, "invalid value #{value.inspect}" end generic_set("GRUB_TERMINAL", value.to_s) end |
#xen_hypervisor_params ⇒ Object
69 70 71 72 73 74 |
# File 'lib/cfa/grub2/default.rb', line 69 def xen_hypervisor_params @xen_hypervisor_params ||= KernelParams.new( data["GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT"], "GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT" ) end |
#xen_kernel_params ⇒ Object
76 77 78 79 80 |
# File 'lib/cfa/grub2/default.rb', line 76 def xen_kernel_params @xen_kernel_params ||= KernelParams.new( data["GRUB_CMDLINE_LINUX_XEN"], "GRUB_CMDLINE_LINUX_XEN" ) end |