lsdef command: add -s flag, improve the performance of displaying the output
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@4906 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
parent
b9b019f7ee
commit
84f358a361
@ -6,8 +6,8 @@ B<lsdef> - Use this command to list xCAT data object definitions.
|
||||
|
||||
B<lsdef> [B<-h>|B<--help>] [B<-t> I<object-types>]
|
||||
|
||||
B<lsdef> [B<-V>|B<--verbose>] [B<-l>|B<--long>] [B<-a>|B<--all>] [B<-t> I<object-types>]
|
||||
[B<-o> I<object-names>] [B<-z>|B<--stanza>] [B<-i> I<attr-list>]
|
||||
B<lsdef> [B<-V>|B<--verbose>] [B<-l>|B<--long>] [B<-s>|B<--short>] [B<-a>|B<--all>]
|
||||
[B<-t> I<object-types>] [B<-o> I<object-names>] [B<-z>|B<--stanza>] [B<-i> I<attr-list>]
|
||||
[[B<-w> I<attr>==I<val>] [B<-w> I<attr>=~I<val>] ...] [I<noderange>]
|
||||
|
||||
|
||||
@ -35,7 +35,11 @@ Comma separated list of attribute names to display.
|
||||
|
||||
=item B<-l|--long>
|
||||
|
||||
List the complete object definition. (The default for some options is to give only a list of object names.)
|
||||
List the complete object definition.
|
||||
|
||||
=item B<-s|--short>
|
||||
|
||||
Only list the object names.
|
||||
|
||||
=item I<noderange>
|
||||
|
||||
@ -95,57 +99,75 @@ when defining an xCAT node.
|
||||
|
||||
To get a list of all the objects that have been defined.
|
||||
|
||||
lsdef
|
||||
OR
|
||||
lsdef -a
|
||||
|
||||
=item 3.
|
||||
|
||||
To get all the attributes of the node1
|
||||
|
||||
lsdef node1
|
||||
OR
|
||||
lsdef -t node node1
|
||||
OR
|
||||
lsdef -t node -o node1
|
||||
|
||||
=item 4.
|
||||
|
||||
To get the object name of node1 instead of all the attributes
|
||||
|
||||
lsdef -s node1
|
||||
|
||||
=item 5.
|
||||
|
||||
To get a list of all the network definitions.
|
||||
|
||||
lsdef -t network
|
||||
|
||||
=item 4.
|
||||
=item 6.
|
||||
|
||||
To get a complete listing of all network definitions.
|
||||
|
||||
lsdef -l -t network
|
||||
|
||||
=item 5.
|
||||
=item 7.
|
||||
|
||||
To list the whole xCAT database and write it to a stanza file. (backup database)
|
||||
|
||||
lsdef -a -l -z > mydbstanzafile
|
||||
|
||||
=item 6.
|
||||
=item 8.
|
||||
|
||||
To list the MAC and install adapter name for each node.
|
||||
|
||||
lsdef -t node -i mac,installnic
|
||||
|
||||
=item 7.
|
||||
=item 9.
|
||||
|
||||
To list an osimage definition named "aix53J".
|
||||
|
||||
lsdef -t osimage -l -o aix53J
|
||||
|
||||
=item 8.
|
||||
=item 10.
|
||||
|
||||
To list all node definitions that have a status value of "booting".
|
||||
|
||||
lsdef -t node -w status==booting
|
||||
|
||||
=item 9.
|
||||
=item 11.
|
||||
|
||||
To list all the attributes of the group "service".
|
||||
|
||||
lsdef -l -t group -o service
|
||||
|
||||
=item 10.
|
||||
=item 12.
|
||||
|
||||
To list all the attributes of the nodes that are members of the group "service".
|
||||
|
||||
lsdef -t node -l service
|
||||
|
||||
=item 11.
|
||||
=item 13.
|
||||
|
||||
To get a listing of object definitions that includes information about
|
||||
what xCAT database tables are used to store the data.
|
||||
|
@ -196,10 +196,21 @@ sub processArgs
|
||||
{
|
||||
my $gotattrs = 0;
|
||||
|
||||
if (defined(@{$::args})) {
|
||||
if (defined(@{$::args})) {
|
||||
@ARGV = @{$::args};
|
||||
} else {
|
||||
return 2;
|
||||
if ($::command eq "lsdef") {
|
||||
push @ARGV, "-a";
|
||||
push @ARGV, "-s";
|
||||
} else {
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
|
||||
if ($::command eq "lsdef") {
|
||||
if (scalar(@ARGV) == 1 && $ARGV[0] eq "-l") {
|
||||
push @ARGV, "-a";
|
||||
}
|
||||
}
|
||||
|
||||
if (scalar(@ARGV) <= 0) {
|
||||
@ -216,6 +227,7 @@ sub processArgs
|
||||
'i=s' => \$::opt_i,
|
||||
'help|h|?' => \$::opt_h,
|
||||
'long|l' => \$::opt_l,
|
||||
'short|s' => \$::opt_s,
|
||||
'm|minus' => \$::opt_m,
|
||||
'o=s' => \$::opt_o,
|
||||
'p|plus' => \$::opt_p,
|
||||
@ -243,6 +255,22 @@ sub processArgs
|
||||
return 2;
|
||||
}
|
||||
|
||||
# -l and -s cannot be used together
|
||||
if ($::opt_l && $::opt_s) {
|
||||
my $rsp;
|
||||
$rsp->{data}->[0] = "The flags \'-l'\ and \'-s'\ cannot be used together.";
|
||||
xCAT::MsgUtils->message("E", $rsp, $::callback);
|
||||
return 2;
|
||||
}
|
||||
|
||||
# -i and -s cannot be used together
|
||||
if ($::opt_i && $::opt_s) {
|
||||
my $rsp;
|
||||
$rsp->{data}->[0] = "The flags \'-i'\ and \'-s'\ cannot be used together.";
|
||||
xCAT::MsgUtils->message("E", $rsp, $::callback);
|
||||
return 2;
|
||||
}
|
||||
|
||||
# can get object names in many ways - easier to keep track
|
||||
$::objectsfrom_args = 0;
|
||||
$::objectsfrom_opto = 0;
|
||||
@ -325,7 +353,7 @@ sub processArgs
|
||||
{
|
||||
if (defined($::opt_d) || defined($::opt_i) || defined($::opt_l)
|
||||
|| defined($::opt_m) || defined($::opt_p) || defined($::opt_w)
|
||||
|| defined($::opt_x) || defined($::opt_z))
|
||||
|| defined($::opt_x) || defined($::opt_z) || defined($::opt_s))
|
||||
{
|
||||
my $rsp;
|
||||
$rsp->{data}->[0] = "Invalid flag specified, see rmdef manpage for details.";
|
||||
@ -2226,15 +2254,15 @@ sub defls
|
||||
|
||||
my @objectlist;
|
||||
@::allobjnames;
|
||||
my @displayObjList;
|
||||
my @displayObjList;
|
||||
|
||||
my $numtypes = 0;
|
||||
my $rsp_info;
|
||||
|
||||
# process the command line
|
||||
my $rc = &processArgs;
|
||||
if ($rc != 0)
|
||||
{
|
||||
|
||||
# rc: 0 - ok, 1 - return, 2 - help, 3 - error
|
||||
if ($rc != 1)
|
||||
{
|
||||
@ -2244,7 +2272,7 @@ sub defls
|
||||
}
|
||||
|
||||
# do we want just the object names or all the attr=val
|
||||
if ($::opt_l || $::opt_i)
|
||||
if ($::opt_l || @::noderange || $::opt_o || $::opt_i)
|
||||
{
|
||||
|
||||
# assume we want the the details - not just the names
|
||||
@ -2252,6 +2280,9 @@ sub defls
|
||||
$long++;
|
||||
|
||||
}
|
||||
if ($::opt_s) {
|
||||
$long = 0;
|
||||
}
|
||||
|
||||
# which attrs do we want?
|
||||
# this is a temp hack to help scaling when you only
|
||||
@ -2264,8 +2295,12 @@ sub defls
|
||||
$::ATTRLIST=$::opt_i;
|
||||
} elsif ( @::noderange || $::opt_o) {
|
||||
# if they gave a list of objects then they must want more
|
||||
# than the object names!
|
||||
$::ATTRLIST="none";
|
||||
# than the object names!
|
||||
if ($::opt_s) {
|
||||
$::ATTRLIST="none";
|
||||
} else {
|
||||
$::ATTRLIST="all";
|
||||
}
|
||||
} else {
|
||||
# otherwise just get a list of object names
|
||||
$::ATTRLIST="none";
|
||||
@ -2278,6 +2313,17 @@ sub defls
|
||||
|
||||
# if a set of objects was provided on the cmd line then there can
|
||||
# be only one type value
|
||||
|
||||
# Figure out the attributes that needed in the def operation
|
||||
my @neededattrs = ();
|
||||
if ($::opt_i) {
|
||||
@neededattrs = (@neededattrs, @::AttrList);
|
||||
if ($::opt_w) {
|
||||
my @whereattrs = keys %::WhereHash;
|
||||
@neededattrs = (@neededattrs, @whereattrs);
|
||||
}
|
||||
}
|
||||
|
||||
if ($::objectsfrom_opto || $::objectsfrom_nr || $::objectsfrom_args)
|
||||
{
|
||||
my $type = @::clobjtypes[0];
|
||||
@ -2290,7 +2336,7 @@ sub defls
|
||||
|
||||
}
|
||||
|
||||
%myhash = xCAT::DBobjUtils->getobjdefs(\%objhash, $::VERBOSE, \@::AttrList);
|
||||
%myhash = xCAT::DBobjUtils->getobjdefs(\%objhash, $::VERBOSE, \@neededattrs);
|
||||
if (!defined(%myhash))
|
||||
{
|
||||
my $rsp;
|
||||
@ -2307,7 +2353,7 @@ sub defls
|
||||
{
|
||||
%objhash = %::ObjTypeHash;
|
||||
|
||||
%myhash = xCAT::DBobjUtils->getobjdefs(\%objhash, $::VERBOSE, \@::AttrList);
|
||||
%myhash = xCAT::DBobjUtils->getobjdefs(\%objhash, $::VERBOSE, \@neededattrs);
|
||||
if (!defined(%myhash))
|
||||
{
|
||||
my $rsp;
|
||||
@ -2467,9 +2513,7 @@ sub defls
|
||||
|
||||
if ($::opt_z)
|
||||
{
|
||||
my $rsp;
|
||||
$rsp->{data}->[0] = "# <xCAT data object stanza file>";
|
||||
xCAT::MsgUtils->message("I", $rsp, $::callback);
|
||||
push (@{$rsp_info->{data}}, "# <xCAT data object stanza file>");
|
||||
}
|
||||
|
||||
# group the objects by type to make the output easier to read
|
||||
@ -2502,6 +2546,42 @@ sub defls
|
||||
return 0;
|
||||
}
|
||||
|
||||
# Get all the objects of this type
|
||||
my @allobjoftype;
|
||||
if ($type ne 'site')
|
||||
{
|
||||
@allobjoftype = xCAT::DBobjUtils->getObjectsOfType($type);
|
||||
|
||||
unless (@allobjoftype)
|
||||
{
|
||||
my $rsp;
|
||||
$rsp->{data}->[0] =
|
||||
"Could not find any objects of type \'$type\'.";
|
||||
xCAT::MsgUtils->message("I", $rsp, $::callback);
|
||||
next;
|
||||
}
|
||||
} # end - if not site table
|
||||
|
||||
my @attrlist;
|
||||
if (($type ne 'site') && ($type ne 'monitoring'))
|
||||
{
|
||||
# get the list of all attrs for this type object
|
||||
if (scalar(@::AttrList) > 0) {
|
||||
@attrlist = @::AttrList;
|
||||
} else {
|
||||
# get the data type definition from Schema.pm
|
||||
my $datatype =
|
||||
$xCAT::Schema::defspec{$type};
|
||||
|
||||
foreach my $this_attr (@{$datatype->{'attrs'}})
|
||||
{
|
||||
if (!grep(/^$this_attr->{attr_name}$/, @attrlist)) {
|
||||
push(@attrlist, $this_attr->{attr_name});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# for each object
|
||||
foreach my $obj (sort keys %defhash)
|
||||
{
|
||||
@ -2511,59 +2591,35 @@ sub defls
|
||||
next;
|
||||
}
|
||||
|
||||
# if anything but the site table do this
|
||||
if ($defhash{$obj}{'objtype'} ne 'site')
|
||||
# Return if this obj does not match the filter string
|
||||
if ($::opt_w)
|
||||
{
|
||||
my @tmplist =
|
||||
xCAT::DBobjUtils->getObjectsOfType($defhash{$obj}{'objtype'});
|
||||
|
||||
unless (@tmplist)
|
||||
# just display objects that match -w
|
||||
if (! grep /^$obj$/, @displayObjList)
|
||||
{
|
||||
my $rsp;
|
||||
$rsp->{data}->[0] =
|
||||
"Could not find any objects of type \'$defhash{$obj}{'objtype'}\'.";
|
||||
xCAT::MsgUtils->message("I", $rsp, $::callback);
|
||||
next;
|
||||
}
|
||||
}
|
||||
|
||||
if (!grep(/^$obj$/, @tmplist))
|
||||
# if anything but the site table do this
|
||||
if ($type ne 'site')
|
||||
{
|
||||
if (!grep(/^$obj$/, @allobjoftype))
|
||||
{
|
||||
my $rsp;
|
||||
$rsp->{data}->[0] =
|
||||
"Could not find an object named \'$obj\' of type \'$defhash{$obj}{'objtype'}\'.";
|
||||
"Could not find an object named \'$obj\' of type \'$type\'.";
|
||||
xCAT::MsgUtils->message("I", $rsp, $::callback);
|
||||
next;
|
||||
}
|
||||
} # end - if not site table
|
||||
|
||||
#
|
||||
# special handling for site table - for now !!!!!!!
|
||||
#
|
||||
my @attrlist;
|
||||
if (($defhash{$obj}{'objtype'} eq 'site') || ($defhash{$obj}{'objtype'} eq 'monitoring'))
|
||||
if (($type eq 'site') || ($type eq 'monitoring'))
|
||||
{
|
||||
|
||||
foreach my $a (keys %{$defhash{$obj}})
|
||||
{
|
||||
|
||||
push(@attrlist, $a);
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
# get the list of all attrs for this type object
|
||||
# get the data type definition from Schema.pm
|
||||
my $datatype =
|
||||
$xCAT::Schema::defspec{$defhash{$obj}{'objtype'}};
|
||||
my @alreadydone;
|
||||
foreach my $this_attr (@{$datatype->{'attrs'}})
|
||||
{
|
||||
if (!grep(/^$this_attr->{attr_name}$/, @alreadydone)) {
|
||||
push(@attrlist, $this_attr->{attr_name});
|
||||
}
|
||||
push(@alreadydone, $this_attr->{attr_name});
|
||||
}
|
||||
}
|
||||
|
||||
@ -2574,80 +2630,84 @@ sub defls
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
# standard output or stanza format
|
||||
if ($::opt_w)
|
||||
|
||||
# display all data
|
||||
# do we want the short or long output?
|
||||
if ($long)
|
||||
{
|
||||
|
||||
# just display objects that match -w
|
||||
if (grep /^$obj$/, @displayObjList)
|
||||
if ($::opt_z)
|
||||
{
|
||||
|
||||
# display data
|
||||
# do we want the short or long output?
|
||||
if ($long)
|
||||
push (@{$rsp_info->{data}}, "\n$obj:");
|
||||
push (@{$rsp_info->{data}}, " objtype=$defhash{$obj}{'objtype'}");
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($#::clobjtypes > 0)
|
||||
{
|
||||
if ($::opt_z)
|
||||
push (@{$rsp_info->{data}}, "\nObject name: $obj ($defhash{$obj}{'objtype'})");
|
||||
}
|
||||
else
|
||||
{
|
||||
push (@{$rsp_info->{data}}, "\nObject name: $obj");
|
||||
}
|
||||
}
|
||||
|
||||
foreach my $showattr (sort @attrlist)
|
||||
{
|
||||
if ($showattr eq 'objtype')
|
||||
{
|
||||
next;
|
||||
}
|
||||
|
||||
my $attrval;
|
||||
if ( exists($defhash{$obj}{$showattr}))
|
||||
{
|
||||
$attrval = $defhash{$obj}{$showattr};
|
||||
}
|
||||
|
||||
# if an attr list was provided then just display those
|
||||
if ($::opt_i)
|
||||
{
|
||||
if (grep (/^$showattr$/, @::AttrList))
|
||||
{
|
||||
my $rsp;
|
||||
$rsp->{data}->[0] = "\n$obj:";
|
||||
$rsp->{data}->[1] =
|
||||
" objtype=$defhash{$obj}{'objtype'}";
|
||||
xCAT::MsgUtils->message("I", $rsp, $::callback);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($#::clobjtypes > 0)
|
||||
|
||||
if ( ($defhash{$obj}{'objtype'} eq 'group') && ($showattr eq 'members'))
|
||||
{
|
||||
my $rsp;
|
||||
$rsp->{data}->[0] =
|
||||
"Object name: $obj ($defhash{$obj}{'objtype'})";
|
||||
xCAT::MsgUtils->message("I", $rsp,
|
||||
$::callback);
|
||||
my $memberlist =
|
||||
xCAT::DBobjUtils->getGroupMembers(
|
||||
$obj,
|
||||
\%defhash);
|
||||
push (@{$rsp_info->{data}}, " $showattr=$memberlist");
|
||||
}
|
||||
else
|
||||
{
|
||||
my $rsp;
|
||||
$rsp->{data}->[0] = "Object name: $obj";
|
||||
xCAT::MsgUtils->message("I", $rsp,
|
||||
$::callback);
|
||||
|
||||
# since they asked for this attr
|
||||
# show it even if not set
|
||||
push (@{$rsp_info->{data}}, " $showattr=$attrval");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
foreach my $showattr (sort @attrlist)
|
||||
{
|
||||
if ($showattr eq 'objtype')
|
||||
{
|
||||
next;
|
||||
}
|
||||
|
||||
if (exists($myhash{$obj}{$showattr}))
|
||||
{
|
||||
my $rsp;
|
||||
$rsp->{data}->[0] =
|
||||
" $showattr=$defhash{$obj}{$showattr}";
|
||||
xCAT::MsgUtils->message("I", $rsp,
|
||||
$::callback);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
# just give names of objects
|
||||
if ($::opt_z)
|
||||
if ( ($defhash{$obj}{'objtype'} eq 'group')
|
||||
&& ($showattr eq 'members'))
|
||||
|
||||
{
|
||||
my $rsp;
|
||||
$rsp->{data}->[0] = "\n$obj:";
|
||||
xCAT::MsgUtils->message("I", $rsp, $::callback);
|
||||
#$defhash{$obj}{'grouptype'} = "static";
|
||||
my $memberlist =
|
||||
xCAT::DBobjUtils->getGroupMembers($obj,\%defhash);
|
||||
push (@{$rsp_info->{data}}, " $showattr=$memberlist");
|
||||
}
|
||||
else
|
||||
{
|
||||
my $rsp;
|
||||
$rsp->{data}->[0] = "$obj";
|
||||
xCAT::MsgUtils->message("I", $rsp, $::callback);
|
||||
|
||||
# don't print unless set
|
||||
if ( (defined($attrval)) && ($attrval ne '') )
|
||||
{
|
||||
push (@{$rsp_info->{data}}, " $showattr=$attrval");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2656,170 +2716,48 @@ sub defls
|
||||
else
|
||||
{
|
||||
|
||||
# not -w
|
||||
# display all data
|
||||
# do we want the short or long output?
|
||||
if ($long)
|
||||
if ($::opt_a)
|
||||
{
|
||||
if ($::opt_z)
|
||||
{
|
||||
my $rsp;
|
||||
$rsp->{data}->[0] = "\n$obj:";
|
||||
$rsp->{data}->[1] =
|
||||
" objtype=$defhash{$obj}{'objtype'}";
|
||||
xCAT::MsgUtils->message("I", $rsp, $::callback);
|
||||
push (@{$rsp_info->{data}}, "\n$obj:");
|
||||
}
|
||||
else
|
||||
{
|
||||
# give the type also
|
||||
push (@{$rsp_info->{data}}, "$obj ($::AllObjTypeHash{$obj})");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
# just give the name
|
||||
if ($::opt_z)
|
||||
{
|
||||
push (@{$rsp_info->{data}}, "\n$obj:");
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($#::clobjtypes > 0)
|
||||
{
|
||||
my $rsp;
|
||||
$rsp->{data}->[0] =
|
||||
"\nObject name: $obj ($defhash{$obj}{'objtype'})";
|
||||
xCAT::MsgUtils->message("I", $rsp, $::callback);
|
||||
push (@{$rsp_info->{data}}, "$obj ($defhash{$obj}{'objtype'})");
|
||||
}
|
||||
else
|
||||
{
|
||||
my $rsp;
|
||||
$rsp->{data}->[0] = "\nObject name: $obj";
|
||||
xCAT::MsgUtils->message("I", $rsp, $::callback);
|
||||
}
|
||||
}
|
||||
|
||||
foreach my $showattr (sort @attrlist)
|
||||
{
|
||||
if ($showattr eq 'objtype')
|
||||
{
|
||||
next;
|
||||
}
|
||||
|
||||
my $attrval;
|
||||
if ( exists($defhash{$obj}{$showattr}))
|
||||
{
|
||||
$attrval = $defhash{$obj}{$showattr};
|
||||
}
|
||||
|
||||
# if an attr list was provided then just display those
|
||||
if ($::opt_i)
|
||||
{
|
||||
if (grep (/^$showattr$/, @::AttrList))
|
||||
{
|
||||
|
||||
if ( ($defhash{$obj}{'objtype'} eq 'group') && ($showattr eq 'members'))
|
||||
{
|
||||
#$defhash{$obj}{'grouptype'} = "static";
|
||||
my $memberlist =
|
||||
xCAT::DBobjUtils->getGroupMembers(
|
||||
$obj,
|
||||
\%defhash);
|
||||
my $rsp;
|
||||
$rsp->{data}->[0] =
|
||||
" $showattr=$memberlist";
|
||||
xCAT::MsgUtils->message("I", $rsp,
|
||||
$::callback);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
# since they asked for this attr
|
||||
# show it even if not set
|
||||
my $rsp;
|
||||
$rsp->{data}->[0] =
|
||||
" $showattr=$attrval";
|
||||
xCAT::MsgUtils->message("I", $rsp,
|
||||
$::callback);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
if ( ($defhash{$obj}{'objtype'} eq 'group')
|
||||
&& ($showattr eq 'members'))
|
||||
|
||||
{
|
||||
#$defhash{$obj}{'grouptype'} = "static";
|
||||
my $memberlist =
|
||||
xCAT::DBobjUtils->getGroupMembers($obj,\%defhash);
|
||||
my $rsp;
|
||||
$rsp->{data}->[0] =
|
||||
" $showattr=$memberlist";
|
||||
xCAT::MsgUtils->message("I", $rsp,
|
||||
$::callback);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
# don't print unless set
|
||||
if ( (defined($attrval)) && ($attrval ne '') )
|
||||
{
|
||||
my $rsp;
|
||||
$rsp->{data}->[0] =
|
||||
" $showattr=$attrval";
|
||||
xCAT::MsgUtils->message("I", $rsp,
|
||||
$::callback);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
if ($::opt_a)
|
||||
{
|
||||
if ($::opt_z)
|
||||
{
|
||||
my $rsp;
|
||||
$rsp->{data}->[0] = "\n$obj:";
|
||||
xCAT::MsgUtils->message("I", $rsp, $::callback);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
# give the type also
|
||||
my $rsp;
|
||||
$rsp->{data}->[0] =
|
||||
"$obj ($::AllObjTypeHash{$obj})";
|
||||
xCAT::MsgUtils->message("I", $rsp, $::callback);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
# just give the name
|
||||
if ($::opt_z)
|
||||
{
|
||||
my $rsp;
|
||||
$rsp->{data}->[0] = "\n$obj:";
|
||||
xCAT::MsgUtils->message("I", $rsp, $::callback);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($#::clobjtypes > 0)
|
||||
{
|
||||
my $rsp;
|
||||
$rsp->{data}->[0] =
|
||||
"$obj ($defhash{$obj}{'objtype'})";
|
||||
xCAT::MsgUtils->message("I", $rsp,
|
||||
$::callback);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
my $rsp;
|
||||
$rsp->{data}->[0] = "$obj";
|
||||
xCAT::MsgUtils->message("I", $rsp,
|
||||
$::callback);
|
||||
}
|
||||
push (@{$rsp_info->{data}}, "$obj");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} # end - standard output or stanza format
|
||||
}
|
||||
} # end - for each object
|
||||
} # end - for each type
|
||||
|
||||
# Display the definition of objects
|
||||
if (defined($rsp_info->{data}) && scalar(@{$rsp_info->{data}}) > 0) {
|
||||
xCAT::MsgUtils->message("I", $rsp_info, $::callback);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -3247,7 +3185,7 @@ sub defls_usage
|
||||
$rsp->{data}->[2] =
|
||||
" lsdef [-V | --verbose] [-t object-types] [-o object-names]";
|
||||
$rsp->{data}->[3] =
|
||||
" [ -l | --long] [-a | --all] [-z | --stanza ]";
|
||||
" [ -l | --long] [-s | --short] [-a | --all] [-z | --stanza ]";
|
||||
$rsp->{data}->[4] =
|
||||
" [-i attr-list] [-w attr==val [-w attr=~val] ...] [noderange]\n";
|
||||
$rsp->{data}->[5] =
|
||||
|
Loading…
x
Reference in New Issue
Block a user