diff --git a/pom.xml b/pom.xml
index f3959e6..f44d73c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,6 +49,59 @@
json
20220320
+
+ io.quarkiverse.tektonclient
+ quarkus-tekton-client
+ 1.0.1
+
+
+ io.quarkus
+ quarkus-resteasy-reactive
+
+
+ io.quarkus
+ quarkus-arc
+
+
+ io.quarkus
+ quarkus-junit5
+ test
+
+
+ io.rest-assured
+ rest-assured
+ test
+
+
+
+ jakarta.inject
+ jakarta.inject-api
+ 2.0.1
+
+
+
+ jakarta.ws.rs
+ jakarta.ws.rs-api
+ 3.1.0
+
+
+
+ org.apache.commons
+ commons-lang3
+ 3.12.0
+
+
+
+ javax.inject
+ javax.inject
+ 1
+
+
+ io.fabric8
+ tekton-client
+ 6.7.2
+
+
org.postgresql
diff --git a/src/main/java/rest/CreateScanRequest.java b/src/main/java/rest/CreateScanRequest.java
index ff3e0e2..c3ac64c 100644
--- a/src/main/java/rest/CreateScanRequest.java
+++ b/src/main/java/rest/CreateScanRequest.java
@@ -30,6 +30,7 @@ public class CreateScanRequest {
@RestClient
CreateScanService createScanService;
+ GreetingResource greetingResource;
@POST
@Path("/brew")
@@ -52,6 +53,7 @@ public class CreateScanRequest {
} catch (SQLException e) {
logger.error(e.getMessage());
}
+ greetingResource.invokeScanTask(brewObj.brewNvr);
return brewObj;
}
diff --git a/src/main/java/rest/CreateStartScan.java b/src/main/java/rest/CreateStartScan.java
index 9371dc1..87083a3 100644
--- a/src/main/java/rest/CreateStartScan.java
+++ b/src/main/java/rest/CreateStartScan.java
@@ -25,6 +25,7 @@ public class CreateStartScan {
@RestClient
CreateScanService createScanService;
+ GreetingResource greetingResource;
@PUT
@Path("/{scanId}")
diff --git a/src/main/java/rest/GreetingResource.java b/src/main/java/rest/GreetingResource.java
new file mode 100644
index 0000000..f7b247e
--- /dev/null
+++ b/src/main/java/rest/GreetingResource.java
@@ -0,0 +1,68 @@
+package rest;
+
+import jakarta.inject.Inject;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.core.MediaType;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.lang3.RandomStringUtils;
+
+import io.fabric8.tekton.client.TektonClient;
+import io.fabric8.tekton.pipeline.v1beta1.ArrayOrString;
+import io.fabric8.tekton.pipeline.v1beta1.Param;
+import io.fabric8.tekton.pipeline.v1beta1.TaskRun;
+import io.fabric8.tekton.pipeline.v1beta1.TaskRunBuilder;
+
+public class GreetingResource {
+
+ public static final String NAMESPACE = "pct-security-tooling";
+ public static final String BUILD_ID = "buildId";
+ public static final String SCAN_PROFILE = "scanProfile";
+ public static final String TASK_REFERENCE = "osh-scan-task";
+ public static final String SERVICE_ACCOUNT = "osh-wrapper-client-sa";
+
+ @Inject
+ TektonClient tektonClient;
+
+ public String listPipelines() {
+
+ List pipelineList = new ArrayList<>();
+
+ tektonClient.v1beta1().pipelines()
+ .inNamespace(NAMESPACE)
+ .list()
+ .getItems()
+ .forEach(p -> pipelineList.add(p.getMetadata().getName()));
+
+ return pipelineList.toString();
+ }
+
+ public String invokeScanTask(String buildId) {
+ // String buildId = "xterm-366-8.el9";
+ String scanProfile = "snyk-only-unstable";
+
+ // random taskrun name generating for now
+ TaskRun taskRun = new TaskRunBuilder().withNewMetadata().withName("osh-scan-taskrun-" + RandomStringUtils.randomAlphanumeric(8).toLowerCase())
+ .endMetadata()
+ .withNewSpec()
+ .withServiceAccountName(SERVICE_ACCOUNT)
+ .withNewTaskRef()
+ .withName(TASK_REFERENCE)
+ .endTaskRef()
+ .withParams(
+ new Param("buildId", new ArrayOrString(buildId)),
+ new Param("scanProfile", new ArrayOrString(scanProfile)))
+ .endSpec()
+ .build();
+
+ tektonClient.v1beta1().taskRuns().inNamespace(NAMESPACE).resource(taskRun).create();
+
+
+ return "Scan invoked";
+ }
+
+}