From 39cd02490e7d1d0dd7cfb1a21801340a171f2b66 Mon Sep 17 00:00:00 2001 From: Nicholas Caughey Date: Fri, 16 Jun 2023 13:55:28 +0100 Subject: [PATCH] added the missing file for creating tasks from scratch --- src/main/java/rest/TektonTaskCreate.java | 250 +++++++++++++++-------- 1 file changed, 169 insertions(+), 81 deletions(-) diff --git a/src/main/java/rest/TektonTaskCreate.java b/src/main/java/rest/TektonTaskCreate.java index eb2bca9..761c2bd 100644 --- a/src/main/java/rest/TektonTaskCreate.java +++ b/src/main/java/rest/TektonTaskCreate.java @@ -1,82 +1,170 @@ -// package io.rest; - -// import io.fabric8.tekton.client.DefaultTektonClient; -// import io.fabric8.tekton.client.TektonClient; - -// import org.eclipse.microprofile.rest.client.inject.RestClient; -// import dto.ScanObj; - -// import javax.inject.Inject; -// import javax.validation.Valid; -// import javax.ws.rs.Consumes; -// import javax.ws.rs.POST; -// import javax.ws.rs.Path; -// import java.net.URI; -// import java.net.URISyntaxException; -// import java.util.ArrayList; -// import java.util.Arrays; -// import java.util.List; -// import java.util.UUID; -// import org.json.JSONObject; -// import org.json.JSONArray; -// import dto.ScanObj; -// import dto.ConnectDB; -// import dto.ScanObjPayload; - -// import static constants.HttpHeaders.AUTHORIZATION_STRING; -// import java.sql.Connection; -// import java.sql.DriverManager; -// import java.sql.SQLException; - - -// import io.fabric8.tekton.client.DefaultTektonClient; -// import io.fabric8.tekton.client.TektonClient; -// import io.fabric8.tekton.pipeline.v1beta1.ArrayOrString; -// import io.fabric8.tekton.pipeline.v1beta1.PipelineRunBuilder; -// import io.fabric8.tekton.triggers.v1alpha1.TriggerTemplateBuilder; - -// import java.util.Collections; - -// import java.sql.Connection; -// import java.sql.DriverManager; -// import java.sql.ResultSet; -// import java.sql.Statement; - -// @Path("/tektonCall") -// public class TektonTaskCreate { +// package rest; + + +import io.fabric8.tekton.client.DefaultTektonClient; +import io.fabric8.tekton.client.TektonClient; + + +import javax.inject.Inject; +import javax.validation.Valid; +import javax.ws.rs.Consumes; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; +import org.json.JSONObject; +import org.json.JSONArray; +import dto.ScanObj; +import dto.BrewObj; +import dto.ConnectDB; +import dto.ScanObjPayload; +import dto.BrewObjPayload; +import dto.GitObj; +import dto.GitObjPayload; +import dto.PncObj; +import dto.PncObjPayload; + +import static constants.HttpHeaders.AUTHORIZATION_STRING; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.Statement; + +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.Set; +import dto.ScanObj; +import dto.ConnectDB; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.Statement; + +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.inject.Inject; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import java.util.Set; +import java.util.stream.Collectors; +import javax.inject.Inject; +import javax.ws.rs.Consumes; + +import java.sql.*; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectWriter; + +// import org.hibernate.EntityManager; +import jakarta.persistence.EntityManager; +import jakarta.persistence.Cacheable; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import jakarta.persistence.NamedQuery; +import jakarta.persistence.QueryHint; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; + + +import io.fabric8.tekton.client.DefaultTektonClient; +import io.fabric8.tekton.client.TektonClient; +import io.fabric8.tekton.pipeline.v1beta1.TaskBuilder; +import io.fabric8.tekton.pipeline.v1beta1.Task; + +import org.eclipse.microprofile.rest.client.inject.RestClient; +import dto.ScanObj; + +import javax.inject.Inject; +import javax.validation.Valid; +import javax.ws.rs.Consumes; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; +import org.json.JSONObject; +import org.json.JSONArray; +import dto.ScanObj; +import dto.BrewObj; +import dto.ConnectDB; +import dto.ScanObjPayload; +import dto.BrewObjPayload; +import dto.GitObj; +import dto.GitObjPayload; +import dto.PncObj; +import dto.PncObjPayload; + +import static constants.HttpHeaders.AUTHORIZATION_STRING; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.Statement; + +import io.fabric8.tekton.client.DefaultTektonClient; +import io.fabric8.tekton.client.TektonClient; +import io.fabric8.tekton.pipeline.v1beta1.TaskBuilder; +import io.fabric8.tekton.pipeline.v1beta1.TaskRunBuilder; + +public class TektonTaskCreate { -// private static final String NAMESPACE = "default"; - -// @RestClient - -// @POST -// @Consumes({ "application/json" }) - -// public void invokeTektonTask(@Valid String nvr) throws URISyntaxException { -// try (TektonClient tkn = new DefaultTektonClient()) { -// // Create Task -// String argCall = String.format("mock-build --config=rhel-r-x86_64 --brew-build %s",nvr); -// tkn.v1beta1().tasks().inNamespace(NAMESPACE).createOrReplace() -// .withNewMetadata().withName("tekton-osh-cli").endMetadata() -// .withNewSpec() -// .addNewStep() -// .withName("osh-config") -// .withImage("alpine:3.12") -// .withCommand("osh-cli") -// .withArgs(argCall) -// .endStep() -// .endSpec() -// .done(); - -// // Create TaskRun -// tkn.v1beta1().taskRuns().inNamespace(NAMESPACE).createOrReplace() -// .withNewMetadata().withName("tekton-osh-cli-task-run").endMetadata() -// .withNewSpec() -// .withNewTaskRef() -// .withName("tekton-osh-cli") -// .endTaskRef() -// .endSpec() -// .done(); -// } -// } -// } \ No newline at end of file + @RestClient + + + private static final String NAMESPACE = "default"; + + @POST + @Consumes({ "application/json" }) + public static void invokeTektonTask(String config, String nvr) { + //dont leave this in live needs to be adjusted (currently would cause a ton of issues) + String tektonArgs = "osh-cli mock-build --config="+config+"--brew-build"+nvr; + try (TektonClient tkn = new DefaultTektonClient()) { + // Create Task + tkn.v1beta1().tasks().inNamespace(NAMESPACE).resource(new TaskBuilder() + .withNewMetadata().withName("tekton-osh-client").endMetadata() + .withNewSpec() + .addNewStep() + .withName("osh-client") + .withImage("alpine:3.12") + .withCommand("osh-cli") + .withArgs(tektonArgs) + .endStep() + .endSpec() + .build()).createOrReplace(); + + // Create TaskRun + tkn.v1beta1().taskRuns().inNamespace(NAMESPACE).resource(new TaskRunBuilder() + .withNewMetadata().withName("tekton-osh-client-task-run").endMetadata() + .withNewSpec() + .withNewTaskRef() + .withName("tekton-osh-client") + .endTaskRef() + .endSpec() + .build()).createOrReplace(); + } + } +} \ No newline at end of file