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"; + } + +}