Formatted code.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@12433 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
parent
7c2e989bb8
commit
075a6e49e9
@ -2,8 +2,8 @@
|
||||
#-------------------------------------------------------
|
||||
|
||||
=head1
|
||||
|
||||
This is a CP utility plugin for z/VM.
|
||||
|
||||
This is a CP utility plugin for z/VM.
|
||||
|
||||
=cut
|
||||
|
||||
@ -18,604 +18,604 @@ use warnings;
|
||||
|
||||
=head3 getUserId
|
||||
|
||||
Description : Get the user ID of a given node
|
||||
Arguments : Node
|
||||
Returns : UserID
|
||||
Example : my $userID = xCAT::zvmCPUtils->getUserId($node);
|
||||
Description : Get the user ID of a given node
|
||||
Arguments : Node
|
||||
Returns : UserID
|
||||
Example : my $userID = xCAT::zvmCPUtils->getUserId($node);
|
||||
|
||||
=cut
|
||||
|
||||
#-------------------------------------------------------
|
||||
sub getUserId {
|
||||
|
||||
# Get inputs
|
||||
my ( $class, $node ) = @_;
|
||||
# Get inputs
|
||||
my ( $class, $node ) = @_;
|
||||
|
||||
# Get user ID using VMCP
|
||||
my $out = `ssh -o ConnectTimeout=5 $node "vmcp q userid"`;
|
||||
my @results = split( ' ', $out );
|
||||
# Get user ID using VMCP
|
||||
my $out = `ssh -o ConnectTimeout=5 $node "vmcp q userid"`;
|
||||
my @results = split( ' ', $out );
|
||||
|
||||
return ( $results[0] );
|
||||
return ( $results[0] );
|
||||
}
|
||||
|
||||
#-------------------------------------------------------
|
||||
|
||||
=head3 getHost
|
||||
|
||||
Description : Get the z/VM host of a given node
|
||||
Arguments : Node
|
||||
Returns : z/VM host
|
||||
Example : my $host = xCAT::zvmCPUtils->getHost($node);
|
||||
Description : Get the z/VM host of a given node
|
||||
Arguments : Node
|
||||
Returns : z/VM host
|
||||
Example : my $host = xCAT::zvmCPUtils->getHost($node);
|
||||
|
||||
=cut
|
||||
|
||||
#-------------------------------------------------------
|
||||
sub getHost {
|
||||
|
||||
# Get inputs
|
||||
my ( $class, $node ) = @_;
|
||||
# Get inputs
|
||||
my ( $class, $node ) = @_;
|
||||
|
||||
# Get host using VMCP
|
||||
my $out = `ssh -o ConnectTimeout=5 $node "vmcp q userid"`;
|
||||
my @results = split( ' ', $out );
|
||||
my $host = $results[2];
|
||||
# Get host using VMCP
|
||||
my $out = `ssh -o ConnectTimeout=5 $node "vmcp q userid"`;
|
||||
my @results = split( ' ', $out );
|
||||
my $host = $results[2];
|
||||
|
||||
return ($host);
|
||||
return ($host);
|
||||
}
|
||||
|
||||
#-------------------------------------------------------
|
||||
|
||||
=head3 getPrivileges
|
||||
|
||||
Description : Get the privilege class of a given node
|
||||
Arguments : Node
|
||||
Returns : Privilege class
|
||||
Example : my $class = xCAT::zvmCPUtils->getPrivileges($node);
|
||||
Description : Get the privilege class of a given node
|
||||
Arguments : Node
|
||||
Returns : Privilege class
|
||||
Example : my $class = xCAT::zvmCPUtils->getPrivileges($node);
|
||||
|
||||
=cut
|
||||
|
||||
#-------------------------------------------------------
|
||||
sub getPrivileges {
|
||||
|
||||
# Get inputs
|
||||
my ( $class, $node ) = @_;
|
||||
# Get inputs
|
||||
my ( $class, $node ) = @_;
|
||||
|
||||
# Get privilege class
|
||||
my $out = `ssh -o ConnectTimeout=5 $node "vmcp q priv"`;
|
||||
my @out = split( '\n', $out );
|
||||
$out[1] = xCAT::zvmUtils->trimStr( $out[1] );
|
||||
$out[2] = xCAT::zvmUtils->trimStr( $out[2] );
|
||||
my $str = " $out[1]\n $out[2]\n";
|
||||
# Get privilege class
|
||||
my $out = `ssh -o ConnectTimeout=5 $node "vmcp q priv"`;
|
||||
my @out = split( '\n', $out );
|
||||
$out[1] = xCAT::zvmUtils->trimStr( $out[1] );
|
||||
$out[2] = xCAT::zvmUtils->trimStr( $out[2] );
|
||||
my $str = " $out[1]\n $out[2]\n";
|
||||
|
||||
return ($str);
|
||||
return ($str);
|
||||
}
|
||||
|
||||
#-------------------------------------------------------
|
||||
|
||||
=head3 getMemory
|
||||
|
||||
Description : Get the memory of a given node
|
||||
Arguments : Node
|
||||
Returns : Memory
|
||||
Example : my $memory = xCAT::zvmCPUtils->getMemory($node);
|
||||
Description : Get the memory of a given node
|
||||
Arguments : Node
|
||||
Returns : Memory
|
||||
Example : my $memory = xCAT::zvmCPUtils->getMemory($node);
|
||||
|
||||
=cut
|
||||
|
||||
#-------------------------------------------------------
|
||||
sub getMemory {
|
||||
|
||||
# Get inputs
|
||||
my ( $class, $node ) = @_;
|
||||
# Get inputs
|
||||
my ( $class, $node ) = @_;
|
||||
|
||||
# Get memory
|
||||
my $out = `ssh -o ConnectTimeout=5 $node "vmcp q virtual storage"`;
|
||||
my @out = split( '=', $out );
|
||||
# Get memory
|
||||
my $out = `ssh -o ConnectTimeout=5 $node "vmcp q virtual storage"`;
|
||||
my @out = split( '=', $out );
|
||||
|
||||
return ( xCAT::zvmUtils->trimStr( $out[1] ) );
|
||||
return ( xCAT::zvmUtils->trimStr( $out[1] ) );
|
||||
}
|
||||
|
||||
#-------------------------------------------------------
|
||||
|
||||
=head3 getCpu
|
||||
|
||||
Description : Get the processor(s) of a given node
|
||||
Arguments : Node
|
||||
Returns : Processor(s)
|
||||
Example : my $proc = xCAT::zvmCPUtils->getCpu($node);
|
||||
Description : Get the processor(s) of a given node
|
||||
Arguments : Node
|
||||
Returns : Processor(s)
|
||||
Example : my $proc = xCAT::zvmCPUtils->getCpu($node);
|
||||
|
||||
=cut
|
||||
|
||||
#-------------------------------------------------------
|
||||
sub getCpu {
|
||||
|
||||
# Get inputs
|
||||
my ( $class, $node ) = @_;
|
||||
# Get inputs
|
||||
my ( $class, $node ) = @_;
|
||||
|
||||
# Get processors
|
||||
my $out = `ssh -o ConnectTimeout=5 $node "vmcp q virtual cpus"`;
|
||||
my $str = xCAT::zvmUtils->tabStr($out);
|
||||
# Get processors
|
||||
my $out = `ssh -o ConnectTimeout=5 $node "vmcp q virtual cpus"`;
|
||||
my $str = xCAT::zvmUtils->tabStr($out);
|
||||
|
||||
return ($str);
|
||||
return ($str);
|
||||
}
|
||||
|
||||
#-------------------------------------------------------
|
||||
|
||||
=head3 getNic
|
||||
|
||||
Description : Get the network interface card (NIC) of a given node
|
||||
Arguments : Node
|
||||
Returns : NIC(s)
|
||||
Example : my $nic = xCAT::zvmCPUtils->getNic($node);
|
||||
Description : Get the network interface card (NIC) of a given node
|
||||
Arguments : Node
|
||||
Returns : NIC(s)
|
||||
Example : my $nic = xCAT::zvmCPUtils->getNic($node);
|
||||
|
||||
=cut
|
||||
|
||||
#-------------------------------------------------------
|
||||
sub getNic {
|
||||
|
||||
# Get inputs
|
||||
my ( $class, $node ) = @_;
|
||||
# Get inputs
|
||||
my ( $class, $node ) = @_;
|
||||
|
||||
# Get NIC
|
||||
my $out = `ssh -o ConnectTimeout=5 $node "vmcp q virtual nic"`;
|
||||
my $str = xCAT::zvmUtils->tabStr($out);
|
||||
# Get NIC
|
||||
my $out = `ssh -o ConnectTimeout=5 $node "vmcp q virtual nic"`;
|
||||
my $str = xCAT::zvmUtils->tabStr($out);
|
||||
|
||||
return ($str);
|
||||
return ($str);
|
||||
}
|
||||
|
||||
#-------------------------------------------------------
|
||||
|
||||
=head3 getNetworkNames
|
||||
|
||||
Description : Get a list of network names available to a given node
|
||||
Arguments : Node
|
||||
Returns : Network names
|
||||
Example : my $lans = xCAT::zvmCPUtils->getNetworkNames($node);
|
||||
Description : Get a list of network names available to a given node
|
||||
Arguments : Node
|
||||
Returns : Network names
|
||||
Example : my $lans = xCAT::zvmCPUtils->getNetworkNames($node);
|
||||
|
||||
=cut
|
||||
|
||||
#-------------------------------------------------------
|
||||
sub getNetworkNames {
|
||||
|
||||
# Get inputs
|
||||
my ( $class, $node ) = @_;
|
||||
# Get inputs
|
||||
my ( $class, $node ) = @_;
|
||||
|
||||
# Get network names
|
||||
my $out = `ssh -o ConnectTimeout=5 $node "vmcp q lan | egrep 'LAN|VSWITCH'"`;
|
||||
my @lines = split( '\n', $out );
|
||||
my @parms;
|
||||
my $names;
|
||||
foreach (@lines) {
|
||||
|
||||
# Trim output
|
||||
$_ = xCAT::zvmUtils->trimStr($_);
|
||||
@parms = split( ' ', $_ );
|
||||
|
||||
# Get the network name
|
||||
if ( $parms[0] eq "LAN" ) {
|
||||
|
||||
# Determine if this network is a hipersocket
|
||||
# Only hipersocket guest LANs are supported
|
||||
if ( $_ =~ m/Type: HIPERS/i ) {
|
||||
$names .= $parms[0] . ":HIPERS " . $parms[1] . " " . $parms[2] . "\n";
|
||||
} else {
|
||||
$names .= $parms[0] . ":QDIO " . $parms[1] . " " . $parms[2] . "\n";
|
||||
}
|
||||
} elsif ( $parms[0] eq "VSWITCH" ) {
|
||||
$names .= $parms[0] . " " . $parms[1] . " " . $parms[2] . "\n";
|
||||
}
|
||||
}
|
||||
# Get network names
|
||||
my $out = `ssh -o ConnectTimeout=5 $node "vmcp q lan | egrep 'LAN|VSWITCH'"`;
|
||||
my @lines = split( '\n', $out );
|
||||
my @parms;
|
||||
my $names;
|
||||
foreach (@lines) {
|
||||
|
||||
# Trim output
|
||||
$_ = xCAT::zvmUtils->trimStr($_);
|
||||
@parms = split( ' ', $_ );
|
||||
|
||||
# Get the network name
|
||||
if ( $parms[0] eq "LAN" ) {
|
||||
|
||||
# Determine if this network is a hipersocket
|
||||
# Only hipersocket guest LANs are supported
|
||||
if ( $_ =~ m/Type: HIPERS/i ) {
|
||||
$names .= $parms[0] . ":HIPERS " . $parms[1] . " " . $parms[2] . "\n";
|
||||
} else {
|
||||
$names .= $parms[0] . ":QDIO " . $parms[1] . " " . $parms[2] . "\n";
|
||||
}
|
||||
} elsif ( $parms[0] eq "VSWITCH" ) {
|
||||
$names .= $parms[0] . " " . $parms[1] . " " . $parms[2] . "\n";
|
||||
}
|
||||
}
|
||||
|
||||
return ($names);
|
||||
return ($names);
|
||||
}
|
||||
|
||||
#-------------------------------------------------------
|
||||
|
||||
=head3 getNetworkNamesArray
|
||||
|
||||
Description : Get an array of network names available to a given node
|
||||
Arguments : Node
|
||||
Returns : Array of networks names
|
||||
Example : my @networks = xCAT::zvmCPUtils->getNetworkNamesArray($node);
|
||||
Description : Get an array of network names available to a given node
|
||||
Arguments : Node
|
||||
Returns : Array of networks names
|
||||
Example : my @networks = xCAT::zvmCPUtils->getNetworkNamesArray($node);
|
||||
|
||||
=cut
|
||||
|
||||
#-------------------------------------------------------
|
||||
sub getNetworkNamesArray {
|
||||
|
||||
# Get inputs
|
||||
my ( $class, $node ) = @_;
|
||||
my @networks;
|
||||
my %netHash;
|
||||
|
||||
# Get the networks used by the node
|
||||
my $out = `ssh $node "vmcp q v nic" | egrep -i "VSWITCH|LAN"`;
|
||||
my @lines = split( '\n', $out );
|
||||
|
||||
# Loop through each line
|
||||
my $line;
|
||||
my @words;
|
||||
my $name;
|
||||
foreach(@lines) {
|
||||
# Get network name
|
||||
# Line should contain: MAC: 02-00-01-00-00-12 VSWITCH: SYSTEM VSW1
|
||||
$line = xCAT::zvmUtils->trimStr( $_ );
|
||||
@words = split( ' ', $line );
|
||||
if (@words) {
|
||||
$name = xCAT::zvmUtils->trimStr( $words[4] );
|
||||
|
||||
# If network is not 'None'
|
||||
if ($name ne 'None') {
|
||||
# Save network
|
||||
$netHash{$name} = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Push networks into array
|
||||
foreach $name ( keys %netHash ) {
|
||||
push(@networks, $name);
|
||||
}
|
||||
|
||||
return @networks;
|
||||
# Get inputs
|
||||
my ( $class, $node ) = @_;
|
||||
my @networks;
|
||||
my %netHash;
|
||||
|
||||
# Get the networks used by the node
|
||||
my $out = `ssh $node "vmcp q v nic" | egrep -i "VSWITCH|LAN"`;
|
||||
my @lines = split( '\n', $out );
|
||||
|
||||
# Loop through each line
|
||||
my $line;
|
||||
my @words;
|
||||
my $name;
|
||||
foreach(@lines) {
|
||||
# Get network name
|
||||
# Line should contain: MAC: 02-00-01-00-00-12 VSWITCH: SYSTEM VSW1
|
||||
$line = xCAT::zvmUtils->trimStr( $_ );
|
||||
@words = split( ' ', $line );
|
||||
if (@words) {
|
||||
$name = xCAT::zvmUtils->trimStr( $words[4] );
|
||||
|
||||
# If network is not 'None'
|
||||
if ($name ne 'None') {
|
||||
# Save network
|
||||
$netHash{$name} = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Push networks into array
|
||||
foreach $name ( keys %netHash ) {
|
||||
push(@networks, $name);
|
||||
}
|
||||
|
||||
return @networks;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------
|
||||
|
||||
=head3 getNetwork
|
||||
|
||||
Description : Get the network info for a given node
|
||||
Arguments : Node
|
||||
Network name
|
||||
Returns : Network configuration
|
||||
Example : my $config = xCAT::zvmCPUtils->getNetwork($node, $netName);
|
||||
Description : Get the network info for a given node
|
||||
Arguments : Node
|
||||
Network name
|
||||
Returns : Network configuration
|
||||
Example : my $config = xCAT::zvmCPUtils->getNetwork($node, $netName);
|
||||
|
||||
=cut
|
||||
|
||||
#-------------------------------------------------------
|
||||
sub getNetwork {
|
||||
|
||||
# Get inputs
|
||||
my ( $class, $node, $netName ) = @_;
|
||||
# Get inputs
|
||||
my ( $class, $node, $netName ) = @_;
|
||||
|
||||
# Get network info
|
||||
my $out;
|
||||
if ( $netName eq "all" ) {
|
||||
$out = `ssh -o ConnectTimeout=5 $node "vmcp q lan"`;
|
||||
} else {
|
||||
$out = `ssh -o ConnectTimeout=5 $node "vmcp q lan $netName"`;
|
||||
}
|
||||
# Get network info
|
||||
my $out;
|
||||
if ( $netName eq "all" ) {
|
||||
$out = `ssh -o ConnectTimeout=5 $node "vmcp q lan"`;
|
||||
} else {
|
||||
$out = `ssh -o ConnectTimeout=5 $node "vmcp q lan $netName"`;
|
||||
}
|
||||
|
||||
return ($out);
|
||||
return ($out);
|
||||
}
|
||||
|
||||
#-------------------------------------------------------
|
||||
|
||||
=head3 getDisks
|
||||
|
||||
Description : Get the disk(s) of given node
|
||||
Arguments : Node
|
||||
Returns : Disk(s)
|
||||
Example : my $storage = xCAT::zvmCPUtils->getDisks($node);
|
||||
Description : Get the disk(s) of given node
|
||||
Arguments : Node
|
||||
Returns : Disk(s)
|
||||
Example : my $storage = xCAT::zvmCPUtils->getDisks($node);
|
||||
|
||||
=cut
|
||||
|
||||
#-------------------------------------------------------
|
||||
sub getDisks {
|
||||
|
||||
# Get inputs
|
||||
my ( $class, $node ) = @_;
|
||||
# Get inputs
|
||||
my ( $class, $node ) = @_;
|
||||
|
||||
# Get disks
|
||||
my $out = `ssh -o ConnectTimeout=5 $node "vmcp q virtual dasd"`;
|
||||
my $str = xCAT::zvmUtils->tabStr($out);
|
||||
# Get disks
|
||||
my $out = `ssh -o ConnectTimeout=5 $node "vmcp q virtual dasd"`;
|
||||
my $str = xCAT::zvmUtils->tabStr($out);
|
||||
|
||||
return ($str);
|
||||
return ($str);
|
||||
}
|
||||
|
||||
#-------------------------------------------------------
|
||||
|
||||
=head3 loadVmcp
|
||||
|
||||
Description : Load Linux VMCP module on a given node
|
||||
Arguments : Node
|
||||
Returns : Nothing
|
||||
Example : xCAT::zvmCPUtils->loadVmcp($node);
|
||||
Description : Load Linux VMCP module on a given node
|
||||
Arguments : Node
|
||||
Returns : Nothing
|
||||
Example : xCAT::zvmCPUtils->loadVmcp($node);
|
||||
|
||||
=cut
|
||||
|
||||
#-------------------------------------------------------
|
||||
sub loadVmcp {
|
||||
|
||||
# Get inputs
|
||||
my ( $class, $node ) = @_;
|
||||
# Get inputs
|
||||
my ( $class, $node ) = @_;
|
||||
|
||||
# Load Linux VMCP module
|
||||
my $out = `ssh -o ConnectTimeout=5 $node "modprobe vmcp"`;
|
||||
return;
|
||||
# Load Linux VMCP module
|
||||
my $out = `ssh -o ConnectTimeout=5 $node "modprobe vmcp"`;
|
||||
return;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------
|
||||
|
||||
=head3 getVswitchId
|
||||
|
||||
Description : Get the VSwitch ID(s) of given node
|
||||
Arguments : Node
|
||||
Returns : VSwitch ID(s)
|
||||
Example : my @vswitch = xCAT::zvmCPUtils->getVswitchId($node);
|
||||
Description : Get the VSwitch ID(s) of given node
|
||||
Arguments : Node
|
||||
Returns : VSwitch ID(s)
|
||||
Example : my @vswitch = xCAT::zvmCPUtils->getVswitchId($node);
|
||||
|
||||
=cut
|
||||
|
||||
#-------------------------------------------------------
|
||||
sub getVswitchId {
|
||||
|
||||
# Get inputs
|
||||
my ( $class, $node ) = @_;
|
||||
# Get inputs
|
||||
my ( $class, $node ) = @_;
|
||||
|
||||
# Get VSwitch
|
||||
my $out = `ssh -o ConnectTimeout=5 $node "vmcp q v nic" | grep "VSWITCH"`;
|
||||
my @lines = split( '\n', $out );
|
||||
my @parms;
|
||||
my @vswitch;
|
||||
foreach (@lines) {
|
||||
@parms = split( ' ', $_ );
|
||||
push( @vswitch, $parms[4] );
|
||||
}
|
||||
# Get VSwitch
|
||||
my $out = `ssh -o ConnectTimeout=5 $node "vmcp q v nic" | grep "VSWITCH"`;
|
||||
my @lines = split( '\n', $out );
|
||||
my @parms;
|
||||
my @vswitch;
|
||||
foreach (@lines) {
|
||||
@parms = split( ' ', $_ );
|
||||
push( @vswitch, $parms[4] );
|
||||
}
|
||||
|
||||
return @vswitch;
|
||||
return @vswitch;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------
|
||||
|
||||
=head3 grantVSwitch
|
||||
|
||||
Description : Grant VSwitch access for a given userID
|
||||
Arguments : HCP node
|
||||
User ID
|
||||
VSWITCH ID
|
||||
Returns : Operation results (Done/Failed)
|
||||
Example : my $out = xCAT::zvmCPUtils->grantVswitch($callback, $hcp, $userId, $vswitchId);
|
||||
Description : Grant VSwitch access for a given userID
|
||||
Arguments : HCP node
|
||||
User ID
|
||||
VSWITCH ID
|
||||
Returns : Operation results (Done/Failed)
|
||||
Example : my $out = xCAT::zvmCPUtils->grantVswitch($callback, $hcp, $userId, $vswitchId);
|
||||
|
||||
=cut
|
||||
|
||||
#-------------------------------------------------------
|
||||
sub grantVSwitch {
|
||||
|
||||
# Get inputs
|
||||
my ( $class, $callback, $hcp, $userId, $vswitchId ) = @_;
|
||||
# Get inputs
|
||||
my ( $class, $callback, $hcp, $userId, $vswitchId ) = @_;
|
||||
|
||||
# Grant VSwitch for specified userID
|
||||
my $out = `ssh $hcp "vmcp set vswitch $vswitchId grant $userId"`;
|
||||
$out = xCAT::zvmUtils->trimStr($out);
|
||||
# Grant VSwitch for specified userID
|
||||
my $out = `ssh $hcp "vmcp set vswitch $vswitchId grant $userId"`;
|
||||
$out = xCAT::zvmUtils->trimStr($out);
|
||||
|
||||
# If return string contains 'Command complete' - Operation was successful
|
||||
my $retStr;
|
||||
if ( $out =~ m/Command complete/i ) {
|
||||
$retStr = "Done\n";
|
||||
} else {
|
||||
$retStr = "Failed\n";
|
||||
return $retStr;
|
||||
}
|
||||
# If return string contains 'Command complete' - Operation was successful
|
||||
my $retStr;
|
||||
if ( $out =~ m/Command complete/i ) {
|
||||
$retStr = "Done\n";
|
||||
} else {
|
||||
$retStr = "Failed\n";
|
||||
return $retStr;
|
||||
}
|
||||
|
||||
return $retStr;
|
||||
return $retStr;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------
|
||||
|
||||
=head3 flashCopy
|
||||
|
||||
Description : Flash copy (Class B users only)
|
||||
Arguments : Node
|
||||
Source address
|
||||
Target address
|
||||
Returns : Operation results (Done/Failed)
|
||||
Example : my $results = xCAT::zvmCPUtils->flashCopy($node, $srcAddr, $targetAddr);
|
||||
Description : Flash copy (Class B users only)
|
||||
Arguments : Node
|
||||
Source address
|
||||
Target address
|
||||
Returns : Operation results (Done/Failed)
|
||||
Example : my $results = xCAT::zvmCPUtils->flashCopy($node, $srcAddr, $targetAddr);
|
||||
|
||||
=cut
|
||||
|
||||
#-------------------------------------------------------
|
||||
sub flashCopy {
|
||||
|
||||
# Get inputs
|
||||
my ( $class, $node, $srcAddr, $tgtAddr ) = @_;
|
||||
# Get inputs
|
||||
my ( $class, $node, $srcAddr, $tgtAddr ) = @_;
|
||||
|
||||
# Flash copy
|
||||
my $out = `ssh $node "vmcp flashcopy $srcAddr 0 end to $tgtAddr 0 end synchronous"`;
|
||||
$out = xCAT::zvmUtils->trimStr($out);
|
||||
# Flash copy
|
||||
my $out = `ssh $node "vmcp flashcopy $srcAddr 0 end to $tgtAddr 0 end synchronous"`;
|
||||
$out = xCAT::zvmUtils->trimStr($out);
|
||||
|
||||
# If return string contains 'Command complete' - Operation was successful
|
||||
my $retStr = "";
|
||||
if ( $out =~ m/Command complete/i ) {
|
||||
$retStr = "Done\n";
|
||||
} else {
|
||||
$out = xCAT::zvmUtils->tabStr($out);
|
||||
$retStr = "Failed\n$out";
|
||||
}
|
||||
# If return string contains 'Command complete' - Operation was successful
|
||||
my $retStr = "";
|
||||
if ( $out =~ m/Command complete/i ) {
|
||||
$retStr = "Done\n";
|
||||
} else {
|
||||
$out = xCAT::zvmUtils->tabStr($out);
|
||||
$retStr = "Failed\n$out";
|
||||
}
|
||||
|
||||
return $retStr;
|
||||
return $retStr;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------
|
||||
|
||||
=head3 punch2Reader
|
||||
|
||||
Description : Write file to z/VM punch and transfer it to reader
|
||||
Arguments : HCP node
|
||||
UserID to receive file
|
||||
Source file
|
||||
Target file to be created by punch (e.g. sles.parm)
|
||||
Options, e.g. -t (Convert EBCDIC to ASCII)
|
||||
Returns : Operation results (Done/Failed)
|
||||
Example : my $rc = xCAT::zvmCPUtils->punch2Reader($hcp, $userId, $srcFile, $tgtFile, $options);
|
||||
Description : Write file to z/VM punch and transfer it to reader
|
||||
Arguments : HCP node
|
||||
UserID to receive file
|
||||
Source file
|
||||
Target file to be created by punch (e.g. sles.parm)
|
||||
Options, e.g. -t (Convert EBCDIC to ASCII)
|
||||
Returns : Operation results (Done/Failed)
|
||||
Example : my $rc = xCAT::zvmCPUtils->punch2Reader($hcp, $userId, $srcFile, $tgtFile, $options);
|
||||
|
||||
=cut
|
||||
|
||||
#-------------------------------------------------------
|
||||
sub punch2Reader {
|
||||
my ( $class, $hcp, $userId, $srcFile, $tgtFile, $options ) = @_;
|
||||
my ( $class, $hcp, $userId, $srcFile, $tgtFile, $options ) = @_;
|
||||
|
||||
# Punch to reader
|
||||
my $out = `ssh -o ConnectTimeout=5 $hcp "vmur punch $options -u $userId -r $srcFile -N $tgtFile"`;
|
||||
# Punch to reader
|
||||
my $out = `ssh -o ConnectTimeout=5 $hcp "vmur punch $options -u $userId -r $srcFile -N $tgtFile"`;
|
||||
|
||||
# If punch is successful -- Look for this string
|
||||
my $searchStr = "created and transferred";
|
||||
if ( !( $out =~ m/$searchStr/i ) ) {
|
||||
$out = "Failed\n";
|
||||
} else {
|
||||
$out = "Done\n";
|
||||
}
|
||||
# If punch is successful -- Look for this string
|
||||
my $searchStr = "created and transferred";
|
||||
if ( !( $out =~ m/$searchStr/i ) ) {
|
||||
$out = "Failed\n";
|
||||
} else {
|
||||
$out = "Done\n";
|
||||
}
|
||||
|
||||
return $out;
|
||||
return $out;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------
|
||||
|
||||
=head3 purgeReader
|
||||
|
||||
Description : Purge reader (Class D users only)
|
||||
Arguments : HCP node
|
||||
UserID to purge reader
|
||||
Returns : Nothing
|
||||
Example : my $rc = xCAT::zvmCPUtils->purgeReader($hcp, $userId);
|
||||
Description : Purge reader (Class D users only)
|
||||
Arguments : HCP node
|
||||
UserID to purge reader
|
||||
Returns : Nothing
|
||||
Example : my $rc = xCAT::zvmCPUtils->purgeReader($hcp, $userId);
|
||||
|
||||
=cut
|
||||
|
||||
#-------------------------------------------------------
|
||||
sub purgeReader {
|
||||
my ( $class, $hcp, $userId ) = @_;
|
||||
my ( $class, $hcp, $userId ) = @_;
|
||||
|
||||
# Purge reader
|
||||
my $out = `ssh -o ConnectTimeout=5 $hcp "vmcp purge $userId rdr all"`;
|
||||
# Purge reader
|
||||
my $out = `ssh -o ConnectTimeout=5 $hcp "vmcp purge $userId rdr all"`;
|
||||
|
||||
return;
|
||||
return;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------
|
||||
|
||||
=head3 sendCPCmd
|
||||
|
||||
Description : Send CP command to a given userID (Class C users only)
|
||||
Arguments : HCP node
|
||||
UserID to send CP command
|
||||
Returns : Nothing
|
||||
Example : xCAT::zvmCPUtils->sendCPCmd($hcp, $userId, $cmd);
|
||||
Description : Send CP command to a given userID (Class C users only)
|
||||
Arguments : HCP node
|
||||
UserID to send CP command
|
||||
Returns : Nothing
|
||||
Example : xCAT::zvmCPUtils->sendCPCmd($hcp, $userId, $cmd);
|
||||
|
||||
=cut
|
||||
|
||||
#-------------------------------------------------------
|
||||
sub sendCPCmd {
|
||||
my ( $class, $hcp, $userId, $cmd ) = @_;
|
||||
my ( $class, $hcp, $userId, $cmd ) = @_;
|
||||
|
||||
# Send CP command to given userID
|
||||
my $out = `ssh $hcp "vmcp send cp $userId $cmd"`;
|
||||
# Send CP command to given userID
|
||||
my $out = `ssh $hcp "vmcp send cp $userId $cmd"`;
|
||||
|
||||
return;
|
||||
return;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------
|
||||
|
||||
=head3 getNetworkLayer
|
||||
|
||||
Description : Get the network layer for a given node
|
||||
Arguments : Node
|
||||
Network name
|
||||
Returns : 2 - Layer 2
|
||||
3 - Layer 3
|
||||
-1 - Failed to get network layer
|
||||
Example : my $layer = xCAT::zvmCPUtils->getNetworkLayer($node);
|
||||
Description : Get the network layer for a given node
|
||||
Arguments : Node
|
||||
Network name
|
||||
Returns : 2 - Layer 2
|
||||
3 - Layer 3
|
||||
-1 - Failed to get network layer
|
||||
Example : my $layer = xCAT::zvmCPUtils->getNetworkLayer($node);
|
||||
|
||||
=cut
|
||||
|
||||
#-------------------------------------------------------
|
||||
sub getNetworkLayer {
|
||||
my ( $class, $node, $netName ) = @_;
|
||||
my ( $class, $node, $netName ) = @_;
|
||||
|
||||
# Exit if the network name is not given
|
||||
if ( !$netName ) {
|
||||
return -1;
|
||||
}
|
||||
# Exit if the network name is not given
|
||||
if ( !$netName ) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
# Get network type (Layer 2 or 3)
|
||||
my $out = `ssh -o ConnectTimeout=5 $node "vmcp q lan $netName"`;
|
||||
if ( !$out ) {
|
||||
return -1;
|
||||
}
|
||||
# Get network type (Layer 2 or 3)
|
||||
my $out = `ssh -o ConnectTimeout=5 $node "vmcp q lan $netName"`;
|
||||
if ( !$out ) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
# Go through each line
|
||||
my $layer = 3; # Default to layer 3
|
||||
my @lines = split( '\n', $out );
|
||||
foreach (@lines) {
|
||||
# Go through each line
|
||||
my $layer = 3; # Default to layer 3
|
||||
my @lines = split( '\n', $out );
|
||||
foreach (@lines) {
|
||||
|
||||
# If the line contains ETHERNET, then it is a layer 2 network
|
||||
if ( $_ =~ m/ETHERNET/i ) {
|
||||
$layer = 2;
|
||||
}
|
||||
}
|
||||
# If the line contains ETHERNET, then it is a layer 2 network
|
||||
if ( $_ =~ m/ETHERNET/i ) {
|
||||
$layer = 2;
|
||||
}
|
||||
}
|
||||
|
||||
return $layer;
|
||||
return $layer;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------
|
||||
|
||||
=head3 getNetworkType
|
||||
|
||||
Description : Get the network type of a given network
|
||||
Arguments : HCP node
|
||||
Name of network
|
||||
Returns : Network type (VSWITCH/HIPERS/QDIO)
|
||||
Example : my $netType = xCAT::zvmCPUtils->getNetworkType($hcp, $netName);
|
||||
Description : Get the network type of a given network
|
||||
Arguments : HCP node
|
||||
Name of network
|
||||
Returns : Network type (VSWITCH/HIPERS/QDIO)
|
||||
Example : my $netType = xCAT::zvmCPUtils->getNetworkType($hcp, $netName);
|
||||
|
||||
=cut
|
||||
|
||||
#-------------------------------------------------------
|
||||
sub getNetworkType {
|
||||
my ( $class, $hcp, $netName ) = @_;
|
||||
my ( $class, $hcp, $netName ) = @_;
|
||||
|
||||
# Get network details
|
||||
my $out = `ssh -o ConnectTimeout=5 $hcp "vmcp q lan $netName" | grep "Type"`;
|
||||
# Get network details
|
||||
my $out = `ssh -o ConnectTimeout=5 $hcp "vmcp q lan $netName" | grep "Type"`;
|
||||
|
||||
# Go through each line and determine network type
|
||||
my @lines = split( '\n', $out );
|
||||
my $netType = "";
|
||||
foreach (@lines) {
|
||||
# Go through each line and determine network type
|
||||
my @lines = split( '\n', $out );
|
||||
my $netType = "";
|
||||
foreach (@lines) {
|
||||
|
||||
# Virtual switch
|
||||
if ( $_ =~ m/VSWITCH/i ) {
|
||||
$netType = "VSWITCH";
|
||||
}
|
||||
# Virtual switch
|
||||
if ( $_ =~ m/VSWITCH/i ) {
|
||||
$netType = "VSWITCH";
|
||||
}
|
||||
|
||||
# HiperSocket guest LAN
|
||||
elsif ( $_ =~ m/HIPERS/i ) {
|
||||
$netType = "HIPERS";
|
||||
}
|
||||
# HiperSocket guest LAN
|
||||
elsif ( $_ =~ m/HIPERS/i ) {
|
||||
$netType = "HIPERS";
|
||||
}
|
||||
|
||||
# QDIO guest LAN
|
||||
elsif ( $_ =~ m/QDIO/i ) {
|
||||
$netType = "QDIO";
|
||||
}
|
||||
}
|
||||
# QDIO guest LAN
|
||||
elsif ( $_ =~ m/QDIO/i ) {
|
||||
$netType = "QDIO";
|
||||
}
|
||||
}
|
||||
|
||||
return $netType;
|
||||
return $netType;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------
|
||||
|
||||
=head3 defineCpu
|
||||
|
||||
Description : Add processor(s) to given node
|
||||
Arguments : Node
|
||||
Returns : Nothing
|
||||
Example : my $out = xCAT::zvmCPUtils->defineCpu($node, $addr, $type);
|
||||
Description : Add processor(s) to given node
|
||||
Arguments : Node
|
||||
Returns : Nothing
|
||||
Example : my $out = xCAT::zvmCPUtils->defineCpu($node, $addr, $type);
|
||||
|
||||
=cut
|
||||
|
||||
#-------------------------------------------------------
|
||||
sub defineCpu {
|
||||
|
||||
# Get inputs
|
||||
my ( $class, $node, $addr, $type ) = @_;
|
||||
# Get inputs
|
||||
my ( $class, $node, $addr, $type ) = @_;
|
||||
|
||||
# Define processor(s)
|
||||
my $out = `ssh -o ConnectTimeout=5 $node "vmcp define cpu $addr type $type"`;
|
||||
# Define processor(s)
|
||||
my $out = `ssh -o ConnectTimeout=5 $node "vmcp define cpu $addr type $type"`;
|
||||
|
||||
return ($out);
|
||||
return ($out);
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user