Sha256: 3c46773e8d11246ac626b9f378f4addad915dc7212ea41188eef949fa1c072fc

Contents?: true

Size: 1.66 KB

Versions: 1

Compression:

Stored size: 1.66 KB

Contents

# LinuxAdmin Logical Volume Representation
#
# Copyright (C) 2013 Red Hat Inc.
# Licensed under the MIT License

class LinuxAdmin
  class LogicalVolume < Volume
    # logical volume name
    attr_accessor :name

    # volume group name
    attr_accessor :volume_group

    # logical volume size in sectors
    attr_accessor :sectors

    # other fields available:
    # logical volume access
    # logical volume status
    # internal logical volume number
    # open count of logical volume
    # current logical extents associated to logical volume
    # allocated logical extents of logical volume
    # allocation policy of logical volume
    # read ahead sectors of logical volume
    # major device number of logical volume
    # minor device number of logical volume

    def initialize(args = {})
      @name         = args[:name]
      @volume_group = args[:volume_group]
      @sectors      = args[:sectors]
    end

    def extend_with(vg)
      run!(cmd(:lvextend),
          :params => [self.name, vg.name])
      self
    end

    def self.create(name, vg, size)
      self.scan # initialize local logical volumes
      run!(cmd(:lvcreate),
          :params => { '-n' => name, nil => vg.name, '-L' => size})
      lv = LogicalVolume.new :name => name,
                             :volume_group => vg,
                             :sectors => size
      @lvs << lv
      lv
    end

    def self.scan
      @lvs ||= begin
        scan_volumes(cmd(:lvdisplay)) do |fields, vg|
          LogicalVolume.new(:name         => fields[0],
                            :volume_group => vg,
                            :sectors      => fields[6].to_i)
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
linux_admin-0.2.1 lib/linux_admin/logical_volume.rb