package rest; import javax.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"; } }