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:
		| @@ -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
											
										
									
								
							
		Reference in New Issue
	
	Block a user