--- 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: