Skip to content

Commit

Permalink
Merge pull request #137 from scc-digitalhub/argoworkflows-v2
Browse files Browse the repository at this point in the history
Argoworkflows v2
  • Loading branch information
matteo-s authored Nov 8, 2024
2 parents 6c2b6f7 + c328816 commit ebf672f
Show file tree
Hide file tree
Showing 31 changed files with 2,606 additions and 62 deletions.
5 changes: 5 additions & 0 deletions application/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,11 @@
<artifactId>dh-framework-kaniko</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>it.smartcommunitylabdhub</groupId>
<artifactId>dh-framework-argo</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>it.smartcommunitylabdhub</groupId>
<artifactId>dh-runtime-container</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -386,6 +386,23 @@ public Workflow updateWorkflow(@NotNull String id, @NotNull Workflow workflowDTO
}
}


@Override
public Workflow updateWorkflow(@NotNull String id, @NotNull Workflow workflowDTO, boolean force)
throws NoSuchEntityException {
log.debug("force update workflow with id {}", String.valueOf(id));
try {
//force update
//no validation
return entityService.update(id, workflowDTO);
} catch (NoSuchEntityException e) {
throw new NoSuchEntityException(EntityName.WORKFLOW.toString());
} catch (StoreException e) {
log.error("store error: {}", e.getMessage());
throw new SystemException(e.getMessage());
}
}

