Bio-Grid-Run-SGE

 view release on metacpan or  search on metacpan

lib/Bio/Grid/Run/SGE/Log/Analysis.pm  view on Meta::CPAN


  return;
}

sub subject {
  my $self = shift;
  my $conf = $self->config;
  my $env  = $self->env;

  return
      '['
    . localtime() . ']['
    . $env->{job_id} . ']['
    . $self->log_status . '] '
    . $env->{job_name_save} . ' ('
    . $self->local_user() . ')';
}

sub log_status {
  my ($self) = @_;

  my $status;
  if ( !$self->num_jobs || $self->num_jobs_failed == $self->num_jobs ) {
    $status = 'ALL ERR';
  } elsif ( $self->num_jobs_failed ) {
    $status = $self->num_jobs_failed . '/' . $self->num_jobs . ' ERR';
  } else {
    $status = 'ALL OK';
  }

  return $status;
}

sub local_user {
  return $ENV{SGE_O_LOGNAME} && $ENV{SGE_O_HOST}
    ? join( '@', $ENV{SGE_O_LOGNAME}, $ENV{SGE_O_HOST} )
    : join( '@', $ENV{USER}, ( $ENV{HOSTNAME} || hostname() ) );
}

sub gen_report {
  my ( $self, $full ) = @_;
  my @task_report = @{ $self->_task_log };
  @task_report = ( @task_report[ 0 .. 13 ], '...' ) if ( @task_report > 17 && !$full );
  return join( "\n", $self->subject(), '', @{ $self->_log }, '', @task_report ) . "\n";
}

sub restart_script {
  my ($self) = @_;
  return join( "\n", @{ $self->_cmd_script } ) . "\n";
}

sub write {
  my ($self) = @_;

  my $cmd_f = $self->failed_restart_file;

  open my $cmd_fh, '>', $cmd_f or confess "Can't open filehandle: $!";
  print $cmd_fh $self->restart_script;
  $cmd_fh->close;

  chmod 0755, $cmd_f;

  my $log_f = $self->failed_log_file;

  open my $log_fh, '>', $log_f or confess "Can't open filehandle: $!";

  print $log_fh $self->gen_report(1);
  $log_fh->close;

  #CREATE SCRIPT TO UPDATE RERUN JOBS
  $self->_write_update_script;

}

sub _write_update_script {
  my ($self) = @_;

  my $conf = $self->config;
  my $env  = $self->env;

  my @post_log_cmd = ( $conf->{submit_bin} );
  push @post_log_cmd, '-S', $env->{perl_bin};
  push @post_log_cmd, '-N', join( '_', 'ERRpost', $env->{job_id}, $env->{job_name_save} );
  push @post_log_cmd, '-e', $conf->{stderr_dir};
  push @post_log_cmd, '-o', $conf->{stdout_dir};
  push @post_log_cmd, $env->{worker_env_script};
  push @post_log_cmd, $env->{script_bin}, '--stage', 'log', '--job_id', $env->{job_id},
    $env->{worker_config_file};

  my $update_log_file = $self->failed_update_file;

  open my $update_log_fh, '>', $update_log_file or confess "Can't open filehandle: $!";
  print $update_log_fh join( " ", "cd", "'" . $conf->{working_dir} . "'", '&&', @post_log_cmd ), "\n";
  $update_log_fh->close;

  chmod 0755, $update_log_file;

  return;
}

__PACKAGE__->meta->make_immutable();



( run in 1.164 second using v1.01-cache-2.11-cpan-0d23b851a93 )