opendreams.idl 0000644 0000765 0000024 00000022402 11303250677 012700 0 ustar julia staff /** * @mainpage * @section intro Introdução *
* Descrever em linhas gerais o opendreams */ /** * @file opendreams.idl * Arquivo de especificação da IDL para o OpenDreams. * @author Tecgraf PUC-Rio */ #ifndef _OPENDREAMS_IDL #define _OPENDREAMS_IDL #include "drmaa.idl" /** * Módulo OpenDreams. */ module tecgraf { module openbus { module opendreams { /** * \brief A chave-valor que corresponde a um parâmetro para execução de um algoritmo. * A chave é o nome do parâmetro e o valor é uma string. * O formato da string do valor depende do tipo do parâmetro: *
remoteCommand
.
*
* No OpenDreams, os seguintes valores são válidos:
* remoteCommand
.
*
* \return O comando a ser executado.
*/
string getRemoteCommand();
/**
* \brief Atribui um valor ao atributo args
.
*
* No OpenDreams, os seguintes valores são válidos:
* args
.
*
* \return A sequência de strings que formam os argumentos no comando a ser
* executado.
*/
DRMAA::OrderedStringList getArgs();
/**
* \brief Atribui um valor ao atributo jobSubmissionState
.
*
* No OpenDreams, apenas o valor JobSubmissionState.ACTIVE_STATE é válido.
* A validação do atributo é feita na submissão do job.
*
* \param [in] state Um dos valores do enumerador JobSubmissionState.
*/
void setJobSubmissionState(in DRMAA::JobSubmissionState state);
/**
* \brief Obtém o valor do atributo jobSubmissionState
.
*
* \return Um dos valores JobSubmissionState.ACTIVE_STATE ou
* JobSubmissionState.HOLD_STATE.
*/
DRMAA::JobSubmissionState getJobSubmissionState();
/**
* \brief Atribui um valor ao atributo jobCategory
.
*
* No OpenDreams, os seguintes valores são válidos: CSBase ou System.
* A categoria CSBase
identifica a execução de algoritmos do repositório.
* A categoria System
serve para atender a execução de comandos do sistema,
* de acordo com o uso comum do DRMAA.
* Por enquanto, o OpenDreams somente reconhece a opção CSBase
.
* A validação do atributo é feita na submissão do job.
*
* \param [in] jobCategory CSBase
ou System
.
*/
void setJobCategory(in string jobCategory);
/**
* \brief Obtém o valor do atributo jobCategory
.
*
* \return Um dos valores CSBase
ou System
*/
string getJobCategory();
/**
* \brief Atribui um valor ao atributo email
.
*
* \param [in] email A lista de emails para notificação de término de execução.
*/
void setEmail (in DRMAA::StringList email);
/**
* \brief Obtém o valor do atributo email
.
*
* \return A lista de emails para notificação de término de execução.
*/
DRMAA::StringList getEmail();
/**
* \brief Atribui um valor ao atributo blockEmail
.
*
* \param [in] blockEmail Se o envio de email está bloqueado ou não.
*/
void setBlockEmail (in boolean blockEmail);
/**
* \brief Obtém o valor do atributo blockEmail
.
*
* \return Se o envio de email está bloqueado ou não.
*/
boolean getBlockEmail();
/**
* \brief Atribui um valor do atributo outputPath
.
*
* \param [in] outputPath O arquivo para direcionamento da saída padrão
*/
void setOutputPath(in string outputPath);
/**
* \brief Obtém o valor do atributo outputPath
.
*
* \return O arquivo para direcionamento da saída padrão
*/
string getOutputPath();
/**
* \brief Atribui um valor do atributo errorPath
.
*
* \param [in] errorPath O arquivo para direcionamento dos erros padrão
*/
void setErrorPath(in string errorPath);
/**
* \brief Obtém o valor do atributo errorPath
.
*
* \return O arquivo para direcionamento de erros padrão
*/
string getErrorPath();
/**
* \brief Atribui um valor do atributo joinFiles
.
*
* \param [in] joinFiles Se a saída padrão deve ser junta com a saída de erro padrão
*/
void setJoinFiles(in boolean joinFiles);
/**
* \brief Obtém o valor do atributo joinFiles
.
*
* \return Se a saída padrão deve ser junta com a saída de erro padrão
*/
boolean getJoinFiles();
/**
* \brief Atribui um valor do atributo transferFiles
.
*
* \param [in] transferFiles Se transferência de arquivos está habilitada para
* a entrada, saída e erro padrão.
*/
void setTransferFiles(in DRMAA::FileTransferMode transferFiles);
/**
* \brief Obtém o valor do atributo transferFiles
.
*
* \return Se transferência de arquivos está habilitada para
* a entrada, saída e erro padrão.
*/
DRMAA::FileTransferMode getTransferFiles();
/**
* \brief Adiciona um novo parâmetro.
* Se já existir um parâmetro com o nome dado, o valor desse parâmetro é
* substituído pelo valor informado.
*
* \param [in] name O nome do novo parâmetro.
* \param [in] value O valor do novo parâmetro.
*/
void addJobParameter (in string name, in string value);
/**
* \brief Obtém o valor de um parâmetro, dado seu nome.
* Se não houver um parâmetro com o nome informado, retorna nil.
*
* \param [in] name O nome do parâmetro.
* \return O valor do parâmetro que possui o nome informado.
*/
string getJobParameter (in string name);
/**
* \brief Obtém os parâmetros de execução do algoritmo representado nesse
* job template.
* \return O mapa com os parâmetros para execução do job
*/
JobParameterSeq getJobParameters();
/**
* \brief Atribui uma descrição do job submetido.
* \param [in] jobDescription A descrição do job
*/
void setJobDescription(in string jobDescription);
/**
* \brief Obtém uma descrição do job submetido.
* \return A descrição do job
*/
string getJobDescription();
/**
* \brief Atribui uma prioridade de execução ao job submetido.
* \param [in] jobPriority A prioridade do job
*/
void setJobPriority (in short jobPriority);
/**
* \brief Obtém a prioridade de execução ao job submetido.
* \return A prioridade do job
*/
short getJobPriority();
/**
* \brief Atribui um valor para o atributo numberOfProcesses
.
* \param [in] numberOfProcesses O número de processos para execução paralela ou distribuída.
*/
void setNumberOfProcesses (in long numberOfProcesses);
/**
* \brief Obtém o valor do atributo numberOfProcesses
.
* \return O número de processos para execução paralela ou distribuída.
*/
long getNumberOfProcesses();
};
/**
* \brief Interface principal de acesso ao serviço OpenDreams.
* A interface IOpenDreams cria uma sessão para o usuário dono de um projeto.
* Essa sessão implementa uma sessão DRMAA e oferece métodos para submissão,
* controle e monitoração de jobs para execução remota.
*/
interface IOpenDreams{
DRMAA::Session getSession(in string projectId)
raises ( DRMAA::AuthorizationException,
DRMAA::InternalException);
};
}; // opendreams
}; // openbus
}; // tecgraf
#endif
drmaa.idl 0000644 0000765 0000024 00000073504 11267370647 011651 0 ustar julia staff /**
* @mainpage
* @section intro Introdução
* * O DRMAA (Distributed Resource Management Application API) é um padrão GGF * (Global Grid Forum) de api para sistemas responsáveis por gerenciar a * execução de tarefas (jobs) em uma grade de computadores. *
* O DRMAA define um conjunto de operações que permitem acesso programático a * funcionalidades comuns a diversos sistemas. *
JobTemplate::jobSubmissionState
.
*/
enum JobSubmissionState {
HOLD_STATE, /**< \brief Pode ser enfileirado, mas não está elegível para execução */
ACTIVE_STATE /**< \brief Está elegível para execução */
};
/**
* \brief Usado no JobTemplate para indicar o valor do atributo transferFiles
.
* Possui três atributos, que indicam o stage in ou out dos arquivos de
* entrada padrão, saída padrão e erro padrão, respectivamente.
*/
struct FileTransferMode {
boolean transferInputStream; /**< \brief Se o arquivo de entrada padrão será transferido */
boolean transferOutputStream; /**< \brief Se o arquivo de saída padrão será transferido */
boolean transferErrorStream; /**< \brief Se o arquivo de erros padrão será transferido */
};
/**
* \brief Usado para representar a versão da implementação do DRMAA.
* A versão é recuperada como um atributo de Session
.
* Equivale a uma representação de versão no formato Time Stamp
do job template.
* Possui uma implementação nativa.
*/
native PartialTimestamp;
/**
* \brief Informações sumarizadas a respeito do resultado da execução de um job.
* Pelo Job Info
o cliente pode descobrir informações sobre o consumo
* de resursos e o código de término da execução do job.
*/
valuetype JobInfo {
/**
* \brief O identificador do job finalizado
*/
public string jobId;
/**
* \brief Dados sobre o uso de recursos pelo job finalizado.
* Os dados retornados pelo OpenDreams são:
* cpu-time:
* elapsed-time:
* user-time:
*/
public Dictionary resourceUsage;
/**
* \brief Se verdadeiro, significa que o job terminou normalmente e existem
* informações mais detalhadas sobre seu término no atributo exitStatus.
*/
public boolean hasExited;
/**
* \brief Se hasExit
é verdadeiro, possui o código de finalização
* informado pelo sistema operacional onde o job executou.
* O valor zero indica que o job terminou com sucesso.
* Valores diferentes de zero são indicativos de término com falha.
* No OpenDreams indica se o job terminou com sucesso (EventType.SUCCESS) ou
* não.
*/
public long exitStatus;
/**
* \brief Se verdadeiro, significa que o job terminou devido ao recebimento
* de um signal do sistema operacional e existe informação sobre esse signal
* no atributo terminatingSignal.
* Esse atributo não é usado no OpenDreams e possui o valor sempre falso.
*/
public boolean hasSignaled;
/**
* \brief Se hasSignaled
é verdadeiro, possui o código do sinal
* que causou o término do job.
* Esse atributo não é usado no OpenDreams e possui o valor sempre null;
*/
public string terminatingSignal;
/**
* \brief Se hasSignaled
é verdadeiro, esse atributo é verdadeiro
* se a core image do job foi criada.
* Esse atributo não é usado no OpenDreams e possui o valor sempre falso.
*/
public boolean hasCoreDump;
/**
* \brief Se verdadeiro, significa que o job foi abortado antes de entrar em
* execução.
* É usado no OpenDreams para indicar que o job foi abortado (EventType.KILLED).
*/
public boolean wasAborted;
};
/**
* \brief Um Job Template
define os atributos necessários a
* submissão de um job para execução.
*
* As instâncias de um job template são criadas pela sessão ativa, através do
* método Session::createJobTemplate()
.
* Uma aplicação DRMAA obtém um job template, altera os valores dos atributos
* desse job template e o retorna para o serviço na requisição de execução de
* jobs. Após usar um job template, a aplicação deve chamar o método
* Session::deleteJobTemplate().
*/
valuetype JobTemplate{
/**
* \brief Representa o home directory do usuário.
* Serve para usar na definição dos paths nos atributos
* workingDirectory
, inputPath
,
* outputPath
, e errorPath
.
*/
const string HOME_DIRECTORY = "$drmaa_hd_ph$";
/**
* \brief Representa o diretório corrente de trabalho.
* Serve para usar na definição dos paths nos atributos
* inputPath
, outputPath
e errorPath
.
*/
const string WORKING_DIRECTORY = "$drmaa_wd_ph$";
/**
* \brief Representa o índice paramétrico do job.
* Serve para usar na definição dos paths nos atributos
* workingDirectory
, inputPath
,
* outputPath
, e errorPath
.
*/
const string PARAMETRIC_INDEX = "$drmaa_incr_ph$";
/**
* \brief O comando a ser executado
*/
public string remoteCommand;
/**
* \brief Os argumentos command-line para execução do comando.
*/
public OrderedStringList args;
/**
* \brief O estado do job no momento da submissão.
*/
public JobSubmissionState jobSubmissionState;
/**
* \brief Valores de variáveis de ambiente para serem usados na máquina de
* execução.
* Os valores devem sobreescrever os valores das variáveis no ambiente remoto
* no caso de haver colisão de nomes. Se não for possível, o comportamento
* é dependente da implementação do DRMS.
* Esse atributo não é implementado no OpenDreams.
*/
public Dictionary jobEnvironment;
/**
* \brief Especifica o diretório onde o job é executado.
* Se esse atributo não estiver configurado, o comportamento é dependente da
* implementação do DRMS.
* O valor desse atributo é relativo ao sistema de arquivo na máquina de execução.
* Esse valor pode usar as constantes HOME_DIRECTORY ou PARAMETRIC_INDEX na sua
* definição. No caso de iniciar com HOME_DIRECTORY significa que a parte
* restante é relativa ao diretório home do usuário. A constante
* PARAMETRIC_INDEX pode ser usada em qualquer posição da definição do diretório
* e é substituída pelo índice relativo ao job nas execuções paramétricas.
* Esse atributo não é implementado no OpenDreams.
*/
public string workingDirectory;
/**
* \brief Define o uso de recursos ou políticas de acordo com categorias de
* jobs criadas pelo administrador do DRMS.
* Depende da implementação do DRMS. Os administradores podem criar uma categoria de job
* adequada para uma aplicação que usa o DRMS. A implementação DRMAA pode usar
* a categoria especificada no job template para gerenciar recursos e requisitos
* dos jobs nessa categoria.
* No OpenDreams, os seguintes valores serão válidos: CSBase ou System.
* A categoria CSBase identifica a execução de algoritmos do repositório.
* A categoria System serviria para atender a execução de comandos do sistema,
* de acordo com o uso comum do DRMAA.
* Por enquanto, o OpenDreams somente reconhece a categoria CSBase.
*/
public string jobCategory;
/**
* \brief Define o uso de recursos ou políticas de acordo com o valor passado
* pelos usuário final do sistema.
* Depende da implementação do DRMS.
* Esse atributo não é implementado no OpenDreams.
*/
public string nativeSpecification;
/**
* \brief Lista de emails usados para notificar o status do job e sua
* finalização.
*/
public StringList email;
/**
* \brief Indica se o envio de emails deve estar bloqueado, por default.
* Se o valor for true, o envio de email é bloqueado. Se o valor for false,
* o envio de email depende da configuração do DRMS.
*/
public boolean blockEmail;
/**
* \brief Especifica uma data/hora a partir da qual o job pode ser elegível
* para execução.
* TODO AINDA NÃO SEI COMO DEFINIR O TIPO.
* Esse atributo não é implementado no OpenDreams.
*/
/* public PartialTimestamp startTime;*/
/**
* \brief O nome de um job, fornecido pelo cliente, deve ser formado de
* caracteres alfanuméricos e '_'.
* Esse atributo não é implementado no OpenDreams.
*/
public string jobName;
/**
* \brief Especifica como direcionar a entrada padrão para um arquivo.
* Possui o formato[hostname]:file_path.
* Se o atributo transferFiles for implementado e possui um valor verdadeiro
* em FileTransferMode::inputStream, o arquivo de entrada deve ser recuperado
* a partir do hostname ou do host de submissão se o hostname não for definido.
* Se o atributo transferFiles não for implementado ou possui um valor falso
* em FileTransferMode::inputStream, assume-se que o arquivo de entrada sempre
* estará na máquina de execução do job, independente de um hostname ter sido
* especificado.
* O valor do atributo pode usar o placeholder PARAMETRIC_INDEX em qualquer
* posição para ser substituído pelo índice paramétrico de execução de um job.
* O valor do atributo pode usar o placeholder HOME_DIRECTORY no início,
* indicando que o restante é um caminho relativo ao diretório do home do usuário.
* O valor do atributo pode usar o placeholder WORKING_DIRECTORY no início,
* indicando que o restante é um caminho relativo ao diretório de trabalho.
* Esse atributo não é implementado no OpenDreams.
*/
public string inputPath;
/**
* \brief Especifica como direcionar a saída padrão para um arquivo.
* Possui o formato[hostname]:file_path.
* Se o atributo transferFiles for implementado e possui um valor verdadeiro
* em FileTransferMode::outputStream, o arquivo de saída deve ser transferido
* para o hostname especificado ou para o host de submissão se o hostname não
* for definido.
* Se o atributo transferFiles não for implementado ou possui um valor falso
* em FileTransferMode::outputStream, assume-se que o arquivo de saída sempre
* estará na máquina de execução do job, independente de um hostname ter sido
* especificado.
* Toda saída enviada para a saída padrão do job deve ser "appended".
* Se o arquivo não existir no momento da execução do job, ele é criado.
* O valor do atributo pode usar o placeholder PARAMETRIC_INDEX em qualquer
* posição para ser substituído pelo índice paramétrico de execução de um job.
* O valor do atributo pode usar o placeholder HOME_DIRECTORY no início,
* indicando que o restante é um caminho relativo ao diretório do home do usuário.
* O valor do atributo pode usar o placeholder WORKING_DIRECTORY no início,
* indicando que o restante é um caminho relativo ao diretório de trabalho.
*/
public string outputPath;
/**
* \brief Especifica como direcionar a saída padrão de erros para um arquivo.
* Possui o formato[hostname]:file_path.
* Se o atributo transferFiles for implementado e possui um valor verdadeiro
* em FileTransferMode::errorStream, o arquivo de erros deve ser transferido
* para o hostname especificado ou para o host de submissão se o hostname não
* for definido.
* Se o atributo transferFiles não for implementado ou possui um valor falso
* em FileTransferMode::errorStream, assume-se que o arquivo de erros sempre
* estará na máquina de execução do job, independente de um hostname ter sido
* especificado.
* Toda saída enviada para a saída padrão de erros do job deve ser "appended".
* Se o arquivo não existir no momento da execução do job, ele é criado.
* O valor do atributo pode usar o placeholder PARAMETRIC_INDEX em qualquer
* posição para ser substituído pelo índice paramétrico de execução de um job.
* O valor do atributo pode usar o placeholder HOME_DIRECTORY no início,
* indicando que o restante é um caminho relativo ao diretório do home do usuário.
* O valor do atributo pode usar o placeholder WORKING_DIRECTORY no início,
* indicando que o restante é um caminho relativo ao diretório de trabalho.
*/
public string errorPath;
/**
* \brief Indica se a saída de erros padrão deve ser junta com a saída padrão,
* independente do atributo errorPath ter sido especificado.
* O default é false.
*/
public boolean joinFiles;
/**
* \brief Especifica se os arquivos de entrada padrão, saída padrão e erro
* padrão, definidos respectivamente em inputPath, outputPath e errorPath devem
* ser transferidos tendo como referência o hostname especificado.
* Se o atributo não for explicitamente atribuído o efeito é o mesmo que
* usar false em todos os membros do FileTransferMode.
*/
public FileTransferMode transferFiles;
/**
* \brief Especifica o tempo limite após o qual o DRMS deve abortar ou terminar o job
* TODO AINDA NÃO SEI COMO DEFINIR O TIPO.
* Esse atributo não é implementado no OpenDreams.
*/
/* public PartialTimestamp deadlineTime; */
/**
* \brief Especifica o tempo de parede limite após o qual o DRMS deve abortar
* ou terminar o job.
* Esse atributo não é implementado no OpenDreams.
*/
public TimeAmount hardWallClockTimeLimit;
/**
* \brief Especifica uma estimativa de qual seria o tempo de parede limite
* para o job terminar. É usado para ajudar o escalonamento do job.
* A implementação pode, por exemplo, aplicar uma penalidade aos jobs que não
* atenderem esse limite.
* Esse atributo não é implementado no OpenDreams.
*/
public TimeAmount softWallClockTimeLimit;
/**
* \brief Especifica o tempo de execução limite após o qual o DRMS deve
* abortar ou terminar o job.
* Esse atributo não é implementado no OpenDreams.
*/
public TimeAmount hardRunDurationLimit;
/**
* \brief Especifica uma estimativa de qual seria o tempo de execução limite
* para o job terminar. É usado para ajudar o escalonamento no job. A
* implementação pode, por exemplo, aplicar uma penalidade aos jobs que não
* atenderem esse limite.
* Esse atributo não é implementado no OpenDreams.
*/
public TimeAmount softRunDurationLimit;
/**
*
*/
readonly attribute StringList attributeNames;
};
/**
* Representa uma sessão DRMAA.
*/
interface Session{
const long long TIMEOUT_WAIT_FOREVER = -1;
const long long TIMEOUT_NO_WAIT = 0;
const string JOB_IDS_SESSION_ANY = "DRMAA_JOB_IDS_SESSION_ANY";
const string JOB_IDS_SESSION_ALL = "DRMAA_JOB_IDS_SESSION_ALL";
/**
* \brief Faz a inicialização de uma sessão, tornando-a ativa.
*
* Esse método tem que ser chamado antes de qualquer outra chamada na
* sessão, com exceção dos métodos contact
,
* drmsInfo
e drmaaImplementation
definidos na
* interface Session
.
*
* \param [in] contactString Especifica qual sistema DRMS deve ser usado, no
* caso de haver mais de um. Quando vazio ou null, o DRMS default é usado.
*
* \exception DrmsInitException Falha durante a inicialização da sessão.
* \exception InvalidContactStringException Caso o parâmetro contactString
* seja inválido.
* \exception AlreadyActiveSessionException Caso esse método seja chamado
* mais de uma vez.
* \exception DefaultContactStringException Caso o
* contactString
seja null ou vazio e o DRMS default não
* consiga ser conectado.
* \exception NoDefaultContactStringSelectedException Caso o
* contactString
seja null ou vazio e exista mais de um DRMS
* disponível.
* \excepion OutOfMemoryException Caso o sistema DRMS não possua memória
* suficiente para executar essa operação.
* \excepion DrmCommunicationException Falha na conexão com o sistema DRMS.
* \exception AuthorizationException Caso o usuário não possua permissão
* para executar essa operação.
* \exception InvalidArgumentException Valor de argumento inválido.
* \exception InternalException Falha na execução da operação no DRMS.
*/
void init(in string contactString)
raises ( DrmsInitException,
InvalidContactStringException,
AlreadyActiveSessionException,
DefaultContactStringException,
NoDefaultContactStringSelectedException,
OutOfMemoryException,
DrmCommunicationException,
AuthorizationException,
InvalidArgumentException,
InternalException);
/**
* \brief Faz a finalização de uma sessão ativa.
*
* Esse método termina a conexão com o DRMS e finaliza a sessão ativa.
* A chamada a esse método não afeta qualquer job já submetido (na fila ou
* em execução). Qualquer instância de job template que ainda não tenha sido
* removida, se torna inválida após esse método ser executado, mesmo depois
* de uma subsequente chamada ao método init()
.
*
* \exception DrmsExitException Falha durante a finalização da sessão.
* \exception NoActiveSessionException Se a sessão ainda não foi inicializada ou
* se a sessão já foi finalizada antes.
* \excepion DrmCommunicationException Falha na conexão com o sistema DRMS.
* \excepion OutOfMemoryException Caso o sistema DRMS não possua memória
* suficiente para executar essa operação.
* \exception AuthorizationException Caso o usuário não possua permissão
* para executar essa operação.
* \exception InternalException Falha na execução da operação no DRMS.
*/
void exit()
raises ( DrmsExitException,
NoActiveSessionException,
DrmCommunicationException,
AuthorizationException,
OutOfMemoryException,
InternalException);
/**
* \brief Faz a criação de um job template.
*
* O job template é usado para
* definir as características para submissão de jobs. Uma vez que o job
* template tenha sido criado, ele deve ser posteriormente removido
* (usando o método deleteJobTemplate()
) quando não for mais
* necessário.
* \return Um novo job template.
* \excepion DrmCommunicationException Falha na conexão com o sistema DRMS.
* \exception NoActiveSessionException Se a sessão ainda não foi inicializada
* ou se a sessão já foi finalizada.
* \excepion OutOfMemoryException Caso o sistema DRMS não possua memória
* suficiente para executar essa operação.
* \exception AuthorizationException Caso o usuário não possua permissão
* para executar essa operação.
* \exception InternalException Falha na execução da operação no DRMS.
*/
JobTemplate createJobTemplate()
raises ( DrmCommunicationException,
NoActiveSessionException,
OutOfMemoryException,
AuthorizationException,
InternalException);
/**
* \brief Libera um job template.
*
* Esse método não possui nenhum efeito em jobs em execução.
* Somente pode ser usado em job templates criados pelo método
* createJobTemplate()
e que ainda não foram liberados.
*
* \param [in] jobTemplate_ O job template a ser liberado.
*
* \excepion DrmCommunicationException Falha na conexão com o sistema DRMS.
* \exception NoActiveSessionException Se a sessão ainda não foi inicializada
* ou se a sessão já foi finalizada.
* \excepion OutOfMemoryException Caso o sistema DRMS não possua memória
* suficiente para executar essa operação.
* \exception AuthorizationException Caso o usuário não possua permissão
* para executar essa operação.
* \exception InvalidJobTemplateException se o job não foi criado adequadamente
* ou se o job template já foi liberado.
* \exception InternalException Falha na execução da operação no DRMS.
*/
void deleteJobTemplate(in JobTemplate jobTemplate_)
raises ( DrmCommunicationException,
NoActiveSessionException,
OutOfMemoryException,
AuthorizationException,
InvalidArgumentException,
InvalidJobTemplateException,
InternalException);
/**
* \brief Submete um job para execução.
*
* O job submetido está definido pelo job template, passado como parâmetro.
* O identificador retornado deve ser o mesmo fornecido pelo DRMS responsável
* pelo agendamento do job.
*
* \param [in] jobTemplate_ O job template que define o job submetido para
* execução.
*
* \return Um identificador do job proveniente do DRMS.
*
* \excepion TryLaterException a requisição não pode ser processada devido
* a uma carga excessiva do sistema.
* \excepion DeniedByDrmException o DRMS rejeitou o job devido a configuração
* do job template fornecida ou da configuração do próprio DRMS.
* \excepion DrmCommunicationException Falha na conexão com o sistema DRMS.
* \exception AuthorizationException Caso o usuário não possua permissão
* para executar essa operação.
* \exception InvalidJobTemplateException se o job não foi criado adequadamente
* ou se o job template já foi liberado.
* \exception NoActiveSessionException Se a sessão ainda não foi inicializada
* ou se a sessão já foi finalizada.
* \excepion OutOfMemoryException Caso o sistema DRMS não possua memória
* suficiente para executar essa operação.
* \exception InvalidArgumentException Valor de argumento inválido.
* \exception InternalException Falha na execução da operação no DRMS.
*/
string runJob(in JobTemplate jobTemplate_)
raises ( TryLaterException,
DeniedByDrmException,
DrmCommunicationException,
AuthorizationException,
InvalidJobTemplateException,
NoActiveSessionException,
OutOfMemoryException,
InvalidArgumentException,
InternalException);
/**
* \brief Operação ainda não implementada.
*/
StringList runBulkJobs( in JobTemplate jobTemplate_,
in long beginIndex,
in long endIndex,
in long step)
raises ( TryLaterException,
DeniedByDrmException,
DrmCommunicationException,
AuthorizationException,
InvalidJobTemplateException,
NoActiveSessionException,
OutOfMemoryException,
InvalidArgumentException,
InternalException);
/**
* \brief Operação ainda não implementada.
*/
void control( in string jobName,
in JobControlAction operation)
raises ( DrmCommunicationException,
AuthorizationException,
ResumeInconsistentStateException,
SuspendInconsistentStateException,
HoldInconsistentStateException,
ReleaseInconsistentStateException,
InvalidJobException,
NoActiveSessionException,
OutOfMemoryException,
InvalidArgumentException,
InternalException);
/**
* \brief Operação ainda não implementada.
*/
void synchronize( in StringList jobList,
in long long timeout,
in boolean dispose)
raises ( DrmCommunicationException,
AuthorizationException,
ExitTimeoutException,
InvalidJobException,
NoActiveSessionException,
OutOfMemoryException,
InvalidArgumentException,
InternalException);
/**
* \brief Aguarda um único job completar sua execução e retorna o status do
* com a condição de término e as informações de uso de recursos pelo job.
*
* Se for chamado com o JOB_IDS_SESSION_ANY como parâmetro no
* job name e não houver jobs ativos na sessão, a exceção InvalidJobException
* é lançada.
*
* Para um mesmo job name, apenas uma chamada ao método wait ocorre com
* sucesso. Para qualquer outra que esteja aguardando uma chamada wait ao
* mesmo job, é lançada uma exceção InvalidJobException.
*
* Em um ambiente multi-threaded com chamadas ao método wait usando
* JOB_IDS_SESSION_ANY, apenas a thread ativa recebe o resultado
* do wait enquanto as outras continuam esperando por outro job. Se não
* houver mais jobs submetidos, as outras threads recebem a exceção
* InvalidJobException.
*
* Se uma thread A está aguardando por um determinado job e uma outra thread,
* B, aguardando pelo mesmo job ou por JOB_IDS_SESSION_ANY, recebe a informação
* que esse job terminou, a thread A deve receber a exceção InvalidJobException.
*
* \param [in] jobName O identificador de um job ou a constante
* Session.JOB_IDS_SESSION_ANY que representa qualquer job da sessão ativa
* \param [in] timeout O tempo máximo (em segundos) a ser esperado pela
* finalização dos job ou as constantes TIMEOUT_WAIT_FOREVER e TIMEOUT_NO_WAIT.
*
* \return Um objeto JobInfo, que encapsula o estado de finalização do job
* e as informações sobre o uso de recursos durante sua execução.
*/
JobInfo wait( in string jobName,
in long long timeout)
raises ( DrmCommunicationException,
AuthorizationException,
ExitTimeoutException,
InvalidJobException,
NoActiveSessionException,
OutOfMemoryException,
InvalidArgumentException,
InternalException);
/**
* \brief Operação ainda não implementada.
*/
JobState jobStatus(in string jobName)
raises ( DrmCommunicationException,
AuthorizationException,
InvalidJobException,
NoActiveSessionException,
OutOfMemoryException,
InvalidArgumentException,
InternalException);
/**
* \brief Se esse atributo for lido antes de uma chamada ao método init(),
* retorna uma string contendo a lista (separada por vírgula) com os nomes
* das instalações DRMAA disponíveis. Cada um desses nomes representa
* uma instalação específica de um sistema DRM específico (por exemplo, a versão
* do CSGRid executando em um determinado IP e porta).
* Se esse atributo for lido depois de uma chamada ao método init(),
* retorna uma string contendo a instalação DRMAA associada a sessão ativa.
*/
readonly attribute string contact;
/**
* \brief Contém uma instância de Version
que representa o número
* da versão da implementação do DRMAA.
*/
readonly attribute DRMAA::Version version;
/**
* \brief Se esse atributo for lido antes de uma chamada ao método init(),
* retorna uma string contendo a lista (separada por vírgula) com identificadores
* dos DRMS disponíveis. Um identificador de DRMS denota um tipo específico
* de DRMS (por exemplo, Sun Grid Engine, CSGrid).
* Se esse atributo for lido depois de uma chamada ao método init(),
* retorna uma string contendo o identificador do DRMS associado a sessão ativa.
*/
readonly attribute string drmsInfo;
/**
* \brief Se esse atributo for lido antes de uma chamada ao método init(),
* retorna uma string contendo a lista (separada por vírgula) com implementações
* DRMAA disponíveis. A string de uma implementação DRMAA denota uma versão
* específica do DRMS (por exemplo, Condor v6.6).
* Se esse atributo for lido depois de uma chamada ao método init(),
* retorna uma string contendo a implementação DRMAA associada a sessão ativa.
*/
readonly attribute string drmaaImplementation;
};
}; // DRMAA
}; // openbus
}; // tecgraf
#endif