Added multiple keys to "deps" table (node,cmd)
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@1653 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
		| @@ -1273,7 +1273,6 @@ sub handle_depend { | ||||
|   return 0; | ||||
| } | ||||
|  | ||||
|  | ||||
| sub build_depend { | ||||
|   my $noderange = shift; | ||||
|   my $exargs = shift; | ||||
| @@ -1289,18 +1288,24 @@ sub build_depend { | ||||
|   unless ($mptab) { | ||||
|     return("Cannot open mp table"); | ||||
|   } | ||||
|   my @ent = $depstab->getAllNodeAttribs( [qw(node nodedep msdelay cmd)] ); | ||||
|   if (!@ent) { | ||||
|     return([\%dp]); | ||||
|   } | ||||
|  | ||||
|   foreach my $node (@$noderange) { | ||||
|     my $delay = 0; | ||||
|     my $dep; | ||||
|     my $cmd; | ||||
|  | ||||
|     my $ent=$depstab->getNodeAttribs($node,[qw(nodedep msdelay cmd)]); | ||||
|     if (defined($ent->{nodedep})) { $dep=$ent->{nodedep}; } | ||||
|     if (defined($ent->{cmd}))     { $cmd=$ent->{cmd}; } | ||||
|     if (defined($ent->{msdelay})) { $delay=$ent->{msdelay}; } | ||||
|  | ||||
|     if (!defined($dep) || !grep(/^@$exargs[0]$/, split /,/, $cmd )) { | ||||
|     foreach my $h ( @ent ) { | ||||
|       if (( $h->{node} eq $node ) and | ||||
|           ( grep(/^@$exargs[0]$/, split /,/, $h->{cmd} ))) { | ||||
|            if (exists($h->{nodedep})) { $dep=$h->{nodedep}; } | ||||
|            if (exists($h->{msdelay})) { $delay=$h->{msdelay}; } | ||||
|            last; | ||||
|       } | ||||
|     } | ||||
|     if (!defined($dep)) { | ||||
|       $no_dp{$node} = 1; | ||||
|     } | ||||
|     else { | ||||
| @@ -1309,7 +1314,7 @@ sub build_depend { | ||||
|           return( "Missing dependency on command-line: $node -> $n" ); | ||||
|         } elsif ( $n eq $node ) { | ||||
|           return( "Node dependent on itself: $n -> $node" ); | ||||
|         }  | ||||
|         } | ||||
|         $dp{$n}{$node} = $delay; | ||||
|       } | ||||
|     } | ||||
| @@ -1324,20 +1329,20 @@ sub build_depend { | ||||
|     # build hash of all nodes in preprocess_request() format | ||||
|     while(my ($name,$h) = each(%dp) ) { | ||||
|       my $ent=$mptab->getNodeAttribs($name,['mpa', 'id']); | ||||
|       if (!defined($ent->{mpa})) {  | ||||
|       if (!defined($ent->{mpa})) { | ||||
|         return("no mpa defined for node $name"); | ||||
|       } | ||||
|       my $id = (defined($ent->{id})) ? $ent->{id} : "";  | ||||
|       my $id = (defined($ent->{id})) ? $ent->{id} : ""; | ||||
|       push @{$mpa_hash{$name}},$ent->{mpa}; | ||||
|       push @{$mpa_hash{$name}},$id; | ||||
|  | ||||
|       foreach ( keys %$h ) { | ||||
|         if ( $h->{$_} =~ /(^\d+$)/ ) { | ||||
|           my $ent=$mptab->getNodeAttribs($_,['mpa', 'id']); | ||||
|           if (!defined($ent->{mpa})) {  | ||||
|           if (!defined($ent->{mpa})) { | ||||
|             return("no mpa defined for node $_"); | ||||
|           } | ||||
|           my $id = (defined($ent->{id})) ? $ent->{id} : "";  | ||||
|           my $id = (defined($ent->{id})) ? $ent->{id} : ""; | ||||
|           push @{$mpa_hash{$_}},$ent->{mpa}; | ||||
|           push @{$mpa_hash{$_}},$id; | ||||
|         } | ||||
| @@ -1348,7 +1353,6 @@ sub build_depend { | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| sub preprocess_request {  | ||||
|   my $request = shift; | ||||
|   if ($request->{_xcatdest}) { return [$request]; }    #exit if preprocessed | ||||
|   | ||||
		Reference in New Issue
	
	Block a user