-Second stab at nodelist criteria in noderange
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@9403 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
		| @@ -39,6 +39,7 @@ my %allgrphash; | ||||
| my $retaincache=0; | ||||
| my $recurselevel=0; | ||||
|  | ||||
| my @cachedcolumns; | ||||
| #TODO:  With a very large nodelist (i.e. 65k or so), deriving the members | ||||
| # of a group is a little sluggish.  We may want to put in a mechanism to  | ||||
| # maintain a two-way hash anytime nodelist or nodegroup changes, allowing | ||||
| @@ -129,6 +130,21 @@ sub nodesbycriteria { | ||||
|    foreach $tab (keys %tables) { | ||||
|        my $tabh = xCAT::Table->new($tab,-create=>0); | ||||
|        unless ($tabh) { next; } | ||||
|        if ($tab eq "nodelist") { #fun caching interaction | ||||
| 	 my $neednewcache=0; | ||||
| 	 foreach (@cols) { | ||||
| 	   unless (grep /^$_\z/,@cachedcolumns) { | ||||
| 	     $neednewcache=1; | ||||
| 	     push @cachedcolumns,$_; | ||||
| 	   } | ||||
| 	 } | ||||
| 	 if ($neednewcache) { | ||||
| 	   if ($nodelist) {  | ||||
| 	     $nodelist->_clear_cache();  | ||||
| 	     $nodelist->_build_cache(\@cachedcolumns); | ||||
| 	   } | ||||
| 	  } | ||||
| 	 } | ||||
|        my @cols; | ||||
|        foreach (@{$tables{$tab}}) { | ||||
|            push @cols, $_->[0]; | ||||
| @@ -518,7 +534,8 @@ sub noderange { | ||||
|   unless ($nodelist) {  | ||||
|     $nodelist =xCAT::Table->new('nodelist',-create =>1);  | ||||
|     $nodelist->_set_use_cache(0); #TODO: a more proper external solution | ||||
|     $nodelist->_build_cache(['node','groups']); | ||||
|     @cachedcolumns = ('node','groups'); | ||||
|     $nodelist->_build_cache(\@cachedcolumns); | ||||
|     $nodelist->_set_use_cache(1); #TODO: a more proper external solution | ||||
|   } | ||||
|   my %nodes = (); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user