-Allow cloning of another lun

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@3914 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
jbjohnso 2009-07-31 20:27:54 +00:00
parent 19ac430385
commit fa0211c3b4

View File

@ -224,12 +224,19 @@ sub getUnits {
sub create_new_lun {
print Dumper(@_);
my $controller = shift;
my $gname = shift;
my $cfg = shift;
my $lunsize = shift;
my $size = getUnits($lunsize,'g',1048576);
$size .= "m";
my %args = @_;
my $lunsize;
my $mspec;
if ($args{mspec}) {
$mspec = $args{mspec}
} elsif ($args{lsize}) {
$lunsize = $args{lsize};
}
my %osmap = (
'rh.*' => 'linux',
'centos.*' => 'linux',
@ -253,16 +260,24 @@ sub create_new_lun {
$gtype =~ s/_2008//; #The group types don't include a 2k8 specific type
my $file = $cfg->{file};
print Dumper($cfg);
my $iname = $cfg->{iname};
my $output;
unless ($size and $ltype and $file and $gtype) { #TODO etc
unless (($lunsize or $mspec) and $ltype and $file and $gtype) { #TODO etc
sendmsg([1,"Insufficient data"]);
}
print "ssh $controller lun create -s $size -t $ltype $file";
$output = `ssh $controller lun create -s $size -t $ltype $file`;
if ($lunsize) {
my $size = getUnits($lunsize,'g',1048576);
$size .= "m";
$output = `ssh $controller lun create -s $size -t $ltype $file`;
} elsif ($mspec) {
my $mlun;
my $msnap;
($mlun,$msnap) = split /@/,$mspec,2;
my $output = `ssh $controller lun clone create $file -b $mlun $msnap`;
}
$output = `ssh $controller igroup create -i -t $gtype $gname`;
$output = `ssh $controller igroup add $gname $iname`;
$output = `ssh $controller lun map $file $gname`;
@ -275,16 +290,20 @@ sub configure_node {
my $lunmap = shift;
my $request = shift;
my $lunsize;
my $masterspec;
if ($request->{arg}) {
use Getopt::Long;
@ARGV=@{$request->{arg}};
GetOptions(
"size|s=i" => \$lunsize,
"master|m=s" => \$masterspec,
);
}
unless (defined $lunmap->{$node}->{$cfg->{file}}) {
if ($lunsize) {
create_new_lun($controller,$node,$cfg,$lunsize);
create_new_lun($controller,$node,$cfg,lsize=>$lunsize);
} elsif ($masterspec) {
create_new_lun($controller,$node,$cfg,mspec=>$masterspec);
} else {
die "IMPLEMENT MAKING NEW LUN";
}