AIX-LVM

 view release on metacpan or  search on metacpan

lib/AIX/LVM.pm  view on Meta::CPAN

					"EACH LP COPY ON A SEPARATE PV ?:",
					"Serialize IO ?:"
				);

my @lsvg_prop = (
					"VOLUME GROUP:", 
					"VG IDENTIFIER:",
					"VG PERMISSION:",
					"VG STATE:",
					"PP SIZE:",
					"TOTAL PPs:",
					"MAX LVs:",
					"FREE PPs:",
					"USED PPs:",
					"OPEN LVs:",
					"QUORUM:",
					"TOTAL PVs:",
					"STALE PVs:",
					"STALE PPs:",
					"ACTIVE PVs:",
					"AUTO ON:",
					"MAX PPs per VG:",
					"MAX PPs per PV:",
					"MAX PVs:",
					"LTG size (Dynamic):",
					"AUTO SYNC:",
					"HOT SPARE:",
					"BB POLICY:",
					"PV RESTRICTION:",
					"VG DESCRIPTORS:",
					"LVs:"
				);


my @lspv_prop = (
					"PHYSICAL VOLUME:",
					"VOLUME GROUP:",
					"PV IDENTIFIER:",
					"VG IDENTIFIER",
					"PV STATE:",
					"STALE PARTITIONS:",
					"ALLOCATABLE:",
					"PP SIZE:",
					"LOGICAL VOLUMES:",
					"TOTAL PPs:",
					"VG DESCRIPTORS:",
					"FREE PPs:",
					"HOT SPARE:",
					"USED PPs:",
					"MAX REQUEST:",
					"FREE DISTRIBUTION:",
					"USED DISTRIBUTION:",
					"MIRROR POOL:"
				);


sub new
{
    my $class = shift;
    my $self = {};
    bless $self, $class;
    return $self->init(@_);
}


sub init 
{
    my $self = shift;
    my ($result, %lslv, %lspv, %lsvg, @lslv, @lsvg, @lspv);
    my ($lsvg, $lsvg_error) = $self->_exec_open3("lsvg -o");
	croak "Error found during execution of lsvg -o: $lsvg_error\n" if $lsvg_error;
	@lsvg = $self->_splitter($lsvg, qr'\n+');
	foreach my $lvg (@lsvg) {
		$self->{$lvg}= $self->_get_lv_pv_props($lvg);  #Hierarchy is lsvg -> lslv and lspv
	}
    return $self;
}


sub get_logical_volume_group
{
	my $self = shift;
	return sort keys %{$self};
}


sub get_logical_volumes
{
	my $self = shift;
	return map {keys %{$self->{$_}->{lvol}}}keys %{$self};
}


sub get_physical_volumes
{
	my $self = shift;
	return map {keys %{$self->{$_}->{pvol}}}keys %{$self};
}


sub get_volume_group_properties
{
	my $self = shift;
	my $vg   = shift;
	croak "Pass values for Volume Group\n" unless $vg;
	exists $self->{$vg}->{prop}? %{$self->{$vg}->{prop}}:undef;
}


sub get_logical_volume_properties
{
	my $self        = shift;
	my ($vg, $lv)   = (shift, shift);
	croak "Pass values for Volume Group\n" unless $vg;
	croak "Pass values for Logical Volume Group\n" unless $lv;
	exists $self->{$vg}->{lvol}->{$lv}->{prop}? %{$self->{$vg}->{lvol}->{$lv}->{prop}} : undef;
}


sub get_physical_volume_properties
{



( run in 2.131 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )