CA-AutoSys

 view release on metacpan or  search on metacpan

bin/autorep  view on Meta::CPAN

if ($dsn) {
	$hdl = CA::AutoSys->new(dsn => $dsn, user => $user, password => $password);
} else {
	$hdl = CA::AutoSys->new(server => $server, user => $user, password => $password);
}

my $jobs = $hdl->find_jobs($jobname);

# prints a job's status
sub print_job_status {
	my $job = shift();
	my $level = shift();
	my $status = $job->get_status();
	printf("%*s%-*s %-20s %-20s %2s %d/%d", $level*2, "", $width-$rest-$level*2, $job->{job_name},
			CA::AutoSys::Status::format_time($status->{last_start}),
			CA::AutoSys::Status::format_time($status->{last_end}),
			CA::AutoSys::Status::format_status($status->{status}),
			$status->{run_num} ? $status->{run_num} : 0,
			$status->{ntry} ? $status->{ntry} : 0);
	if (defined($status->{exit_code}) && int($status->{exit_code}) > 0) {
		printf(" %d", int($status->{exit_code}));
	}
	printf("\n");

	# find this job's children
	my $children = $job->find_children();

	# loop through all children...
	while (my $child = $children->next_child()) {
		# print child's status
		print_job_status($child, $level+1);
	}

	if ($job->has_children() && $job->{job_type} eq "b") {
		printf("\n");
	}
}	# print_job_status()

# prints a job's definition
sub print_job_definition {
	my $job = shift();
	my $level = shift();

	printf("\n\n%*s/* ----------------- %s ----------------- */\n\n", $level*2, "", $job->{job_name});

	printf("%*sinsert_job: %s   job_type: %s\n", $level*2, "", $job->{job_name}, $job->{job_type});

	if (defined($job->{box_name}) && $job->{box_name} ne "") {
		printf("%*sbox_name: %s\n", $level*2, "", $job->{box_name});
	}
	if (defined($job->{command}) && $job->{command} ne "") {
		printf("%*scommand: %s\n", $level*2, "", $job->{command});
	}
	if (defined($job->{machine}) && $job->{machine} ne "") {
		printf("%*smachine: %s\n", $level*2, "", $job->{machine});
	}

	printf("%*s#owner: %s\n", $level*2, "", $job->{owner});
	printf("%*spermission: %s\n", $level*2, "", $job->{permission});
	if ($job->{date_conditions} > 0) {
		my @date_cond = qw(days_of_week start_times start_mins run_calendar exclude_calendar run_window);
		printf("%*sdate_conditions: %s\n", $level*2, "", $job->{date_conditions});
		foreach (@date_cond) {
			if (defined($job->{$_}) && length($job->{$_}) > 0) {
				printf("%*s$_: %s\n", $level*2, "", $job->{$_});
			}
		}
	} elsif (defined($job->{condition}) && $job->{condition} ne "") {
		printf("%*scondition: %s\n", $level*2, "", $job->{condition});
	}
	printf("%*sdescription: \"%s\"\n", $level*2, "", $job->{description});

	if (defined($job->{std_out_file}) && $job->{std_out_file} ne "") {
		printf("%*sstd_out_file: %s\n", $level*2, "", $job->{std_out_file});
	}
	if (defined($job->{std_err_file}) && $job->{std_err_file} ne "") {
		printf("%*sstd_err_file: %s\n", $level*2, "", $job->{std_err_file});
	}
	if ($job->{max_run_alarm} > 0) {
		printf("%*smax_run_alarm: %s\n", $level*2, "", $job->{max_run_alarm});
	}
	printf("%*salarm_if_fail: %s\n", $level*2, "", $job->{alarm_if_fail});

	# find this job's children
	my $children = $job->find_children();

	# loop through all children...
	while (my $child = $children->next_child()) {
		# print child's definition
		print_job_definition($child, $level+1);
	}

}	# print_job_definition()

if (!$query) {
	printf("%-*s     Last Start            Last End        ST  Run  Pri/Xit\n", $width-$rest, "Job Name");
	printf("%-*s ____________________ ____________________ __ _______ ___\n\n", $width-$rest, "_"x($width-$rest));
}

# loop through all jobs...
while (my $job = $jobs->next_job()) {
	if ($query) {
		print_job_definition($job, 0);
		printf("\n");
	} else {
		print_job_status($job, 0);
	}
}



( run in 3.403 seconds using v1.01-cache-2.11-cpan-437f7b0c052 )