Class: Bootloader::DeviceMap

Inherits:
Object
  • Object
show all
Includes:
Yast::Logger
Defined in:
src/lib/bootloader/device_map.rb

Overview

Class representing grub device map structure

Constant Summary

Instance Method Summary (collapse)

Constructor Details

- (DeviceMap) initialize(mapping = {})

Returns a new instance of DeviceMap



10
11
12
13
14
15
16
17
# File 'src/lib/bootloader/device_map.rb', line 10

def initialize(mapping = {})
  # lazy load to avoid circular dependencies
  Yast.import "Arch"
  Yast.import "BootStorage"
  Yast.import "Mode"
  Yast.import "Storage"
  @mapping = mapping
end

Instance Method Details

- (Boolean) contain_disk?(disk)

Returns:

  • (Boolean)


31
32
33
34
# File 'src/lib/bootloader/device_map.rb', line 31

def contain_disk?(disk)
  @mapping.include?(disk) ||
    @mapping.include?(::Bootloader::UdevMapping.to_mountby_device(disk))
end

- (Object) disks_order



36
37
38
39
40
# File 'src/lib/bootloader/device_map.rb', line 36

def disks_order
  disks = @mapping.select { |_k, v| v.start_with?("hd") }.keys

  disks.sort_by { |d| @mapping[d][2..-1].to_i }
end

- (Boolean) empty?

Returns:

  • (Boolean)


27
28
29
# File 'src/lib/bootloader/device_map.rb', line 27

def empty?
  @mapping.empty?
end

- (Object) propose



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'src/lib/bootloader/device_map.rb', line 58

def propose
  @mapping = {}

  if Yast::Mode.config
    log.info("Skipping device map proposing in Config mode")
    return
  end

  return propose_s390_device_map if Yast::Arch.s390

  fill_mapping

  order_boot_device

  reduce_to_bios_limit
end

- (Hash{String => String}) remapped_hash

Function remap device map to device name (/dev/sda) or to label (ufo_disk)

Returns:

  • (Hash{String => String})

    new device map



45
46
47
48
49
50
51
52
53
54
55
56
# File 'src/lib/bootloader/device_map.rb', line 45

def remapped_hash
  if !Yast::Arch.ppc
    return to_hash if Yast::Storage.GetDefaultMountBy == :label
  end

  # convert device names in device map to the device names by device or label
  remapped = @mapping.map do |k, v|
    [UdevMapping.to_kernel_device(k), v]
  end

  Hash[remapped]
end

- (Object) to_hash



19
20
21
# File 'src/lib/bootloader/device_map.rb', line 19

def to_hash
  @mapping.dup
end

- (Object) to_s



23
24
25
# File 'src/lib/bootloader/device_map.rb', line 23

def to_s
  "Device Map: #{@mapping.inspect}"
end