mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-10-31 11:22:27 +00:00 
			
		
		
		
	Fixed SCSI/FCP devices in nodeset.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/branches/2.8@15171 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
		| @@ -682,7 +682,7 @@ sub getMdisks { | ||||
| sub getDedicates { | ||||
|  | ||||
|     # Get inputs | ||||
|     my ( $class, $user, $callback, $node ) = @_; | ||||
|     my ( $class, $callback, $user, $node ) = @_; | ||||
|  | ||||
|     my $sudo = "sudo"; | ||||
|     if ($user eq "root") { | ||||
| @@ -697,18 +697,18 @@ sub getDedicates { | ||||
|     my $propVals = xCAT::zvmUtils->getNodeProps( 'zvm', $node, @propNames ); | ||||
|     my $hcp = $propVals->{'hcp'}; | ||||
|  | ||||
|     # Get node userID | ||||
|     # Get node userId | ||||
|     my $userId = $propVals->{'userid'}; | ||||
|  | ||||
|     my $out = `ssh $user\@$hcp "$sudo $dir/getuserentry $userId" | grep "DEDICATE"`; | ||||
|  | ||||
|     my $out = `ssh $user\@$hcp "$sudo $dir/smcli Image_Query_DM -T $userId" | egrep -i "DEDICATE"`; | ||||
|      | ||||
|     # Get DEDICATE statements | ||||
|     my @lines = split( '\n', $out ); | ||||
|     my @dedicates; | ||||
|     foreach (@lines) { | ||||
|         $_ = xCAT::zvmUtils->trimStr($_); | ||||
|  | ||||
|         # Save MDISK statements | ||||
|         # Save statements | ||||
|         push( @dedicates, $_ ); | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -1501,14 +1501,14 @@ function openAddZfcpDialog(node, hcp, zvm) { | ||||
|                         loaddev = 0; | ||||
|                     } | ||||
|  | ||||
|                     var args = '--addzfcp;' + pool + ';' + address + ';' + loaddev + ';' + size; | ||||
|                     var args = '--addzfcp||' + pool + '||' + address + '||' + loaddev + '||' + size; | ||||
|                      | ||||
|                     if (tag && tag != "null") { | ||||
|                         args += ';' + tag; | ||||
|                         args += '||' + tag; | ||||
|                     } if (portName && tag != "null") { | ||||
|                         args += ';' + portName; | ||||
|                         args += '||' + portName; | ||||
|                     } if (unitNo && tag != "null") { | ||||
|                         args += ';' + unitNo; | ||||
|                         args += '||' + unitNo; | ||||
|                     } | ||||
|                      | ||||
|                     // Add zFCP device | ||||
|   | ||||
| @@ -1054,7 +1054,7 @@ sub changeVM { | ||||
|         #   #status,wwpn,lun,size,range,owner,channel,tag | ||||
|         #     used,1000000000000000,2000000000000110,8g,3B00-3B3F,ihost1,1a23,$root_device$ | ||||
|         #     free,1000000000000000,2000000000000111,,3B00-3B3F,,, | ||||
|         #     free,1230000000000000,2000000000000112,,3B00-3B3F,,, | ||||
|         #     free,1230000000000000;4560000000000000,2000000000000112,,3B00-3B3F,,, | ||||
|         if (!$useWwpnLun) { | ||||
|             my @devices = split("\n", `ssh $::SUDOER\@$hcp "$::SUDO cat $::ZFCPPOOL/$pool.conf" | egrep -i free`);             | ||||
|             $sizeFound = 0; | ||||
| @@ -1165,7 +1165,14 @@ sub changeVM { | ||||
| 	            return; | ||||
| 	        } | ||||
|         } | ||||
|          | ||||
|  | ||||
|         # If there are multiple devices (multipathing), take the 1st one | ||||
|         my $origDevice = $device; | ||||
|         if ($device =~ m/;/i) { | ||||
|             @tmp = split(';', $device); | ||||
|             $device = xCAT::zvmUtils->trimStr($tmp[0]); | ||||
|         } | ||||
|                  | ||||
|         # Make sure channel has a length of 4  | ||||
|         while (length($device) < 4) { | ||||
|             $device = "0" . $device; | ||||
| @@ -1282,7 +1289,7 @@ sub changeVM { | ||||
|             $out = `ssh $::SUDOER\@$hcp "$::SUDO sed --in-place -e $expression $::ZFCPPOOL/$pool.conf"`; | ||||
|         } else { | ||||
|             # Insert device entry into file | ||||
|             $out = `ssh $::SUDOER\@$hcp "$::SUDO echo \"used,$origWwpn,$lun,$size,,$node,$device,$tag\" >> $::ZFCPPOOL/$pool.conf"`; | ||||
|             $out = `ssh $::SUDOER\@$hcp "$::SUDO echo \"used,$origWwpn,$lun,$size,,$node,$origDevice,$tag\" >> $::ZFCPPOOL/$pool.conf"`; | ||||
|         } | ||||
|          | ||||
|         xCAT::zvmUtils->printLn($callback, "$node: Adding FCP device... Done"); | ||||
| @@ -4849,7 +4856,7 @@ sub nodeSet { | ||||
|             my $entry; | ||||
|             my $zfcpSection = ""; | ||||
|             foreach (@pools) { | ||||
|                 $entry = `ssh $::SUDOER\@$hcp "$::SUDO cat $::ZFCPPOOL/$_" | egrep -i $userId`; | ||||
|                 $entry = `ssh $::SUDOER\@$hcp "$::SUDO cat $::ZFCPPOOL/$_" | egrep -i ",$node,"`; | ||||
|                 chomp($entry); | ||||
|                 if (!$entry) { | ||||
|                     next; | ||||
| @@ -4858,12 +4865,23 @@ sub nodeSet { | ||||
|                 # Go through each zFCP device | ||||
|                 my @device = split('\n', $entry); | ||||
|                 foreach (@device) {                         | ||||
|                     # Each entry contains: status,wwpn,lun,size,owner,channel,tag | ||||
|                     # Each entry contains: status,wwpn,lun,size,range,owner,channel,tag | ||||
|                     @tmp = split(',', $_); | ||||
|                     my $wwpn = $tmp[1]; | ||||
|                     my $lun = $tmp[2]; | ||||
|                     my $device = $tmp[5]; | ||||
|                     my $tag = $tmp[6]; | ||||
|                     my $device = $tmp[6]; | ||||
|                     my $tag = $tmp[7]; | ||||
|                      | ||||
|                     # If multiple WWPNs or device channels are specified (multipathing), just take the 1st one | ||||
|                     if ($wwpn =~ m/;/i) { | ||||
|                         @tmp = split(';', $wwpn); | ||||
|                         $wwpn = xCAT::zvmUtils->trimStr($tmp[0]); | ||||
|                     } | ||||
|                      | ||||
| 			        if ($device =~ m/;/i) { | ||||
| 			            @tmp = split(';', $device); | ||||
| 			            $device = xCAT::zvmUtils->trimStr($tmp[0]); | ||||
| 			        } | ||||
|                                    | ||||
|                     # Make sure WWPN and LUN do not have 0x prefix | ||||
|                     $wwpn = xCAT::zvmUtils->replaceStr($wwpn, "0x", ""); | ||||
| @@ -5055,7 +5073,7 @@ END | ||||
|             my $entry; | ||||
|             my $zfcpSection = ""; | ||||
|             foreach (@pools) { | ||||
|                 $entry = `ssh $::SUDOER\@$hcp "$::SUDO cat $::ZFCPPOOL/$_" | egrep -i $userId`; | ||||
|                 $entry = `ssh $::SUDOER\@$hcp "$::SUDO cat $::ZFCPPOOL/$_" | egrep -i ",$node,"`; | ||||
|                 chomp($entry); | ||||
|                 if (!$entry) { | ||||
|                     next; | ||||
| @@ -5064,12 +5082,23 @@ END | ||||
|                 # Go through each zFCP device | ||||
|                 my @device = split('\n', $entry); | ||||
|                 foreach (@device) {              | ||||
|                     # Each entry contains: status,wwpn,lun,size,owner,channel,tag | ||||
|                     # Each entry contains: status,wwpn,lun,size,range,owner,channel,tag | ||||
|                     @tmp = split(',', $_); | ||||
|                     my $wwpn = $tmp[1]; | ||||
|                     my $lun = $tmp[2]; | ||||
|                     my $device = $tmp[5]; | ||||
|                     my $tag = $tmp[6]; | ||||
|                     my $device = $tmp[6]; | ||||
|                     my $tag = $tmp[7]; | ||||
|                                          | ||||
|                     # If multiple WWPNs or device channels are specified (multipathing), just take the 1st one | ||||
|                     if ($wwpn =~ m/;/i) { | ||||
|                         @tmp = split(';', $wwpn); | ||||
|                         $wwpn = xCAT::zvmUtils->trimStr($tmp[0]); | ||||
|                     } | ||||
|                      | ||||
|                     if ($device =~ m/;/i) { | ||||
|                         @tmp = split(';', $device); | ||||
|                         $device = xCAT::zvmUtils->trimStr($tmp[0]); | ||||
|                     } | ||||
|                                    | ||||
|                     # Make sure WWPN and LUN do not have 0x prefix | ||||
|                     $wwpn = xCAT::zvmUtils->replaceStr($wwpn, "0x", ""); | ||||
| @@ -5162,7 +5191,11 @@ END | ||||
|              | ||||
|             # Concat dedicated devices and DASD together | ||||
|             if ($devices) { | ||||
|                 $dasd = $dasd . "," . $devices; | ||||
|             	if ($dasd) { | ||||
|                     $dasd = $dasd . "," . $devices; | ||||
|             	} else { | ||||
|             		$dasd = $devices; | ||||
|             	} | ||||
|             } | ||||
|  | ||||
|             # Create parmfile -- Limited to 80 characters/line, maximum of 11 lines | ||||
|   | ||||
		Reference in New Issue
	
	Block a user