build/scripts/VX/templates/vsnap_export_unexport.pl (79 lines of code) (raw):

#!/usr/bin/perl use strict; sub log { my($message) = @_; print "vsnap_export_unexport :".$message; } sub export_vsnaps() { my $vsnap_cmd = `/usr/local/InMage/Vx/bin/cdpcli --vsnap --op=remount`; &log('Issued the command "cdpcli --vsnap --op=remount" and OP is '.$vsnap_cmd.'\n'); &log("Exporting Vsnaps!\n"); &handle_vsnaps("1"); } sub unexport_vsnaps() { my $vsnap_cmd = "for devfiles in `ls /proc/scsi_tgt/groups/*/devices `; do grep -l inmvsnap \$devfiles;cat \$devfiles |grep inmvsnap; done >/usr/local/.vsnaps"; `$vsnap_cmd`; &log("Un Exporting Vsnaps!\n"); &handle_vsnaps("0"); } sub handle_vsnaps { my ($export) = @_; my $op = "add"; &log("export is $export\n"); if ($export == 0 or $export eq "0") { $op = "del"; } my $vsnap_file = "/usr/local/.vsnaps"; # Read mount file # File opernations for mount file unless ( open(FH , "<$vsnap_file") ) { &log("Cannot open $vsnap_file for reading!\n"); return; } local $/ = undef; my $vsnaps = <FH>; close(FH); # Constructing array out of vsnap file my @contents = split("\n",$vsnaps); my $devices_file; foreach my $line (@contents) { if($line !~ /scsi_tgt/) { &log ("$op Vsnap $line to $devices_file\n"); my $cmd="echo \"$op $line\" >$devices_file"; my $cmd_ret=`$cmd`; my $cmd_status = `echo $?`; &log("$cmd returned $cmd_ret and return status is $cmd_status\n"); } else { { $devices_file = $line; print "\nfile $line\n"; } } } } sub main() { my $arg=$ARGV[0]; if ($arg eq "unexport") { &unexport_vsnaps(); &log("Unexport...\n"); } elsif ($arg eq "export") { &export_vsnaps(); &log("Export...\n"); } else { &log("Please supply valid option to vsnap_export_unexport.pl.\n"); &log("Usage: perl vsnap_export_unexport.pl <export/unexport>.\n"); } } &main;