fixed the remaining bugs to make new spectre guts compatible with old subsystems
This commit is contained in:
parent
ba8ebc47d4
commit
bb4d7ab4a9
2 changed files with 51 additions and 28 deletions
|
|
@ -280,11 +280,45 @@ sub getInstances {
|
||||||
|
|
||||||
=head2 getJsonStatus ( )
|
=head2 getJsonStatus ( )
|
||||||
|
|
||||||
Returns JSON report about the workflow engine.
|
Returns JSON report about the workflow engine. Depricated, use getStatus() instead.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
sub getJsonStatus {
|
sub getJsonStatus {
|
||||||
|
my ($kernel, $request, $self) = @_[KERNEL,ARG0,OBJECT];
|
||||||
|
my ($sitename, $rsvp) = @$request;
|
||||||
|
my %queues = (
|
||||||
|
Waiting => [],
|
||||||
|
Suspended => [],
|
||||||
|
Running => [],
|
||||||
|
);
|
||||||
|
my %output;
|
||||||
|
if ($sitename) { #must have entry for each queue
|
||||||
|
$output{$sitename} = \%queues;
|
||||||
|
}
|
||||||
|
foreach my $instance ($self->getInstances) {
|
||||||
|
my $site = $instance->{sitename};
|
||||||
|
unless (exists $output{$site}) { # must have an entry for each queue in each site
|
||||||
|
$output{$site} = \%queues;
|
||||||
|
}
|
||||||
|
my $queue = ucfirst($instance->{status});
|
||||||
|
push @{$output{$site}{$queue}}, [$instance->{workingPriority}, $instance->{instanceId}, $instance];
|
||||||
|
}
|
||||||
|
if ($sitename) { # single sitename option
|
||||||
|
%output = %{$output{$sitename}};
|
||||||
|
}
|
||||||
|
$kernel->call(IKC=>post=>$rsvp, encode_json(\%output));
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 getStatus ( )
|
||||||
|
|
||||||
|
Returns JSON report about the workflow engine. Returns an array reference of hash references of instance data. Each instance contains the following fields: instanceId, status, lastState, sitename, priority, and workingPriority.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub getStatus {
|
||||||
my ($kernel, $request, $self) = @_[KERNEL,ARG0,OBJECT];
|
my ($kernel, $request, $self) = @_[KERNEL,ARG0,OBJECT];
|
||||||
my ($data, $rsvp) = @$request;
|
my ($data, $rsvp) = @$request;
|
||||||
my @instances = $self->getInstances;
|
my @instances = $self->getInstances;
|
||||||
|
|
@ -338,32 +372,6 @@ sub getNextInstance {
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
|
||||||
|
|
||||||
=head2 getStatus ( )
|
|
||||||
|
|
||||||
Returns a formatted text status report about the workflow engine.
|
|
||||||
|
|
||||||
=cut
|
|
||||||
|
|
||||||
sub getStatus {
|
|
||||||
my ($kernel, $request, $self) = @_[KERNEL,ARG0,OBJECT];
|
|
||||||
my $pattern = "%8.8s %-9.9s %-30.30s %-22.22s %-15.15s %-20.20s\n";
|
|
||||||
my $summaryPattern = "%19.19s %4d\n";
|
|
||||||
my $total = 0;
|
|
||||||
my $output = sprintf $pattern, "Priority", "Status", "Sitename", "Instance Id", "Last State", "Last Run Time";
|
|
||||||
foreach my $instance ($self->getInstances) {
|
|
||||||
my $originalPriority = ($instance->{priority} - 1) * 10;
|
|
||||||
my $priority = $instance->{workingPriority}."/".$originalPriority;
|
|
||||||
$output .= sprintf $pattern, $priority, $instance->{status}, $instance->{sitename}, $instance->{instanceId}, $instance->{lastState}, $instance->{lastRunTime};
|
|
||||||
$total++;
|
|
||||||
}
|
|
||||||
$output .= sprintf "\n%19.19s %4d\n", "Total Workflows", $total;
|
|
||||||
my ($data, $rsvp) = @$request;
|
|
||||||
$kernel->call(IKC=>post=>$rsvp,$output);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
=head2 new ( config, logger, [ , debug ] )
|
=head2 new ( config, logger, [ , debug ] )
|
||||||
|
|
@ -499,6 +507,10 @@ sub workerResponse {
|
||||||
my $instanceId = $request->header("X-instanceId"); # got to figure out how to get this from the request, cuz the response may die
|
my $instanceId = $request->header("X-instanceId"); # got to figure out how to get this from the request, cuz the response may die
|
||||||
$self->debug("Response retrieved is for $instanceId.");
|
$self->debug("Response retrieved is for $instanceId.");
|
||||||
my $instance = $self->getInstance($instanceId);
|
my $instance = $self->getInstance($instanceId);
|
||||||
|
unless (defined $instance) {
|
||||||
|
$self->debug("Instance $instanceId no longer exist in my queue, so there's no reason to process the response.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ($response->is_success) {
|
if ($response->is_success) {
|
||||||
$self->debug("Response for $instanceId retrieved successfully.");
|
$self->debug("Response for $instanceId retrieved successfully.");
|
||||||
if ($response->header("Set-Cookie") ne "") {
|
if ($response->header("Set-Cookie") ne "") {
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ use Getopt::Long;
|
||||||
use POE::Component::IKC::ClientLite;
|
use POE::Component::IKC::ClientLite;
|
||||||
use Spectre::Admin;
|
use Spectre::Admin;
|
||||||
use WebGUI::Config;
|
use WebGUI::Config;
|
||||||
|
use JSON;
|
||||||
|
|
||||||
$|=1; # disable output buffering
|
$|=1; # disable output buffering
|
||||||
my $help;
|
my $help;
|
||||||
|
|
@ -158,7 +159,17 @@ sub getStatusReport {
|
||||||
return $POE::Component::IKC::ClientLite::error unless defined $result;
|
return $POE::Component::IKC::ClientLite::error unless defined $result;
|
||||||
$remote->disconnect;
|
$remote->disconnect;
|
||||||
undef $remote;
|
undef $remote;
|
||||||
return $result;
|
my $pattern = "%8.8s %-9.9s %-30.30s %-22.22s %-15.15s %-20.20s\n";
|
||||||
|
my $total = 0;
|
||||||
|
my $output = sprintf $pattern, "Priority", "Status", "Sitename", "Instance Id", "Last Run", "Last Run Time";
|
||||||
|
foreach my $instance (@{JSON->new->decode($result)}) {
|
||||||
|
my $originalPriority = ($instance->{priority} - 1) * 10;
|
||||||
|
my $priority = $instance->{workingPriority}."/".$originalPriority;
|
||||||
|
$output .= sprintf $pattern, $priority, $instance->{status}, $instance->{sitename}, $instance->{instanceId}, $instance->{lastState}, $instance->{lastRunTime};
|
||||||
|
$total++;
|
||||||
|
}
|
||||||
|
$output .= sprintf "\n%19.19s %4d\n", "Total Workflows", $total;
|
||||||
|
return $output;
|
||||||
}
|
}
|
||||||
|
|
||||||
__END__
|
__END__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue