class ManageIQ::ApplianceConsole::TempStorageConfiguration

Constants

TEMP_DISK_FILESYSTEM_TYPE
TEMP_DISK_MOUNT_OPTS
TEMP_DISK_MOUNT_POINT

Attributes

disk[R]

Public Class Methods

new(config = {}) click to toggle source
# File lib/manageiq/appliance_console/temp_storage_configuration.rb, line 12
def initialize(config = {})
  @disk = config[:disk]
end

Public Instance Methods

activate() click to toggle source
# 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) click to toggle source
# 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_questions() click to toggle source
# 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) click to toggle source

FIXME: Copied from InternalDatabaseConfiguration - remove both when LinuxAdmin updated

# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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