diff --git a/xCAT-server/lib/xcat/plugins/tabutils.pm b/xCAT-server/lib/xcat/plugins/tabutils.pm index 64f182926..efd4a7805 100644 --- a/xCAT-server/lib/xcat/plugins/tabutils.pm +++ b/xCAT-server/lib/xcat/plugins/tabutils.pm @@ -58,6 +58,7 @@ sub handled_commands getNodesAttribs => "tabutils", setNodesAttribs1 => "tabutils", delEntries => "tabutils", + getAttribs => "tabutils", gennr => "tabutils" }; } @@ -160,6 +161,10 @@ sub process_request { return delEntries($request,$callback); } + elsif ($command eq "getAttribs") + { + return getAttribs($request,$callback); + } else { print "$command not implemented yet\n"; @@ -2283,6 +2288,15 @@ sub getAllEntries } # getNodesAttribs # Read all the array of attributes for the noderange from the input table. +#<xcatrequest> +#<clienttype>PCM</clienttype> +#<command>getNodesAttribs</command> +#<table>nodelist</table> +#<noderange>blade01-blade02</noderange> +#<attr>groups</attr> +#<attr>status</attr> +#</xcatrequest> +# #<xcatresponse> #<node> #<name> nodename </name> @@ -2433,13 +2447,8 @@ sub delEntries { my $request = shift; my $cb = shift; - # my $node = $request->{node}; # added by Client.pm - # my $noderange = $request->{noderange}; my $command = $request->{command}->[0]; my %rsp; - # my $args = $request->{arg}; - # my $tables= $args->[0]->{table}; - # my $tables= $request->{table}->{name}; my $tables= $request->{table}; foreach my $table (@$tables) { my $tablename = $table->{name}->[0]; @@ -2460,3 +2469,47 @@ sub delEntries } return; } +# getAttribs +# Read all the array of attributes for the key from the input table. +#<xcatrequest> +#<clienttype>PCM</clienttype> +#<command>getAttribs</command> +#<table>site</table> +#<keys> +# <key>domain</key> +#</keys> +#<attrs>value</attrs> +#<attrs>comments</attrs> +#</xcatrequest> +# +# +#<xcatresponse> +#<value>{domain value}</value> +#<comments>This is a comment</comments> +#</xcatresponse> +sub getAttribs +{ + my $request = shift; + my $cb = shift; + my $command = $request->{command}->[0]; + my $tablename = $request->{table}->[0]; + my $attr = $request->{attrs}; + my @attrs= @$attr; + my $tab=xCAT::Table->new($tablename); + my %rsp; + my %keyhash; + foreach my $k (keys %{$request->{keys}->[0]}) { + $keyhash{$k} = $request->{keys}->[0]->{$k}->[0]; + } + my $recs = $tab->getAttribs(\%keyhash,\@attrs); + + if ($recs) { + my %attrhash=%$recs; + foreach my $k (keys %attrhash) { + + push @{$rsp{$k}}, $recs->{$k}; + } + } + $cb->(\%rsp); + return; +}