diff -r 1c7e99693439 -r bdc967bf50d2 lib/SI/lvm.pm --- a/lib/SI/lvm.pm Fri Jan 29 00:35:46 2010 +0100 +++ b/lib/SI/lvm.pm Sun Jan 31 01:17:32 2010 +0100 @@ -7,6 +7,7 @@ use IO::File; use Cwd qw(abs_path); use File::Basename; +use feature "switch"; use SI::tools; @@ -67,6 +68,49 @@ run("vgcfgbackup -f '$file' >/dev/null"); } +sub pvcreate(\%) { + my $devs = shift; + foreach my $volume ( keys %{$devs->{volume}} ) { + my $v = $devs->{volume}{$volume}; + next if $v->{origin} ne "ptable" + or not defined $v->{type} + or $v->{type} !~ /^lvm/i; + run("pvcreate -y -ff -u $v->{uuid} $volume"); + } +} + +sub vgcfgrestore($\%) { + my @cfgs = glob($_[0]); + my $devs = shift; + + foreach (@cfgs) { + my $vg = basename($_); + next if $vg eq "vg.*"; + print $vg, "\n"; + } +} + +sub mkfs(\%) { + my $devs = shift; + foreach my $volume ( keys %{$devs->{volume}} ) { + my $v = $devs->{volume}{$volume}; + next if $v->{origin} ne "lvm" + or not defined $v->{type}; + + my $label = default("" => $v->{label}); + my $uuid = default("" => $v->{uuid}); + + given($v->{type}) { + when(/ext/) { + run("mkfs -t $v->{type} -L '$label' -U '$uuid' $volume"); + }; + when(/swap/) { + run("mkswap -L '$label' -U '$uuid' $volume"); + }; + } + } +} + 1; # vim:sts=4 sw=4 aw ai si: