Fixed cloning issue where code was looking for a case-sensitive NIC address and not modifying the network configuration correctly. Added logging of smcli calls into syslog to improve debugging. Add loop to find the correct partition with file -s /dev/dasd*. This fixes a cloning issue where flashcopy is not instantaneous and flashed copy volumes do not appear immediately when linked.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15470 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
		| @@ -468,6 +468,7 @@ sub grantVSwitch { | ||||
|  | ||||
|     # Use SMAPI EXEC | ||||
|     my $out = `ssh $user\@$hcp "$sudo $dir/smcli Virtual_Network_Vswitch_Set -T SYSTEM -n $vswitchId -I $userId"`; | ||||
|     xCAT::zvmUtils->printSyslog("grantVSwitch- ssh $user\@$hcp $sudo $dir/smcli Virtual_Network_Vswitch_Set -T SYSTEM -n $vswitchId -I $userId"); | ||||
|     $out = xCAT::zvmUtils->trimStr($out); | ||||
|  | ||||
|     # If return string contains 'Done' - Operation was successful | ||||
| @@ -564,6 +565,7 @@ sub smapiFlashCopy { | ||||
|     # Use SMAPI EXEC to flash copy | ||||
|     my $cmd = '\"' . "CMD=FLASHCOPY $srcId $srcAddr 0 END $tgtId $tgtAddr 0 END" . '\"'; | ||||
|     my $out = `ssh $user\@$hcp "$sudo $dir/smcli xCAT_Commands_IUO -T $hcpUserId -c $cmd"`; | ||||
|     xCAT::zvmUtils->printSyslog("smapiFlashCopy- ssh $user\@$hcp $sudo $dir/smcli xCAT_Commands_IUO -T $hcpUserId -c $cmd"); | ||||
|          | ||||
|     $out = xCAT::zvmUtils->trimStr($out); | ||||
|  | ||||
| @@ -661,9 +663,11 @@ sub purgeReader { | ||||
|         # Use SMAPI EXEC to purge reader | ||||
|         my $cmd = '\"' . "CMD=PURGE $userId RDR ALL" . '\"'; | ||||
|         $out = `ssh $user\@$hcp "$sudo $dir/smcli xCAT_Commands_IUO -T $userId -c $cmd"`; | ||||
|         xCAT::zvmUtils->printSyslog("purgeReader- ssh $user\@$hcp $sudo $dir/smcli xCAT_Commands_IUO -T $userId -c $cmd"); | ||||
|     } else { | ||||
|         # Purge reader using CP | ||||
|         $out = `ssh -o ConnectTimeout=5 $user\@$hcp "$sudo /sbin/vmcp purge $userId rdr all"`; | ||||
|         xCAT::zvmUtils->printSyslog("purgeReader- ssh -o ConnectTimeout=5 $user\@$hcp $sudo /sbin/vmcp purge $userId rdr all"); | ||||
|     } | ||||
|  | ||||
|     $out = xCAT::zvmUtils->trimStr($out); | ||||
| @@ -700,9 +704,11 @@ sub sendCPCmd { | ||||
|         # Use SMAPI EXEC to send command | ||||
|         $cmd = '\"' . "CMD=SEND CP $userId " . uc($cmd) . '\"'; | ||||
|         $out = `ssh $user\@$hcp "$sudo $dir/smcli xCAT_Commands_IUO -T $userId -c $cmd"`; | ||||
|         xCAT::zvmUtils->printSyslog("sendCPCmd- ssh $user\@$hcp $sudo $dir/smcli xCAT_Commands_IUO -T $userId -c $cmd"); | ||||
|     } else { | ||||
|         # Send CP command to given user | ||||
|         $out = `ssh $user\@$hcp "$sudo /sbin/vmcp send cp $userId $cmd"`; | ||||
|         xCAT::zvmUtils->printSyslog("sendCPCmd- ssh $user\@$hcp $sudo /sbin/vmcp send cp $userId $cmd"); | ||||
|     } | ||||
|  | ||||
|     $out = xCAT::zvmUtils->trimStr($out); | ||||
|   | ||||
| @@ -286,8 +286,14 @@ sub printLn { | ||||
|  | ||||
|     # Print string | ||||
|     my $rsp; | ||||
|     my $type = "I"; | ||||
|     if ($str =~ m/error/i) {  # Set to print error if the string contains error | ||||
|     	$type = "E"; | ||||
|     } | ||||
|      | ||||
|     $rsp->{data}->[0] = "$str"; | ||||
|     xCAT::MsgUtils->message( "I", $rsp, $callback ); | ||||
|     xCAT::MsgUtils->message( $type, $rsp, $callback ); | ||||
|     # xCAT::MsgUtils->message( "S", $str );  # Print to syslog | ||||
|  | ||||
|     return; | ||||
| } | ||||
|   | ||||
| @@ -663,9 +663,11 @@ sub removeVM { | ||||
|  | ||||
|     # Power off user ID | ||||
|     my $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Deactivate -T $userId -f IMMED"`; | ||||
|     xCAT::zvmUtils->printSyslog("removeVM- ssh $::SUDOER\@$hcp$::SUDO $::DIR/smcli Image_Deactivate -T $userId -f IMMED"); | ||||
|  | ||||
|     # Delete user entry | ||||
|     $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Delete_DM -T $userId -e 1"`; | ||||
|     xCAT::zvmUtils->printSyslog("removeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Delete_DM -T $userId -e 1"); | ||||
|     xCAT::zvmUtils->printLn( $callback, "$node: $out" ); | ||||
|      | ||||
|     # Check for errors | ||||
| @@ -706,6 +708,7 @@ sub removeVM { | ||||
|     # Remove node from 'zvm', 'nodelist', 'nodetype', 'noderes', and 'nodehm' tables | ||||
|     # Save node entry in 'mac' table | ||||
|     xCAT::zvmUtils->delTabEntry( 'zvm',      'node', $node ); | ||||
|     xCAT::zvmUtils->delTabEntry( 'hosts',    'node', $node ); | ||||
|     xCAT::zvmUtils->delTabEntry( 'nodelist', 'node', $node ); | ||||
|     xCAT::zvmUtils->delTabEntry( 'nodetype', 'node', $node ); | ||||
|     xCAT::zvmUtils->delTabEntry( 'noderes',  'node', $node ); | ||||
| @@ -819,11 +822,13 @@ sub changeVM { | ||||
|          | ||||
|         # Add to directory entry | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Disk_Create_DM -T $userId -v $addr -t 3390 -a AUTOG -r $pool -u 1 -z $cyl -m $mode -f 1 -R $readPw -W $writePw -M $multiPw"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Disk_Create_DM -T $userId -v $addr -t 3390 -a AUTOG -r $pool -u 1 -z $cyl -m $mode -f 1 -R $readPw -W $writePw -M $multiPw"); | ||||
|          | ||||
|         # Add to active configuration | ||||
|         my $ping = `pping $node`; | ||||
|         if (!($ping =~ m/noping/i)) { | ||||
|             $out .= `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Disk_Create -T $userId -v $addr -m $mode"`; | ||||
|             xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Disk_Create -T $userId -v $addr -m $mode"); | ||||
|         } | ||||
|         $out = xCAT::zvmUtils->appendHostname( $node, $out ); | ||||
|     } | ||||
| @@ -834,6 +839,7 @@ sub changeVM { | ||||
|         my $mode = $args->[2]; | ||||
|  | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Disk_Create -T $userId -v $addr -m $mode"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Disk_Create -T $userId -v $addr -m $mode"); | ||||
|         $out = xCAT::zvmUtils->appendHostname( $node, $out ); | ||||
|     } | ||||
|  | ||||
| @@ -885,11 +891,13 @@ sub changeVM { | ||||
|         } | ||||
|  | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Disk_Create_DM -T $userId -v $addr -t 9336 -a AUTOG -r $pool -u 2 -z $blks -m $mode -f 1 -R $readPw -W $writePw -M $multiPw"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Disk_Create_DM -T $userId -v $addr -t 9336 -a AUTOG -r $pool -u 2 -z $blks -m $mode -f 1 -R $readPw -W $writePw -M $multiPw"); | ||||
|          | ||||
|         # Add to active configuration | ||||
|         my $ping = `pping $node`; | ||||
|         if (!($ping =~ m/noping/i)) { | ||||
|             $out .= `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Disk_Create -T $userId -v $addr -m $mode"`; | ||||
|             xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Disk_Create -T $userId -v $addr -m $mode"); | ||||
|         } | ||||
|         $out = xCAT::zvmUtils->appendHostname( $node, $out ); | ||||
|     } | ||||
| @@ -927,6 +935,7 @@ sub changeVM { | ||||
|  | ||||
|         # Add to directory entry | ||||
|         $out .= `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Virtual_Network_Adapter_Create_DM -T $userId -v $addr -a $type -n $devcount"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Virtual_Network_Adapter_Create_DM -T $userId -v $addr -a $type -n $devcount"); | ||||
|         $out = xCAT::zvmUtils->appendHostname( $node, $out ); | ||||
|     } | ||||
|      | ||||
| @@ -945,6 +954,7 @@ sub changeVM { | ||||
|  | ||||
|         # Add a full volume page or spool disk to the system | ||||
|         $out .= `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Page_or_Spool_Volume_Add -T $userId $argStr"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Page_or_Spool_Volume_Add -T $userId $argStr"); | ||||
|         $out = xCAT::zvmUtils->appendHostname( $node, $out ); | ||||
|     } | ||||
|  | ||||
| @@ -953,6 +963,7 @@ sub changeVM { | ||||
|         my $addr = $args->[1]; | ||||
|  | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_CPU_Define_DM -T $userId -v $addr -b 0 -d 1 -y 0"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_CPU_Define_DM -T $userId -v $addr -b 0 -d 1 -y 0"); | ||||
|         $out = xCAT::zvmUtils->appendHostname( $node, $out ); | ||||
|     } | ||||
|  | ||||
| @@ -1118,6 +1129,7 @@ sub changeVM { | ||||
|         	 | ||||
|         	# Find a free FCP device channel | ||||
|         	$out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli System_WWPN_Query -T $hcpUserId" | egrep -i "FCP device number|Status"`; | ||||
|             xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli System_WWPN_Query -T $hcpUserId | egrep -i FCP device number|Status"); | ||||
|             my @devices = split( "\n", $out ); | ||||
|             my $status; | ||||
|             my $found = 0; | ||||
| @@ -1180,6 +1192,7 @@ sub changeVM { | ||||
|          | ||||
|         # Get user directory entry | ||||
|         my $userEntry = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Query_DM -T $userId" | sed '\$d'`; | ||||
|         xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Query_DM -T $userId | sed '\$d'"); | ||||
|          | ||||
|         # Find DEDICATE statement in the entry (dedicate one if one does not exist) | ||||
|         my $dedicate = `echo "$userEntry" | egrep -i "DEDICATE $device"`; | ||||
| @@ -1313,9 +1326,11 @@ sub changeVM { | ||||
|         my $ping = `pping $node`; | ||||
|         if (!($ping =~ m/noping/i)) { | ||||
|             $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Virtual_Network_Adapter_Connect_LAN -T $userId -v $addr -l $lan -o $owner"`; | ||||
|             xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Virtual_Network_Adapter_Connect_LAN -T $userId -v $addr -l $lan -o $owner"); | ||||
|         } | ||||
|          | ||||
|         $out .= `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Virtual_Network_Adapter_Connect_LAN_DM -T $userId -v $addr -n $lan -o $owner"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Virtual_Network_Adapter_Connect_LAN_DM -T $userId -v $addr -n $lan -o $owner"); | ||||
|         $out = xCAT::zvmUtils->appendHostname( $node, $out ); | ||||
|     } | ||||
|  | ||||
| @@ -1330,11 +1345,13 @@ sub changeVM { | ||||
|  | ||||
|         # Connect to VSwitch in directory entry | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Virtual_Network_Adapter_Connect_Vswitch_DM -T $userId -v $addr -n $vswitch"`; | ||||
|                  | ||||
|         xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Virtual_Network_Adapter_Connect_Vswitch_DM -T $userId -v $addr -n $vswitch"); | ||||
|          | ||||
|         # Connect to VSwitch in active configuration | ||||
|         my $ping = `pping $node`; | ||||
|         if (!($ping =~ m/noping/i)) { | ||||
|             $out .= `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Virtual_Network_Adapter_Connect_Vswitch -T $userId -v $addr -n $vswitch"`; | ||||
|             xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Virtual_Network_Adapter_Connect_Vswitch -T $userId -v $addr -n $vswitch"); | ||||
|         } | ||||
|          | ||||
|         $out = xCAT::zvmUtils->appendHostname( $node, $out ); | ||||
| @@ -1594,12 +1611,14 @@ sub changeVM { | ||||
|          | ||||
|         # Dedicate device to directory entry | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Device_Dedicate_DM -T $userId -v $vaddr -r $raddr -R $mode"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Device_Dedicate_DM -T $userId -v $vaddr -r $raddr -R $mode"); | ||||
|         xCAT::zvmUtils->printLn( $callback, "$node: $out" ); | ||||
|          | ||||
|         # Dedicate device to active configuration | ||||
|         my $ping = `pping $node`; | ||||
|         if (!($ping =~ m/noping/i)) { | ||||
|             $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Device_Dedicate -T $userId -v $vaddr -r $raddr -R $mode"`; | ||||
|             xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Device_Dedicate -T $userId -v $vaddr -r $raddr -R $mode"); | ||||
|             xCAT::zvmUtils->printLn( $callback, "$node: $out" ); | ||||
|         } | ||||
|          | ||||
| @@ -1609,6 +1628,7 @@ sub changeVM { | ||||
|     # deleteipl | ||||
|     elsif ( $args->[0] eq "--deleteipl" ) { | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_IPL_Delete_DM -T $userId"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_IPL_Delete_DM -T $userId"); | ||||
|         $out = xCAT::zvmUtils->appendHostname( $node, $out ); | ||||
|     } | ||||
|  | ||||
| @@ -1722,6 +1742,7 @@ sub changeVM { | ||||
|         my $addr = $args->[1]; | ||||
|  | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Virtual_Network_Adapter_Disconnect_DM -T $userId -v $addr"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Virtual_Network_Adapter_Disconnect_DM -T $userId -v $addr"); | ||||
|         $out = xCAT::zvmUtils->appendHostname( $node, $out ); | ||||
|     } | ||||
|      | ||||
| @@ -1757,6 +1778,7 @@ sub changeVM { | ||||
|  | ||||
|         # Remove from user directory entry | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Disk_Delete_DM -T $userId -v $addr -e 0"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Disk_Delete_DM -T $userId -v $addr -e 0"); | ||||
|         $out = xCAT::zvmUtils->appendHostname( $node, $out ); | ||||
|     } | ||||
|  | ||||
| @@ -1772,6 +1794,7 @@ sub changeVM { | ||||
|  | ||||
|         # Remove from user directory entry | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Virtual_Network_Adapter_Delete_DM -T $userId -v $addr"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Virtual_Network_Adapter_Delete_DM -T $userId -v $addr"); | ||||
|         $out = xCAT::zvmUtils->appendHostname( $node, $out ); | ||||
|     } | ||||
|  | ||||
| @@ -1781,6 +1804,7 @@ sub changeVM { | ||||
|          | ||||
|         # Remove from user directory entry | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_CPU_Delete_DM -T $userId -v $addr"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_CPU_Delete_DM -T $userId -v $addr"); | ||||
|         $out = xCAT::zvmUtils->appendHostname( $node, $out ); | ||||
|     } | ||||
|      | ||||
| @@ -1799,6 +1823,7 @@ sub changeVM { | ||||
|         my $updateEntry = 0; | ||||
|         my $userEntryFile = "/tmp/$node.txt"; | ||||
|         my $userEntry = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Query_DM -T $userId" | sed '\$d'`; | ||||
|         xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Query_DM -T $userId | sed '\$d'"); | ||||
|         chomp($userEntry); | ||||
|         if (!$wwpn && !$lun) { | ||||
|             # If no WWPN or LUN is provided, delete all LOADDEV statements | ||||
| @@ -1939,12 +1964,15 @@ sub changeVM { | ||||
|                  | ||||
|                 # Lock image | ||||
|                 `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Lock_DM -T $userId"`; | ||||
|                 xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Lock_DM -T $userId"); | ||||
|                  | ||||
|                 # Replace user directory entry | ||||
|                 $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Replace_DM -T $userId -f $file"`; | ||||
|                 xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Replace_DM -T $userId -f $file"); | ||||
|                  | ||||
|                 # Unlock image | ||||
|                 `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Unlock_DM -T $userId"`; | ||||
|                 xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Unlock_DM -T $userId"); | ||||
|                  | ||||
|                 # Delete file on xCAT and zHCP | ||||
|                 `rm -rf $file`; | ||||
| @@ -1972,12 +2000,15 @@ sub changeVM { | ||||
|              | ||||
|             # Lock image | ||||
|             `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Lock_DM -T $userId"`; | ||||
|             xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Lock_DM -T $userId"); | ||||
|              | ||||
|             # Replace user directory entry | ||||
|             $out = `ssh $::SUDOER\@$hcp "cat $file | $::SUDO $::DIR/smcli Image_Replace_DM -T $userId -s"`; | ||||
|             xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp cat $file | $::SUDO $::DIR/smcli Image_Replace_DM -T $userId -s"); | ||||
|              | ||||
|             # Unlock image | ||||
|             `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Unlock_DM -T $userId"`; | ||||
|             xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Unlock_DM -T $userId"); | ||||
|              | ||||
|             # Delete created file on zHCP | ||||
|             `ssh $::SUDOER\@$hcp "rm -rf $file"`; | ||||
| @@ -2011,6 +2042,7 @@ sub changeVM { | ||||
|         } | ||||
|  | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_IPL_Set_DM -T $userId -s $trgt -l $loadparms -p $parms"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_IPL_Set_DM -T $userId -s $trgt -l $loadparms -p $parms"); | ||||
|         $out = xCAT::zvmUtils->appendHostname( $node, $out ); | ||||
|     } | ||||
|  | ||||
| @@ -2019,6 +2051,7 @@ sub changeVM { | ||||
|         my $pw = $args->[1]; | ||||
|  | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Password_Set_DM -T $userId -p $pw"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Password_Set_DM -T $userId -p $pw"); | ||||
|         $out = xCAT::zvmUtils->appendHostname( $node, $out ); | ||||
|     } | ||||
|      | ||||
| @@ -2040,6 +2073,7 @@ sub changeVM { | ||||
|                  | ||||
|         # Get user directory entry | ||||
|         my $userEntry = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Query_DM -T $userId" | sed '\$d'`; | ||||
|         xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Query_DM -T $userId | sed '\$d'"); | ||||
|          | ||||
|         # Delete old directory entry file | ||||
|         my $userEntryFile = "/tmp/$node.txt"; | ||||
| @@ -2100,12 +2134,14 @@ sub changeVM { | ||||
|  | ||||
|         # Undedicate device in directory entry | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Device_Undedicate_DM -T $userId -v $vaddr"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Device_Undedicate_DM -T $userId -v $vaddr"); | ||||
|         xCAT::zvmUtils->printLn( $callback, "$node: $out" ); | ||||
|          | ||||
|         # Undedicate device in active configuration | ||||
|         my $ping = `pping $node`; | ||||
|         if (!($ping =~ m/noping/i)) { | ||||
|             $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Device_Undedicate -T $userId -v $vaddr"`; | ||||
|             xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Device_Undedicate -T $userId -v $vaddr"); | ||||
|             xCAT::zvmUtils->printLn( $callback, "$node: $out" ); | ||||
|         } | ||||
|          | ||||
| @@ -2119,6 +2155,7 @@ sub changeVM { | ||||
|  | ||||
|         # Add disk to running system | ||||
|         $out .= `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Volume_Share -T $userId -k img_vol_addr=$volAddr -k share_enable=$share"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Volume_Share -T $userId -k img_vol_addr=$volAddr -k share_enable=$share"); | ||||
|         $out = xCAT::zvmUtils->appendHostname( $node, $out ); | ||||
|     } | ||||
|      | ||||
| @@ -2136,6 +2173,7 @@ sub changeVM { | ||||
|                         | ||||
|         # Get current CPU count and address | ||||
|         my $proc = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Definition_Query_DM -T $userId -k CPU" | grep CPU=`; | ||||
|         xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Definition_Query_DM -T $userId -k CPU | grep CPU="); | ||||
|         while ( index( $proc, "CPUADDR" ) != -1) { | ||||
|             my $position = index($proc, "CPUADDR"); | ||||
|             my $address = substr($proc, $position + 8, 2); | ||||
| @@ -2150,14 +2188,17 @@ sub changeVM { | ||||
|         # Add new CPUs | ||||
|         if ( $cpuCount > @allCpu ) { | ||||
|             $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Definition_Update_DM -T $userId -k CPU_MAXIMUM=COUNT=$cpuCount -k TYPE=ESA"`; | ||||
|             xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Definition_Update_DM -T $userId -k CPU_MAXIMUM=COUNT=$cpuCount -k TYPE=ESA"); | ||||
|             while ( $count < $cpuCount - @allCpu ) { | ||||
|                 $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Definition_Update_DM -T $userId -k CPU=CPUADDR=$addrLeft[$count]"`; | ||||
|                 xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Definition_Update_DM -T $userId -k CPU=CPUADDR=$addrLeft[$count]"); | ||||
|                 $count++; | ||||
|             } | ||||
|         # Remove CPUs | ||||
|         } else {  | ||||
|             while ( $count <= @allCpu - $cpuCount ) { | ||||
|                 $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_CPU_Delete_DM -T $userId -v $allCpu[@allCpu-$count]"`; | ||||
|                 xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_CPU_Delete_DM -T $userId -v $allCpu[@allCpu-$count]"); | ||||
|                 $count++; | ||||
|             } | ||||
|         }        | ||||
| @@ -2178,9 +2219,11 @@ sub changeVM { | ||||
|          | ||||
|         # Set initial memory to 1M first, make this function able to increase/descrease the storage | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Definition_Update_DM -T $userId -k STORAGE_INITIAL=1M"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Definition_Update_DM -T $userId -k STORAGE_INITIAL=1M"); | ||||
|          | ||||
|         # Set both initial memory and maximum memory to be the same | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Definition_Update_DM -T $userId -k STORAGE_INITIAL=$size -k STORAGE_MAXIMUM=$size"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Definition_Update_DM -T $userId -k STORAGE_INITIAL=$size -k STORAGE_MAXIMUM=$size"); | ||||
|          | ||||
|         xCAT::zvmUtils->printLn( $callback, "$node: $out" ); | ||||
|         $out = ""; | ||||
| @@ -2242,12 +2285,14 @@ sub powerVM { | ||||
|     # Power on virtual server | ||||
|     if ( $args->[0] eq 'on' ) { | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Activate -T $userId"`; | ||||
|         xCAT::zvmUtils->printSyslog("powerVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Activate -T $userId"); | ||||
|         xCAT::zvmUtils->printLn( $callback, "$node: $out" ); | ||||
|     } | ||||
|  | ||||
|     # Power off virtual server | ||||
|     elsif ( $args->[0] eq 'off' ) { | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Deactivate -T $userId -f IMMED"`; | ||||
|         xCAT::zvmUtils->printSyslog("powerVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Deactivate -T $userId -f IMMED"); | ||||
|         xCAT::zvmUtils->printLn( $callback, "$node: $out" ); | ||||
|     } | ||||
|      | ||||
| @@ -2257,6 +2302,7 @@ sub powerVM { | ||||
|         sleep(90);    # Wait 1.5 minutes before logging user off | ||||
|          | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Deactivate -T $userId -f IMMED"`; | ||||
|         xCAT::zvmUtils->printSyslog("powerVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Deactivate -T $userId -f IMMED"); | ||||
|         xCAT::zvmUtils->printLn( $callback, "$node: $out" ); | ||||
|     } | ||||
|  | ||||
| @@ -2278,6 +2324,7 @@ sub powerVM { | ||||
|     elsif ( $args->[0] eq 'reset' ) { | ||||
|  | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Deactivate -T $userId -f IMMED"`; | ||||
|         xCAT::zvmUtils->printSyslog("powerVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Deactivate -T $userId -f IMMED"); | ||||
|         xCAT::zvmUtils->printLn( $callback, "$node: $out" ); | ||||
|  | ||||
|         # Wait for output | ||||
| @@ -2286,6 +2333,7 @@ sub powerVM { | ||||
|         } | ||||
|  | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Activate -T $userId"`; | ||||
|         xCAT::zvmUtils->printSyslog("powerVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Activate -T $userId"); | ||||
|         xCAT::zvmUtils->printLn( $callback, "$node: $out" ); | ||||
|     } | ||||
|      | ||||
| @@ -2327,12 +2375,14 @@ sub powerVM { | ||||
|     # Pause a virtual server | ||||
|     elsif ( $args->[0] eq 'pause' ) { | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Pause -T $userId -k PAUSE=YES"`; | ||||
|         xCAT::zvmUtils->printSyslog("powerVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Pause -T $userId -k PAUSE=YES"); | ||||
|         xCAT::zvmUtils->printLn( $callback, "$node: $out" ); | ||||
|     } | ||||
|      | ||||
|     # Unpause a virtual server | ||||
|     elsif ( $args->[0] eq 'unpause' ) { | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Pause -T $userId -k PAUSE=NO"`; | ||||
|         xCAT::zvmUtils->printSyslog("powerVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Pause -T $userId -k PAUSE=NO"); | ||||
|         xCAT::zvmUtils->printLn( $callback, "$node: $out" ); | ||||
|     } | ||||
|  | ||||
| @@ -2763,6 +2813,7 @@ sub listVM { | ||||
|         my $vdasd = $args->[1]; | ||||
|          | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Disk_Query -T $userId -k $vdasd"`; | ||||
|         xCAT::zvmUtils->printSyslog("listVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Disk_Query -T $userId -k $vdasd"); | ||||
|     } | ||||
|  | ||||
|     # Get zFCP disk pool configuration | ||||
| @@ -2780,6 +2831,7 @@ sub listVM { | ||||
|     # Get user entry | ||||
|     elsif ( !$args->[0] ) { | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Query_DM -T $userId" | sed '\$d'`; | ||||
|         xCAT::zvmUtils->printSyslog("listVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Query_DM -T $userId | sed '\$d'"); | ||||
|     } else { | ||||
|         $out = "$node: (Error) Option not supported"; | ||||
|     } | ||||
| @@ -3057,6 +3109,7 @@ sub makeVM { | ||||
|  | ||||
|         # Create virtual server | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Create_DM -T $userId -f $userEntry"`; | ||||
|         xCAT::zvmUtils->printSyslog("makeVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Create_DM -T $userId -f $userEntry"); | ||||
|         xCAT::zvmUtils->printLn( $callback, "$node: $out" ); | ||||
|  | ||||
|         # Check output | ||||
| @@ -3129,6 +3182,7 @@ sub makeVM { | ||||
|                  | ||||
|         # Create virtual server | ||||
|         $out = `ssh $::SUDOER\@$hcp "cat $file | $::SUDO $::DIR/smcli Image_Create_DM -T $userId -s"`; | ||||
|         xCAT::zvmUtils->printSyslog("makeVM- ssh $::SUDOER\@$hcp cat $file | $::SUDO $::DIR/smcli Image_Create_DM -T $userId -s"); | ||||
|         xCAT::zvmUtils->printLn( $callback, "$node: $out" ); | ||||
|  | ||||
|         # Check output | ||||
| @@ -3230,7 +3284,7 @@ sub cloneVM { | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     xCAT::zvmUtils->printSyslog("cloneVM() srcHcp:$srcHcp sourceId:$sourceId srcOs:$srcOs srcNetwork:$srcNetwork srcMask:$srcMask"); | ||||
|     xCAT::zvmUtils->printSyslog("cloneVM- srcHcp:$srcHcp sourceId:$sourceId srcOs:$srcOs srcNetwork:$srcNetwork srcMask:$srcMask"); | ||||
|  | ||||
|     foreach (@nodes) { | ||||
|         xCAT::zvmUtils->printLn( $callback, "$_: Cloning $sourceNode" ); | ||||
| @@ -3321,7 +3375,7 @@ sub cloneVM { | ||||
|             $out = xCAT::zvmUtils->generateMacId($::SUDOER, $tgtHcp); | ||||
|         } | ||||
|          | ||||
|         xCAT::zvmUtils->printSyslog("cloneVM() tgtHcp:$tgtHcp tgtId:$tgtId targetMac:$targetMac macId:$macId"); | ||||
|         xCAT::zvmUtils->printSyslog("cloneVM- tgtHcp:$tgtHcp tgtId:$tgtId targetMac:$targetMac macId:$macId"); | ||||
|     } | ||||
|  | ||||
|     #*** Link source disks *** | ||||
| @@ -3346,8 +3400,8 @@ sub cloneVM { | ||||
|     # Output is similar to: | ||||
|     #   MDISK=VDEV=0100 DEVTYPE=3390 START=0001 COUNT=10016 VOLID=EMC2C4 MODE=MR         | ||||
|     $out = `ssh $::SUDOER\@$srcHcp "$::SUDO $::DIR/smcli Image_Definition_Query_DM -T $sourceId -k MDISK"`; | ||||
|     xCAT::zvmUtils->printSyslog("cloneVM() smcli Image_Definition_Query_DM -T $sourceId -k MDISK"); | ||||
|     xCAT::zvmUtils->printSyslog("cloneVM() $out"); | ||||
|     xCAT::zvmUtils->printSyslog("cloneVM- smcli Image_Definition_Query_DM -T $sourceId -k MDISK"); | ||||
|     xCAT::zvmUtils->printSyslog("cloneVM- $out"); | ||||
|     my $srcDiskDet = xCAT::zvmUtils->trimStr($out); | ||||
|     foreach (@srcDisks) { | ||||
|  | ||||
| @@ -3378,7 +3432,7 @@ sub cloneVM { | ||||
| 		        my $srcDiskAddr = $words[0]; | ||||
|  | ||||
|                 $srcDiskSize{$srcDiskAddr} = $words[3]; | ||||
|                 xCAT::zvmUtils->printSyslog("cloneVM() addr:$addr type:$type srcDiskAddr:$srcDiskAddr srcDiskSize:$words[3]"); | ||||
|                 xCAT::zvmUtils->printSyslog("cloneVM- addr:$addr type:$type srcDiskAddr:$srcDiskAddr srcDiskSize:$words[3]"); | ||||
| 		    } | ||||
|         } | ||||
|  | ||||
| @@ -3447,8 +3501,8 @@ sub cloneVM { | ||||
|     # Find the NIC address | ||||
|     xCAT::zvmCPUtils->loadVmcp($::SUDOER, $sourceNode); | ||||
|     $out = `ssh $::SUDOER\@$srcHcp "$::SUDO $::DIR/smcli Image_Definition_Query_DM -T $sourceId -k NICDEF"`; | ||||
|     xCAT::zvmUtils->printSyslog("cloneVM() smcli Image_Definition_Query_DM -T $sourceId -k NICDEF"); | ||||
|     xCAT::zvmUtils->printSyslog("cloneVM() $out"); | ||||
|     xCAT::zvmUtils->printSyslog("cloneVM- smcli Image_Definition_Query_DM -T $sourceId -k NICDEF"); | ||||
|     xCAT::zvmUtils->printSyslog("cloneVM- $out"); | ||||
|     # Output is similar to: | ||||
|     #   NICDEF_PROFILE=VDEV=0800 TYPE=QDIO LAN=SYSTEM SWITCHNAME=VSW2 | ||||
|     #   NICDEF=VDEV=0900 TYPE=QDIO DEVICES=3 LAN=SYSTEM SWITCHNAME=GLAN1 | ||||
| @@ -3472,7 +3526,7 @@ sub cloneVM { | ||||
|                 # Extract NIC address | ||||
|                 @words = ($lines[$i] =~ m/=(\S+)/g); | ||||
|                 $srcNicAddr = $words[0]; | ||||
|                 xCAT::zvmUtils->printSyslog("cloneVM() hcpNetName:$hcpNetName srcNicAddr:$srcNicAddr"); | ||||
|                 xCAT::zvmUtils->printSyslog("cloneVM- hcpNetName:$hcpNetName srcNicAddr:$srcNicAddr"); | ||||
|                  | ||||
|                 # Grab only the 1st match     | ||||
|                 last; | ||||
| @@ -3537,8 +3591,8 @@ sub cloneVM { | ||||
|         } | ||||
|          | ||||
|         $out = `ssh $::SUDOER\@$srcHcp "$::SUDO $::DIR/smcli Image_Deactivate -T $sourceId -f IMMED"`; | ||||
|         xCAT::zvmUtils->printSyslog("cloneVM() smcli Image_Deactivate -T $sourceId -f IMMED"); | ||||
|         xCAT::zvmUtils->printSyslog("cloneVM() $out"); | ||||
|         xCAT::zvmUtils->printSyslog("cloneVM- smcli Image_Deactivate -T $sourceId -f IMMED"); | ||||
|         xCAT::zvmUtils->printSyslog("cloneVM- $out"); | ||||
|  | ||||
|         #*** Clone source node *** | ||||
|         # Remove flashcopy lock (if any) | ||||
| @@ -3709,7 +3763,7 @@ sub clone { | ||||
|         xCAT::zvmUtils->printLn( $callback, "$tgtNode: (Solution) Verify that the node's IP address is specified in the hosts table and then run makehosts" ); | ||||
|         return; | ||||
|     } | ||||
|     xCAT::zvmUtils->printSyslog("clone() hcp:$hcp tgtUserId:$tgtUserId targetIp:$targetIp"); | ||||
|     xCAT::zvmUtils->printSyslog("clone- hcp:$hcp tgtUserId:$tgtUserId targetIp:$targetIp"); | ||||
|  | ||||
|     my $out; | ||||
|     my @lines; | ||||
| @@ -3735,7 +3789,7 @@ sub clone { | ||||
|         xCAT::zvmUtils->printLn( $callback, "$tgtNode: (Error) Missing disk pool. Please specify one." ); | ||||
|         return; | ||||
|     } | ||||
|     xCAT::zvmUtils->printSyslog("clone() pool:$pool"); | ||||
|     xCAT::zvmUtils->printSyslog("clone- pool:$pool"); | ||||
|  | ||||
|     # Get multi password | ||||
|     # It is Ok not have a password | ||||
| @@ -3826,11 +3880,13 @@ sub clone { | ||||
|             xCAT::zvmUtils->printLn( $callback, "$tgtNode: Trying again ($try) to create user directory entry" ); | ||||
|         } | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Create_DM -T $tgtUserId -f $userEntry"`; | ||||
|         xCAT::zvmUtils->printSyslog("clone() smcli Image_Create_DM -T $tgtUserId -f $userEntry"); | ||||
|         xCAT::zvmUtils->printSyslog("clone() $out"); | ||||
|         xCAT::zvmUtils->printSyslog("clone- smcli Image_Create_DM -T $tgtUserId -f $userEntry"); | ||||
|         xCAT::zvmUtils->printSyslog("clone- $out"); | ||||
|  | ||||
|         # Check if user entry is created | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Query_DM -T $tgtUserId" | sed '\$d'`; | ||||
|         xCAT::zvmUtils->printSyslog("clone- smcli Image_Query_DM -T $tgtUserId | sed '\$d'"); | ||||
|         xCAT::zvmUtils->printSyslog("clone- $out"); | ||||
|         $rc  = xCAT::zvmUtils->checkOutput( $callback, $out ); | ||||
|  | ||||
|         if ( $rc == -1 ) { | ||||
| @@ -3910,8 +3966,8 @@ sub clone { | ||||
|                     xCAT::zvmUtils->printLn( $callback, "$tgtNode: Trying again ($try) to add minidisk ($addr)" ); | ||||
|                 } | ||||
|                 $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Disk_Create_DM -T $tgtUserId -v $addr -t 3390 -a AUTOG -r $pool -u 1 -z $cyl -m $mode -f 1 -R $tgtPw -W $tgtPw -M $tgtPw"`; | ||||
|                 xCAT::zvmUtils->printSyslog("clone() smcli Image_Disk_Create_DM -T $tgtUserId -v $addr -t 3390 -a AUTOG -r $pool -u 1 -z $cyl -m $mode -f 1 -R $tgtPw -W $tgtPw -M $tgtPw"); | ||||
|                 xCAT::zvmUtils->printSyslog("clone() $out"); | ||||
|                 xCAT::zvmUtils->printSyslog("clone- smcli Image_Disk_Create_DM -T $tgtUserId -v $addr -t 3390 -a AUTOG -r $pool -u 1 -z $cyl -m $mode -f 1 -R $tgtPw -W $tgtPw -M $tgtPw"); | ||||
|                 xCAT::zvmUtils->printSyslog("clone- $out"); | ||||
|                  | ||||
|                 # Check output | ||||
|                 $rc = xCAT::zvmUtils->checkOutput( $callback, $out ); | ||||
| @@ -3953,8 +4009,8 @@ sub clone { | ||||
|                     xCAT::zvmUtils->printLn( $callback, "$tgtNode: Trying again ($try) to add minidisk ($addr)" ); | ||||
|                 } | ||||
|                 $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Disk_Create_DM -T $tgtUserId -v $addr -t 9336 -a AUTOG -r $pool -u 1 -z $blks -m $mode -f 1 -R $tgtPw -W $tgtPw -M $tgtPw"`; | ||||
|                 xCAT::zvmUtils->printSyslog("clone() smcli Image_Disk_Create_DM -T $tgtUserId -v $addr -t 9336 -a AUTOG -r $pool -u 1 -z $blks -m $mode -f 1 -R $tgtPw -W $tgtPw -M $tgtPw"); | ||||
|                 xCAT::zvmUtils->printSyslog("clone() $out"); | ||||
|                 xCAT::zvmUtils->printSyslog("clone- smcli Image_Disk_Create_DM -T $tgtUserId -v $addr -t 9336 -a AUTOG -r $pool -u 1 -z $blks -m $mode -f 1 -R $tgtPw -W $tgtPw -M $tgtPw"); | ||||
|                 xCAT::zvmUtils->printSyslog("clone- $out"); | ||||
|                  | ||||
|                 # Check output | ||||
|                 $rc = xCAT::zvmUtils->checkOutput( $callback, $out ); | ||||
| @@ -3988,8 +4044,8 @@ sub clone { | ||||
|  | ||||
|         # Get disks within user entry | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Query_DM -T $tgtUserId" | sed '\$d' | grep "MDISK"`; | ||||
|         xCAT::zvmUtils->printSyslog("clone() smcli Image_Query_DM -T $tgtUserId | grep MDISK"); | ||||
|         xCAT::zvmUtils->printSyslog("clone() $out"); | ||||
|         xCAT::zvmUtils->printSyslog("clone- smcli Image_Query_DM -T $tgtUserId | grep MDISK"); | ||||
|         xCAT::zvmUtils->printSyslog("clone- $out"); | ||||
|         @disks = split( '\n', $out ); | ||||
|         xCAT::zvmUtils->printLn( $callback, "$tgtNode: Disks added (" . @tgtDisks . "). Disks in user entry (" . @disks . ")" ); | ||||
|  | ||||
| @@ -4049,7 +4105,7 @@ sub clone { | ||||
|             $out = `ssh -o ConnectTimeout=5 $::SUDOER\@$hcp "$::SUDO /sbin/vmcp link $tgtUserId $_ $tgtAddr MR $tgtPw"`; | ||||
|  | ||||
|             # If link fails | ||||
|             if ( $out =~ m/not linked/i ) { | ||||
|             if ( $out =~ m/not linked/i || $out =~ m/not write-enabled/i ) { | ||||
|  | ||||
|                 # Wait before trying again | ||||
|                 sleep(5); | ||||
| @@ -4083,7 +4139,7 @@ sub clone { | ||||
|             xCAT::zvmUtils->printLn( $callback, "$tgtNode: Copying source disk ($srcAddr) to target disk ($tgtAddr) using FLASHCOPY" ); | ||||
|             if (xCAT::zvmUtils->smapi4xcat($::SUDOER, $hcp)) { | ||||
|                  $out = xCAT::zvmCPUtils->smapiFlashCopy($::SUDOER, $hcp, $sourceId, $srcAddr, $tgtUserId, $tgtAddr); | ||||
|                  xCAT::zvmUtils->printSyslog("clone() smapiFlashCopy:$out"); | ||||
|                  xCAT::zvmUtils->printSyslog("clone- smapiFlashCopy:$out"); | ||||
|                   | ||||
|                  # Exit if flashcopy completed successfully | ||||
|                  # Otherwsie, try CP FLASHCOPY | ||||
| @@ -4119,7 +4175,7 @@ sub clone { | ||||
|          | ||||
|                     # Flashcopy source disk | ||||
|                     $out = xCAT::zvmCPUtils->flashCopy( $::SUDOER, $hcp, $srcAddr, $tgtAddr ); | ||||
|                     xCAT::zvmUtils->printSyslog("clone() flashCopy:$out"); | ||||
|                     xCAT::zvmUtils->printSyslog("clone- flashCopy:$out"); | ||||
|                     $rc = xCAT::zvmUtils->checkOutput( $callback, $out ); | ||||
|                     if ( $rc == -1 ) { | ||||
|                         xCAT::zvmUtils->printLn( $callback, "$tgtNode: $out" ); | ||||
| @@ -4159,7 +4215,7 @@ sub clone { | ||||
|             if ($tgtDiskType eq '3390') { | ||||
|                 xCAT::zvmUtils->printLn( $callback, "$tgtNode: Formating target disk ($tgtAddr)" ); | ||||
|                 $out = `ssh $::SUDOER\@$hcp "$::SUDO /sbin/dasdfmt -b 4096 -y -f /dev/$tgtDevNode"`; | ||||
|                 xCAT::zvmUtils->printSyslog("clone() dasdfmt -b 4096 -y -f /dev/$tgtDevNode"); | ||||
|                 xCAT::zvmUtils->printSyslog("clone- dasdfmt -b 4096 -y -f /dev/$tgtDevNode"); | ||||
|  | ||||
|                 # Check for errors | ||||
|                 $rc = xCAT::zvmUtils->checkOutput( $callback, $out ); | ||||
| @@ -4184,8 +4240,8 @@ sub clone { | ||||
|                 	$out = "(Error) Failed to copy /dev/$srcDevNode"; | ||||
|                 } | ||||
|                  | ||||
|                 xCAT::zvmUtils->printSyslog("clone() dd if=/dev/$srcDevNode of=/dev/$tgtDevNode bs=4096 oflag=sync"); | ||||
|                 xCAT::zvmUtils->printSyslog("clone() $out"); | ||||
|                 xCAT::zvmUtils->printSyslog("clone- dd if=/dev/$srcDevNode of=/dev/$tgtDevNode bs=4096 oflag=sync"); | ||||
|                 xCAT::zvmUtils->printSyslog("clone- $out"); | ||||
|             } else { | ||||
|                 # Copy source disk to target disk | ||||
|                 # Block size = 512 | ||||
| @@ -4197,8 +4253,8 @@ sub clone { | ||||
|                     $out = "(Error) Failed to copy /dev/$srcDevNode"; | ||||
|                 } | ||||
|                  | ||||
|                 xCAT::zvmUtils->printSyslog("clone() dd if=/dev/$srcDevNode of=/dev/$tgtDevNode bs=512 oflag=sync"); | ||||
|                 xCAT::zvmUtils->printSyslog("clone() $out"); | ||||
|                 xCAT::zvmUtils->printSyslog("clone- dd if=/dev/$srcDevNode of=/dev/$tgtDevNode bs=512 oflag=sync"); | ||||
|                 xCAT::zvmUtils->printSyslog("clone- $out"); | ||||
|                  | ||||
|                 # Force Linux to re-read partition table | ||||
|                 xCAT::zvmUtils->printLn( $callback, "$tgtNode: Forcing Linux to re-read partition table" ); | ||||
| @@ -4227,14 +4283,6 @@ EOM"`; | ||||
|             sleep(2); | ||||
|         } | ||||
|          | ||||
|         # Re-scan partition table | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO /usr/sbin/partprobe /dev/$tgtDevNode"`;  # SLES | ||||
|         xCAT::zvmUtils->printSyslog("clone() /usr/sbin/partprobe /dev/$tgtDevNode"); | ||||
|         xCAT::zvmUtils->printSyslog("clone() $out"); | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO /sbin/partprobe /dev/$tgtDevNode"`;  # RHEL | ||||
|         xCAT::zvmUtils->printSyslog("clone() /sbin/partprobe /dev/$tgtDevNode"); | ||||
|         xCAT::zvmUtils->printSyslog("clone() $out"); | ||||
|  | ||||
|         # Disable and enable target disk | ||||
|         $out = xCAT::zvmUtils->disableEnableDisk( $::SUDOER, $hcp, "-d", $tgtAddr ); | ||||
|         $out = xCAT::zvmUtils->disableEnableDisk( $::SUDOER, $hcp, "-e", $tgtAddr ); | ||||
| @@ -4250,12 +4298,21 @@ EOM"`; | ||||
|              | ||||
|         # Disk can contain more than 1 partition. Find the right one (not swap) | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO /usr/bin/file -s /dev/$tgtDevNode*"`; | ||||
|         xCAT::zvmUtils->printSyslog("clone() file -s /dev/$tgtDevNode*"); | ||||
|         xCAT::zvmUtils->printSyslog("clone() $out"); | ||||
|         xCAT::zvmUtils->printSyslog("clone- file -s /dev/$tgtDevNode*"); | ||||
|         xCAT::zvmUtils->printSyslog("clone- $out"); | ||||
|          | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO /usr/bin/file -s /dev/$tgtDevNode*" | grep -v swap | grep -o "$tgtDevNode\[0-9\]"`; | ||||
|         xCAT::zvmUtils->printSyslog("clone() file -s /dev/$tgtDevNode* | grep -v swap | grep -o $tgtDevNode\[0-9\]"); | ||||
|         xCAT::zvmUtils->printSyslog("clone() $out"); | ||||
|         $out = ""; | ||||
|         $try = 5; | ||||
|         while (!$out && $try > 0) { | ||||
|             $out = `ssh $::SUDOER\@$hcp "$::SUDO /usr/bin/file -s /dev/$tgtDevNode*" | grep -v swap | grep -o "$tgtDevNode\[1-9\]"`; | ||||
|             $out = xCAT::zvmUtils->trimStr($out); | ||||
|             xCAT::zvmUtils->printSyslog("clone- file -s /dev/$tgtDevNode* | grep -v swap | grep -o $tgtDevNode\[0-9\]"); | ||||
|             xCAT::zvmUtils->printSyslog("clone- $out"); | ||||
|              | ||||
|             # Wait before trying again | ||||
|             sleep(5); | ||||
|             $try = $try - 1; | ||||
|         } | ||||
|          | ||||
|         my @tgtDevNodes = split( "\n", $out ); | ||||
|         my $iTgtDevNode = 0; | ||||
| @@ -4268,7 +4325,7 @@ EOM"`; | ||||
|         while ( !(`ssh $::SUDOER\@$hcp "$::SUDO ls $cloneMntPt"`) && $try > 0 ) { | ||||
|             $out = `ssh $::SUDOER\@$hcp "$::SUDO mkdir -p $cloneMntPt"`; | ||||
|             $out = `ssh $::SUDOER\@$hcp "$::SUDO mount /dev/$tgtDevNode $cloneMntPt"`; | ||||
|             xCAT::zvmUtils->printSyslog("clone() mount /dev/$tgtDevNode $cloneMntPt"); | ||||
|             xCAT::zvmUtils->printSyslog("clone- mount /dev/$tgtDevNode $cloneMntPt"); | ||||
|  | ||||
|             # If more than 1 partition, try other partitions | ||||
|             if (@tgtDevNodes > 1 && $iTgtDevNode < @tgtDevNodes) { | ||||
| @@ -4291,17 +4348,17 @@ EOM"`; | ||||
|             # Set hostname | ||||
|             xCAT::zvmUtils->printLn( $callback, "$tgtNode: Setting network configuration" ); | ||||
|             $out = `ssh $::SUDOER\@$hcp "$::SUDO sed --in-place -e \"s/$sourceNode/$tgtNode/i\" $cloneMntPt/etc/HOSTNAME"`; | ||||
|             xCAT::zvmUtils->printSyslog("clone() sed --in-place -e s/$sourceNode/$tgtNode/i $cloneMntPt/etc/HOSTNAME"); | ||||
|             xCAT::zvmUtils->printSyslog("clone- sed --in-place -e s/$sourceNode/$tgtNode/i $cloneMntPt/etc/HOSTNAME"); | ||||
|  | ||||
|             # If Red Hat - Set hostname in /etc/sysconfig/network | ||||
|             if ( $srcOs =~ m/rhel/i ) { | ||||
|                 $out = `ssh $::SUDOER\@$hcp "$::SUDO sed --in-place -e \"s/$sourceNode/$tgtNode/i\" $cloneMntPt/etc/sysconfig/network"`; | ||||
|                 xCAT::zvmUtils->printSyslog("clone() sed --in-place -e s/$sourceNode/$tgtNode/i $cloneMntPt/etc/sysconfig/network"); | ||||
|                 xCAT::zvmUtils->printSyslog("clone- sed --in-place -e s/$sourceNode/$tgtNode/i $cloneMntPt/etc/sysconfig/network"); | ||||
|             } | ||||
|  | ||||
|             # Get network layer | ||||
|             my $layer = xCAT::zvmCPUtils->getNetworkLayer( $::SUDOER, $hcp, $hcpNetName ); | ||||
|             xCAT::zvmUtils->printSyslog("clone() hcp:$hcp hcpNetName:$hcpNetName layer:$layer"); | ||||
|             xCAT::zvmUtils->printSyslog("clone- hcp:$hcp hcpNetName:$hcpNetName layer:$layer"); | ||||
|  | ||||
|             # Get network configuration file | ||||
|             # Location of this file depends on the OS | ||||
| @@ -4310,9 +4367,9 @@ EOM"`; | ||||
|             # If it is Red Hat - ifcfg-qeth file is in /etc/sysconfig/network-scripts | ||||
|             my @files; | ||||
| 		    if ( $srcOs =~ m/rhel/i ) { | ||||
| 		        $out   = `ssh $::SUDOER\@$hcp "$::SUDO grep -H -r $srcNicAddr $cloneMntPt/etc/sysconfig/network-scripts"`; | ||||
| 		        xCAT::zvmUtils->printSyslog("clone() grep -H -r $srcNicAddr $cloneMntPt/etc/sysconfig/network-scripts"); | ||||
| 		        xCAT::zvmUtils->printSyslog("clone() $out"); | ||||
| 		        $out   = `ssh $::SUDOER\@$hcp "$::SUDO grep -H -i -r $srcNicAddr $cloneMntPt/etc/sysconfig/network-scripts"`; | ||||
| 		        xCAT::zvmUtils->printSyslog("clone- grep -H -i -r $srcNicAddr $cloneMntPt/etc/sysconfig/network-scripts"); | ||||
| 		        xCAT::zvmUtils->printSyslog("clone- $out"); | ||||
| 		        @files = split('\n', $out); | ||||
| 		        @words = split( ':', $files[0] ); | ||||
|                 $srcIfcfg = $words[0]; | ||||
| @@ -4320,9 +4377,9 @@ EOM"`; | ||||
| 		 | ||||
| 		    # If it is SLES 10 - ifcfg-qeth file is in /etc/sysconfig/network | ||||
| 		    elsif ( $srcOs =~ m/sles10/i ) { | ||||
| 		        $out   = `ssh $::SUDOER\@$hcp "$::SUDO grep -H -r $srcNicAddr $cloneMntPt/etc/sysconfig/network/ifcfg-qeth*"`; | ||||
| 		        xCAT::zvmUtils->printSyslog("clone() grep -H -r $srcNicAddr $cloneMntPt/etc/sysconfig/network/ifcfg-qeth*"); | ||||
| 		        xCAT::zvmUtils->printSyslog("clone() $out"); | ||||
| 		        $out   = `ssh $::SUDOER\@$hcp "$::SUDO grep -H -i -r $srcNicAddr $cloneMntPt/etc/sysconfig/network/ifcfg-qeth*"`; | ||||
| 		        xCAT::zvmUtils->printSyslog("clone- grep -H -i -r $srcNicAddr $cloneMntPt/etc/sysconfig/network/ifcfg-qeth*"); | ||||
| 		        xCAT::zvmUtils->printSyslog("clone- $out"); | ||||
|                 @files = split('\n', $out); | ||||
|                 @words = split( ':', $files[0] ); | ||||
|                 $srcIfcfg = $words[0]; | ||||
| @@ -4330,9 +4387,9 @@ EOM"`; | ||||
| 		 | ||||
| 		    # If it is SLES 11 - ifcfg-qeth file is in /etc/sysconfig/network | ||||
| 		    elsif ( $srcOs =~ m/sles11/i ) {		 | ||||
| 		        $out   = `ssh $::SUDOER\@$hcp "$::SUDO grep -H -r $srcNicAddr $cloneMntPt/etc/sysconfig/network/ifcfg-eth*"`; | ||||
| 		        xCAT::zvmUtils->printSyslog("clone() grep -H -r $srcNicAddr $cloneMntPt/etc/sysconfig/network/ifcfg-eth*"); | ||||
| 		        xCAT::zvmUtils->printSyslog("clone() $out"); | ||||
| 		        $out   = `ssh $::SUDOER\@$hcp "$::SUDO grep -H -i -r $srcNicAddr $cloneMntPt/etc/sysconfig/network/ifcfg-eth*"`; | ||||
| 		        xCAT::zvmUtils->printSyslog("clone- grep -H -i -r $srcNicAddr $cloneMntPt/etc/sysconfig/network/ifcfg-eth*"); | ||||
| 		        xCAT::zvmUtils->printSyslog("clone- $out"); | ||||
|                 @files = split('\n', $out); | ||||
|                 @words = split( ':', $files[0] ); | ||||
|                 $srcIfcfg = $words[0]; | ||||
| @@ -4362,12 +4419,12 @@ EOM"`; | ||||
|                  | ||||
|             $out = `ssh $::SUDOER\@$hcp "$::SUDO sed --in-place -e \"s/$sourceNode/$tgtNode/i\" \ -e \"s/$sourceIp/$targetIp/i\" $cloneMntPt/etc/hosts"`; | ||||
|             $out = `ssh $::SUDOER\@$hcp "$::SUDO sed --in-place -e \"s/$sourceIp/$targetIp/i\" \ -e \"s/$sourceNode/$tgtNode/i\" $ifcfgPath"`; | ||||
|             xCAT::zvmUtils->printSyslog("clone() sed --in-place -e s/$sourceNode/$tgtNode/i \ -e s/$sourceIp/$targetIp/i $cloneMntPt/etc/hosts"); | ||||
|             xCAT::zvmUtils->printSyslog("clone() sed --in-place -e s/$sourceIp/$targetIp/i \ -e s/$sourceNode/$tgtNode/i $ifcfgPath"); | ||||
|             xCAT::zvmUtils->printSyslog("clone- sed --in-place -e s/$sourceNode/$tgtNode/i \ -e s/$sourceIp/$targetIp/i $cloneMntPt/etc/hosts"); | ||||
|             xCAT::zvmUtils->printSyslog("clone- sed --in-place -e s/$sourceIp/$targetIp/i \ -e s/$sourceNode/$tgtNode/i $ifcfgPath"); | ||||
|              | ||||
|             if ($tgtNetwork && $tgtMask) { | ||||
|             	$out = `ssh $::SUDOER\@$hcp "$::SUDO sed --in-place -e \"s/$srcNetwork/$tgtNetwork/i\" \ -e \"s/$srcMask/$tgtMask/i\" $ifcfgPath"`; | ||||
|                 xCAT::zvmUtils->printSyslog("clone() sed --in-place -e s/$srcNetwork/$tgtNetwork/i \ -e s/$srcMask/$tgtMask/i $ifcfgPath"); | ||||
|                 xCAT::zvmUtils->printSyslog("clone- sed --in-place -e s/$srcNetwork/$tgtNetwork/i \ -e s/$srcMask/$tgtMask/i $ifcfgPath"); | ||||
|             } | ||||
|              | ||||
|             # Set MAC address | ||||
| @@ -4389,7 +4446,7 @@ EOM"`; | ||||
|                     $config .= "UNIQUE=''\n"; | ||||
|                 } | ||||
|             } | ||||
|             xCAT::zvmUtils->printSyslog("clone() $config"); | ||||
|             xCAT::zvmUtils->printSyslog("clone- $config"); | ||||
|  | ||||
|             # Write network configuration | ||||
|             # You cannot SCP file over to mount point as sudo, so you have to copy file to zHCP  | ||||
| @@ -4407,14 +4464,14 @@ EOM"`; | ||||
|                 	 | ||||
|                     # Set MAC address | ||||
|                     $out = `ssh $::SUDOER\@$hcp "$::SUDO sed --in-place -e \"s/$srcMac/$targetMac/i\" $ifcfgPath"`; | ||||
|                     xCAT::zvmUtils->printSyslog("clone() sed --in-place -e s/$srcMac/$targetMac/i $ifcfgPath");                    | ||||
|                     xCAT::zvmUtils->printSyslog("clone- sed --in-place -e s/$srcMac/$targetMac/i $ifcfgPath");                    | ||||
|                 } else { | ||||
|                 	#*** SuSE Linux *** | ||||
|  | ||||
|                     # Get hardware configuration | ||||
|                     # hwcfg-qeth file is in /etc/sysconfig/hardware | ||||
|                     my $hwcfgPath = $cloneMntPt . "/etc/sysconfig/hardware/hwcfg-qeth-bus-ccw-0.0.$srcNicAddr"; | ||||
|                     xCAT::zvmUtils->printSyslog("clone() hwcfgPath=$hwcfgPath"); | ||||
|                     xCAT::zvmUtils->printSyslog("clone- hwcfgPath=$hwcfgPath"); | ||||
|                     my $hardwareFile = $tgtNode . "HardwareConfig"; | ||||
|                     $out = `ssh $::SUDOER\@$hcp "$::SUDO cat $hwcfgPath" | grep -v "QETH_LAYER2_SUPPORT" > /tmp/$hardwareFile`; | ||||
|                     $out = `echo "QETH_LAYER2_SUPPORT='1'" >> /tmp/$hardwareFile`; | ||||
| @@ -4456,6 +4513,7 @@ EOM"`; | ||||
|     # Power on target virtual server | ||||
|     xCAT::zvmUtils->printLn( $callback, "$tgtNode: Powering on" ); | ||||
|     $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Activate -T $tgtUserId"`; | ||||
|     xCAT::zvmUtils->printSyslog("clone- smcli Image_Activate -T $tgtUserId"); | ||||
|  | ||||
|     # Check for error | ||||
|     $rc = xCAT::zvmUtils->checkOutput( $callback, $out ); | ||||
| @@ -4670,6 +4728,7 @@ sub nodeSet { | ||||
|          | ||||
|         # Search directory entry for network name | ||||
|         my $userEntry = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Query_DM -T $userId" | sed '\$d'`; | ||||
|         xCAT::zvmUtils->printSyslog("nodeSet- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Query_DM -T $userId | sed '\$d'"); | ||||
|         $out = `echo "$userEntry" | grep "NICDEF"`; | ||||
|         my @lines = split( '\n', $out ); | ||||
|          | ||||
| @@ -5749,10 +5808,14 @@ sub netBoot { | ||||
|  | ||||
|     # Boot node | ||||
|     my $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Activate -T $userId"`; | ||||
|  | ||||
|     xCAT::zvmUtils->printSyslog("netBoot- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Activate -T $userId"); | ||||
|     xCAT::zvmUtils->printSyslog("netBoot- $out"); | ||||
|      | ||||
|     # IPL when virtual server is online | ||||
|     sleep(5); | ||||
|     $out = xCAT::zvmCPUtils->sendCPCmd( $::SUDOER, $hcp, $userId, "IPL $ipl[1]" ); | ||||
|     xCAT::zvmUtils->printSyslog("netBoot- IPL $ipl[1]"); | ||||
|     xCAT::zvmUtils->printSyslog("netBoot- $out"); | ||||
|     xCAT::zvmUtils->printLn( $callback, "$node: Booting from $ipl[1]... Done" ); | ||||
|  | ||||
|     return; | ||||
| @@ -6207,12 +6270,14 @@ sub changeHypervisor { | ||||
|                 $volume = $args->[3]; | ||||
|                 $group  = $args->[4]; | ||||
|                 $tmp = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Volume_Space_Define_DM -T $hcpUserId -f $funct -g $_ -v $volume -p $group -y 0"`; | ||||
|                 xCAT::zvmUtils->printSyslog("changeHypervisor- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Volume_Space_Define_DM -T $hcpUserId -f $funct -g $_ -v $volume -p $group -y 0"); | ||||
|             } | ||||
|              | ||||
|             # Add existing region to group | ||||
|             elsif($funct eq "5") { | ||||
|                 $group = $args->[3]; | ||||
|                 $tmp = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Volume_Space_Define_DM -T $hcpUserId -f $funct -g $_ -p $group -y 0"`; | ||||
|                 xCAT::zvmUtils->printSyslog("changeHypervisor- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Volume_Space_Define_DM -T $hcpUserId -f $funct -g $_ -p $group -y 0"); | ||||
|             } | ||||
|              | ||||
|             $out .= $tmp; | ||||
| @@ -6231,6 +6296,7 @@ sub changeHypervisor { | ||||
|          | ||||
|         # Add an ECKD disk to a running z/VM system | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli System_Disk_Add -T $hcpUserId -k $devNo"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeHypervisor- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli System_Disk_Add -T $hcpUserId -k $devNo"); | ||||
|     } | ||||
|          | ||||
|     # addscsi [dev_no] [dev_path] [option] [persist] | ||||
| @@ -6280,8 +6346,8 @@ sub changeHypervisor { | ||||
|         my $persist = "persist=" . $args->[4]; | ||||
|  | ||||
|         # Add disk to running system | ||||
|         # $out .= `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli System_SCSI_Disk_Add -T $hcpUserId -k $devNo -k $devPath -k $option -k $persist"`; | ||||
|         xCAT::zvmUtils->printLn( $callback, "$node: smcli System_SCSI_Disk_Add -T $hcpUserId -k $devNo -k $devPath -k $option -k $persist" ); | ||||
|         $out .= `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli System_SCSI_Disk_Add -T $hcpUserId -k $devNo -k $devPath -k $option -k $persist"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeHypervisor- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli System_SCSI_Disk_Add -T $hcpUserId -k $devNo -k $devPath -k $option -k $persist"); | ||||
|     } | ||||
|      | ||||
|     # addvlan [name] [owner] [type] [transport] | ||||
| @@ -6298,6 +6364,7 @@ sub changeHypervisor { | ||||
|         } | ||||
|  | ||||
|         $out .= `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Virtual_Network_LAN_Create -T $hcpUserId -n $name -o $owner -t $type -p $transport"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeHypervisor- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Virtual_Network_LAN_Create -T $hcpUserId -n $name -o $owner -t $type -p $transport"); | ||||
|     } | ||||
|      | ||||
|     # addvswitch [name] [osa_dev_addr] [port_name] [controller] [connect (0, 1, or 2)] [memory_queue] [router] [transport] [vlan_id] [port_type] [update] [gvrp] [native_vlan] | ||||
| @@ -6320,6 +6387,7 @@ sub changeHypervisor { | ||||
|         } | ||||
|  | ||||
|         $out .= `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Virtual_Network_Vswitch_Create -T $hcpUserId $argStr"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeHypervisor- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Virtual_Network_Vswitch_Create -T $hcpUserId $argStr"); | ||||
|     } | ||||
|      | ||||
|     # addzfcp2pool [pool] [status] [wwpn] [lun] [size] [range] [owner (optional)] | ||||
| @@ -6415,11 +6483,13 @@ sub changeHypervisor { | ||||
|             if ($funct eq "2" || $funct eq "7") { | ||||
|                 $group  = $args->[3]; | ||||
|                 $tmp = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Volume_Space_Remove_DM -T $hcpUserId -f $funct -r $_ -g $group"`; | ||||
|                 xCAT::zvmUtils->printSyslog("changeHypervisor- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Volume_Space_Remove_DM -T $hcpUserId -f $funct -r $_ -g $group"); | ||||
|             }  | ||||
|              | ||||
|             # Remove region | Remove region from all groups | ||||
|             elsif ($funct eq "1" || $funct eq "3") { | ||||
|                 $tmp = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Volume_Space_Remove_DM -T $hcpUserId -f $funct -r $_"`; | ||||
|                 xCAT::zvmUtils->printSyslog("changeHypervisor- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Volume_Space_Remove_DM -T $hcpUserId -f $funct -r $_"); | ||||
|             } | ||||
|              | ||||
|             $out .= $tmp; | ||||
| @@ -6439,6 +6509,7 @@ sub changeHypervisor { | ||||
|          | ||||
|         # Delete a real SCSI disk | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli System_SCSI_Disk_Delete -T $hcpUserId -k $devNo -k $persist"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeHypervisor- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli System_SCSI_Disk_Delete -T $hcpUserId -k $devNo -k $persist"); | ||||
|     } | ||||
|      | ||||
|     # removevlan [name] [owner] | ||||
| @@ -6448,6 +6519,7 @@ sub changeHypervisor { | ||||
|          | ||||
|         # Delete a virtual network | ||||
|         $out = `ssh $hcp "$::DIR/smcli Virtual_Network_LAN_Delete -T $hcpUserId -n $name -o $owner"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeHypervisor- ssh $hcp $::DIR/smcli Virtual_Network_LAN_Delete -T $hcpUserId -n $name -o $owner"); | ||||
|     } | ||||
|      | ||||
|     # removevswitch [name] | ||||
| @@ -6456,6 +6528,7 @@ sub changeHypervisor { | ||||
|          | ||||
|         # Delete a VSWITCH | ||||
|         $out = `ssh $hcp "$::DIR/smcli Virtual_Network_Vswitch_Delete -T $hcpUserId -n $name"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeHypervisor- ssh $hcp $::DIR/smcli Virtual_Network_Vswitch_Delete -T $hcpUserId -n $name"); | ||||
|     }     | ||||
|      | ||||
|     # removezfcpfrompool [pool] [lun] [wwpn (optional)] | ||||
| @@ -6554,6 +6627,7 @@ sub changeHypervisor { | ||||
|  | ||||
|         # Pass arguments directly to smcli | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli $str"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeHypervisor- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli $str"); | ||||
|     } | ||||
|      | ||||
|     # Otherwise, print out error | ||||
| @@ -6698,6 +6772,7 @@ sub inventoryHypervisor { | ||||
|              | ||||
|             # Check whether disk pool is a valid pool      | ||||
|             $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Image_Volume_Space_Query_DM -q 1 -e 3 -n $pool -T $hcpUserId" | grep "Failed"`; | ||||
|             xCAT::zvmUtils->printSyslog("changeHypervisor- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Image_Volume_Space_Query_DM -q 1 -e 3 -n $pool -T $hcpUserId"); | ||||
|             if ($out) { | ||||
|                  xCAT::zvmUtils->printLn( $callback, "$node: Disk pool $pool does not exist" ); | ||||
|                  return; | ||||
| @@ -6792,6 +6867,7 @@ sub inventoryHypervisor { | ||||
|         if ($space eq "active" || $space eq "free" || $space eq "offline") { | ||||
|         	if ($details) { | ||||
|         		$out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli System_WWPN_Query -T $hcpUserId"`; | ||||
|         		xCAT::zvmUtils->printSyslog("changeHypervisor- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli System_WWPN_Query -T $hcpUserId"); | ||||
|         		 | ||||
|         		@devices = split( "\n", $out );                 | ||||
|                 for ($i = 0; $i < @devices; $i++) { | ||||
| @@ -6818,7 +6894,8 @@ sub inventoryHypervisor { | ||||
|                 } | ||||
|         	} else { | ||||
|         		$out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli System_WWPN_Query -T $hcpUserId" | egrep -i "FCP device number|Status"`; | ||||
|              | ||||
|                 xCAT::zvmUtils->printSyslog("changeHypervisor- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli System_WWPN_Query -T $hcpUserId | egrep -i FCP device number|Status"); | ||||
|                  | ||||
| 	            @devices = split( "\n", $out ); | ||||
| 	            for ($i = 0; $i < @devices; $i++) { | ||||
| 	                # Extract the device number and status | ||||
| @@ -6855,7 +6932,8 @@ sub inventoryHypervisor { | ||||
|         } | ||||
|           | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli System_FCP_Free_Query -T $hcpUserId -k fcp_dev=$fcp" | egrep -i "FCP device number:|World wide port number:|Logical unit number:|Number of bytes residing on the logical unit:"`; | ||||
|      | ||||
|         xCAT::zvmUtils->printSyslog("changeHypervisor- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli System_FCP_Free_Query -T $hcpUserId -k fcp_dev=$fcp | egrep -i FCP device number:|World wide port number:|Logical unit number:|Number of bytes residing on the logical unit:"); | ||||
|          | ||||
|         my @wwpns = split( "\n", $out ); | ||||
|         my %map; | ||||
|          | ||||
| @@ -6922,6 +7000,7 @@ sub inventoryHypervisor { | ||||
|         # This has not be completed! | ||||
|         my $failedId = $args->[1]; | ||||
|         $str = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Response_Recovery -T $hcpUserId -k $failedId"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeHypervisor- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Response_Recovery -T $hcpUserId -k $failedId"); | ||||
|     } | ||||
|      | ||||
|     # freefcp [fcp_dev] | ||||
| @@ -6935,6 +7014,7 @@ sub inventoryHypervisor { | ||||
|         my $fcp = "fcp_dev=" . $args->[1]; | ||||
|          | ||||
|         $str = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli System_FCP_Free_Query -T $hcpUserId -k $fcp"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeHypervisor- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli System_FCP_Free_Query -T $hcpUserId -k $fcp"); | ||||
|     } | ||||
|      | ||||
|     # scsidisk [dev_no] | ||||
| @@ -6948,16 +7028,19 @@ sub inventoryHypervisor { | ||||
|         my $devNo = "dev_num=" . $args->[1]; | ||||
|          | ||||
|         $str = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli System_SCSI_Disk_Query -T $hcpUserId -k $devNo"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeHypervisor- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli System_SCSI_Disk_Query -T $hcpUserId -k $devNo"); | ||||
|     } | ||||
|      | ||||
|     # ssi | ||||
|     elsif ( $args->[0] eq "--ssi" ) {       | ||||
|     elsif ( $args->[0] eq "--ssi" ) { | ||||
|         $str = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli SSI_Query"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeHypervisor- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli SSI_Query"); | ||||
|     } | ||||
|      | ||||
|     # smapilevel | ||||
|     elsif ( $args->[0] eq "--smapilevel" ) { | ||||
|         $str = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Query_API_Functional_Level -T $hcpUserId"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeHypervisor- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Query_API_Functional_Level -T $hcpUserId"); | ||||
|     } | ||||
|      | ||||
|     # systemdisk [dev_no] | ||||
| @@ -6971,6 +7054,7 @@ sub inventoryHypervisor { | ||||
|         my $devNo = "dev_num=" . $args->[1]; | ||||
|              | ||||
|         $str = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli System_Disk_Query -T $hcpUserId -k $devNo"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeHypervisor- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli System_Disk_Query -T $hcpUserId -k $devNo"); | ||||
|     } | ||||
|      | ||||
|     # systemdiskaccessibility [dev_no] | ||||
| @@ -6984,6 +7068,7 @@ sub inventoryHypervisor { | ||||
|         my $devNo = "dev_num=" . $args->[1]; | ||||
|          | ||||
|         $str = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli System_Disk_Accessibility -T $hcpUserId -k $devNo"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeHypervisor- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli System_Disk_Accessibility -T $hcpUserId -k $devNo"); | ||||
|     } | ||||
|      | ||||
|     # vlanstats [vlan_id] [user_id] [device] [version] | ||||
| @@ -7006,6 +7091,7 @@ sub inventoryHypervisor { | ||||
|         } | ||||
|          | ||||
|         $str = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Virtual_Network_VLAN_Query_Stats -T $hcpUserId $argStr"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeHypervisor- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Virtual_Network_VLAN_Query_Stats -T $hcpUserId $argStr"); | ||||
|     } | ||||
|      | ||||
|     # vswitchstats [name] [version] | ||||
| @@ -7025,6 +7111,7 @@ sub inventoryHypervisor { | ||||
|         } | ||||
|          | ||||
|         $str = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli Virtual_Network_Vswitch_Query_Stats -T $hcpUserId $argStr"`; | ||||
|         xCAT::zvmUtils->printSyslog("changeHypervisor- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli Virtual_Network_Vswitch_Query_Stats -T $hcpUserId $argStr"); | ||||
|     } | ||||
|      | ||||
|     # wwpn [fcp_device] (supported only on z/VM 6.2) | ||||
| @@ -7037,7 +7124,8 @@ sub inventoryHypervisor { | ||||
|         } | ||||
|     	  | ||||
|         $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli System_FCP_Free_Query -T $hcpUserId -k fcp_dev=$fcp" | egrep -i "World wide port number:"`; | ||||
|      | ||||
|         xCAT::zvmUtils->printSyslog("changeHypervisor- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli System_FCP_Free_Query -T $hcpUserId -k fcp_dev=$fcp | egrep -i World wide port number:"); | ||||
|          | ||||
|         my @wwpns = split( "\n", $out ); | ||||
|         my %uniqueWwpns; | ||||
|         foreach (@wwpns) { | ||||
| @@ -7217,6 +7305,7 @@ sub migrateVM { | ||||
|      | ||||
|     # Begin migration | ||||
|     $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli $migrateCmd"`; | ||||
|     xCAT::zvmUtils->printSyslog("migrateVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli $migrateCmd"); | ||||
|     xCAT::zvmUtils->printLn( $callback, "$node: $out" ); | ||||
|      | ||||
|     # Check for errors on migration only | ||||
| @@ -7228,6 +7317,7 @@ sub migrateVM { | ||||
|         my $isMigrated = 0; | ||||
|         while ($check > 0) { | ||||
|             $out = `ssh $::SUDOER\@$hcp "$::SUDO $::DIR/smcli VMRELOCATE_Status -T $hcpUserId" -k status_target=$userId`; | ||||
|             xCAT::zvmUtils->printSyslog("migrateVM- ssh $::SUDOER\@$hcp $::SUDO $::DIR/smcli VMRELOCATE_Status -T $hcpUserId -k status_target=$userId"); | ||||
|             if ( $out =~ m/No active relocations found/i ) { | ||||
|                 $isMigrated = 1; | ||||
|                 last; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user