@Override
public void deleteWorkflow(@NotNull String id, @Nullable Boolean cascade) {
log.debug("delete workflow with id {}", String.valueOf(id));
Expand Down
5 changes: 5 additions & 0 deletions application/src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,11 @@ registry:
name: ${DOCKER_REGISTRY:}
secret: ${DOCKER_REGISTRY_SECRET:}

argoworkflows:
artifacts:
configmap: ${ARGOWORKFLOWS_ARTIFACTS_CONFIGMAP:artifact-repositories}
key: ${ARGOWORKFLOWS_ARTIFACTS_KEY:default-artifact-repository}
serviceaccount: ${ARGOWORKFLOWS_SERVICE_ACCOUNT:default}

# Kubernetes
kubernetes:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,16 @@ Workflow createWorkflow(@NotNull Workflow workflowDTO)
Workflow updateWorkflow(@NotNull String id, @NotNull Workflow workflowDTO)
throws NoSuchEntityException, BindException, IllegalArgumentException, SystemException;

/**
* Update a specific workflow version
* @param id
* @param workflowDTO
* @param force
* @return
* @throws NoSuchEntityException
*/
Workflow updateWorkflow(@NotNull String id, @NotNull Workflow workflowDTO, boolean force)
throws NoSuchEntityException, SystemException;
/**
* Delete a specific workflow (version) via unique ID
* @param id
Expand Down
83 changes: 83 additions & 0 deletions modules/framework-argo/.flattened-pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>it.smartcommunitylabdhub</groupId>
<artifactId>dh-framework-argo</artifactId>
<version>0.8.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>it.smartcommunitylabdhub</groupId>
<artifactId>dh-commons</artifactId>
<version>0.8.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>it.smartcommunitylabdhub</groupId>
<artifactId>dh-framework-k8s</artifactId>
<version>0.8.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>it.smartcommunitylabdhub</groupId>
<artifactId>dh-fsm</artifactId>
<version>0.8.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.kubernetes</groupId>
<artifactId>client-java</artifactId>
<version>21.0.0-legacy</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.34</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.16.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-cbor</artifactId>
<version>2.16.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
<version>2.16.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-jsonSchema</artifactId>
<version>2.16.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.16.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.9</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>2.0.9</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
240 changes: 240 additions & 0 deletions modules/framework-argo/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,240 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>it.smartcommunitylabdhub</groupId>
<artifactId>digitalhub-core</artifactId>
<version>${revision}</version>
<relativePath>../../</relativePath> <!-- lookup parent from repository -->
</parent>
<groupId>it.smartcommunitylabdhub</groupId>
<artifactId>dh-framework-argo</artifactId>
<name>framework-argo</name>
<description>DHCore framework-argo</description>
<properties>
<argo.version>v3.5.11</argo.version>
</properties>

<dependencies>
<dependency>
<groupId>it.smartcommunitylabdhub</groupId>
<artifactId>dh-commons</artifactId>
<version>${revision}</version>
</dependency>

<dependency>
<groupId>it.smartcommunitylabdhub</groupId>
<artifactId>dh-framework-k8s</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>it.smartcommunitylabdhub</groupId>
<artifactId>dh-fsm</artifactId>
<version>${revision}</version>
</dependency>

<dependency>
<groupId>io.kubernetes</groupId>
<artifactId>client-java</artifactId>
<version>${kubernetes.version}</version>
</dependency>

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>${spring-boot.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-cbor</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-jsonSchema</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>${jackson.version}</version> <!-- Use the latest version available -->
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version> <!-- or the latest version -->
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>${slf4j.version}</version> <!-- or the latest version -->
</dependency>

</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<!-- <version>7.8.0</version> -->
<version>5.2.1</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>
https://raw.githubusercontent.com/argoproj/argo-workflows/refs/tags/${argo.version}/api/openapi-spec/swagger.json</inputSpec>
<generatorName>java</generatorName>
<output>${project.build.directory}/generated-sources</output>
<apiPackage>io.argoproj.workflow.apis</apiPackage>
<modelPackage>io.argoproj.workflow.models</modelPackage>
<invokerPackage>io.argoproj.workflow</invokerPackage>
<groupId>io.argoproj.workflow</groupId>
<artifactId>argo-client-java</artifactId>
<skipValidateSpec>true</skipValidateSpec>
<generateAliasAsModel>true</generateAliasAsModel>
<generateSupportingFiles>true</generateSupportingFiles>
<supportingFilesToGenerate>
JSON.java,ApiClient.java,ApiException.java,ApiCallback.java,ApiResponse.java,Pair.java,Authentication.java,ServerConfiguration.java,ServerVariable.java,HttpBasicAuth.java,HttpBearerAuth.java,ApiKeyAuth.java,JavaTimeFormatter.java,BaseApi.java,RFC3339DateFormat.java,ProgressRequestBody.java,ProgressResponseBody.java,StringUtil.java
</supportingFilesToGenerate>
<generateApis>false</generateApis>
<generateApiTests>false</generateApiTests>
<generateApiDocumentation>false</generateApiDocumentation>
<generateModelTests>false</generateModelTests>
<generateModelDocumentation>false</generateModelDocumentation>
<typeMappings>
<typeMapping>io.k8s.apimachinery.pkg.apis.meta.v1.Time=Date</typeMapping>
<typeMapping>
io.k8s.api.core.v1.Affinity=V1Affinity</typeMapping>
<typeMapping>
io.k8s.api.core.v1.ConfigMapKeySelector=V1ConfigMapKeySelector</typeMapping>
<typeMapping>
io.k8s.api.core.v1.Container=V1Container</typeMapping>
<typeMapping>
io.k8s.api.core.v1.ContainerPort=V1ContainerPort</typeMapping>
<typeMapping>
io.k8s.api.core.v1.EnvFromSource=V1EnvFromSource</typeMapping>
<typeMapping>io.k8s.api.core.v1.EnvVar=V1EnvVar</typeMapping>
<typeMapping>
io.k8s.api.core.v1.HostAlias=V1HostAlias</typeMapping>
<typeMapping>
io.k8s.api.core.v1.Lifecycle=V1Lifecycle</typeMapping>
<typeMapping>
io.k8s.api.core.v1.ListMeta=V1ListMeta</typeMapping>
<typeMapping>
io.k8s.api.core.v1.LocalObjectReference=V1LocalObjectReference</typeMapping>
<typeMapping>
io.k8s.api.core.v1.ObjectReference=V1ObjectReference</typeMapping>
<typeMapping>
io.k8s.api.core.v1.PersistentVolumeClaim=V1PersistentVolumeClaim</typeMapping>
<typeMapping>
io.k8s.api.core.v1.PodDisruptionBudgetSpec=V1beta1PodDisruptionBudgetSpec</typeMapping>
<typeMapping>
io.k8s.api.core.v1.PodDNSConfig=V1PodDNSConfig</typeMapping>
<typeMapping>
io.k8s.api.core.v1.PodSecurityContext=V1PodSecurityContext</typeMapping>
<typeMapping>io.k8s.api.core.v1.Probe=V1Probe</typeMapping>
<typeMapping>
io.k8s.api.core.v1.ResourceRequirements=V1ResourceRequirements</typeMapping>
<typeMapping>
io.k8s.api.core.v1.SecretKeySelector=V1SecretKeySelector</typeMapping>
<typeMapping>
io.k8s.api.core.v1.SecurityContext=V1SecurityContext</typeMapping>
<typeMapping>
io.k8s.api.core.v1.Toleration=V1Toleration</typeMapping>
<typeMapping>io.k8s.api.core.v1.Volume=V1Volume</typeMapping>
<typeMapping>
io.k8s.api.core.v1.VolumeDevice=V1VolumeDevice</typeMapping>
<typeMapping>
io.k8s.api.core.v1.VolumeMount=V1VolumeMount</typeMapping>
<typeMapping>
io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta=V1ObjectMeta</typeMapping>
</typeMappings>
<importMappings>
<importMapping>Date=java.util.Date</importMapping>
<importMapping>
V1Affinity=io.kubernetes.client.openapi.models.V1Affinity</importMapping>
<importMapping>
V1ConfigMapKeySelector=io.kubernetes.client.openapi.models.V1ConfigMapKeySelector</importMapping>
<importMapping>
V1Container=io.kubernetes.client.openapi.models.V1Container</importMapping>
<importMapping>
V1ContainerPort=io.kubernetes.client.openapi.models.V1ContainerPort</importMapping>
<importMapping>
V1EnvFromSource=io.kubernetes.client.openapi.models.V1EnvFromSource</importMapping>
<importMapping>V1EnvVar=io.kubernetes.client.openapi.models.V1EnvVar</importMapping>
<importMapping>
V1HostAlias=io.kubernetes.client.openapi.models.V1HostAlias</importMapping>
<importMapping>
V1Lifecycle=io.kubernetes.client.openapi.models.V1Lifecycle</importMapping>
<importMapping>
V1ListMeta=io.kubernetes.client.openapi.models.V1ListMeta</importMapping>
<importMapping>
V1LocalObjectReference=io.kubernetes.client.openapi.models.V1LocalObjectReference</importMapping>
<importMapping>
V1ObjectMeta=io.kubernetes.client.openapi.models.V1ObjectMeta</importMapping>
<importMapping>
V1ObjectReference=io.kubernetes.client.openapi.models.V1ObjectReference</importMapping>
<importMapping>
V1PersistentVolumeClaim=io.kubernetes.client.openapi.models.V1PersistentVolumeClaim</importMapping>
<importMapping>
V1beta1PodDisruptionBudgetSpec=io.kubernetes.client.openapi.models.V1beta1PodDisruptionBudgetSpec</importMapping>
<importMapping>
V1PodDNSConfig=io.kubernetes.client.openapi.models.V1PodDNSConfig</importMapping>
<importMapping>
V1PodSecurityContext=io.kubernetes.client.openapi.models.V1PodSecurityContext</importMapping>
<importMapping>V1Probe=io.kubernetes.client.openapi.models.V1Probe</importMapping>
<importMapping>
V1ResourceRequirements=io.kubernetes.client.openapi.models.V1ResourceRequirements</importMapping>
<importMapping>
V1SecretKeySelector=io.kubernetes.client.openapi.models.V1SecretKeySelector</importMapping>
<importMapping>
V1SecurityContext=io.kubernetes.client.openapi.models.V1SecurityContext</importMapping>
<importMapping>
V1Toleration=io.kubernetes.client.openapi.models.V1Toleration</importMapping>
<importMapping>V1Volume=io.kubernetes.client.openapi.models.V1Volume</importMapping>
<importMapping>
V1VolumeDevice=io.kubernetes.client.openapi.models.V1VolumeDevice</importMapping>
<importMapping>
V1VolumeMount=io.kubernetes.client.openapi.models.V1VolumeMount</importMapping>
</importMappings>
<configOptions>
<sourceFolder>src/java/main</sourceFolder>
<java8>true</java8>
<dateLibrary>java8</dateLibrary>
<hideGenerationTimestamp>true</hideGenerationTimestamp>
<useJakartaEe>true</useJakartaEe>
<openApiNullable>false</openApiNullable>
<!-- <library>resttemplate</library> -->
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Loading

0 comments on commit ebf672f

Please sign in to comment.