$mig_path =~ s|[^/]+$||;
if (!defined $reports_xml) { $reports_xml = $mig_path . '../mig-xml/evergreen_staged_report.xml'; }
else { $reports_xml = $mig_path . '/../mig-xml/' . $reports_xml; }
-print "$reports_xml \n";
my $dom = $parser->parse_file($reports_xml);
if (defined $added_page_file or defined $added_page_title) {
my $report_file = create_report_name($report_title);
$report_file = $MIGGITDIR . $report_file;
-open(my $fh, '>', $report_file) or die "Could not open output file!";
+open(my $fh, '>', $report_file) or abort("Could not open output file!");
write_title_page($report_title,$fh,$analyst);
print $fh "<<<\n";
print $fh "== $added_page_title\n";
print "$added_page_file\t$added_page_title\n";
- open(my $an,'<:encoding(UTF-8)', $added_page_file) or die "Could not open $added_page_file !";
+ open(my $an,'<:encoding(UTF-8)', $added_page_file) or abort("Could not open $added_page_file!");
while ( my $line = <$an> ) {
print $fh $line;
}
foreach my $t (@report_tags) {
print "\n\n=========== Starting to process tag $t\n";
print "==========================================\n";
+
+ my @asset_files;
+ foreach my $asset ($dom->findnodes('//asset')) {
+ if (index($asset->findvalue('./tag'),$t) != -1) {
+ push @asset_files, $asset->findvalue('./file');
+ }
+ }
+
+ foreach my $fname (@asset_files) {
+ my $asset_path = $mig_path . '../mig-asc/' . $fname;
+ open my $a, $asset_path or abort("Could not open $fname.");
+ while ( my $l = <$a> ) {
+ print $fh $l;
+ }
+ print $fh "<<<\n";
+ }
+
print_section_header(ucfirst($t),$fh);
my $linecount = $lines_per_page;
my $r;
- my @report_names;
+ my @asset_files;
+ foreach my $asset ($dom->findnodes('//asset')) {
+ if (index($asset->findvalue('./tag'),$t) != -1) {
+ push @asset_files, $asset->findvalue('./file');
+ }
+ }
+ my @report_names;
foreach my $report ($dom->findnodes('//report')) {
if (index($report->findvalue('./tag'),$t) != -1 and $report->findvalue('./iteration') eq '0') {
push @report_names, $report->findvalue('./name');
}
}
-
+
#only has one level of failover now but could change to array of hashes and loops
#but this keeps it simple and in practice I haven't needed more than two
foreach my $rname (@report_names) {
my $query = shift;
my $MIGSCHEMA = shift;
+ print "$query\n";
+
my $i;
my $return_flag = 1;
my @qe = split(/ /,$query);
$i = 0;
foreach my $table (@tables) {
- $table =~ s/\)//g;
- $table =~ s/\<//g;
my $sql;
my $schema;
if (index($table,'.') != -1) {
$schema = (split /\./,$table)[0];
$table = (split /\./,$table)[1];
- }
+ }
+ $table = clean_query_string($table);
if (defined $schema) {
+ $schema = clean_query_string($schema);
$sql = 'SELECT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = \'' . $schema . '\' AND table_name = \'' . $table . '\');';
} else {
$sql = 'SELECT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = \'' . $MIGSCHEMA . '\' AND table_name = \'' . $table . '\');';
next;
} else {
$return_flag = 0;
+ print "detecting $table failed...\n";
}
if ($row[0] eq '0') {$return_flag = 0;}
}
}
- if ($return_flag == 1) {print "succeeded ... ";} else {print "failed ... ";}
+ if ($return_flag == 1) {print "succeeded ...\n";}
return $return_flag;
}
+sub clean_query_string {
+ my $str = shift;
+
+ $str =~ s/(?!_)[[:punct:]]//g; #remove punct except underscores
+ $str =~ s/\n//g;
+ $str =~ s/\r//g;
+ return $str;
+}
+
sub print_query {
my $fh = shift;
my %report = @_;