Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

link to postgres database with hibernate + import job on status succe… #137

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import java.util.logging.Level;
import java.util.logging.Logger;

import gov.nist.itl.ssd.wipp.backend.argo.workflows.persistence.ArgoWorkflow;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.ServiceLocatorFactoryBean;
Expand All @@ -27,6 +28,7 @@
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.core.type.filter.AnnotationTypeFilter;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.data.rest.core.config.RepositoryRestConfiguration;
import org.springframework.hateoas.config.EnableEntityLinks;
import org.springframework.hateoas.config.EnableHypermediaSupport;
Expand Down Expand Up @@ -55,15 +57,16 @@
@ComponentScan(basePackages = {"gov.nist.itl.ssd.wipp.backend"})
@EnableAutoConfiguration
@EnableEntityLinks
@EnableJpaRepositories(basePackageClasses = ArgoWorkflow.class)
@EnableHypermediaSupport(type = EnableHypermediaSupport.HypermediaType.HAL)
@EnableWebMvc
@EnableSwagger2WebMvc
@Import({ SpringDataRestConfiguration.class })
public class Application implements WebMvcConfigurer {

@Autowired
private CoreConfig coreConfig;

public static void main(String[] args) {
ConfigurableApplicationContext ctx = SpringApplication.run(
Application.class, args);
Expand Down Expand Up @@ -101,11 +104,11 @@ public ServiceLocatorFactoryBean serviceLocatorBean(){
bean.setServiceLocatorInterface(DataHandlerFactory.class);
return bean;
}

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// Force creation of pyramids folder to avoid pyramids viewing being
// unavailable at first launch
// unavailable at first launch
File pyramidsFolderFile = new File(coreConfig.getPyramidsFolder());
if(! pyramidsFolderFile.exists()) {
pyramidsFolderFile.mkdirs();
Expand All @@ -122,35 +125,35 @@ public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler(CoreConfig.BASE_URI + "/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}

@Override
public void addViewControllers(ViewControllerRegistry registry) {
// Add redirects to move Swagger UI under /api/
registry.addRedirectViewController(CoreConfig.BASE_URI + "/v2/api-docs",
registry.addRedirectViewController(CoreConfig.BASE_URI + "/v2/api-docs",
"/v2/api-docs");
registry.addRedirectViewController(CoreConfig.BASE_URI + "/swagger-resources/configuration/ui",
"/swagger-resources/configuration/ui");
registry.addRedirectViewController(CoreConfig.BASE_URI + "/swagger-resources/configuration/security",
"/swagger-resources/configuration/security");
registry.addRedirectViewController(CoreConfig.BASE_URI + "/swagger-resources",
registry.addRedirectViewController(CoreConfig.BASE_URI + "/swagger-resources",
"/swagger-resources");
}

/**
* Configure Swagger API documentation
* @return API Documentation configuration
*/
@Bean
public Docket wippApi() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.paths(PathSelectors.regex("/error.*").negate())
.paths(PathSelectors.regex("/api/profile").negate())
// workaround to avoid duplicate entries for plugins
.paths(PathSelectors.regex("/api/plugins").negate())
.build()
.build()
// manually create tags to manage custom descriptions
.tags(
new Tag("CsvCollection Entity", "REST API for CSV Collections"),
Expand All @@ -167,7 +170,7 @@ public Docket wippApi() {
.apiInfo(apiEndPointsInfo())
.enableUrlTemplating(true);
}

/**
* Configure Swagger API general information
* @return API information
Expand Down
11 changes: 11 additions & 0 deletions wipp-backend-application/src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,17 @@ [email protected]@
# Data storage root folder configuration
[email protected]@


#Postgres JPA
spring.datasource.platform=postgres
#spring.datasource.url= jdbc:postgresql://localhost:5432/postgres
spring.datasource.url= jdbc:postgresql://localhost:7000/postgres
Comment on lines +16 to +17
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you create a new property in the pom to set the url?
Something like @postgres.url@ that in then set in the wipp-backend-application pom for both profiles

spring.datasource.username=wipp
spring.datasource.password=wipp
spring.data.jpa.repositories.type = none
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQL9Dialect


# Workflow management configuration
[email protected]@
[email protected]@
Expand Down
11 changes: 11 additions & 0 deletions wipp-backend-argo-workflows/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,16 @@
<artifactId>wipp-backend-core</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20090211</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180813</version>
<scope>compile</scope>
</dependency>
Comment on lines +30 to +40
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why two versions?

</dependencies>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
package gov.nist.itl.ssd.wipp.backend.argo.workflows.persistence;

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;


@Entity
@Table(name = "argo_workflows")
public class ArgoWorkflow {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private String id;

private String name;

private String phase;

private String namespace;

private String workflow;

private Date startedat;

private Date finishedat;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getPhase() {
return phase;
}

public void setPhase(String phase) {
this.phase = phase;
}

public String getNamespace() {
return namespace;
}

public void setNamespace(String namespace) {
this.namespace = namespace;
}

public String getWorkflow() {
return workflow;
}

public void setWorkflow(String workflow) {
this.workflow = workflow;
}

public Date getStartedat() {
return startedat;
}

public void setStartedat(Date startedat) {
this.startedat = startedat;
}

public Date getFinishedat() {
return finishedat;
}

public void setFinishedat(Date finishedat) {
this.finishedat = finishedat;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/**
*
*/
package gov.nist.itl.ssd.wipp.backend.argo.workflows.persistence;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;

import java.util.List;


/**
* @author Mylene Simon <mylene.simon at nist.gov>
* @author Mohamed Ouladi <mohamed.ouladi at nist.gov>
*
*/
@RepositoryRestResource
public interface ArgoWorkflowRepository extends JpaRepository<ArgoWorkflow, Integer>{

List<ArgoWorkflow> findByNameContainingIgnoreCase(@Param("name") String name);

ArgoWorkflow findByName(@Param("name") String name);

ArgoWorkflow findById(@Param("id") String id);

List<ArgoWorkflow> findAll();

}
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
@Component
public class WorkflowConverter {
private Workflow workflow;
private gov.nist.itl.ssd.wipp.backend.argo.workflows.persistence.ArgoWorkflow argoWorkflow;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it used in this class?

private Map<Job, List<String>> jobsDependencies;
private Map<Job, Plugin> jobsPlugins;

Expand All @@ -63,7 +64,7 @@ private HashMap<String, String> generateMetadata() {

private List<ArgoVolume> generateSpecVolumes() {
ArrayList<ArgoVolume> argoVolumeList = new ArrayList<>();
ArgoVolume inputArgoVolume = new ArgoVolume(wippDataVolumeName,
ArgoVolume inputArgoVolume = new ArgoVolume(wippDataVolumeName,
coreConfig.getWippDataPVCName());
argoVolumeList.add(inputArgoVolume);

Expand Down Expand Up @@ -226,7 +227,7 @@ private ArgoTemplateExitHandlerContainer generateTemplateExitHandlerContainer()
return container;
}
/**
* Get and parse nodeSelector labels for all jobs within workflow.
* Get and parse nodeSelector labels for all jobs within workflow.
* Can be overridden by nodeSelector in container template.
* Expects nodeSelector to be formatted as key-value pairs split by semi-colons (eg. "key1:value1;key2:value2;").
* @return nodeSelector labels as a Map
Expand Down Expand Up @@ -339,12 +340,12 @@ public void convert(Workflow workflow, Map<Job, List<String>> jobsDependencies,
private String getOutputMountPath(String jobId){
return coreConfig.getContainerOutputsMountPath() + "/" + jobId;
}

/**
* Get data volume mount sub path for job work folder
* Get data volume mount sub path for job work folder
* (relative to root in data volume)
* @param jobId
* @return the sub path of the data volume to mount
* @return the sub path of the data volume to mount
*/
private String getOutputMountSubPath(String jobId){
return new File(coreConfig.getJobsTempFolder(), jobId).getAbsolutePath()
Expand Down
Loading