diff --git a/src/main/java/rest/CreateScanRequest.java b/src/main/java/rest/CreateScanRequest.java index 85327c2..ff3e0e2 100644 --- a/src/main/java/rest/CreateScanRequest.java +++ b/src/main/java/rest/CreateScanRequest.java @@ -58,38 +58,45 @@ public class CreateScanRequest { @POST @Path("/git") @Consumes({ "application/json" }) - public GitObj invokeGitScanAnalyze(@Valid String scanInvocation)throws JSONException { - JSONObject jsonData = new JSONObject(scanInvocation); - GitObj gitObj = GitObjPayload.constructScanPayload(jsonData); - ConnectDB connectDB = new ConnectDB(); - try(Connection conn = connectDB.connect(); - PreparedStatement pstmt = conn.prepareStatement(GitObj.SQL)) { - pstmt.setString(1, gitObj.getBuildSystemType()); - pstmt.setString(2, gitObj.getRepository()); - pstmt.setString(3, gitObj.getReference()); - pstmt.setString(4, gitObj.getCommitId()); - pstmt.executeUpdate(); - } catch (SQLException e) { - logger.error(e.getMessage()); - } - return gitObj; + public void invokeGitScanAnalyze(@Valid String scanInvocation)throws URISyntaxException { + throw new UnsupportedOperationException("unImplemented fucntionality"); + + // 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 JSONException { - JSONObject jsonData = new JSONObject(scanInvocation); - PncObj pncObj = PncObjPayload.constructScanPayload(jsonData); - ConnectDB connectDB = new ConnectDB(); - try(Connection conn = connectDB.connect(); - PreparedStatement pstmt = conn.prepareStatement(PncObj.SQL)) { - pstmt.setString(1, pncObj.getBuildSystemType()); - pstmt.setString(2, pncObj.getBuildId()); - pstmt.executeUpdate(); - } catch (SQLException e) { - logger.error(e.getMessage()); - } - return pncObj; + 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; } } diff --git a/src/main/java/rest/CreateScanResource.java b/src/main/java/rest/CreateScanResource.java index 35564d7..6eb12aa 100644 --- a/src/main/java/rest/CreateScanResource.java +++ b/src/main/java/rest/CreateScanResource.java @@ -32,21 +32,21 @@ public class CreateScanResource { @POST @Consumes({ "application/json" }) //in theory should take List to clean it up - public ScanObj invokeScanAnalyze(@Valid String scanInvocation) throws JSONException { - JSONObject jsonData = new JSONObject(scanInvocation); - ScanObj scanObj = ScanObjPayload.constructScanPayload(jsonData); - ConnectDB connectDB = new ConnectDB(); - try(Connection conn = connectDB.connect(); - PreparedStatement pstmt = conn.prepareStatement(ScanObj.SQL)) { - pstmt.setString(1, scanObj.getScanId()); - pstmt.setString(2, scanObj.getProductId()); - pstmt.setString(3, scanObj.getEventId()); - pstmt.setString(4, scanObj.getIsManagedService()); - pstmt.setString(5, scanObj.getComponentList()); - pstmt.executeUpdate(); - } catch (SQLException e) { - logger.error(e.getMessage()); - } - 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 5461722..9371dc1 100644 --- a/src/main/java/rest/CreateStartScan.java +++ b/src/main/java/rest/CreateStartScan.java @@ -28,71 +28,37 @@ public class CreateStartScan { @PUT @Path("/{scanId}") - public ScanObj invokeScanAnalyze(@PathParam("scanId") String scanId) { - ScanObj finalScan = null; - ConnectDB connectDB = new ConnectDB(); - try (Connection conn = connectDB.connect()) { - finalScan = selectDataForArchiving(conn, scanId); - if (finalScan != null) { - archiveSelectedScans(conn, finalScan); - postArchivingCleanup(conn, scanId); - } else { - logger.warn("No data match found for scan ID=" + scanId); - } - } catch (SQLException e) { - logger.error(e.getMessage()); - } - return finalScan; - } - - private ScanObj selectDataForArchiving(Connection conn, String scanId) { - ScanObj finalScan = null; - String sql = "SELECT * FROM scans WHERE scan_id=?"; - try (PreparedStatement pstmt = conn.prepareStatement(sql)) { - pstmt.setString(1, scanId); - ResultSet rs = pstmt.executeQuery(); + 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; - // TODO: need to add unique keys to DBs - // fix for individual results (not resultset) - finalScan = new ScanObj( - rs.getString("scan_id"), - rs.getString("offering_id"), - rs.getString("event_id"), - rs.getString("is_managed_service"), - rs.getString("component_list")); - } catch (SQLException e) { - logger.error(e.getMessage()); - } - return finalScan; - } - - private void archiveSelectedScans(Connection conn, ScanObj finalScan) { - String sql = "INSERT INTO archive " + - "(scan_id, offering_id, event_id, is_managed_service, component_list) " + - "VALUES (? ? ? ? ?)"; - try (PreparedStatement pstmt = conn.prepareStatement(sql)) { - pstmt.setString(1, finalScan.getScanId()); - pstmt.setString(2, finalScan.getProductId()); - pstmt.setString(3, finalScan.getEventId()); - pstmt.setString(4, finalScan.getIsManagedService()); - pstmt.setString(5, finalScan.getComponentList()); - pstmt.executeUpdate(); - } catch (SQLException e) { - logger.error(e.getMessage()); - } - } + // 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); - private void postArchivingCleanup(Connection conn, String scanId) { - // TODO add proper checks - // 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 + // //TODO add proper checks + // String deleteSql = "DELETE FROM scans WHERE scanid=" + scanId; + // stmt.executeUpdate(deleteSql); - String sql = "DELETE FROM scans WHERE scan_id=?"; - try (PreparedStatement pstmt = conn.prepareStatement(sql)) { - pstmt.setString(1, scanId); - pstmt.executeUpdate(); - } catch (SQLException e) { - logger.error(e.getMessage()); - } + // //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; } } diff --git a/src/main/java/rest/StoreData.java b/src/main/java/rest/StoreData.java index 711f437..639ba8d 100644 --- a/src/main/java/rest/StoreData.java +++ b/src/main/java/rest/StoreData.java @@ -1,4 +1,4 @@ -package rest; +// package rest; // import dto.ConnectDB; @@ -17,38 +17,36 @@ import javax.ws.rs.Path; // import org.hibernate.EntityManager; -@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 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..5717f15 --- /dev/null +++ b/src/main/java/rest/TektonTaskCreate.java @@ -0,0 +1,175 @@ +// 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; + + +@Path("/tekton") +public class TektonTaskCreate { + + @RestClient + + private static final String NAMESPACE = "default"; + + @POST + @Consumes({ "application/json" }) + 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="+jsonData.get("config")+"--brew-build"+jsonData.get("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 diff --git a/src/main/java/rest/callTekton.java b/src/main/java/rest/callTekton.java new file mode 100644 index 0000000..1f4f518 --- /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("../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 diff --git a/src/main/resources/baseScan.yml b/src/main/resources/baseScan.yml new file mode 100644 index 0000000..03f413e --- /dev/null +++ b/src/main/resources/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: openshift + script: | + #!/bin/bash + osh-cli mock-build --config=params.config --brew-build params.buildId \ No newline at end of file