...
 
Commits (6)
## OpenDreams
O [OpenDreams](https://jira.tecgraf.puc-rio.br/confluence/display/OpenDreams/Home) é um serviço [OpenBus](https://jira.tecgraf.puc-rio.br/confluence/display/OpenBus) para submissão, monitoração e controle de execução remota de comandos em sistemas construídos usando o framework [CSBase](https://jira.tecgraf.puc-rio.br/confluence/display/CSBASE). O OpenDreams define uma API de programação para as funcionalidades de gerenciamento de execução remota de comando oferecidas por sistemas CSBase. O sistema [CSGrid](https://jira.tecgraf.puc-rio.br/confluence/display/CSGrid) é um sistema CSBase que oferece uma implementação de referência para a última versão do OpenDreams.
A API do OpenDreams é baseada no padrão [DRMAA](http://www.drmaa.org/) especificado pela [OMG](http://www.omg.org/).
O serviço OpenDreams é disponibilizado no OpenBus como um componente [SCS](https://jira.tecgraf.puc-rio.br/confluence/display/SCSPUB/SCS) que adota o padrão [CORBA](http://www.corba.org) como protocolo de comunicação entre os componentes.
OpenDreams é um acrônimo para *OpenBus Distributed Resource and Algorithms Management Service*.
## Notas de versão
### v1.7.1
* [OPENDRMS-173] - Reorganizar o svn para multiplas linguagens
* [OPENDRMS-118] - Oferecer uma interface Openbus para o serviço de Algoritmos
* [OPENDRMS-125] - Documentação do OpenDreams 1.7
* [OPENDRMS-136] - Implementar o método control no OpenDreams para término de um comando
* [OPENDRMS-144] - Rever o uso das exceções no DataService
* [OPENDRMS-168] - Nova versão 1.7 do OpenDreams
* [OPENDRMS-102] - Na submissão de comandos pelo OpenDreams, deve ser possível definir o SGA no qual o comando será executado
* [OPENDRMS-105] - Implementar os métodos runBulkJobs e synchronize da especificação DRMAA
* [OPENDRMS-106] - Rever o uso das exceções dos métodos da API do OpenDreams
* [OPENDRMS-109] - Nova exceção ProjectNotFoundException
* [OPENDRMS-120] - Especificar a IDL do serviço
* [OPENDRMS-121] - Implementar a IDL do serviço no CSBase
* [OPENDRMS-122] - Revisão das exceções lançadas pela IDL do serviço
* [OPENDRMS-116] - Adicionar um atributo no OpenDreamsJobInfo para ter a descrição do término do comando
* [OPENDRMS-40] - Deixar claro na documentação da IDL sobre o conteúdo do resourceUsage do JobInfo
Este repositório foi gerado a partir da IDL e implementação dos valuetypes copiados do repositório:
https://subversion.tecgraf.puc-rio.br/engdist/opendreams/core/java/tags/OD_v1_07_01_2014_07_21
### v1.6.1
* [OPENDRMS-181] Atualizar a versão da biblioteca Javautils para 2.0.0
Este repositório foi gerado a partir da IDL e implementação dos valuetypes copiados do repositório:
https://subversion.tecgraf.puc-rio.br/engdist/opendreams/core/java/tags/OD_v1_06_01_2014_07_21
### v1.6.0
* [OPENDRMS-85] - Alterar método createFile de Project para passar o código de tipo de arquivo "UNKNOWN".
* [OPENDRMS-69] - Alterar a IDL do Serviço OpenDreams para constar a versão da interface
* [OPENDRMS-87] - Permitir o uso de projetos compartilhados na execução de comandos remotos pelo OpenDreams
* [OPENDRMS-89] - Incluir o número da versão nas IDLs do OpenDreams e nos pacotes das classes java de implementação de valuetype e factory.
* [OPENDRMS-90] - Eliminar a classe TStamp do pacote tecgraf.openbus.opendreams
Este repositório foi gerado a partir da IDL e implementação dos valuetypes copiados do repositório:
https://subversion.tecgraf.puc-rio.br/engdist/opendreams/core/java/tags/OD_v1_06_00_2011_06_28
### v1.4.1
* [OPENDRMS-67] - A função getJobParameters do OpenDreamsJobTemplate não está funcionando
* [OPENDRMS-37] - Testar a execução de um fluxo pelo OpenDreams
* [OPENDRMS-49] - Estender o JobInfo para, no caso de fluxo, ter informações adicionais sobre seu término
* [OPENDRMS-51] - Tratar o parâmetro outputPath para juntar os logs de saída na execução de fluxo
* [OPENDRMS-64] - Incluir um campo no JobInfo estendido do OpenDreams para indicar o tipo de finalização do Job
* [OPENDRMS-68] - Tornar públicos os atributos OpenDreamsJobTemplate definidos na IDL
* [OPENDRMS-70] - Alterar a forma de geração de um id unívoco para o OpenDreamsJobTemplate
* [OPENDRMS-50] - Implementar o método jobStatus da api do DRMAA
Este repositório foi gerado a partir da IDL e implementação dos valuetypes copiados do repositório:
https://subversion.tecgraf.puc-rio.br/engdist/opendreams/core/java/tags/OD_v1_04_01_2010_11_03
### v1.2
* Pequenas correções na documentação da IDL
Este repositório foi gerado a partir da IDL e implementação dos valuetypes copiados do repositório:
https://subversion.tecgraf.puc-rio.br/engdist/opendreams/core/java/tags/OD_v1_02_00_2009_12_03
### v1.0
Este repositório foi gerado a partir da IDL e implementação dos valuetypes copiados do repositório:
https://subversion.tecgraf.puc-rio.br/engdist/opendreams/core/java/tags/OD_v1_00_00_2009_10_01
<?xml version="1.0" encoding="ISO-8859-1"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>br.puc-rio.tecgraf.opendreams</groupId>
<artifactId>opendreams-core-idl-v1.7</artifactId>
<version>1.7.1</version>
<name>API OpenDreams - OpenBus Distributed Resource and Algorithms Management Service</name>
<description>OpenDreams uma API inspirada no padro DRMAA para submisso, monitorao e controle de execuo remota de comandos em sistemas baseados no framework CSBase.</description>
<url>https://jira.tecgraf.puc-rio.br/confluence/display/OpenDreams/Home</url>
<properties>
<project.build.sourceEncoding>ISO-8859-1</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<nexus.url>http://nexus.tecgraf.puc-rio.br/nexus</nexus.url>
<jacorb.version>3.9</jacorb.version>
</properties>
<distributionManagement>
<repository>
<id>tecgraf-releases</id>
<name>Releases do Tecgraf</name>
<url>${nexus.url}/content/repositories/releases</url>
</repository>
<snapshotRepository>
<id>tecgraf-snapshots</id>
<name>Snapshots do Tecgraf</name>
<url>${nexus.url}/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
<repositories>
<repository>
<id>nexus</id>
<url>${nexus.url}/content/groups/public</url>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>idlj-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.jacorb</groupId>
<artifactId>jacorb-idl-compiler</artifactId>
<version>${jacorb.version}</version>
<scope>compile</scope>
</dependency>
</dependencies>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<compiler>jacorb</compiler>
</configuration>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<compilerArgument>-Xbootclasspath/p:${settings.localRepository}/org/jacorb/jacorb-omgapi/${jacorb.version}/jacorb-omgapi-${jacorb.version}.jar</compilerArgument>
</configuration>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>idlj-maven-plugin</artifactId>
<version>1.2.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.3</version>
</plugin>
</plugins>
</pluginManagement>
</build>
<dependencies>
<dependency>
<groupId>br.puc-rio.tecgraf.javautils</groupId>
<artifactId>javautils-core</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.jacorb</groupId>
<artifactId>jacorb</artifactId>
<version>${jacorb.version}</version>
</dependency>
<dependency>
<groupId>org.jacorb</groupId>
<artifactId>jacorb-omgapi</artifactId>
<version>${jacorb.version}</version>
</dependency>
<dependency>
<groupId>org.jacorb</groupId>
<artifactId>jacorb-idl-compiler</artifactId>
<version>${jacorb.version}</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
This diff is collapsed.
This diff is collapsed.
package tecgraf.openbus.DRMAA.v1_7;
import java.io.Serializable;
import org.omg.CORBA.portable.ValueFactory;
import org.omg.CORBA_2_3.portable.InputStream;
/**
* Fbrica para construo do tipo <code>JobTemplate</code>. Usado no
* unmarshalling de objetos desse tipo. Essa fbrica precisa ser registrada no
* ORB, usando o mtodo <code>register_value_factory</code>.
*
* @author Tecgraf PUC-Rio
*
*/
public class JobTemplateFactory implements ValueFactory {
/**
* {@inheritDoc}
*/
@Override
public Serializable read_value(InputStream is) {
JobTemplateImpl jt = new JobTemplateImpl();
return is.read_value(jt);
}
}
package tecgraf.openbus.DRMAA.v1_7;
/**
* Implementao default do JobTemplate.
*
* @author Tecgraf PUC-Rio
*
*/
public class JobTemplateImpl extends JobTemplate {
/**
* Construtor padro sem argumentos, usado no unmarshalling. Devido a sua
* existncia, o jacorb no precisa de uma fbrica separada para esse tipo.
* Esse um recurso especfico do JacORB e no padronizado no Corba.
*/
public JobTemplateImpl() {
this.remoteCommand = "";
this.args = new String[0];
this.jobSubmissionState = JobSubmissionState.ACTIVE_STATE;
this.transferFiles = new FileTransferMode(false, false, false);
}
@Override
public String[] attributeNames() {
return getAttributeNames();
}
/**
* Obtm o nome dos atributos implementados no JobTemplate DRMAA.
*
* @return o array com o nome dos atributos de um job template
*/
public static String[] getAttributeNames() {
return new String[] { "remote_command", "v_argv", "js_state", "v_env",
"wd", "working_directory", "job_category", "native_specification",
"v_email", "block_email", "start_time", "job_name", "input_path",
"output_path", "error_path", "join_files", "transfer_files",
"deadline_time", "wct_hlimit", "wct_slimit", "run_duration_hlimit",
"run_duration_slimit" };
}
}
package tecgraf.openbus.DRMAA.v1_7;
import java.util.Calendar;
/**
*
* @author Tecgraf PUC-Rio
*
*/
public class PartialTimestamp extends Calendar {
public static final int CENTURY = 21;
public static final int UNSET = 0;
public int getModifier(int field) {
return this.get(field);
}
public void setModifier(int field, int value) {
this.set(field, value);
}
@Override
public void add(int field, int amount) {
}
@Override
protected void computeFields() {
}
@Override
protected void computeTime() {
}
@Override
public int getGreatestMinimum(int field) {
return 0;
}
@Override
public int getLeastMaximum(int field) {
return 0;
}
@Override
public int getMaximum(int field) {
return 0;
}
@Override
public int getMinimum(int field) {
return 0;
}
@Override
public void roll(int field, boolean up) {
}
}
package tecgraf.openbus.opendreams.v1_7;
import java.io.Serializable;
import org.omg.CORBA.portable.ValueFactory;
import org.omg.CORBA_2_3.portable.InputStream;
/**
* Fbrica necessria para o marshalling do objeto que implementa o valuetype
* <code>JobInfo</code>.
*
* @author Tecgraf PUC-Rio
*/
public class JobInfoFactory implements ValueFactory {
/**
* {@inheritDoc}
*/
@Override
public Serializable read_value(InputStream is) {
return is.read_value(new JobInfoImpl());
}
}
package tecgraf.openbus.opendreams.v1_7;
import tecgraf.openbus.DRMAA.v1_7.JobInfo;
/**
* A classe <code>JobInfoImpl</code> implementa um valutype <code>JobInfo</code>
* .
*
* @author Tecgraf PUC-Rio
*
*/
public class JobInfoImpl extends JobInfo {
/**
* Construtor padro.
*/
public JobInfoImpl() {
this.resourceUsage = new String[0][0];
}
}
package tecgraf.openbus.opendreams.v1_7;
import java.io.Serializable;
import org.omg.CORBA.portable.ValueFactory;
import org.omg.CORBA_2_3.portable.InputStream;
/**
* Fbrica necessria para o marshalling do objeto que implementa o valuetype
* <code>FlowJobInfo</code>.
*
* @author Tecgraf PUC-Rio
*/
public class OpenDreamsJobInfoFactory implements ValueFactory {
/**
* {@inheritDoc}
*/
@Override
public Serializable read_value(InputStream is) {
return is.read_value(new OpenDreamsJobInfoImpl());
}
}
package tecgraf.openbus.opendreams.v1_7;
/**
* A classe <code>FlowJobInfoImpl</code> implementa um valuetype
* <code>FlowJobInfo</code>.
*
* @author Tecgraf PUC-Rio
*
*/
public class OpenDreamsJobInfoImpl extends OpenDreamsJobInfo {
/**
* Construtor padro.
*/
public OpenDreamsJobInfoImpl() {
this.resourceUsage = new String[0][0];
}
}
package tecgraf.openbus.opendreams.v1_7;
import java.io.Serializable;
import org.omg.CORBA.portable.ValueFactory;
import org.omg.CORBA_2_3.portable.InputStream;
/**
* Fbrica necessria para o marshalling do objeto que implementa o valuetype
* <code>OpenDreamsJobTemplate</code>.
*
* @author Tecgraf PUC-Rio
*/
public class OpenDreamsJobTemplateFactory implements ValueFactory {
/**
* {@inheritDoc}
*/
@Override
public Serializable read_value(InputStream is) {
return is.read_value(new OpenDreamsJobTemplateImpl());
}
}
package tecgraf.openbus.opendreams.v1_7;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import tecgraf.javautils.core.timestamp.TStamp32;
import tecgraf.openbus.DRMAA.v1_7.FileTransferMode;
import tecgraf.openbus.DRMAA.v1_7.JobSubmissionState;
import tecgraf.openbus.DRMAA.v1_7.JobTemplateImpl;
/**
* A classe <code>OpenDreamsJobTemplateImpl</code> implementa um
* <code>OpenDreamsJobTemplate</code>.
*
* Um job template do OpenDreams possui, alm dos atributos default do job
* template, outros atributos que so especficos para execuo de algoritmos ou
* fluxo de algoritmos no OpenDreams. Esses atributos adicionais so:
* <ul>
* <li>jobParameters: o conjunto de chave-valor que define os parmetros dos
* algoritmos.
* </ul>
*
* @author Tecgraf PUC-Rio
*
*/
public class OpenDreamsJobTemplateImpl extends OpenDreamsJobTemplate {
/** Mapa com os parmetros para execuo do job */
protected HashMap<String, String> jobParametersMap;
/**
* Construtor.
*/
public OpenDreamsJobTemplateImpl() {
this.id = new TStamp32().toLong();
this.remoteCommand = "";
this.args = new String[0];
this.jobSubmissionState = JobSubmissionState.ACTIVE_STATE;
this.jobEnvironment = new String[0][0];
this.email = new String[0];
this.blockEmail = false;
this.transferFiles = new FileTransferMode(false, false, false);
this.jobParameters = new String[0][0];
this.jobParametersMap = new HashMap<String, String>();
this.jobCategory = "CSBase";
}
/**
* {@inheritDoc}
*/
@Override
public boolean equals(Object o) {
if (o == null) {
return false;
}
if (!OpenDreamsJobTemplateImpl.class.isInstance(o)) {
return false;
}
OpenDreamsJobTemplateImpl other = OpenDreamsJobTemplateImpl.class.cast(o);
return this.id == other.id;
}
/**
* {@inheritDoc}
*/
@Override
public int hashCode() {
return (int) id;
}
/**
* {@inheritDoc}
*/
@Override
public String[] attributeNames() {
List<String> allAttributes =
Arrays.asList(JobTemplateImpl.getAttributeNames());
allAttributes.add("job_parameters");
allAttributes.add("job_description");
allAttributes.add("job_priority");
return allAttributes.toArray(new String[0]);
}
/**
* {@inheritDoc}
*/
@Override
public Object clone() throws CloneNotSupportedException {
OpenDreamsJobTemplateImpl newJobTemplate = new OpenDreamsJobTemplateImpl();
newJobTemplate.args = this.args;
newJobTemplate.blockEmail = this.blockEmail;
newJobTemplate.email = this.email;
newJobTemplate.errorPath = this.errorPath;
newJobTemplate.hardRunDurationLimit = this.hardRunDurationLimit;
newJobTemplate.hardWallClockTimeLimit = this.hardWallClockTimeLimit;
newJobTemplate.inputPath = this.inputPath;
newJobTemplate.jobCategory = this.jobCategory;
newJobTemplate.jobDescription = this.jobDescription;
newJobTemplate.jobEnvironment = this.jobEnvironment;
newJobTemplate.jobName = this.jobName;
newJobTemplate.jobParameters = this.jobParameters;
newJobTemplate.jobPriority = this.jobPriority;
newJobTemplate.jobSubmissionState = this.jobSubmissionState;
newJobTemplate.joinFiles = this.joinFiles;
newJobTemplate.nativeSpecification = this.nativeSpecification;
newJobTemplate.outputPath = this.outputPath;
newJobTemplate.remoteCommand = this.remoteCommand;
newJobTemplate.softRunDurationLimit = this.softRunDurationLimit;
newJobTemplate.softWallClockTimeLimit = this.softWallClockTimeLimit;
newJobTemplate.transferFiles = this.transferFiles;
newJobTemplate.workingDirectory = this.workingDirectory;
return newJobTemplate;
}
}