#!/appl/perl/bin/perl use XML::Smart; use strict; use warnings; $ENVFILE="/appl/test_MYENV_Top.xml"; my $ENVxml = XML::Smart->new($ENVFILE) || die ("Could not find file."); my $env = $ARGV[0]; if ( $ARGV[0] eq "fetch" ) { my @envname=$ENVxml->{OUTMOST}->{MYENVDETAILS}->{ENVDETAILS}('[@]','id'); foreach my $i (@envname) { print "$i\n"; } } elsif ($ARGV[0] eq "nodesall"){ my @envname=$ENVxml->{OUTMOST}->{MYENVDETAILS}->{ENVDETAILS}('[@]','id'); foreach my $i (@envname) { my @nodename=$ENVxml->{OUTMOST}->{MYENVDETAILS}->{ENVDETAILS}->('id','eq',"$i")->{NODEDETAIL}('[@]','NODEHOST'); foreach my $c (@nodename) { print "$c\n"; } } } elsif ($ARGV[1] eq "nodewrtseg"){ my @nodename=$ENVxml->{OUTMOST}->{MYENVDETAILS}->{ENVDETAILS}->('id','eq',"$env")->{NODEDETAIL}('[@]','NODEHOST'); foreach my $i (@nodename) { print "$i\n"; } } elsif ($ARGV[1] eq "jvmtype") { my $typeCheck=$ARGV[2]; my @jvmlist; my @nodename=$ENVxml->{OUTMOST}->{MYENVDETAILS}->{ENVDETAILS}->('id','eq',"$env")->{NODEDETAIL}('[@]','NODEHOST'); if ($#nodename < 0){ exit 1; } foreach my $i (@nodename) { my @names=@{$ENVxml->{OUTMOST}->{MYENVDETAILS}->{ENVDETAILS}->('id','eq',"$env")->{NODEDETAIL}->('NODEHOST','eq',"$i")->{JVM}->('jvmtype','eq',"$typeCheck")->{JVMNAME}}; if ($#names > 0){ push(@jvmlist,@names); } } @jvmlist = grep /\S/, @jvmlist; if ($#jvmlist < 0){ print " No $typeCheck type jvm found on $env . Incorrect jvm type passed.\n"; exit 1; } foreach my $c (@jvmlist) { print "$c\n"; } } elsif ($ARGV[1] eq "jvmwrtnode") { my $nodeCheck=$ARGV[2]; my $typeCheck=$ARGV[3]; if (defined $nodeCheck && defined $typeCheck){ my @names=@{$ENVxml->{OUTMOST}->{MYENVDETAILS}->{ENVDETAILS}->('id','eq',"$env")->{NODEDETAIL}->('NODEHOST','eq',"$nodeCheck")->{JVM}->('jvmtype','eq',"$typeCheck")->{JVMNAME}}; if ($#names < 0){ print " No $typeCheck type jvm found on $nodeCheck node. Incorrect type/nodename passed.\n"; exit 1; } @names = grep /\S/, @names; foreach my $c (@names) { print "$c\n"; } } else { print " No Node type or nodename passed. Incorrect no. of arguments passed.\n"; exit 1; } } elsif ($ARGV[1] eq "nodewrtjvm") { my $jvmCheck=$ARGV[2]; if (defined $jvmCheck){ my @nodename=$ENVxml->{OUTMOST}->{MYENVDETAILS}->{ENVDETAILS}->('id','eq',"$env")->{NODEDETAIL}('[@]','NODEHOST'); if ($#nodename < 0){ exit 1; } OUTER: foreach my $i (@nodename) { my @jvmtypes=$ENVxml->{OUTMOST}->{MYENVDETAILS}->{ENVDETAILS}->('id','eq',"$env")->{NODEDETAIL}('NODEHOST','eq',"$i")->{JVM}('[@]','jvmtype'); foreach my $k (@jvmtypes) { my @names = @{$ENVxml->{OUTMOST}->{MYENVDETAILS}->{ENVDETAILS}->('id','eq',"$env")->{NODEDETAIL}->('NODEHOST','eq',"$i")->{JVM}('jvmtype','eq',"$k")->{JVMNAME}}; if ($#names >= 0){ foreach (@names){ if ( $_ eq $jvmCheck ){ print "$i\n"; last OUTER; } } } } } } } else{ print "\nThis parser is argument specific."; print "\n1). $0 fetch : To list out environments"; print "\n2). $0 nodesall : To list all nodes of all environments."; print "\n3). $0 nodewrtseg : to list all nodes of specific environment."; print "\n4). $0 jvmtype : to list all nodes having specified jvmtypes of the specific environment."; print "\n5). $0 jvmwrtnode : to list all jvms present on specific node of specific type of the environment."; print "\n6). $0 nodewrtjvm : to list the node of specific jvm of specified environment.\n"; }