diff --git a/perl-xCAT/xCAT/Table.pm b/perl-xCAT/xCAT/Table.pm index 576598ef9..82cad05e4 100644 --- a/perl-xCAT/xCAT/Table.pm +++ b/perl-xCAT/xCAT/Table.pm @@ -2186,6 +2186,12 @@ sub getNodesAttribs { $self->{nodelist}->{_use_cache} = 1; } my $rethash; + my @hierarchy_attrs = (); + my $hierarchy_field = xCAT::TableUtils->get_site_attribute("hierarchicalattrs"); + if ($hierarchy_field) { + @hierarchy_attrs = split(/,/, $hierarchy_field); + } + $options{hierarchy_attrs} = \@hierarchy_attrs; foreach (@$nodelist) { my @nodeentries = $self->getNodeAttribs($_, \@realattribs, %options); $rethash->{$_} = \@nodeentries; #$self->getNodeAttribs($_,\@attribs); @@ -2435,6 +2441,16 @@ sub getNodeAttribs } else { @attribs = @_; } + + if (!exists($options{hierarchy_attrs})) { + my @hierarchy_attrs = (); + my $hierarchy_field = xCAT::TableUtils->get_site_attribute("hierarchicalattrs"); + if ($hierarchy_field) { + @hierarchy_attrs = split(/,/, $hierarchy_field); + } + $options{hierarchy_attrs} = \@hierarchy_attrs; + } + my $datum; my $oldusecache; my $nloldusecache; @@ -2665,12 +2681,7 @@ sub getNodeAttribs_nosub_returnany my $attrib; my $result; - my @hierarchy_attrs; - my $hierarchy_field = xCAT::TableUtils->get_site_attribute("hierarchicalattrs"); - if ($hierarchy_field) { - @hierarchy_attrs = split(/,/, $hierarchy_field); - } - + my @hierarchy_attrs = @{ $options{hierarchy_attrs} }; my $data = $results[0]; if (defined {$data}) { #if there was some data for the node, loop through and check it foreach $result (@results) { @@ -3103,7 +3114,13 @@ sub getAllNodeAttribs #} end SF 3580 #my $localhash = $self->getNodesAttribs(\@nodes,$attribq); #NOTE: This is stupid, rebuilds the cache for every entry, FIXME - + my %options; + my @hierarchy_attrs = (); + my $hierarchy_field = xCAT::TableUtils->get_site_attribute("hierarchicalattrs"); + if ($hierarchy_field) { + @hierarchy_attrs = split(/,/, $hierarchy_field); + } + $options{hierarchy_attrs} = \@hierarchy_attrs; foreach (@nodes) { if ($donenodes{$_}) { next; } @@ -3117,7 +3134,7 @@ sub getAllNodeAttribs # } #} else { my @attrs = - $self->getNodeAttribs($_, $attribq); #@{$localhash->{$_}} #$self->getNodeAttribs($_, $attribq) + $self->getNodeAttribs($_, $attribq, %options); #@{$localhash->{$_}} #$self->getNodeAttribs($_, $attribq) ; #Logic moves to getNodeAttribs #} #populate node attribute by default, this sort of expansion essentially requires it.