2007-09-18 18:00:42 +04:00
# Put lvm-related utilities here.
# This file is sourced from test-lib.sh.
2008-06-06 17:48:57 +04:00
# Copyright (C) 2007, 2008 Red Hat, Inc. All rights reserved.
2007-09-18 18:02:22 +04:00
#
# This copyrighted material is made available to anyone wishing to use,
# modify, copy, or redistribute it subject to the terms and conditions
# of the GNU General Public License v.2.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
2007-09-18 18:00:42 +04:00
export LVM_SUPPRESS_FD_WARNINGS = 1
ME = $( basename " $0 " )
warn( ) { echo >& 2 " $ME : $@ " ; }
2010-08-02 17:20:50 +04:00
trim( )
{
trimmed = ${ 1 %% }
trimmed = ${ trimmed ## }
echo " $trimmed "
}
2009-05-08 10:10:45 +04:00
compare_two_fields_( )
{
local cmd1 = $1 ;
local obj1 = $2 ;
local field1 = $3 ;
local cmd2 = $4 ;
local obj2 = $5 ;
local field2 = $6 ;
local val1;
local val2;
val1 = $( $cmd1 --noheadings -o $field1 $obj1 )
val2 = $( $cmd2 --noheadings -o $field2 $obj2 )
if test " $verbose " = "t"
then
echo " compare_two_fields_ $obj1 ( $field1 ): $val1 $obj2 ( $field2 ): $val2 "
fi
2010-08-02 17:20:50 +04:00
test " $val1 " = " $val2 "
2009-05-08 10:10:45 +04:00
}
2008-03-23 18:40:35 +03:00
compare_vg_field_( )
{
2008-06-25 20:51:26 +04:00
local vg1 = $1 ;
local vg2 = $2 ;
local field = $3 ;
local val1;
local val2;
val1 = $( vgs --noheadings -o $field $vg1 )
val2 = $( vgs --noheadings -o $field $vg2 )
2008-03-23 18:40:35 +03:00
if test " $verbose " = "t"
then
2008-06-25 20:51:26 +04:00
echo " compare_vg_field_ VG1: $val1 VG2: $val2 "
2008-03-23 18:40:35 +03:00
fi
2010-08-02 17:20:50 +04:00
test " $val1 " = " $val2 "
2008-03-23 18:40:35 +03:00
}
2010-02-16 20:48:46 +03:00
get_pv_field( ) {
local pv = $1
local field = $2
local value
pvs --noheading -o $field $pv | sed 's/^ *//'
}
get_vg_field( ) {
local vg = $1
local field = $2
local value
vgs --noheading -o $field $vg | sed 's/^ *//'
}
get_lv_field( ) {
local lv = $1
local field = $2
local value
lvs --noheading -o $field $lv | sed 's/^ *//'
}
2008-01-15 00:07:58 +03:00
check_vg_field_( )
{
2008-06-25 20:51:26 +04:00
local vg = $1 ;
local field = $2 ;
local expected = $3 ;
local actual;
2010-08-02 17:20:50 +04:00
actual = $( trim $( vgs --noheadings -o $field $vg ) )
2008-01-17 21:05:57 +03:00
if test " $verbose " = "t"
then
2008-06-25 20:51:26 +04:00
echo " check_vg_field_ VG= $vg , field= $field , actual= $actual , expected= $expected "
2008-01-17 21:05:57 +03:00
fi
2010-08-02 17:20:50 +04:00
test " $actual " = " $expected "
2008-01-15 00:07:58 +03:00
}
2008-01-17 21:05:57 +03:00
check_pv_field_( )
2007-09-22 01:14:25 +04:00
{
2008-06-25 20:51:26 +04:00
local pv = $1 ;
local field = $2 ;
local expected = $3 ;
2010-08-12 08:11:48 +04:00
local pvs_args = $4 ; # optional
2008-06-25 20:51:26 +04:00
local actual;
2010-08-12 08:11:48 +04:00
actual = $( trim $( pvs --noheadings $pvs_args -o $field $pv ) )
2008-01-17 21:05:57 +03:00
if test " $verbose " = "t"
then
2008-06-25 20:51:26 +04:00
echo " check_pv_field_ PV= $pv , field= $field , actual= $actual , expected= $expected "
2008-01-17 21:05:57 +03:00
fi
2010-08-02 17:20:50 +04:00
test " $actual " = " $expected "
2007-09-22 01:14:25 +04:00
}
2008-01-17 21:05:57 +03:00
check_lv_field_( )
2007-09-22 01:14:25 +04:00
{
2008-06-25 20:51:26 +04:00
local lv = $1 ;
local field = $2 ;
local expected = $3 ;
local actual;
2010-08-02 17:20:50 +04:00
actual = $( trim $( lvs --noheadings -o $field $lv ) )
2008-01-17 21:05:57 +03:00
if test " $verbose " = "t"
then
2008-06-25 20:51:26 +04:00
echo " check_lv_field_ LV= $lv , field= $field , actual= $actual , expected= $expected "
2008-01-17 21:05:57 +03:00
fi
2010-08-02 17:20:50 +04:00
test " $actual " = " $expected "
2007-09-22 01:14:25 +04:00
}
2007-10-09 17:13:06 +04:00
2008-04-11 18:06:16 +04:00
vg_validate_pvlv_counts_( )
{
local local_vg = $1
local num_pvs = $2
local num_lvs = $3
local num_snaps = $4
2010-03-25 15:16:17 +03:00
lvs -a -o+devices $local_vg
2010-03-25 14:57:16 +03:00
2010-08-02 17:18:01 +04:00
check_vg_field_ $local_vg pv_count $num_pvs && \
check_vg_field_ $local_vg lv_count $num_lvs && \
check_vg_field_ $local_vg snap_count $num_snaps
2008-04-11 18:06:16 +04:00
}
2007-10-09 17:13:06 +04:00
dmsetup_has_dm_devdir_support_( )
{
# Detect support for the envvar. If it's supported, the
# following command will fail with the expected diagnostic.
out = $( DM_DEV_DIR = j dmsetup version 2>& 1)
2008-01-17 00:21:22 +03:00
test " $? : $out " = "1:Invalid DM_DEV_DIR envvar value." -o \
" $? : $out " = "1:Invalid DM_DEV_DIR environment variable value."
2007-10-09 17:13:06 +04:00
}