From a71996607ccb63b566db4521cf7aae1b4b8ab61e Mon Sep 17 00:00:00 2001 From: Nicholas Caughey Date: Fri, 16 Jun 2023 13:36:21 +0100 Subject: [PATCH 1/7] contians the files for testing createoing tekton tasks --- pom.xml | 5 + src/main/java/rest/TektonResourceClient.java | 20 ++++ src/main/java/rest/TektonTaskCreate.java | 82 +++++++++++++ src/main/java/rest/baseScan.yml | 16 +++ src/main/java/rest/callTekton.java | 116 +++++++++++++++++++ 5 files changed, 239 insertions(+) create mode 100644 src/main/java/rest/TektonResourceClient.java create mode 100644 src/main/java/rest/TektonTaskCreate.java create mode 100644 src/main/java/rest/baseScan.yml create mode 100644 src/main/java/rest/callTekton.java diff --git a/pom.xml b/pom.xml index a884d11..9b67a96 100644 --- a/pom.xml +++ b/pom.xml @@ -50,6 +50,11 @@ + + io.fabric8 + tekton-client + 6.7.2 + io.quarkus quarkus-openshift diff --git a/src/main/java/rest/TektonResourceClient.java b/src/main/java/rest/TektonResourceClient.java new file mode 100644 index 0000000..5db3239 --- /dev/null +++ b/src/main/java/rest/TektonResourceClient.java @@ -0,0 +1,20 @@ +// package rest; + +// import java.util.List; + +// import jakarta.enterprise.context.ApplicationScoped; +// import io.fabric8.tekton.client.TektonClient; +// import io.fabric8.tekton.pipeline.v1beta1.Pipeline; + + +// @ApplicationScoped +// public class TektonResourceClient { + +// // @Inject +// TektonClient tektonClient;l + +// public List listPipelines() { +// return tektonClient.v1beta1().pipelines().list().getItems(); +// } + +// } \ No newline at end of file diff --git a/src/main/java/rest/TektonTaskCreate.java b/src/main/java/rest/TektonTaskCreate.java new file mode 100644 index 0000000..eb2bca9 --- /dev/null +++ b/src/main/java/rest/TektonTaskCreate.java @@ -0,0 +1,82 @@ +// 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 { + +// 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 diff --git a/src/main/java/rest/baseScan.yml b/src/main/java/rest/baseScan.yml new file mode 100644 index 0000000..0b8ef77 --- /dev/null +++ b/src/main/java/rest/baseScan.yml @@ -0,0 +1,16 @@ +apiVersion: tekton.dev/v1beta1 +kind: Task +metadata: + name: basescan +spec: + params: + - name: buildId + type: string + - name: config + type: string + steps: + - name: baseScan + image: ubuntu + script: | + #!/bin/bash + osh-cli mock-build --config=params.config --brew-build params.buildId \ No newline at end of file diff --git a/src/main/java/rest/callTekton.java b/src/main/java/rest/callTekton.java new file mode 100644 index 0000000..f61378c --- /dev/null +++ b/src/main/java/rest/callTekton.java @@ -0,0 +1,116 @@ +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; + +public class callTekton { + + private static final String NAMESPACE = "default"; + + public static void main(String[] args) { + try (TektonClient tkn = new DefaultTektonClient()) { + // Load Task object from YAML + Task task = tkn.v1beta1() + .tasks() + .load(callTekton.class.getResourceAsStream("/baseScan.yml")).get(); + + // Create Task object into Kubernetes + tkn.v1beta1().tasks().inNamespace(NAMESPACE).createOrReplace(task); + + // Get Task object from APIServer + String taskName = task.getMetadata().getName(); + task = tkn.v1beta1().tasks().inNamespace(NAMESPACE) + .withName(taskName) + .get(); + + // Delete Task object + tkn.v1beta1().tasks().inNamespace(NAMESPACE).withName(taskName).delete(); + } + } +} \ No newline at end of file From 76f597877717a31cf8ac457ba21339c3711ea11c Mon Sep 17 00:00:00 2001 From: Nicholas Caughey Date: Fri, 16 Jun 2023 13:37:06 +0100 Subject: [PATCH 2/7] error in the yaml --- src/main/java/rest/baseScan.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/rest/baseScan.yml b/src/main/java/rest/baseScan.yml index 0b8ef77..03f413e 100644 --- a/src/main/java/rest/baseScan.yml +++ b/src/main/java/rest/baseScan.yml @@ -10,7 +10,7 @@ spec: type: string steps: - name: baseScan - image: ubuntu + image: openshift script: | #!/bin/bash osh-cli mock-build --config=params.config --brew-build params.buildId \ No newline at end of file From 4c21442cbe92310a9e23ff656c13dd0b640ea07f Mon Sep 17 00:00:00 2001 From: Nicholas Caughey Date: Fri, 16 Jun 2023 13:41:47 +0100 Subject: [PATCH 3/7] moved the baseScan yaml to the correct folder --- src/main/java/rest/callTekton.java | 2 +- src/main/{java/rest => resources}/baseScan.yml | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename src/main/{java/rest => resources}/baseScan.yml (100%) diff --git a/src/main/java/rest/callTekton.java b/src/main/java/rest/callTekton.java index f61378c..58a3d81 100644 --- a/src/main/java/rest/callTekton.java +++ b/src/main/java/rest/callTekton.java @@ -98,7 +98,7 @@ public class callTekton { // Load Task object from YAML Task task = tkn.v1beta1() .tasks() - .load(callTekton.class.getResourceAsStream("/baseScan.yml")).get(); + .load(callTekton.class.getResourceAsStream("../resources/baseScan.yml")).get(); // Create Task object into Kubernetes tkn.v1beta1().tasks().inNamespace(NAMESPACE).createOrReplace(task); diff --git a/src/main/java/rest/baseScan.yml b/src/main/resources/baseScan.yml similarity index 100% rename from src/main/java/rest/baseScan.yml rename to src/main/resources/baseScan.yml From 39cd02490e7d1d0dd7cfb1a21801340a171f2b66 Mon Sep 17 00:00:00 2001 From: Nicholas Caughey Date: Fri, 16 Jun 2023 13:55:28 +0100 Subject: [PATCH 4/7] 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 From 2f043bacc36ee402478985b211d8d9678cefdea7 Mon Sep 17 00:00:00 2001 From: Nicholas Caughey Date: Mon, 19 Jun 2023 09:57:58 +0100 Subject: [PATCH 5/7] update tekton --- src/main/java/rest/TektonTaskCreate.java | 11 +- src/main/java/rest/callTekton.java | 230 +++++++++++------------ 2 files changed, 123 insertions(+), 118 deletions(-) diff --git a/src/main/java/rest/TektonTaskCreate.java b/src/main/java/rest/TektonTaskCreate.java index 761c2bd..5717f15 100644 --- a/src/main/java/rest/TektonTaskCreate.java +++ b/src/main/java/rest/TektonTaskCreate.java @@ -130,18 +130,23 @@ import io.fabric8.tekton.client.TektonClient; import io.fabric8.tekton.pipeline.v1beta1.TaskBuilder; import io.fabric8.tekton.pipeline.v1beta1.TaskRunBuilder; + +@Path("/tekton") public class TektonTaskCreate { @RestClient - private static final String NAMESPACE = "default"; @POST @Consumes({ "application/json" }) - public static void invokeTektonTask(String config, String nvr) { + public void invokeTektonTask(String data) { + JSONObject jsonData = new JSONObject(data); + // ScanObj scanObj = ScanObjPayload.constructScanPayload(jsonData); + //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; + String tektonArgs = "osh-cli mock-build --config="+jsonData.get("config")+"--brew-build"+jsonData.get("nvr"); + try (TektonClient tkn = new DefaultTektonClient()) { // Create Task tkn.v1beta1().tasks().inNamespace(NAMESPACE).resource(new TaskBuilder() diff --git a/src/main/java/rest/callTekton.java b/src/main/java/rest/callTekton.java index 58a3d81..1f4f518 100644 --- a/src/main/java/rest/callTekton.java +++ b/src/main/java/rest/callTekton.java @@ -1,116 +1,116 @@ -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; - -public class callTekton { +// 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; + +// public class callTekton { - private static final String NAMESPACE = "default"; - - public static void main(String[] args) { - try (TektonClient tkn = new DefaultTektonClient()) { - // Load Task object from YAML - Task task = tkn.v1beta1() - .tasks() - .load(callTekton.class.getResourceAsStream("../resources/baseScan.yml")).get(); - - // Create Task object into Kubernetes - tkn.v1beta1().tasks().inNamespace(NAMESPACE).createOrReplace(task); - - // Get Task object from APIServer - String taskName = task.getMetadata().getName(); - task = tkn.v1beta1().tasks().inNamespace(NAMESPACE) - .withName(taskName) - .get(); - - // Delete Task object - tkn.v1beta1().tasks().inNamespace(NAMESPACE).withName(taskName).delete(); - } - } -} \ No newline at end of file +// private static final String NAMESPACE = "default"; + +// public static void main(String[] args) { +// try (TektonClient tkn = new DefaultTektonClient()) { +// // Load Task object from YAML +// Task task = tkn.v1beta1() +// .tasks() +// .load(callTekton.class.getResourceAsStream("../resources/baseScan.yml")).get(); + +// // Create Task object into Kubernetes +// tkn.v1beta1().tasks().inNamespace(NAMESPACE).createOrReplace(task); + +// // Get Task object from APIServer +// String taskName = task.getMetadata().getName(); +// task = tkn.v1beta1().tasks().inNamespace(NAMESPACE) +// .withName(taskName) +// .get(); + +// // Delete Task object +// tkn.v1beta1().tasks().inNamespace(NAMESPACE).withName(taskName).delete(); +// } +// } +// } \ No newline at end of file From 0173d5e9bc9b695c8146a682935e951918b189f6 Mon Sep 17 00:00:00 2001 From: Nicholas Caughey Date: Mon, 19 Jun 2023 10:22:09 +0100 Subject: [PATCH 6/7] added exceptions to unimplemented code --- src/main/java/rest/CreateScanRequest.java | 2 + src/main/java/rest/CreateScanResource.java | 2 + src/main/java/rest/CreateStartScan.java | 1 + src/main/java/rest/StoreData.java | 204 ++++++++++----------- 4 files changed, 106 insertions(+), 103 deletions(-) diff --git a/src/main/java/rest/CreateScanRequest.java b/src/main/java/rest/CreateScanRequest.java index a9b9679..bdd0c04 100644 --- a/src/main/java/rest/CreateScanRequest.java +++ b/src/main/java/rest/CreateScanRequest.java @@ -69,6 +69,7 @@ public class CreateScanRequest { @Path("/git") @Consumes({ "application/json" }) public GitObj invokeGitScanAnalyze(@Valid String scanInvocation)throws URISyntaxException { + throw new exception ("unImplemented fucntionality"); JSONObject jsonData = new JSONObject(scanInvocation); GitObj gitObj = GitObjPayload.constructScanPayload(jsonData); @@ -90,6 +91,7 @@ public class CreateScanRequest { @Path("/pnc") @Consumes({ "application/json" }) public PncObj invokePncScanAnalyze(@Valid String scanInvocation)throws URISyntaxException { + throw new exception ("unImplemented fucntionality"); JSONObject jsonData = new JSONObject(scanInvocation); PncObj pncObj = PncObjPayload.constructScanPayload(jsonData); diff --git a/src/main/java/rest/CreateScanResource.java b/src/main/java/rest/CreateScanResource.java index 107f839..740a051 100644 --- a/src/main/java/rest/CreateScanResource.java +++ b/src/main/java/rest/CreateScanResource.java @@ -40,6 +40,8 @@ public class CreateScanResource { @Consumes({ "application/json" }) //in theory should take List to clean it up public ScanObj invokeScanAnalyze(@Valid String scanInvocation) throws URISyntaxException { + throw new exception ("unImplemented fucntionality"); + JSONObject jsonData = new JSONObject(scanInvocation); ScanObj scanObj = ScanObjPayload.constructScanPayload(jsonData); ConnectDB connectDB = new ConnectDB(); diff --git a/src/main/java/rest/CreateStartScan.java b/src/main/java/rest/CreateStartScan.java index 6797f1e..72d29a9 100644 --- a/src/main/java/rest/CreateStartScan.java +++ b/src/main/java/rest/CreateStartScan.java @@ -42,6 +42,7 @@ public class CreateStartScan { @PUT @Path("/{scanId}") public ScanObj invokeScanAnalyze(@PathParam("scanId") String scanId) throws URISyntaxException { + throw new exception ("unImplemented fucntionality"); ConnectDB connectDB = new ConnectDB(); Connection conn = connectDB.connect(); //this is ugly needs to berewritten diff --git a/src/main/java/rest/StoreData.java b/src/main/java/rest/StoreData.java index ae2925e..e0bc090 100644 --- a/src/main/java/rest/StoreData.java +++ b/src/main/java/rest/StoreData.java @@ -1,124 +1,122 @@ -package rest; +// package rest; -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.Set; -import dto.ScanObj; -// import dto.ConnectDB; -// import dto.Scan; +// import java.util.Collections; +// import java.util.LinkedHashMap; +// import java.util.Set; +// import dto.ScanObj; +// // import dto.ConnectDB; +// // import dto.Scan; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; +// 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.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 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 java.sql.*; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectWriter; +// import com.fasterxml.jackson.databind.ObjectMapper; +// import com.fasterxml.jackson.databind.ObjectWriter; -import org.hibernate.Session; -import org.hibernate.SessionFactory; -import org.hibernate.Transaction; -import org.hibernate.boot.Metadata; -import org.hibernate.boot.MetadataSources; -import org.hibernate.boot.registry.StandardServiceRegistry; -import org.hibernate.boot.registry.StandardServiceRegistryBuilder; - // 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 org.hibernate.Session; +// import org.hibernate.SessionFactory; +// import org.hibernate.Transaction; +// import org.hibernate.boot.Metadata; +// import org.hibernate.boot.MetadataSources; +// import org.hibernate.boot.registry.StandardServiceRegistry; +// import org.hibernate.boot.registry.StandardServiceRegistryBuilder; +// // 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 org.eclipse.microprofile.rest.client.inject.RestClient; -import dto.ScanObj; +// 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 javax.ws.rs.PUT; -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 javax.inject.Inject; +// import javax.validation.Valid; +// import javax.ws.rs.Consumes; +// import javax.ws.rs.POST; +// import javax.ws.rs.Path; +// import javax.ws.rs.PUT; +// 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 javax.ws.rs.PathParam; +// import javax.ws.rs.PathParam; -import static constants.HttpHeaders.AUTHORIZATION_STRING; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; +// 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.sql.Connection; +// import java.sql.DriverManager; +// import java.sql.ResultSet; +// import java.sql.Statement; -@Path("/storeData") -public class StoreData { +// @Path("/storeData") +// public class StoreData { - //all of these need cleaning up to be a more sensible soution - // @RestClient - // CreateScanService createScanService; +// //all of these need cleaning up to be a more sensible soution +// // @RestClient +// // CreateScanService createScanService; - @GET - public void Store() { - System.out.println("hmm"); +// @GET +// public void Store() { - //Create typesafe ServiceRegistry object - StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().configure("hibernate.cfg.xml").build(); +// //Create typesafe ServiceRegistry object +// StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().configure("hibernate.cfg.xml").build(); - Metadata meta = new MetadataSources(ssr).getMetadataBuilder().build(); +// Metadata meta = new MetadataSources(ssr).getMetadataBuilder().build(); - SessionFactory factory = meta.getSessionFactoryBuilder().build(); - Session session = factory.openSession(); - Transaction t = session.beginTransaction(); - System.out.println("i assume we fail before here?"); - Scan e1=new Scan(); - e1.setScanId(2); - e1.setProductId("1"); - e1.setEventId("Chawla"); - e1.setIsManagedService("aa"); - e1.setComponentList("aaa"); +// SessionFactory factory = meta.getSessionFactoryBuilder().build(); +// Session session = factory.openSession(); +// Transaction t = session.beginTransaction(); +// Scan e1=new Scan(); +// e1.setScanId(2); +// e1.setProductId("1"); +// e1.setEventId("Chawla"); +// e1.setIsManagedService("aa"); +// e1.setComponentList("aaa"); - session.save(e1); - t.commit(); - System.out.println("successfully saved"); - factory.close(); - session.close(); +// session.save(e1); +// t.commit(); +// System.out.println("successfully saved"); +// factory.close(); +// session.close(); - } -} \ No newline at end of file +// } +// } \ No newline at end of file From 5de2051b86c9299648d08340debd143300148407 Mon Sep 17 00:00:00 2001 From: Nicholas Caughey Date: Mon, 19 Jun 2023 11:12:44 +0100 Subject: [PATCH 7/7] updated exceptions to throw on unimplemented fu nctionality --- src/main/java/rest/CreateScanRequest.java | 65 +++++++++++----------- src/main/java/rest/CreateScanResource.java | 33 ++++++----- src/main/java/rest/CreateStartScan.java | 56 +++++++++---------- 3 files changed, 77 insertions(+), 77 deletions(-) diff --git a/src/main/java/rest/CreateScanRequest.java b/src/main/java/rest/CreateScanRequest.java index bdd0c04..7dcbdb7 100644 --- a/src/main/java/rest/CreateScanRequest.java +++ b/src/main/java/rest/CreateScanRequest.java @@ -68,44 +68,45 @@ public class CreateScanRequest { @POST @Path("/git") @Consumes({ "application/json" }) - public GitObj invokeGitScanAnalyze(@Valid String scanInvocation)throws URISyntaxException { - throw new exception ("unImplemented fucntionality"); - JSONObject jsonData = new JSONObject(scanInvocation); - GitObj gitObj = GitObjPayload.constructScanPayload(jsonData); + public void invokeGitScanAnalyze(@Valid String scanInvocation)throws URISyntaxException { + throw new UnsupportedOperationException("unImplemented fucntionality"); - ConnectDB connectDB = new ConnectDB(); - Connection conn = connectDB.connect(); - Statement stmt = null; - String sql = "INSERT INTO gitscans (buildsystemtype, repository, reference, commitid) VALUES ('"+gitObj.buildSystemType+"','"+gitObj.repository+"','"+gitObj.reference+"','"+gitObj.commitId+"')"; - try{ - stmt = conn.createStatement(); - ResultSet rs = stmt.executeQuery(sql); - conn.close(); - } catch (SQLException e){ - System.out.println(e); - } - return gitObj; + // JSONObject jsonData = new JSONObject(scanInvocation); + // GitObj gitObj = GitObjPayload.constructScanPayload(jsonData); + + // ConnectDB connectDB = new ConnectDB(); + // Connection conn = connectDB.connect(); + // Statement stmt = null; + // String sql = "INSERT INTO gitscans (buildsystemtype, repository, reference, commitid) VALUES ('"+gitObj.buildSystemType+"','"+gitObj.repository+"','"+gitObj.reference+"','"+gitObj.commitId+"')"; + // try{ + // stmt = conn.createStatement(); + // ResultSet rs = stmt.executeQuery(sql); + // conn.close(); + // } catch (SQLException e){ + // System.out.println(e); + // } + // return gitObj; } @POST @Path("/pnc") @Consumes({ "application/json" }) - public PncObj invokePncScanAnalyze(@Valid String scanInvocation)throws URISyntaxException { - throw new exception ("unImplemented fucntionality"); - JSONObject jsonData = new JSONObject(scanInvocation); - PncObj pncObj = PncObjPayload.constructScanPayload(jsonData); + public void invokePncScanAnalyze(@Valid String scanInvocation)throws URISyntaxException { + throw new UnsupportedOperationException("unImplemented fucntionality"); + // JSONObject jsonData = new JSONObject(scanInvocation); + // PncObj pncObj = PncObjPayload.constructScanPayload(jsonData); - ConnectDB connectDB = new ConnectDB(); - Connection conn = connectDB.connect(); - Statement stmt = null; - String sql = "INSERT INTO pncscans (buildsystemtype, buildid) VALUES ('"+pncObj.buildSystemType+"','"+pncObj.buildId+"')"; - try{ - stmt = conn.createStatement(); - ResultSet rs = stmt.executeQuery(sql); - conn.close(); - } catch (SQLException e){ - System.out.println(e); - } - return pncObj; + // ConnectDB connectDB = new ConnectDB(); + // Connection conn = connectDB.connect(); + // Statement stmt = null; + // String sql = "INSERT INTO pncscans (buildsystemtype, buildid) VALUES ('"+pncObj.buildSystemType+"','"+pncObj.buildId+"')"; + // try{ + // stmt = conn.createStatement(); + // ResultSet rs = stmt.executeQuery(sql); + // conn.close(); + // } catch (SQLException e){ + // System.out.println(e); + // } + // return pncObj; } } diff --git a/src/main/java/rest/CreateScanResource.java b/src/main/java/rest/CreateScanResource.java index 740a051..81c81eb 100644 --- a/src/main/java/rest/CreateScanResource.java +++ b/src/main/java/rest/CreateScanResource.java @@ -39,22 +39,21 @@ public class CreateScanResource { @POST @Consumes({ "application/json" }) //in theory should take List to clean it up - public ScanObj invokeScanAnalyze(@Valid String scanInvocation) throws URISyntaxException { - throw new exception ("unImplemented fucntionality"); - - JSONObject jsonData = new JSONObject(scanInvocation); - ScanObj scanObj = ScanObjPayload.constructScanPayload(jsonData); - ConnectDB connectDB = new ConnectDB(); - Connection conn = connectDB.connect(); - Statement stmt = null; - String sql = "INSERT INTO scans (scanid, productid, eventid, ismanagedservice, componentlist) VALUES ('" +scanObj.scanId+"', '"+scanObj.productId+"', '"+scanObj.eventId+"', '"+scanObj.isManagedService+"', '"+scanObj.componentList+"')"; - try{ - stmt = conn.createStatement(); - ResultSet rs = stmt.executeQuery(sql); - conn.close(); - } catch (SQLException e){ - System.out.println(e); - } - return scanObj; + public void invokeScanAnalyze(@Valid String scanInvocation) throws URISyntaxException { + throw new UnsupportedOperationException("unImplemented fucntionality"); + // JSONObject jsonData = new JSONObject(scanInvocation); + // ScanObj scanObj = ScanObjPayload.constructScanPayload(jsonData); + // ConnectDB connectDB = new ConnectDB(); + // Connection conn = connectDB.connect(); + // Statement stmt = null; + // String sql = "INSERT INTO scans (scanid, productid, eventid, ismanagedservice, componentlist) VALUES ('" +scanObj.scanId+"', '"+scanObj.productId+"', '"+scanObj.eventId+"', '"+scanObj.isManagedService+"', '"+scanObj.componentList+"')"; + // try{ + // stmt = conn.createStatement(); + // ResultSet rs = stmt.executeQuery(sql); + // conn.close(); + // } catch (SQLException e){ + // System.out.println(e); + // } + // return scanObj; } } diff --git a/src/main/java/rest/CreateStartScan.java b/src/main/java/rest/CreateStartScan.java index 72d29a9..f372d8c 100644 --- a/src/main/java/rest/CreateStartScan.java +++ b/src/main/java/rest/CreateStartScan.java @@ -41,37 +41,37 @@ public class CreateStartScan { @PUT @Path("/{scanId}") - public ScanObj invokeScanAnalyze(@PathParam("scanId") String scanId) throws URISyntaxException { - throw new exception ("unImplemented fucntionality"); - ConnectDB connectDB = new ConnectDB(); - Connection conn = connectDB.connect(); - //this is ugly needs to berewritten - Statement stmt = null; - ScanObj finalScan = null; + public void invokeScanAnalyze(@PathParam("scanId") String scanId) throws URISyntaxException { + throw new UnsupportedOperationException("unImplemented fucntionality"); + // ConnectDB connectDB = new ConnectDB(); + // Connection conn = connectDB.connect(); + // //this is ugly needs to berewritten + // Statement stmt = null; + // ScanObj finalScan = null; - String sql = "SELECT * FROM scans WHERE scanid=" + scanId; - //need to add figure out an archieve system and wether its nessacery (archieve value??) - try{ - stmt = conn.createStatement(); - //terrible solution has to be a better way of doing this - ResultSet rs = stmt.executeQuery(sql); + // String sql = "SELECT * FROM scans WHERE scanid=" + scanId; + // //need to add figure out an archieve system and wether its nessacery (archieve value??) + // try{ + // stmt = conn.createStatement(); + // //terrible solution has to be a better way of doing this + // ResultSet rs = stmt.executeQuery(sql); - //fix for individual results (not resultset) - //TODO: need to add unique keys to DBs - finalScan = new ScanObj(rs.getString("scanid"),rs.getString("productid"),rs.getString("eventid"),rs.getString("ismanagedservice"),rs.getString("componentlist")); - String copySql = "INSERT INTO archive (scanid, productid, eventid, ismanagedservice, componentlist) VALUES ('" +finalScan.scanId+"', '"+finalScan.productId+"', '"+finalScan.eventId+"', '"+finalScan.isManagedService+"', '"+finalScan.componentList+"')"; - stmt.executeUpdate(copySql); + // //fix for individual results (not resultset) + // //TODO: need to add unique keys to DBs + // finalScan = new ScanObj(rs.getString("scanid"),rs.getString("productid"),rs.getString("eventid"),rs.getString("ismanagedservice"),rs.getString("componentlist")); + // String copySql = "INSERT INTO archive (scanid, productid, eventid, ismanagedservice, componentlist) VALUES ('" +finalScan.scanId+"', '"+finalScan.productId+"', '"+finalScan.eventId+"', '"+finalScan.isManagedService+"', '"+finalScan.componentList+"')"; + // stmt.executeUpdate(copySql); - //TODO add proper checks - String deleteSql = "DELETE FROM scans WHERE scanid=" + scanId; - stmt.executeUpdate(deleteSql); + // //TODO add proper checks + // String deleteSql = "DELETE FROM scans WHERE scanid=" + scanId; + // stmt.executeUpdate(deleteSql); - //send task to the actual interface here using the resultset returned (should multiple scanids be allowed): - //once the task is complete AND we have confirmation that the scan is done run the following sql - conn.close(); - } catch (SQLException e){ - System.out.println(e); - } - return finalScan; + // //send task to the actual interface here using the resultset returned (should multiple scanids be allowed): + // //once the task is complete AND we have confirmation that the scan is done run the following sql + // conn.close(); + // } catch (SQLException e){ + // System.out.println(e); + // } + // return finalScan; } }