Implement rmstorage for sc

This commit is contained in:
Jarrod Johnson 2013-10-27 16:39:23 -04:00
parent bd899691b0
commit bb351003dc

View File

@ -44,21 +44,59 @@ sub detachstorage {
unless ($controller) {
$controller = assure_identical_table_values(\@nodes, $storents, 'controller');
}
my $volname = shift @ARGV;
my @volnames = @ARGV;
my $wwns = get_wwns(@nodes);
use Data::Dumper;
my %namemap = makehosts($wwns, controller=>$controller, cfg=>$storents);
foreach my $node (keys %namemap) {
my $host = $namemap{$node};
my $session = establish_session(controller=>$controller);
my @rets = $session->cmd("rmvdiskhostmap -host $host $volname");
my $ret = $rets[0];
if ($ret =~ m/^CMMVC5842E/) {
sendmsg([1,"Node not attached"],$callback,$node);
foreach my $volname (@volnames) {
my @rets = $session->cmd("rmvdiskhostmap -host $host $volname");
my $ret = $rets[0];
if ($ret =~ m/^CMMVC5842E/) {
sendmsg([1,"Node not attached to $volname"],$callback,$node);
}
}
}
}
sub rmstorage {
my $request = shift;
my @nodes = @{$request->{node}};
my $controller;
@ARGV = @{$request->{arg}};
unless (GetOptions(
'controller=s' => \$controller,
)) {
foreach (@nodes) {
sendmsg([1,"Error parsing arguments"],$callback,$_);
}
}
my @volnames = @ARGV;
my $storagetab = xCAT::Table->new('storage');
my $storents = $storagetab->getNodesAttribs(\@nodes, [qw/controller/]);
unless ($controller) {
$controller = assure_identical_table_values(\@nodes, $storents, 'controller');
}
detachstorage($request);
my $session = establish_session(controller=>$controller);
foreach my $volname (@volnames) {
my @info = $session->cmd("rmvdisk $volname");
my $ret = $info[0];
if ($ret =~ m/^CMMVC5753E/) {
foreach my $node (@nodes) {
sendmsg([1,"Disk $volname does not exist"], $callback, @nodes);
}
} elsif ($ret =~ m/^CMMVC5840E/) {
foreach my $node (@nodes) {
sendmsg([1,"Disk $volname is mapped to other nodes and/or busy"], $callback, @nodes);
}
}
}
}
sub lsstorage {
my $request = shift;
my @nodes = @{$request->{node}};
@ -431,6 +469,8 @@ sub process_request {
mkstorage($request);
} elsif ($request->{command}->[0] eq 'lsstorage') {
lsstorage($request);
} elsif ($request->{command}->[0] eq 'rmstorage') {
rmstorage($request);
} elsif ($request->{command}->[0] eq 'detachstorage') {
detachstorage($request);
} elsif ($request->{command}->[0] eq 'lspool') {