Sha256: be554339381e662a9dc4d376eecbc69a4e8ce9a89f8252cc0f2ce2d741ad39b1

Contents?: true

Size: 1.08 KB

Versions: 4

Compression:

Stored size: 1.08 KB

Contents

module LinuxAdmin
  module Mountable
    attr_accessor :fs_type
    attr_accessor :mount_point
    include Common

    module ClassMethods
      include Common

      def mount_point_exists?(mount_point)
        result = run!(cmd(:mount))
        result.output.split("\n").any? { |line| line.split[2] == mount_point }
      end

      def mount_point_available?(mount_point)
        !mount_point_exists?(mount_point)
      end
    end

    def self.included(base)
      base.extend(ClassMethods)
    end

    def format_to(filesystem)
      run!(cmd(:mke2fs),
          :params => { '-t' => filesystem, nil => self.path})
      @fs_type = filesystem
    end

    def mount(mount_point)
      FileUtils.mkdir(mount_point) unless File.directory?(mount_point)

      if self.class.mount_point_exists?(mount_point)
        raise ArgumentError, "disk already mounted at #{mount_point}"
      end

      run!(cmd(:mount), :params => { nil => [self.path, mount_point] })
      @mount_point = mount_point
    end

    def umount
      run!(cmd(:umount), :params => { nil => [@mount_point] })
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
linux_admin-0.14.0 lib/linux_admin/mountable.rb
linux_admin-0.13.0 lib/linux_admin/mountable.rb
linux_admin-0.12.1 lib/linux_admin/mountable.rb
linux_admin-0.12.0 lib/linux_admin/mountable.rb