Class: ManageIQ::ApplianceConsole::TempStorageConfiguration

Inherits:
Object
  • Object
show all
Includes:
Logging
Defined in:
lib/manageiq/appliance_console/temp_storage_configuration.rb

Constant Summary collapse

TEMP_DISK_FILESYSTEM_TYPE =
"xfs".freeze
TEMP_DISK_MOUNT_POINT =
Pathname.new("/var/www/miq_tmp").freeze
TEMP_DISK_MOUNT_OPTS =
"rw,noatime".freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Logging

#error_and_logging_from_command_result_error, #error_and_logging_from_standard_error, #interactive, #interactive=, interactive?, #interactive?, #log_and_feedback, #log_and_feedback_exception, #log_and_feedback_info, #log_error, #log_prefix, #logger, #logger=, #say_error, #say_info

Constructor Details

#initialize(config = {}) ⇒ TempStorageConfiguration

Returns a new instance of TempStorageConfiguration.



12
13
14
# File 'lib/manageiq/appliance_console/temp_storage_configuration.rb', line 12

def initialize(config = {})
  @disk = config[:disk]
end

Instance Attribute Details

#diskObject (readonly)

Returns the value of attribute disk.



8
9
10
# File 'lib/manageiq/appliance_console/temp_storage_configuration.rb', line 8

def disk
  @disk
end

Instance Method Details

#activateObject



16
17
18
19
# File 'lib/manageiq/appliance_console/temp_storage_configuration.rb', line 16

def activate
  say("Configuring #{disk.path} as temp storage...")
  add_temp_disk(disk)
end

#add_temp_disk(disk) ⇒ Object



26
27
28
29
30
31
32
33
# File 'lib/manageiq/appliance_console/temp_storage_configuration.rb', line 26

def add_temp_disk(disk)
  log_and_feedback(__method__) do
    partition = create_partition_to_fill_disk(disk)
    format_partition(partition)
    mount_temp_disk(partition)
    update_fstab(partition)
  end
end

#ask_questionsObject



21
22
23
24
# File 'lib/manageiq/appliance_console/temp_storage_configuration.rb', line 21

def ask_questions
  @disk = ask_for_disk("temp storage disk", false)
  disk && are_you_sure?("configure #{disk.path} as temp storage")
end

#create_partition_to_fill_disk(disk) ⇒ Object

FIXME: Copied from InternalDatabaseConfiguration - remove both when LinuxAdmin updated



68
69
70
71
72
73
74
75
76
# File 'lib/manageiq/appliance_console/temp_storage_configuration.rb', line 68

def create_partition_to_fill_disk(disk)
  # @disk.create_partition('primary', '100%')
  disk.create_partition_table # LinuxAdmin::Disk.create_partition has this already...
  AwesomeSpawn.run!("parted -s #{disk.path} mkpart primary 0% 100%")

  # FIXME: Refetch the disk after creating the partition
  disk = LinuxAdmin::Disk.local.find { |d| d.path == disk.path }
  disk.partitions.first
end

#format_partition(partition) ⇒ Object



35
36
37
# File 'lib/manageiq/appliance_console/temp_storage_configuration.rb', line 35

def format_partition(partition)
  AwesomeSpawn.run!("mkfs.#{TEMP_DISK_FILESYSTEM_TYPE} #{partition.path}")
end

#mount_temp_disk(partition) ⇒ Object



39
40
41
42
43
44
45
46
47
48
# File 'lib/manageiq/appliance_console/temp_storage_configuration.rb', line 39

def mount_temp_disk(partition)
  # TODO: should this be moved into LinuxAdmin?
  FileUtils.rm_rf(TEMP_DISK_MOUNT_POINT)
  FileUtils.mkdir_p(TEMP_DISK_MOUNT_POINT)
  AwesomeSpawn.run!("mount", :params => {
                    "-t" => TEMP_DISK_FILESYSTEM_TYPE,
                    "-o" => TEMP_DISK_MOUNT_OPTS,
                    nil  => [partition.path, TEMP_DISK_MOUNT_POINT]
                  })
end

#update_fstab(partition) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/manageiq/appliance_console/temp_storage_configuration.rb', line 50

def update_fstab(partition)
  fstab = LinuxAdmin::FSTab.instance
  return if fstab.entries.detect { |e| e.mount_point == TEMP_DISK_MOUNT_POINT }

  entry = LinuxAdmin::FSTabEntry.new(
    :device        => partition.path,
    :mount_point   => TEMP_DISK_MOUNT_POINT,
    :fs_type       => TEMP_DISK_FILESYSTEM_TYPE,
    :mount_options => TEMP_DISK_MOUNT_OPTS,
    :dumpable      => 0,
    :fsck_order    => 0
  )

  fstab.entries << entry
  fstab.write!  # Test this more, whitespace is removed
end