a.b.c.d
| XYZ |
v_ihsnode
abc_logihs1
abc_api1.1
abc_api1.2
####
----- myaccount v.x.y.z /appl/ -----
$ ./my_topologyParser.pl fetch
abc
----- myaccount v.x.y.z /appl/ -----
$ ./my_topologyParser.pl nodesall
v.x.y.z
----- myaccount v.x.y.z /appl/ -----
$ ./my_topologyParser.pl abc nodewrtseg
v.x.y.z
----- myaccount v.x.y.z /appl/ -----
$ ./my_topologyParser.pl abc jvmtype api
abc_api1.1
abc_api1.2
----- myaccount v.x.y.z /appl/ -----
$ ./my_topologyParser.pl abc jvmwrtnode v.x.y.z api
abc_api1.1
abc_api1.2
----- myaccount v.x.y.z /appl/ -----
$ ./my_topologyParser.pl abc nodewrtjvm abc_api1.2
v.x.y.z
----- myaccount v.x.y.z /appl/ -----
####
#!/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";
}