Sha256: 3d7c1414d769d7d5580e57ebbe1785a228fcea00e3aafb9bbb42cbb741e01366

Contents?: true

Size: 1.75 KB

Versions: 22

Compression:

Stored size: 1.75 KB

Contents

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

class LinuxAdmin
  class VolumeGroup < LinuxAdmin
    # volume group name
    attr_accessor :name

    # other fields available
    # volume group access
    # volume group status
    # internal volume group number
    # maximum number of logical volumes
    # current number of logical volumes
    # open count of all logical volumes in this volume group
    # maximum logical volume size
    # maximum number of physical volumes
    # current number of physical volumes
    # actual number of physical volumes
    # size of volume group in kilobytes
    # physical extent size
    # total number of physical extents for this volume group
    # allocated number of physical extents for this volume group
    # free number of physical extents for this volume group
    # uuid of volume group

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

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

    def extend_with(pv)
      run!(cmd(:vgextend),
          :params => [@name, pv.device_name])
      pv.volume_group = self
      self
    end

    def self.create(name, pv)
      self.scan # initialize local volume groups
      run!(cmd(:vgcreate),
          :params => [name, pv.device_name])
      vg = VolumeGroup.new :name => name
      pv.volume_group = vg
      @vgs << vg
      vg
    end

    def self.scan
      @vgs ||= begin
        vgs = []

        out = run!(cmd(:vgdisplay), :params => { '-c' => nil}).output

        out.each_line do |line|
          fields = line.lstrip.split(':')
          vgs << VolumeGroup.new(:name => fields[0])
        end

        vgs
      end
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
linux_admin-0.9.4 lib/linux_admin/volume_group.rb
linux_admin-0.9.3 lib/linux_admin/volume_group.rb
linux_admin-0.9.2 lib/linux_admin/volume_group.rb
linux_admin-0.9.1 lib/linux_admin/volume_group.rb
linux_admin-0.9.0 lib/linux_admin/volume_group.rb
linux_admin-0.8.1 lib/linux_admin/volume_group.rb
linux_admin-0.8.0 lib/linux_admin/volume_group.rb
linux_admin-0.7.0 lib/linux_admin/volume_group.rb
linux_admin-0.6.0 lib/linux_admin/volume_group.rb
linux_admin-0.5.7 lib/linux_admin/volume_group.rb
linux_admin-0.5.6 lib/linux_admin/volume_group.rb
linux_admin-0.5.5 lib/linux_admin/volume_group.rb
linux_admin-0.5.4 lib/linux_admin/volume_group.rb
linux_admin-0.5.3 lib/linux_admin/volume_group.rb
linux_admin-0.5.2 lib/linux_admin/volume_group.rb
linux_admin-0.5.1 lib/linux_admin/volume_group.rb
linux_admin-0.5.0 lib/linux_admin/volume_group.rb
linux_admin-0.4.1 lib/linux_admin/volume_group.rb
linux_admin-0.4.0 lib/linux_admin/volume_group.rb
linux_admin-0.3.0 lib/linux_admin/volume_group.rb