lib/SI/lvm.pm
changeset 36 bdc967bf50d2
parent 28 7d7ca3f05f25
child 37 a61b92c60367
--- 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: