#!/usr/bin/env perl
use strict;
use warnings;
use IPC::Open3;
use SMT::Agent::Constants;
use SMT::Agent::Utils;
use XML::Simple;
use UNIVERSAL 'isa';

sub jobhandler
{
  my ($jobtype, $jobid, $args, $verbose) =  @_;

  SMT::Agent::Utils::logger ("jobhandler for eject called", $jobid);
  SMT::Agent::Utils::logger ("eject runs jobid \"$jobid\"", $jobid);

  # check whether this handler can handle requested jobtype
  SMT::Agent::Utils::error ("wrong job handler: \"eject\" cannot handle \"$jobtype\"", $jobid) if ( $jobtype ne "eject" );

  my $action = "open";
  $action   = $args->[0]->{action}  if ( defined ( $args->[0]->{action} ) );

  SMT::Agent::Utils::error( "argument invalid: action", $jobid ) if ( $action ne "open" && $action ne "close" && $action ne "toggle");


  #==  run eject ==

  my $command = "/bin/eject";
  my @cmdArgs;
  push (@cmdArgs, "-T") if ( $action eq "toggle" );			
  push (@cmdArgs, "-t") if ( $action eq "close" );			

  (my $retval, my $stdout, my $stderr) = SMT::Agent::Utils::executeCommand ( $command, undef, @cmdArgs );

  SMT::Agent::Utils::error ("eject failed", $jobid) if ( $retval != 0 );


  if ( $verbose ne "true" )
  {
    $stdout="";
    $stderr="";
  }

  return (
    stdout => defined ( $stdout )? $stdout : "",
    stderr => defined ( $stderr )? $stderr : "",
    exitcode => $retval,
    success => ($retval == 0 ) ? "true" : "false",
    message => ($retval == 0 ) ? "eject successfully finished" : "eject failed"
  );


}

SMT::Agent::Utils::logger ("successfully loaded handler for jobtype \"eject\"");

1;

